From a06f3db5688742592bc159793428597e4906be5e Mon Sep 17 00:00:00 2001 From: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> Date: Wed, 25 Feb 2026 21:01:43 +0100 Subject: [PATCH 1/4] Implement loot table registry --- .../paper/registry/keys/LootTableKeys.java | 9308 +++++++++++++++++ .../papermc/paper/registry/RegistryKey.java | 6 + .../io/papermc/paper/world/LootTables.java | 2672 +++++ .../src/main/java/org/bukkit/Bukkit.java | 4 + .../src/main/java/org/bukkit/Registry.java | 2 + .../src/main/java/org/bukkit/Server.java | 4 + .../main/java/org/bukkit/block/BlockType.java | 8 + .../main/java/org/bukkit/loot/LootTables.java | 3 + paper-generator/build.gradle.kts | 10 +- .../main/java/io/papermc/generator/Main.java | 17 +- .../java/io/papermc/generator/Rewriters.java | 2 + .../generator/registry/RegistryEntries.java | 5 +- .../generator/registry/RegistryEntry.java | 11 +- .../types/registry/EnumRegistryRewriter.java | 5 +- .../types/registry/RegistryFieldRewriter.java | 3 +- .../types/registry/RegistryTagRewriter.java | 3 +- .../rewriter/types/registry/TagRewriter.java | 3 +- .../utils/MergedRegistryProvider.java | 25 + .../utils/experimental/CollectingContext.java | 5 +- .../experimental/ExperimentalCollector.java | 19 +- .../entity/JukeboxBlockEntity.java.patch | 2 +- .../structure/StructurePiece.java.patch | 4 +- .../DesertPyramidStructure.java.patch | 2 +- .../structures/OceanRuinPieces.java.patch | 2 +- .../storage/loot/LootDataType.java.patch | 20 - .../level/storage/loot/LootTable.java.patch | 8 - .../paper/loottable/PaperLootableBlock.java | 4 +- .../paper/loottable/PaperLootableEntity.java | 4 +- .../paper/adventure/PaperAdventure.java | 8 +- ...taComponentValueConverterProviderImpl.java | 2 +- .../argument/VanillaArgumentProviderImpl.java | 2 +- .../datacomponent/DataComponentAdapter.java | 2 +- .../datacomponent/DataComponentAdapters.java | 10 +- .../item/PaperJukeboxPlayable.java | 2 +- .../paper/registry/PaperRegistries.java | 3 + .../paper/registry/data/util/Conversions.java | 2 +- .../io/papermc/paper/util/Holderable.java | 4 +- .../java/org/bukkit/craftbukkit/CraftArt.java | 2 +- .../bukkit/craftbukkit/CraftLootTable.java | 77 +- .../org/bukkit/craftbukkit/CraftParticle.java | 6 +- .../org/bukkit/craftbukkit/CraftRegistry.java | 30 +- .../org/bukkit/craftbukkit/CraftServer.java | 16 +- .../org/bukkit/craftbukkit/CraftWorld.java | 2 +- .../block/CraftBlockEntityState.java | 2 +- .../craftbukkit/block/CraftBlockStates.java | 4 +- .../craftbukkit/block/CraftBlockType.java | 7 + .../block/CraftBrushableBlock.java | 4 +- .../block/CraftCreatureSpawner.java | 4 +- .../craftbukkit/block/CraftDecoratedPot.java | 4 +- .../block/CraftTrialSpawnerConfiguration.java | 9 +- .../bukkit/craftbukkit/block/CraftVault.java | 8 +- .../block/data/CraftBlockData.java | 2 +- .../ConfigSerializationUtil.java | 2 +- .../entity/CraftEntitySnapshot.java | 3 +- .../craftbukkit/entity/CraftEntityType.java | 6 +- .../bukkit/craftbukkit/entity/CraftMob.java | 4 +- .../entity/memory/CraftMemoryKey.java | 4 +- .../craftbukkit/event/CraftEventFactory.java | 4 +- .../inventory/CraftItemFactory.java | 4 +- .../inventory/CraftMetaBlockState.java | 12 +- .../craftbukkit/inventory/CraftMetaItem.java | 17 +- .../inventory/CraftMetaMusicInstrument.java | 2 +- .../inventory/CraftMetaShield.java | 2 +- .../components/CraftJukeboxComponent.java | 2 +- .../inventory/view/CraftEnchantmentView.java | 4 +- .../craftbukkit/map/CraftMapCursor.java | 2 +- .../potion/CraftPotionEffectType.java | 2 +- .../craftbukkit/potion/CraftPotionType.java | 6 +- .../craftbukkit/util/CraftChatMessage.java | 5 +- .../craftbukkit/util/CraftMagicNumbers.java | 16 +- .../paper/registry/RegistryKeyTest.java | 22 +- .../test/java/org/bukkit/LootTablesTest.java | 13 +- .../test/java/org/bukkit/ParticleTest.java | 2 +- .../craftbukkit/generator/ChunkDataTest.java | 19 +- .../registry/RegistryConstantsTest.java | 3 +- .../org/bukkit/support/DummyServerHelper.java | 11 +- .../extension/AllFeaturesExtension.java | 3 +- .../support/extension/LegacyExtension.java | 3 +- .../support/extension/NormalExtension.java | 3 +- .../support/extension/SlowExtension.java | 3 +- .../extension/VanillaFeatureExtension.java | 3 +- .../provider/RegistriesArgumentProvider.java | 4 + 82 files changed, 12295 insertions(+), 264 deletions(-) create mode 100644 paper-api/src/generated/java/io/papermc/paper/registry/keys/LootTableKeys.java create mode 100644 paper-api/src/main/java/io/papermc/paper/world/LootTables.java create mode 100644 paper-generator/src/main/java/io/papermc/generator/utils/MergedRegistryProvider.java delete mode 100644 paper-server/patches/sources/net/minecraft/world/level/storage/loot/LootDataType.java.patch diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/LootTableKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/LootTableKeys.java new file mode 100644 index 000000000000..749aae0a7608 --- /dev/null +++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/LootTableKeys.java @@ -0,0 +1,9308 @@ +package io.papermc.paper.registry.keys; + +import static net.kyori.adventure.key.Key.key; + +import io.papermc.paper.annotation.GeneratedClass; +import io.papermc.paper.registry.RegistryKey; +import io.papermc.paper.registry.TypedKey; +import net.kyori.adventure.key.Key; +import org.bukkit.loot.LootTable; +import org.jspecify.annotations.NullMarked; + +/** + * Vanilla keys for {@link RegistryKey#LOOT_TABLE}. + * + * @apiNote The fields provided here are a direct representation of + * what is available from the vanilla game source. They may be + * changed (including removals) on any Minecraft version + * bump, so cross-version compatibility is not provided on the + * same level as it is on most of the other API. + */ +@SuppressWarnings({ + "unused", + "SpellCheckingInspection" +}) +@NullMarked +@GeneratedClass +public final class LootTableKeys { + /** + * {@code minecraft:archaeology/desert_pyramid} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ARCHAEOLOGY_DESERT_PYRAMID = create(key("archaeology/desert_pyramid")); + + /** + * {@code minecraft:archaeology/desert_well} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ARCHAEOLOGY_DESERT_WELL = create(key("archaeology/desert_well")); + + /** + * {@code minecraft:archaeology/ocean_ruin_cold} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ARCHAEOLOGY_OCEAN_RUIN_COLD = create(key("archaeology/ocean_ruin_cold")); + + /** + * {@code minecraft:archaeology/ocean_ruin_warm} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ARCHAEOLOGY_OCEAN_RUIN_WARM = create(key("archaeology/ocean_ruin_warm")); + + /** + * {@code minecraft:archaeology/trail_ruins_common} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ARCHAEOLOGY_TRAIL_RUINS_COMMON = create(key("archaeology/trail_ruins_common")); + + /** + * {@code minecraft:archaeology/trail_ruins_rare} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ARCHAEOLOGY_TRAIL_RUINS_RARE = create(key("archaeology/trail_ruins_rare")); + + /** + * {@code minecraft:blocks/acacia_button} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_BUTTON = create(key("blocks/acacia_button")); + + /** + * {@code minecraft:blocks/acacia_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_DOOR = create(key("blocks/acacia_door")); + + /** + * {@code minecraft:blocks/acacia_fence} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_FENCE = create(key("blocks/acacia_fence")); + + /** + * {@code minecraft:blocks/acacia_fence_gate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_FENCE_GATE = create(key("blocks/acacia_fence_gate")); + + /** + * {@code minecraft:blocks/acacia_hanging_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_HANGING_SIGN = create(key("blocks/acacia_hanging_sign")); + + /** + * {@code minecraft:blocks/acacia_leaves} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_LEAVES = create(key("blocks/acacia_leaves")); + + /** + * {@code minecraft:blocks/acacia_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_LOG = create(key("blocks/acacia_log")); + + /** + * {@code minecraft:blocks/acacia_planks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_PLANKS = create(key("blocks/acacia_planks")); + + /** + * {@code minecraft:blocks/acacia_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_PRESSURE_PLATE = create(key("blocks/acacia_pressure_plate")); + + /** + * {@code minecraft:blocks/acacia_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_SAPLING = create(key("blocks/acacia_sapling")); + + /** + * {@code minecraft:blocks/acacia_shelf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_SHELF = create(key("blocks/acacia_shelf")); + + /** + * {@code minecraft:blocks/acacia_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_SIGN = create(key("blocks/acacia_sign")); + + /** + * {@code minecraft:blocks/acacia_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_SLAB = create(key("blocks/acacia_slab")); + + /** + * {@code minecraft:blocks/acacia_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_STAIRS = create(key("blocks/acacia_stairs")); + + /** + * {@code minecraft:blocks/acacia_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_TRAPDOOR = create(key("blocks/acacia_trapdoor")); + + /** + * {@code minecraft:blocks/acacia_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACACIA_WOOD = create(key("blocks/acacia_wood")); + + /** + * {@code minecraft:blocks/activator_rail} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ACTIVATOR_RAIL = create(key("blocks/activator_rail")); + + /** + * {@code minecraft:blocks/allium} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ALLIUM = create(key("blocks/allium")); + + /** + * {@code minecraft:blocks/amethyst_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_AMETHYST_BLOCK = create(key("blocks/amethyst_block")); + + /** + * {@code minecraft:blocks/amethyst_cluster} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_AMETHYST_CLUSTER = create(key("blocks/amethyst_cluster")); + + /** + * {@code minecraft:blocks/ancient_debris} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ANCIENT_DEBRIS = create(key("blocks/ancient_debris")); + + /** + * {@code minecraft:blocks/andesite} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ANDESITE = create(key("blocks/andesite")); + + /** + * {@code minecraft:blocks/andesite_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ANDESITE_SLAB = create(key("blocks/andesite_slab")); + + /** + * {@code minecraft:blocks/andesite_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ANDESITE_STAIRS = create(key("blocks/andesite_stairs")); + + /** + * {@code minecraft:blocks/andesite_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ANDESITE_WALL = create(key("blocks/andesite_wall")); + + /** + * {@code minecraft:blocks/anvil} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ANVIL = create(key("blocks/anvil")); + + /** + * {@code minecraft:blocks/attached_melon_stem} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ATTACHED_MELON_STEM = create(key("blocks/attached_melon_stem")); + + /** + * {@code minecraft:blocks/attached_pumpkin_stem} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ATTACHED_PUMPKIN_STEM = create(key("blocks/attached_pumpkin_stem")); + + /** + * {@code minecraft:blocks/azalea} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_AZALEA = create(key("blocks/azalea")); + + /** + * {@code minecraft:blocks/azalea_leaves} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_AZALEA_LEAVES = create(key("blocks/azalea_leaves")); + + /** + * {@code minecraft:blocks/azure_bluet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_AZURE_BLUET = create(key("blocks/azure_bluet")); + + /** + * {@code minecraft:blocks/bamboo} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO = create(key("blocks/bamboo")); + + /** + * {@code minecraft:blocks/bamboo_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_BLOCK = create(key("blocks/bamboo_block")); + + /** + * {@code minecraft:blocks/bamboo_button} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_BUTTON = create(key("blocks/bamboo_button")); + + /** + * {@code minecraft:blocks/bamboo_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_DOOR = create(key("blocks/bamboo_door")); + + /** + * {@code minecraft:blocks/bamboo_fence} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_FENCE = create(key("blocks/bamboo_fence")); + + /** + * {@code minecraft:blocks/bamboo_fence_gate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_FENCE_GATE = create(key("blocks/bamboo_fence_gate")); + + /** + * {@code minecraft:blocks/bamboo_hanging_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_HANGING_SIGN = create(key("blocks/bamboo_hanging_sign")); + + /** + * {@code minecraft:blocks/bamboo_mosaic} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_MOSAIC = create(key("blocks/bamboo_mosaic")); + + /** + * {@code minecraft:blocks/bamboo_mosaic_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_MOSAIC_SLAB = create(key("blocks/bamboo_mosaic_slab")); + + /** + * {@code minecraft:blocks/bamboo_mosaic_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_MOSAIC_STAIRS = create(key("blocks/bamboo_mosaic_stairs")); + + /** + * {@code minecraft:blocks/bamboo_planks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_PLANKS = create(key("blocks/bamboo_planks")); + + /** + * {@code minecraft:blocks/bamboo_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_PRESSURE_PLATE = create(key("blocks/bamboo_pressure_plate")); + + /** + * {@code minecraft:blocks/bamboo_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_SAPLING = create(key("blocks/bamboo_sapling")); + + /** + * {@code minecraft:blocks/bamboo_shelf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_SHELF = create(key("blocks/bamboo_shelf")); + + /** + * {@code minecraft:blocks/bamboo_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_SIGN = create(key("blocks/bamboo_sign")); + + /** + * {@code minecraft:blocks/bamboo_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_SLAB = create(key("blocks/bamboo_slab")); + + /** + * {@code minecraft:blocks/bamboo_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_STAIRS = create(key("blocks/bamboo_stairs")); + + /** + * {@code minecraft:blocks/bamboo_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BAMBOO_TRAPDOOR = create(key("blocks/bamboo_trapdoor")); + + /** + * {@code minecraft:blocks/barrel} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BARREL = create(key("blocks/barrel")); + + /** + * {@code minecraft:blocks/basalt} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BASALT = create(key("blocks/basalt")); + + /** + * {@code minecraft:blocks/beacon} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BEACON = create(key("blocks/beacon")); + + /** + * {@code minecraft:blocks/bee_nest} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BEE_NEST = create(key("blocks/bee_nest")); + + /** + * {@code minecraft:blocks/beehive} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BEEHIVE = create(key("blocks/beehive")); + + /** + * {@code minecraft:blocks/beetroots} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BEETROOTS = create(key("blocks/beetroots")); + + /** + * {@code minecraft:blocks/bell} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BELL = create(key("blocks/bell")); + + /** + * {@code minecraft:blocks/big_dripleaf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIG_DRIPLEAF = create(key("blocks/big_dripleaf")); + + /** + * {@code minecraft:blocks/big_dripleaf_stem} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIG_DRIPLEAF_STEM = create(key("blocks/big_dripleaf_stem")); + + /** + * {@code minecraft:blocks/birch_button} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_BUTTON = create(key("blocks/birch_button")); + + /** + * {@code minecraft:blocks/birch_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_DOOR = create(key("blocks/birch_door")); + + /** + * {@code minecraft:blocks/birch_fence} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_FENCE = create(key("blocks/birch_fence")); + + /** + * {@code minecraft:blocks/birch_fence_gate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_FENCE_GATE = create(key("blocks/birch_fence_gate")); + + /** + * {@code minecraft:blocks/birch_hanging_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_HANGING_SIGN = create(key("blocks/birch_hanging_sign")); + + /** + * {@code minecraft:blocks/birch_leaves} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_LEAVES = create(key("blocks/birch_leaves")); + + /** + * {@code minecraft:blocks/birch_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_LOG = create(key("blocks/birch_log")); + + /** + * {@code minecraft:blocks/birch_planks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_PLANKS = create(key("blocks/birch_planks")); + + /** + * {@code minecraft:blocks/birch_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_PRESSURE_PLATE = create(key("blocks/birch_pressure_plate")); + + /** + * {@code minecraft:blocks/birch_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_SAPLING = create(key("blocks/birch_sapling")); + + /** + * {@code minecraft:blocks/birch_shelf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_SHELF = create(key("blocks/birch_shelf")); + + /** + * {@code minecraft:blocks/birch_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_SIGN = create(key("blocks/birch_sign")); + + /** + * {@code minecraft:blocks/birch_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_SLAB = create(key("blocks/birch_slab")); + + /** + * {@code minecraft:blocks/birch_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_STAIRS = create(key("blocks/birch_stairs")); + + /** + * {@code minecraft:blocks/birch_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_TRAPDOOR = create(key("blocks/birch_trapdoor")); + + /** + * {@code minecraft:blocks/birch_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BIRCH_WOOD = create(key("blocks/birch_wood")); + + /** + * {@code minecraft:blocks/black_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACK_BANNER = create(key("blocks/black_banner")); + + /** + * {@code minecraft:blocks/black_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACK_BED = create(key("blocks/black_bed")); + + /** + * {@code minecraft:blocks/black_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACK_CANDLE = create(key("blocks/black_candle")); + + /** + * {@code minecraft:blocks/black_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACK_CANDLE_CAKE = create(key("blocks/black_candle_cake")); + + /** + * {@code minecraft:blocks/black_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACK_CARPET = create(key("blocks/black_carpet")); + + /** + * {@code minecraft:blocks/black_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACK_CONCRETE = create(key("blocks/black_concrete")); + + /** + * {@code minecraft:blocks/black_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACK_CONCRETE_POWDER = create(key("blocks/black_concrete_powder")); + + /** + * {@code minecraft:blocks/black_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACK_GLAZED_TERRACOTTA = create(key("blocks/black_glazed_terracotta")); + + /** + * {@code minecraft:blocks/black_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACK_SHULKER_BOX = create(key("blocks/black_shulker_box")); + + /** + * {@code minecraft:blocks/black_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACK_STAINED_GLASS = create(key("blocks/black_stained_glass")); + + /** + * {@code minecraft:blocks/black_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACK_STAINED_GLASS_PANE = create(key("blocks/black_stained_glass_pane")); + + /** + * {@code minecraft:blocks/black_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACK_TERRACOTTA = create(key("blocks/black_terracotta")); + + /** + * {@code minecraft:blocks/black_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACK_WOOL = create(key("blocks/black_wool")); + + /** + * {@code minecraft:blocks/blackstone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACKSTONE = create(key("blocks/blackstone")); + + /** + * {@code minecraft:blocks/blackstone_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACKSTONE_SLAB = create(key("blocks/blackstone_slab")); + + /** + * {@code minecraft:blocks/blackstone_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACKSTONE_STAIRS = create(key("blocks/blackstone_stairs")); + + /** + * {@code minecraft:blocks/blackstone_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLACKSTONE_WALL = create(key("blocks/blackstone_wall")); + + /** + * {@code minecraft:blocks/blast_furnace} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLAST_FURNACE = create(key("blocks/blast_furnace")); + + /** + * {@code minecraft:blocks/blue_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLUE_BANNER = create(key("blocks/blue_banner")); + + /** + * {@code minecraft:blocks/blue_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLUE_BED = create(key("blocks/blue_bed")); + + /** + * {@code minecraft:blocks/blue_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLUE_CANDLE = create(key("blocks/blue_candle")); + + /** + * {@code minecraft:blocks/blue_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLUE_CANDLE_CAKE = create(key("blocks/blue_candle_cake")); + + /** + * {@code minecraft:blocks/blue_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLUE_CARPET = create(key("blocks/blue_carpet")); + + /** + * {@code minecraft:blocks/blue_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLUE_CONCRETE = create(key("blocks/blue_concrete")); + + /** + * {@code minecraft:blocks/blue_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLUE_CONCRETE_POWDER = create(key("blocks/blue_concrete_powder")); + + /** + * {@code minecraft:blocks/blue_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLUE_GLAZED_TERRACOTTA = create(key("blocks/blue_glazed_terracotta")); + + /** + * {@code minecraft:blocks/blue_ice} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLUE_ICE = create(key("blocks/blue_ice")); + + /** + * {@code minecraft:blocks/blue_orchid} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLUE_ORCHID = create(key("blocks/blue_orchid")); + + /** + * {@code minecraft:blocks/blue_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLUE_SHULKER_BOX = create(key("blocks/blue_shulker_box")); + + /** + * {@code minecraft:blocks/blue_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLUE_STAINED_GLASS = create(key("blocks/blue_stained_glass")); + + /** + * {@code minecraft:blocks/blue_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLUE_STAINED_GLASS_PANE = create(key("blocks/blue_stained_glass_pane")); + + /** + * {@code minecraft:blocks/blue_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLUE_TERRACOTTA = create(key("blocks/blue_terracotta")); + + /** + * {@code minecraft:blocks/blue_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BLUE_WOOL = create(key("blocks/blue_wool")); + + /** + * {@code minecraft:blocks/bone_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BONE_BLOCK = create(key("blocks/bone_block")); + + /** + * {@code minecraft:blocks/bookshelf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BOOKSHELF = create(key("blocks/bookshelf")); + + /** + * {@code minecraft:blocks/brain_coral} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BRAIN_CORAL = create(key("blocks/brain_coral")); + + /** + * {@code minecraft:blocks/brain_coral_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BRAIN_CORAL_BLOCK = create(key("blocks/brain_coral_block")); + + /** + * {@code minecraft:blocks/brain_coral_fan} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BRAIN_CORAL_FAN = create(key("blocks/brain_coral_fan")); + + /** + * {@code minecraft:blocks/brewing_stand} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BREWING_STAND = create(key("blocks/brewing_stand")); + + /** + * {@code minecraft:blocks/brick_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BRICK_SLAB = create(key("blocks/brick_slab")); + + /** + * {@code minecraft:blocks/brick_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BRICK_STAIRS = create(key("blocks/brick_stairs")); + + /** + * {@code minecraft:blocks/brick_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BRICK_WALL = create(key("blocks/brick_wall")); + + /** + * {@code minecraft:blocks/bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BRICKS = create(key("blocks/bricks")); + + /** + * {@code minecraft:blocks/brown_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BROWN_BANNER = create(key("blocks/brown_banner")); + + /** + * {@code minecraft:blocks/brown_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BROWN_BED = create(key("blocks/brown_bed")); + + /** + * {@code minecraft:blocks/brown_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BROWN_CANDLE = create(key("blocks/brown_candle")); + + /** + * {@code minecraft:blocks/brown_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BROWN_CANDLE_CAKE = create(key("blocks/brown_candle_cake")); + + /** + * {@code minecraft:blocks/brown_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BROWN_CARPET = create(key("blocks/brown_carpet")); + + /** + * {@code minecraft:blocks/brown_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BROWN_CONCRETE = create(key("blocks/brown_concrete")); + + /** + * {@code minecraft:blocks/brown_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BROWN_CONCRETE_POWDER = create(key("blocks/brown_concrete_powder")); + + /** + * {@code minecraft:blocks/brown_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BROWN_GLAZED_TERRACOTTA = create(key("blocks/brown_glazed_terracotta")); + + /** + * {@code minecraft:blocks/brown_mushroom} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BROWN_MUSHROOM = create(key("blocks/brown_mushroom")); + + /** + * {@code minecraft:blocks/brown_mushroom_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BROWN_MUSHROOM_BLOCK = create(key("blocks/brown_mushroom_block")); + + /** + * {@code minecraft:blocks/brown_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BROWN_SHULKER_BOX = create(key("blocks/brown_shulker_box")); + + /** + * {@code minecraft:blocks/brown_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BROWN_STAINED_GLASS = create(key("blocks/brown_stained_glass")); + + /** + * {@code minecraft:blocks/brown_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BROWN_STAINED_GLASS_PANE = create(key("blocks/brown_stained_glass_pane")); + + /** + * {@code minecraft:blocks/brown_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BROWN_TERRACOTTA = create(key("blocks/brown_terracotta")); + + /** + * {@code minecraft:blocks/brown_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BROWN_WOOL = create(key("blocks/brown_wool")); + + /** + * {@code minecraft:blocks/bubble_coral} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BUBBLE_CORAL = create(key("blocks/bubble_coral")); + + /** + * {@code minecraft:blocks/bubble_coral_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BUBBLE_CORAL_BLOCK = create(key("blocks/bubble_coral_block")); + + /** + * {@code minecraft:blocks/bubble_coral_fan} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BUBBLE_CORAL_FAN = create(key("blocks/bubble_coral_fan")); + + /** + * {@code minecraft:blocks/budding_amethyst} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BUDDING_AMETHYST = create(key("blocks/budding_amethyst")); + + /** + * {@code minecraft:blocks/bush} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_BUSH = create(key("blocks/bush")); + + /** + * {@code minecraft:blocks/cactus} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CACTUS = create(key("blocks/cactus")); + + /** + * {@code minecraft:blocks/cactus_flower} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CACTUS_FLOWER = create(key("blocks/cactus_flower")); + + /** + * {@code minecraft:blocks/cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CAKE = create(key("blocks/cake")); + + /** + * {@code minecraft:blocks/calcite} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CALCITE = create(key("blocks/calcite")); + + /** + * {@code minecraft:blocks/calibrated_sculk_sensor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CALIBRATED_SCULK_SENSOR = create(key("blocks/calibrated_sculk_sensor")); + + /** + * {@code minecraft:blocks/campfire} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CAMPFIRE = create(key("blocks/campfire")); + + /** + * {@code minecraft:blocks/candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CANDLE = create(key("blocks/candle")); + + /** + * {@code minecraft:blocks/candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CANDLE_CAKE = create(key("blocks/candle_cake")); + + /** + * {@code minecraft:blocks/carrots} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CARROTS = create(key("blocks/carrots")); + + /** + * {@code minecraft:blocks/cartography_table} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CARTOGRAPHY_TABLE = create(key("blocks/cartography_table")); + + /** + * {@code minecraft:blocks/carved_pumpkin} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CARVED_PUMPKIN = create(key("blocks/carved_pumpkin")); + + /** + * {@code minecraft:blocks/cauldron} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CAULDRON = create(key("blocks/cauldron")); + + /** + * {@code minecraft:blocks/cave_vines} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CAVE_VINES = create(key("blocks/cave_vines")); + + /** + * {@code minecraft:blocks/cave_vines_plant} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CAVE_VINES_PLANT = create(key("blocks/cave_vines_plant")); + + /** + * {@code minecraft:blocks/cherry_button} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_BUTTON = create(key("blocks/cherry_button")); + + /** + * {@code minecraft:blocks/cherry_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_DOOR = create(key("blocks/cherry_door")); + + /** + * {@code minecraft:blocks/cherry_fence} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_FENCE = create(key("blocks/cherry_fence")); + + /** + * {@code minecraft:blocks/cherry_fence_gate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_FENCE_GATE = create(key("blocks/cherry_fence_gate")); + + /** + * {@code minecraft:blocks/cherry_hanging_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_HANGING_SIGN = create(key("blocks/cherry_hanging_sign")); + + /** + * {@code minecraft:blocks/cherry_leaves} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_LEAVES = create(key("blocks/cherry_leaves")); + + /** + * {@code minecraft:blocks/cherry_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_LOG = create(key("blocks/cherry_log")); + + /** + * {@code minecraft:blocks/cherry_planks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_PLANKS = create(key("blocks/cherry_planks")); + + /** + * {@code minecraft:blocks/cherry_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_PRESSURE_PLATE = create(key("blocks/cherry_pressure_plate")); + + /** + * {@code minecraft:blocks/cherry_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_SAPLING = create(key("blocks/cherry_sapling")); + + /** + * {@code minecraft:blocks/cherry_shelf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_SHELF = create(key("blocks/cherry_shelf")); + + /** + * {@code minecraft:blocks/cherry_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_SIGN = create(key("blocks/cherry_sign")); + + /** + * {@code minecraft:blocks/cherry_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_SLAB = create(key("blocks/cherry_slab")); + + /** + * {@code minecraft:blocks/cherry_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_STAIRS = create(key("blocks/cherry_stairs")); + + /** + * {@code minecraft:blocks/cherry_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_TRAPDOOR = create(key("blocks/cherry_trapdoor")); + + /** + * {@code minecraft:blocks/cherry_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHERRY_WOOD = create(key("blocks/cherry_wood")); + + /** + * {@code minecraft:blocks/chest} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHEST = create(key("blocks/chest")); + + /** + * {@code minecraft:blocks/chipped_anvil} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHIPPED_ANVIL = create(key("blocks/chipped_anvil")); + + /** + * {@code minecraft:blocks/chiseled_bookshelf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHISELED_BOOKSHELF = create(key("blocks/chiseled_bookshelf")); + + /** + * {@code minecraft:blocks/chiseled_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHISELED_COPPER = create(key("blocks/chiseled_copper")); + + /** + * {@code minecraft:blocks/chiseled_deepslate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHISELED_DEEPSLATE = create(key("blocks/chiseled_deepslate")); + + /** + * {@code minecraft:blocks/chiseled_nether_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHISELED_NETHER_BRICKS = create(key("blocks/chiseled_nether_bricks")); + + /** + * {@code minecraft:blocks/chiseled_polished_blackstone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHISELED_POLISHED_BLACKSTONE = create(key("blocks/chiseled_polished_blackstone")); + + /** + * {@code minecraft:blocks/chiseled_quartz_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHISELED_QUARTZ_BLOCK = create(key("blocks/chiseled_quartz_block")); + + /** + * {@code minecraft:blocks/chiseled_red_sandstone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHISELED_RED_SANDSTONE = create(key("blocks/chiseled_red_sandstone")); + + /** + * {@code minecraft:blocks/chiseled_resin_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHISELED_RESIN_BRICKS = create(key("blocks/chiseled_resin_bricks")); + + /** + * {@code minecraft:blocks/chiseled_sandstone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHISELED_SANDSTONE = create(key("blocks/chiseled_sandstone")); + + /** + * {@code minecraft:blocks/chiseled_stone_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHISELED_STONE_BRICKS = create(key("blocks/chiseled_stone_bricks")); + + /** + * {@code minecraft:blocks/chiseled_tuff} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHISELED_TUFF = create(key("blocks/chiseled_tuff")); + + /** + * {@code minecraft:blocks/chiseled_tuff_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHISELED_TUFF_BRICKS = create(key("blocks/chiseled_tuff_bricks")); + + /** + * {@code minecraft:blocks/chorus_flower} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHORUS_FLOWER = create(key("blocks/chorus_flower")); + + /** + * {@code minecraft:blocks/chorus_plant} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CHORUS_PLANT = create(key("blocks/chorus_plant")); + + /** + * {@code minecraft:blocks/clay} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CLAY = create(key("blocks/clay")); + + /** + * {@code minecraft:blocks/closed_eyeblossom} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CLOSED_EYEBLOSSOM = create(key("blocks/closed_eyeblossom")); + + /** + * {@code minecraft:blocks/coal_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COAL_BLOCK = create(key("blocks/coal_block")); + + /** + * {@code minecraft:blocks/coal_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COAL_ORE = create(key("blocks/coal_ore")); + + /** + * {@code minecraft:blocks/coarse_dirt} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COARSE_DIRT = create(key("blocks/coarse_dirt")); + + /** + * {@code minecraft:blocks/cobbled_deepslate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COBBLED_DEEPSLATE = create(key("blocks/cobbled_deepslate")); + + /** + * {@code minecraft:blocks/cobbled_deepslate_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COBBLED_DEEPSLATE_SLAB = create(key("blocks/cobbled_deepslate_slab")); + + /** + * {@code minecraft:blocks/cobbled_deepslate_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COBBLED_DEEPSLATE_STAIRS = create(key("blocks/cobbled_deepslate_stairs")); + + /** + * {@code minecraft:blocks/cobbled_deepslate_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COBBLED_DEEPSLATE_WALL = create(key("blocks/cobbled_deepslate_wall")); + + /** + * {@code minecraft:blocks/cobblestone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COBBLESTONE = create(key("blocks/cobblestone")); + + /** + * {@code minecraft:blocks/cobblestone_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COBBLESTONE_SLAB = create(key("blocks/cobblestone_slab")); + + /** + * {@code minecraft:blocks/cobblestone_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COBBLESTONE_STAIRS = create(key("blocks/cobblestone_stairs")); + + /** + * {@code minecraft:blocks/cobblestone_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COBBLESTONE_WALL = create(key("blocks/cobblestone_wall")); + + /** + * {@code minecraft:blocks/cobweb} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COBWEB = create(key("blocks/cobweb")); + + /** + * {@code minecraft:blocks/cocoa} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COCOA = create(key("blocks/cocoa")); + + /** + * {@code minecraft:blocks/comparator} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COMPARATOR = create(key("blocks/comparator")); + + /** + * {@code minecraft:blocks/composter} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COMPOSTER = create(key("blocks/composter")); + + /** + * {@code minecraft:blocks/conduit} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CONDUIT = create(key("blocks/conduit")); + + /** + * {@code minecraft:blocks/copper_bars} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COPPER_BARS = create(key("blocks/copper_bars")); + + /** + * {@code minecraft:blocks/copper_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COPPER_BLOCK = create(key("blocks/copper_block")); + + /** + * {@code minecraft:blocks/copper_bulb} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COPPER_BULB = create(key("blocks/copper_bulb")); + + /** + * {@code minecraft:blocks/copper_chain} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COPPER_CHAIN = create(key("blocks/copper_chain")); + + /** + * {@code minecraft:blocks/copper_chest} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COPPER_CHEST = create(key("blocks/copper_chest")); + + /** + * {@code minecraft:blocks/copper_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COPPER_DOOR = create(key("blocks/copper_door")); + + /** + * {@code minecraft:blocks/copper_golem_statue} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COPPER_GOLEM_STATUE = create(key("blocks/copper_golem_statue")); + + /** + * {@code minecraft:blocks/copper_grate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COPPER_GRATE = create(key("blocks/copper_grate")); + + /** + * {@code minecraft:blocks/copper_lantern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COPPER_LANTERN = create(key("blocks/copper_lantern")); + + /** + * {@code minecraft:blocks/copper_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COPPER_ORE = create(key("blocks/copper_ore")); + + /** + * {@code minecraft:blocks/copper_torch} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COPPER_TORCH = create(key("blocks/copper_torch")); + + /** + * {@code minecraft:blocks/copper_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_COPPER_TRAPDOOR = create(key("blocks/copper_trapdoor")); + + /** + * {@code minecraft:blocks/cornflower} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CORNFLOWER = create(key("blocks/cornflower")); + + /** + * {@code minecraft:blocks/cracked_deepslate_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRACKED_DEEPSLATE_BRICKS = create(key("blocks/cracked_deepslate_bricks")); + + /** + * {@code minecraft:blocks/cracked_deepslate_tiles} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRACKED_DEEPSLATE_TILES = create(key("blocks/cracked_deepslate_tiles")); + + /** + * {@code minecraft:blocks/cracked_nether_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRACKED_NETHER_BRICKS = create(key("blocks/cracked_nether_bricks")); + + /** + * {@code minecraft:blocks/cracked_polished_blackstone_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRACKED_POLISHED_BLACKSTONE_BRICKS = create(key("blocks/cracked_polished_blackstone_bricks")); + + /** + * {@code minecraft:blocks/cracked_stone_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRACKED_STONE_BRICKS = create(key("blocks/cracked_stone_bricks")); + + /** + * {@code minecraft:blocks/crafter} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRAFTER = create(key("blocks/crafter")); + + /** + * {@code minecraft:blocks/crafting_table} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRAFTING_TABLE = create(key("blocks/crafting_table")); + + /** + * {@code minecraft:blocks/creaking_heart} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CREAKING_HEART = create(key("blocks/creaking_heart")); + + /** + * {@code minecraft:blocks/creeper_head} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CREEPER_HEAD = create(key("blocks/creeper_head")); + + /** + * {@code minecraft:blocks/crimson_button} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_BUTTON = create(key("blocks/crimson_button")); + + /** + * {@code minecraft:blocks/crimson_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_DOOR = create(key("blocks/crimson_door")); + + /** + * {@code minecraft:blocks/crimson_fence} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_FENCE = create(key("blocks/crimson_fence")); + + /** + * {@code minecraft:blocks/crimson_fence_gate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_FENCE_GATE = create(key("blocks/crimson_fence_gate")); + + /** + * {@code minecraft:blocks/crimson_fungus} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_FUNGUS = create(key("blocks/crimson_fungus")); + + /** + * {@code minecraft:blocks/crimson_hanging_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_HANGING_SIGN = create(key("blocks/crimson_hanging_sign")); + + /** + * {@code minecraft:blocks/crimson_hyphae} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_HYPHAE = create(key("blocks/crimson_hyphae")); + + /** + * {@code minecraft:blocks/crimson_nylium} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_NYLIUM = create(key("blocks/crimson_nylium")); + + /** + * {@code minecraft:blocks/crimson_planks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_PLANKS = create(key("blocks/crimson_planks")); + + /** + * {@code minecraft:blocks/crimson_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_PRESSURE_PLATE = create(key("blocks/crimson_pressure_plate")); + + /** + * {@code minecraft:blocks/crimson_roots} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_ROOTS = create(key("blocks/crimson_roots")); + + /** + * {@code minecraft:blocks/crimson_shelf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_SHELF = create(key("blocks/crimson_shelf")); + + /** + * {@code minecraft:blocks/crimson_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_SIGN = create(key("blocks/crimson_sign")); + + /** + * {@code minecraft:blocks/crimson_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_SLAB = create(key("blocks/crimson_slab")); + + /** + * {@code minecraft:blocks/crimson_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_STAIRS = create(key("blocks/crimson_stairs")); + + /** + * {@code minecraft:blocks/crimson_stem} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_STEM = create(key("blocks/crimson_stem")); + + /** + * {@code minecraft:blocks/crimson_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRIMSON_TRAPDOOR = create(key("blocks/crimson_trapdoor")); + + /** + * {@code minecraft:blocks/crying_obsidian} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CRYING_OBSIDIAN = create(key("blocks/crying_obsidian")); + + /** + * {@code minecraft:blocks/cut_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CUT_COPPER = create(key("blocks/cut_copper")); + + /** + * {@code minecraft:blocks/cut_copper_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CUT_COPPER_SLAB = create(key("blocks/cut_copper_slab")); + + /** + * {@code minecraft:blocks/cut_copper_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CUT_COPPER_STAIRS = create(key("blocks/cut_copper_stairs")); + + /** + * {@code minecraft:blocks/cut_red_sandstone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CUT_RED_SANDSTONE = create(key("blocks/cut_red_sandstone")); + + /** + * {@code minecraft:blocks/cut_red_sandstone_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CUT_RED_SANDSTONE_SLAB = create(key("blocks/cut_red_sandstone_slab")); + + /** + * {@code minecraft:blocks/cut_sandstone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CUT_SANDSTONE = create(key("blocks/cut_sandstone")); + + /** + * {@code minecraft:blocks/cut_sandstone_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CUT_SANDSTONE_SLAB = create(key("blocks/cut_sandstone_slab")); + + /** + * {@code minecraft:blocks/cyan_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CYAN_BANNER = create(key("blocks/cyan_banner")); + + /** + * {@code minecraft:blocks/cyan_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CYAN_BED = create(key("blocks/cyan_bed")); + + /** + * {@code minecraft:blocks/cyan_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CYAN_CANDLE = create(key("blocks/cyan_candle")); + + /** + * {@code minecraft:blocks/cyan_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CYAN_CANDLE_CAKE = create(key("blocks/cyan_candle_cake")); + + /** + * {@code minecraft:blocks/cyan_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CYAN_CARPET = create(key("blocks/cyan_carpet")); + + /** + * {@code minecraft:blocks/cyan_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CYAN_CONCRETE = create(key("blocks/cyan_concrete")); + + /** + * {@code minecraft:blocks/cyan_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CYAN_CONCRETE_POWDER = create(key("blocks/cyan_concrete_powder")); + + /** + * {@code minecraft:blocks/cyan_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CYAN_GLAZED_TERRACOTTA = create(key("blocks/cyan_glazed_terracotta")); + + /** + * {@code minecraft:blocks/cyan_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CYAN_SHULKER_BOX = create(key("blocks/cyan_shulker_box")); + + /** + * {@code minecraft:blocks/cyan_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CYAN_STAINED_GLASS = create(key("blocks/cyan_stained_glass")); + + /** + * {@code minecraft:blocks/cyan_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CYAN_STAINED_GLASS_PANE = create(key("blocks/cyan_stained_glass_pane")); + + /** + * {@code minecraft:blocks/cyan_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CYAN_TERRACOTTA = create(key("blocks/cyan_terracotta")); + + /** + * {@code minecraft:blocks/cyan_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_CYAN_WOOL = create(key("blocks/cyan_wool")); + + /** + * {@code minecraft:blocks/damaged_anvil} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DAMAGED_ANVIL = create(key("blocks/damaged_anvil")); + + /** + * {@code minecraft:blocks/dandelion} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DANDELION = create(key("blocks/dandelion")); + + /** + * {@code minecraft:blocks/dark_oak_button} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_BUTTON = create(key("blocks/dark_oak_button")); + + /** + * {@code minecraft:blocks/dark_oak_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_DOOR = create(key("blocks/dark_oak_door")); + + /** + * {@code minecraft:blocks/dark_oak_fence} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_FENCE = create(key("blocks/dark_oak_fence")); + + /** + * {@code minecraft:blocks/dark_oak_fence_gate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_FENCE_GATE = create(key("blocks/dark_oak_fence_gate")); + + /** + * {@code minecraft:blocks/dark_oak_hanging_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_HANGING_SIGN = create(key("blocks/dark_oak_hanging_sign")); + + /** + * {@code minecraft:blocks/dark_oak_leaves} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_LEAVES = create(key("blocks/dark_oak_leaves")); + + /** + * {@code minecraft:blocks/dark_oak_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_LOG = create(key("blocks/dark_oak_log")); + + /** + * {@code minecraft:blocks/dark_oak_planks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_PLANKS = create(key("blocks/dark_oak_planks")); + + /** + * {@code minecraft:blocks/dark_oak_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_PRESSURE_PLATE = create(key("blocks/dark_oak_pressure_plate")); + + /** + * {@code minecraft:blocks/dark_oak_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_SAPLING = create(key("blocks/dark_oak_sapling")); + + /** + * {@code minecraft:blocks/dark_oak_shelf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_SHELF = create(key("blocks/dark_oak_shelf")); + + /** + * {@code minecraft:blocks/dark_oak_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_SIGN = create(key("blocks/dark_oak_sign")); + + /** + * {@code minecraft:blocks/dark_oak_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_SLAB = create(key("blocks/dark_oak_slab")); + + /** + * {@code minecraft:blocks/dark_oak_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_STAIRS = create(key("blocks/dark_oak_stairs")); + + /** + * {@code minecraft:blocks/dark_oak_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_TRAPDOOR = create(key("blocks/dark_oak_trapdoor")); + + /** + * {@code minecraft:blocks/dark_oak_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_OAK_WOOD = create(key("blocks/dark_oak_wood")); + + /** + * {@code minecraft:blocks/dark_prismarine} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_PRISMARINE = create(key("blocks/dark_prismarine")); + + /** + * {@code minecraft:blocks/dark_prismarine_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_PRISMARINE_SLAB = create(key("blocks/dark_prismarine_slab")); + + /** + * {@code minecraft:blocks/dark_prismarine_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DARK_PRISMARINE_STAIRS = create(key("blocks/dark_prismarine_stairs")); + + /** + * {@code minecraft:blocks/daylight_detector} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DAYLIGHT_DETECTOR = create(key("blocks/daylight_detector")); + + /** + * {@code minecraft:blocks/dead_brain_coral} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_BRAIN_CORAL = create(key("blocks/dead_brain_coral")); + + /** + * {@code minecraft:blocks/dead_brain_coral_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_BRAIN_CORAL_BLOCK = create(key("blocks/dead_brain_coral_block")); + + /** + * {@code minecraft:blocks/dead_brain_coral_fan} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_BRAIN_CORAL_FAN = create(key("blocks/dead_brain_coral_fan")); + + /** + * {@code minecraft:blocks/dead_bubble_coral} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_BUBBLE_CORAL = create(key("blocks/dead_bubble_coral")); + + /** + * {@code minecraft:blocks/dead_bubble_coral_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_BUBBLE_CORAL_BLOCK = create(key("blocks/dead_bubble_coral_block")); + + /** + * {@code minecraft:blocks/dead_bubble_coral_fan} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_BUBBLE_CORAL_FAN = create(key("blocks/dead_bubble_coral_fan")); + + /** + * {@code minecraft:blocks/dead_bush} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_BUSH = create(key("blocks/dead_bush")); + + /** + * {@code minecraft:blocks/dead_fire_coral} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_FIRE_CORAL = create(key("blocks/dead_fire_coral")); + + /** + * {@code minecraft:blocks/dead_fire_coral_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_FIRE_CORAL_BLOCK = create(key("blocks/dead_fire_coral_block")); + + /** + * {@code minecraft:blocks/dead_fire_coral_fan} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_FIRE_CORAL_FAN = create(key("blocks/dead_fire_coral_fan")); + + /** + * {@code minecraft:blocks/dead_horn_coral} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_HORN_CORAL = create(key("blocks/dead_horn_coral")); + + /** + * {@code minecraft:blocks/dead_horn_coral_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_HORN_CORAL_BLOCK = create(key("blocks/dead_horn_coral_block")); + + /** + * {@code minecraft:blocks/dead_horn_coral_fan} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_HORN_CORAL_FAN = create(key("blocks/dead_horn_coral_fan")); + + /** + * {@code minecraft:blocks/dead_tube_coral} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_TUBE_CORAL = create(key("blocks/dead_tube_coral")); + + /** + * {@code minecraft:blocks/dead_tube_coral_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_TUBE_CORAL_BLOCK = create(key("blocks/dead_tube_coral_block")); + + /** + * {@code minecraft:blocks/dead_tube_coral_fan} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEAD_TUBE_CORAL_FAN = create(key("blocks/dead_tube_coral_fan")); + + /** + * {@code minecraft:blocks/decorated_pot} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DECORATED_POT = create(key("blocks/decorated_pot")); + + /** + * {@code minecraft:blocks/deepslate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE = create(key("blocks/deepslate")); + + /** + * {@code minecraft:blocks/deepslate_brick_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_BRICK_SLAB = create(key("blocks/deepslate_brick_slab")); + + /** + * {@code minecraft:blocks/deepslate_brick_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_BRICK_STAIRS = create(key("blocks/deepslate_brick_stairs")); + + /** + * {@code minecraft:blocks/deepslate_brick_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_BRICK_WALL = create(key("blocks/deepslate_brick_wall")); + + /** + * {@code minecraft:blocks/deepslate_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_BRICKS = create(key("blocks/deepslate_bricks")); + + /** + * {@code minecraft:blocks/deepslate_coal_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_COAL_ORE = create(key("blocks/deepslate_coal_ore")); + + /** + * {@code minecraft:blocks/deepslate_copper_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_COPPER_ORE = create(key("blocks/deepslate_copper_ore")); + + /** + * {@code minecraft:blocks/deepslate_diamond_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_DIAMOND_ORE = create(key("blocks/deepslate_diamond_ore")); + + /** + * {@code minecraft:blocks/deepslate_emerald_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_EMERALD_ORE = create(key("blocks/deepslate_emerald_ore")); + + /** + * {@code minecraft:blocks/deepslate_gold_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_GOLD_ORE = create(key("blocks/deepslate_gold_ore")); + + /** + * {@code minecraft:blocks/deepslate_iron_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_IRON_ORE = create(key("blocks/deepslate_iron_ore")); + + /** + * {@code minecraft:blocks/deepslate_lapis_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_LAPIS_ORE = create(key("blocks/deepslate_lapis_ore")); + + /** + * {@code minecraft:blocks/deepslate_redstone_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_REDSTONE_ORE = create(key("blocks/deepslate_redstone_ore")); + + /** + * {@code minecraft:blocks/deepslate_tile_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_TILE_SLAB = create(key("blocks/deepslate_tile_slab")); + + /** + * {@code minecraft:blocks/deepslate_tile_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_TILE_STAIRS = create(key("blocks/deepslate_tile_stairs")); + + /** + * {@code minecraft:blocks/deepslate_tile_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_TILE_WALL = create(key("blocks/deepslate_tile_wall")); + + /** + * {@code minecraft:blocks/deepslate_tiles} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DEEPSLATE_TILES = create(key("blocks/deepslate_tiles")); + + /** + * {@code minecraft:blocks/detector_rail} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DETECTOR_RAIL = create(key("blocks/detector_rail")); + + /** + * {@code minecraft:blocks/diamond_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DIAMOND_BLOCK = create(key("blocks/diamond_block")); + + /** + * {@code minecraft:blocks/diamond_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DIAMOND_ORE = create(key("blocks/diamond_ore")); + + /** + * {@code minecraft:blocks/diorite} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DIORITE = create(key("blocks/diorite")); + + /** + * {@code minecraft:blocks/diorite_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DIORITE_SLAB = create(key("blocks/diorite_slab")); + + /** + * {@code minecraft:blocks/diorite_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DIORITE_STAIRS = create(key("blocks/diorite_stairs")); + + /** + * {@code minecraft:blocks/diorite_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DIORITE_WALL = create(key("blocks/diorite_wall")); + + /** + * {@code minecraft:blocks/dirt} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DIRT = create(key("blocks/dirt")); + + /** + * {@code minecraft:blocks/dirt_path} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DIRT_PATH = create(key("blocks/dirt_path")); + + /** + * {@code minecraft:blocks/dispenser} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DISPENSER = create(key("blocks/dispenser")); + + /** + * {@code minecraft:blocks/dragon_egg} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DRAGON_EGG = create(key("blocks/dragon_egg")); + + /** + * {@code minecraft:blocks/dragon_head} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DRAGON_HEAD = create(key("blocks/dragon_head")); + + /** + * {@code minecraft:blocks/dried_ghast} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DRIED_GHAST = create(key("blocks/dried_ghast")); + + /** + * {@code minecraft:blocks/dried_kelp_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DRIED_KELP_BLOCK = create(key("blocks/dried_kelp_block")); + + /** + * {@code minecraft:blocks/dripstone_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DRIPSTONE_BLOCK = create(key("blocks/dripstone_block")); + + /** + * {@code minecraft:blocks/dropper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_DROPPER = create(key("blocks/dropper")); + + /** + * {@code minecraft:blocks/emerald_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EMERALD_BLOCK = create(key("blocks/emerald_block")); + + /** + * {@code minecraft:blocks/emerald_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EMERALD_ORE = create(key("blocks/emerald_ore")); + + /** + * {@code minecraft:blocks/enchanting_table} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ENCHANTING_TABLE = create(key("blocks/enchanting_table")); + + /** + * {@code minecraft:blocks/end_rod} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_END_ROD = create(key("blocks/end_rod")); + + /** + * {@code minecraft:blocks/end_stone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_END_STONE = create(key("blocks/end_stone")); + + /** + * {@code minecraft:blocks/end_stone_brick_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_END_STONE_BRICK_SLAB = create(key("blocks/end_stone_brick_slab")); + + /** + * {@code minecraft:blocks/end_stone_brick_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_END_STONE_BRICK_STAIRS = create(key("blocks/end_stone_brick_stairs")); + + /** + * {@code minecraft:blocks/end_stone_brick_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_END_STONE_BRICK_WALL = create(key("blocks/end_stone_brick_wall")); + + /** + * {@code minecraft:blocks/end_stone_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_END_STONE_BRICKS = create(key("blocks/end_stone_bricks")); + + /** + * {@code minecraft:blocks/ender_chest} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ENDER_CHEST = create(key("blocks/ender_chest")); + + /** + * {@code minecraft:blocks/exposed_chiseled_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EXPOSED_CHISELED_COPPER = create(key("blocks/exposed_chiseled_copper")); + + /** + * {@code minecraft:blocks/exposed_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EXPOSED_COPPER = create(key("blocks/exposed_copper")); + + /** + * {@code minecraft:blocks/exposed_copper_bars} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EXPOSED_COPPER_BARS = create(key("blocks/exposed_copper_bars")); + + /** + * {@code minecraft:blocks/exposed_copper_bulb} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EXPOSED_COPPER_BULB = create(key("blocks/exposed_copper_bulb")); + + /** + * {@code minecraft:blocks/exposed_copper_chain} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EXPOSED_COPPER_CHAIN = create(key("blocks/exposed_copper_chain")); + + /** + * {@code minecraft:blocks/exposed_copper_chest} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EXPOSED_COPPER_CHEST = create(key("blocks/exposed_copper_chest")); + + /** + * {@code minecraft:blocks/exposed_copper_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EXPOSED_COPPER_DOOR = create(key("blocks/exposed_copper_door")); + + /** + * {@code minecraft:blocks/exposed_copper_golem_statue} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EXPOSED_COPPER_GOLEM_STATUE = create(key("blocks/exposed_copper_golem_statue")); + + /** + * {@code minecraft:blocks/exposed_copper_grate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EXPOSED_COPPER_GRATE = create(key("blocks/exposed_copper_grate")); + + /** + * {@code minecraft:blocks/exposed_copper_lantern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EXPOSED_COPPER_LANTERN = create(key("blocks/exposed_copper_lantern")); + + /** + * {@code minecraft:blocks/exposed_copper_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EXPOSED_COPPER_TRAPDOOR = create(key("blocks/exposed_copper_trapdoor")); + + /** + * {@code minecraft:blocks/exposed_cut_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EXPOSED_CUT_COPPER = create(key("blocks/exposed_cut_copper")); + + /** + * {@code minecraft:blocks/exposed_cut_copper_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EXPOSED_CUT_COPPER_SLAB = create(key("blocks/exposed_cut_copper_slab")); + + /** + * {@code minecraft:blocks/exposed_cut_copper_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EXPOSED_CUT_COPPER_STAIRS = create(key("blocks/exposed_cut_copper_stairs")); + + /** + * {@code minecraft:blocks/exposed_lightning_rod} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_EXPOSED_LIGHTNING_ROD = create(key("blocks/exposed_lightning_rod")); + + /** + * {@code minecraft:blocks/farmland} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_FARMLAND = create(key("blocks/farmland")); + + /** + * {@code minecraft:blocks/fern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_FERN = create(key("blocks/fern")); + + /** + * {@code minecraft:blocks/fire} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_FIRE = create(key("blocks/fire")); + + /** + * {@code minecraft:blocks/fire_coral} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_FIRE_CORAL = create(key("blocks/fire_coral")); + + /** + * {@code minecraft:blocks/fire_coral_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_FIRE_CORAL_BLOCK = create(key("blocks/fire_coral_block")); + + /** + * {@code minecraft:blocks/fire_coral_fan} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_FIRE_CORAL_FAN = create(key("blocks/fire_coral_fan")); + + /** + * {@code minecraft:blocks/firefly_bush} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_FIREFLY_BUSH = create(key("blocks/firefly_bush")); + + /** + * {@code minecraft:blocks/fletching_table} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_FLETCHING_TABLE = create(key("blocks/fletching_table")); + + /** + * {@code minecraft:blocks/flower_pot} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_FLOWER_POT = create(key("blocks/flower_pot")); + + /** + * {@code minecraft:blocks/flowering_azalea} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_FLOWERING_AZALEA = create(key("blocks/flowering_azalea")); + + /** + * {@code minecraft:blocks/flowering_azalea_leaves} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_FLOWERING_AZALEA_LEAVES = create(key("blocks/flowering_azalea_leaves")); + + /** + * {@code minecraft:blocks/frogspawn} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_FROGSPAWN = create(key("blocks/frogspawn")); + + /** + * {@code minecraft:blocks/frosted_ice} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_FROSTED_ICE = create(key("blocks/frosted_ice")); + + /** + * {@code minecraft:blocks/furnace} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_FURNACE = create(key("blocks/furnace")); + + /** + * {@code minecraft:blocks/gilded_blackstone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GILDED_BLACKSTONE = create(key("blocks/gilded_blackstone")); + + /** + * {@code minecraft:blocks/glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GLASS = create(key("blocks/glass")); + + /** + * {@code minecraft:blocks/glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GLASS_PANE = create(key("blocks/glass_pane")); + + /** + * {@code minecraft:blocks/glow_lichen} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GLOW_LICHEN = create(key("blocks/glow_lichen")); + + /** + * {@code minecraft:blocks/glowstone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GLOWSTONE = create(key("blocks/glowstone")); + + /** + * {@code minecraft:blocks/gold_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GOLD_BLOCK = create(key("blocks/gold_block")); + + /** + * {@code minecraft:blocks/gold_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GOLD_ORE = create(key("blocks/gold_ore")); + + /** + * {@code minecraft:blocks/granite} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRANITE = create(key("blocks/granite")); + + /** + * {@code minecraft:blocks/granite_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRANITE_SLAB = create(key("blocks/granite_slab")); + + /** + * {@code minecraft:blocks/granite_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRANITE_STAIRS = create(key("blocks/granite_stairs")); + + /** + * {@code minecraft:blocks/granite_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRANITE_WALL = create(key("blocks/granite_wall")); + + /** + * {@code minecraft:blocks/grass_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRASS_BLOCK = create(key("blocks/grass_block")); + + /** + * {@code minecraft:blocks/gravel} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRAVEL = create(key("blocks/gravel")); + + /** + * {@code minecraft:blocks/gray_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRAY_BANNER = create(key("blocks/gray_banner")); + + /** + * {@code minecraft:blocks/gray_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRAY_BED = create(key("blocks/gray_bed")); + + /** + * {@code minecraft:blocks/gray_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRAY_CANDLE = create(key("blocks/gray_candle")); + + /** + * {@code minecraft:blocks/gray_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRAY_CANDLE_CAKE = create(key("blocks/gray_candle_cake")); + + /** + * {@code minecraft:blocks/gray_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRAY_CARPET = create(key("blocks/gray_carpet")); + + /** + * {@code minecraft:blocks/gray_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRAY_CONCRETE = create(key("blocks/gray_concrete")); + + /** + * {@code minecraft:blocks/gray_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRAY_CONCRETE_POWDER = create(key("blocks/gray_concrete_powder")); + + /** + * {@code minecraft:blocks/gray_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRAY_GLAZED_TERRACOTTA = create(key("blocks/gray_glazed_terracotta")); + + /** + * {@code minecraft:blocks/gray_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRAY_SHULKER_BOX = create(key("blocks/gray_shulker_box")); + + /** + * {@code minecraft:blocks/gray_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRAY_STAINED_GLASS = create(key("blocks/gray_stained_glass")); + + /** + * {@code minecraft:blocks/gray_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRAY_STAINED_GLASS_PANE = create(key("blocks/gray_stained_glass_pane")); + + /** + * {@code minecraft:blocks/gray_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRAY_TERRACOTTA = create(key("blocks/gray_terracotta")); + + /** + * {@code minecraft:blocks/gray_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRAY_WOOL = create(key("blocks/gray_wool")); + + /** + * {@code minecraft:blocks/green_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GREEN_BANNER = create(key("blocks/green_banner")); + + /** + * {@code minecraft:blocks/green_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GREEN_BED = create(key("blocks/green_bed")); + + /** + * {@code minecraft:blocks/green_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GREEN_CANDLE = create(key("blocks/green_candle")); + + /** + * {@code minecraft:blocks/green_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GREEN_CANDLE_CAKE = create(key("blocks/green_candle_cake")); + + /** + * {@code minecraft:blocks/green_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GREEN_CARPET = create(key("blocks/green_carpet")); + + /** + * {@code minecraft:blocks/green_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GREEN_CONCRETE = create(key("blocks/green_concrete")); + + /** + * {@code minecraft:blocks/green_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GREEN_CONCRETE_POWDER = create(key("blocks/green_concrete_powder")); + + /** + * {@code minecraft:blocks/green_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GREEN_GLAZED_TERRACOTTA = create(key("blocks/green_glazed_terracotta")); + + /** + * {@code minecraft:blocks/green_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GREEN_SHULKER_BOX = create(key("blocks/green_shulker_box")); + + /** + * {@code minecraft:blocks/green_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GREEN_STAINED_GLASS = create(key("blocks/green_stained_glass")); + + /** + * {@code minecraft:blocks/green_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GREEN_STAINED_GLASS_PANE = create(key("blocks/green_stained_glass_pane")); + + /** + * {@code minecraft:blocks/green_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GREEN_TERRACOTTA = create(key("blocks/green_terracotta")); + + /** + * {@code minecraft:blocks/green_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GREEN_WOOL = create(key("blocks/green_wool")); + + /** + * {@code minecraft:blocks/grindstone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_GRINDSTONE = create(key("blocks/grindstone")); + + /** + * {@code minecraft:blocks/hanging_roots} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_HANGING_ROOTS = create(key("blocks/hanging_roots")); + + /** + * {@code minecraft:blocks/hay_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_HAY_BLOCK = create(key("blocks/hay_block")); + + /** + * {@code minecraft:blocks/heavy_core} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_HEAVY_CORE = create(key("blocks/heavy_core")); + + /** + * {@code minecraft:blocks/heavy_weighted_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_HEAVY_WEIGHTED_PRESSURE_PLATE = create(key("blocks/heavy_weighted_pressure_plate")); + + /** + * {@code minecraft:blocks/honey_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_HONEY_BLOCK = create(key("blocks/honey_block")); + + /** + * {@code minecraft:blocks/honeycomb_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_HONEYCOMB_BLOCK = create(key("blocks/honeycomb_block")); + + /** + * {@code minecraft:blocks/hopper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_HOPPER = create(key("blocks/hopper")); + + /** + * {@code minecraft:blocks/horn_coral} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_HORN_CORAL = create(key("blocks/horn_coral")); + + /** + * {@code minecraft:blocks/horn_coral_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_HORN_CORAL_BLOCK = create(key("blocks/horn_coral_block")); + + /** + * {@code minecraft:blocks/horn_coral_fan} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_HORN_CORAL_FAN = create(key("blocks/horn_coral_fan")); + + /** + * {@code minecraft:blocks/ice} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ICE = create(key("blocks/ice")); + + /** + * {@code minecraft:blocks/infested_chiseled_stone_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_INFESTED_CHISELED_STONE_BRICKS = create(key("blocks/infested_chiseled_stone_bricks")); + + /** + * {@code minecraft:blocks/infested_cobblestone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_INFESTED_COBBLESTONE = create(key("blocks/infested_cobblestone")); + + /** + * {@code minecraft:blocks/infested_cracked_stone_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_INFESTED_CRACKED_STONE_BRICKS = create(key("blocks/infested_cracked_stone_bricks")); + + /** + * {@code minecraft:blocks/infested_deepslate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_INFESTED_DEEPSLATE = create(key("blocks/infested_deepslate")); + + /** + * {@code minecraft:blocks/infested_mossy_stone_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_INFESTED_MOSSY_STONE_BRICKS = create(key("blocks/infested_mossy_stone_bricks")); + + /** + * {@code minecraft:blocks/infested_stone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_INFESTED_STONE = create(key("blocks/infested_stone")); + + /** + * {@code minecraft:blocks/infested_stone_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_INFESTED_STONE_BRICKS = create(key("blocks/infested_stone_bricks")); + + /** + * {@code minecraft:blocks/iron_bars} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_IRON_BARS = create(key("blocks/iron_bars")); + + /** + * {@code minecraft:blocks/iron_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_IRON_BLOCK = create(key("blocks/iron_block")); + + /** + * {@code minecraft:blocks/iron_chain} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_IRON_CHAIN = create(key("blocks/iron_chain")); + + /** + * {@code minecraft:blocks/iron_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_IRON_DOOR = create(key("blocks/iron_door")); + + /** + * {@code minecraft:blocks/iron_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_IRON_ORE = create(key("blocks/iron_ore")); + + /** + * {@code minecraft:blocks/iron_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_IRON_TRAPDOOR = create(key("blocks/iron_trapdoor")); + + /** + * {@code minecraft:blocks/jack_o_lantern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JACK_O_LANTERN = create(key("blocks/jack_o_lantern")); + + /** + * {@code minecraft:blocks/jukebox} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUKEBOX = create(key("blocks/jukebox")); + + /** + * {@code minecraft:blocks/jungle_button} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_BUTTON = create(key("blocks/jungle_button")); + + /** + * {@code minecraft:blocks/jungle_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_DOOR = create(key("blocks/jungle_door")); + + /** + * {@code minecraft:blocks/jungle_fence} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_FENCE = create(key("blocks/jungle_fence")); + + /** + * {@code minecraft:blocks/jungle_fence_gate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_FENCE_GATE = create(key("blocks/jungle_fence_gate")); + + /** + * {@code minecraft:blocks/jungle_hanging_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_HANGING_SIGN = create(key("blocks/jungle_hanging_sign")); + + /** + * {@code minecraft:blocks/jungle_leaves} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_LEAVES = create(key("blocks/jungle_leaves")); + + /** + * {@code minecraft:blocks/jungle_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_LOG = create(key("blocks/jungle_log")); + + /** + * {@code minecraft:blocks/jungle_planks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_PLANKS = create(key("blocks/jungle_planks")); + + /** + * {@code minecraft:blocks/jungle_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_PRESSURE_PLATE = create(key("blocks/jungle_pressure_plate")); + + /** + * {@code minecraft:blocks/jungle_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_SAPLING = create(key("blocks/jungle_sapling")); + + /** + * {@code minecraft:blocks/jungle_shelf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_SHELF = create(key("blocks/jungle_shelf")); + + /** + * {@code minecraft:blocks/jungle_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_SIGN = create(key("blocks/jungle_sign")); + + /** + * {@code minecraft:blocks/jungle_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_SLAB = create(key("blocks/jungle_slab")); + + /** + * {@code minecraft:blocks/jungle_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_STAIRS = create(key("blocks/jungle_stairs")); + + /** + * {@code minecraft:blocks/jungle_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_TRAPDOOR = create(key("blocks/jungle_trapdoor")); + + /** + * {@code minecraft:blocks/jungle_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_JUNGLE_WOOD = create(key("blocks/jungle_wood")); + + /** + * {@code minecraft:blocks/kelp} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_KELP = create(key("blocks/kelp")); + + /** + * {@code minecraft:blocks/kelp_plant} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_KELP_PLANT = create(key("blocks/kelp_plant")); + + /** + * {@code minecraft:blocks/ladder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LADDER = create(key("blocks/ladder")); + + /** + * {@code minecraft:blocks/lantern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LANTERN = create(key("blocks/lantern")); + + /** + * {@code minecraft:blocks/lapis_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LAPIS_BLOCK = create(key("blocks/lapis_block")); + + /** + * {@code minecraft:blocks/lapis_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LAPIS_ORE = create(key("blocks/lapis_ore")); + + /** + * {@code minecraft:blocks/large_amethyst_bud} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LARGE_AMETHYST_BUD = create(key("blocks/large_amethyst_bud")); + + /** + * {@code minecraft:blocks/large_fern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LARGE_FERN = create(key("blocks/large_fern")); + + /** + * {@code minecraft:blocks/lava_cauldron} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LAVA_CAULDRON = create(key("blocks/lava_cauldron")); + + /** + * {@code minecraft:blocks/leaf_litter} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LEAF_LITTER = create(key("blocks/leaf_litter")); + + /** + * {@code minecraft:blocks/lectern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LECTERN = create(key("blocks/lectern")); + + /** + * {@code minecraft:blocks/lever} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LEVER = create(key("blocks/lever")); + + /** + * {@code minecraft:blocks/light_blue_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_BLUE_BANNER = create(key("blocks/light_blue_banner")); + + /** + * {@code minecraft:blocks/light_blue_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_BLUE_BED = create(key("blocks/light_blue_bed")); + + /** + * {@code minecraft:blocks/light_blue_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_BLUE_CANDLE = create(key("blocks/light_blue_candle")); + + /** + * {@code minecraft:blocks/light_blue_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_BLUE_CANDLE_CAKE = create(key("blocks/light_blue_candle_cake")); + + /** + * {@code minecraft:blocks/light_blue_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_BLUE_CARPET = create(key("blocks/light_blue_carpet")); + + /** + * {@code minecraft:blocks/light_blue_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_BLUE_CONCRETE = create(key("blocks/light_blue_concrete")); + + /** + * {@code minecraft:blocks/light_blue_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_BLUE_CONCRETE_POWDER = create(key("blocks/light_blue_concrete_powder")); + + /** + * {@code minecraft:blocks/light_blue_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_BLUE_GLAZED_TERRACOTTA = create(key("blocks/light_blue_glazed_terracotta")); + + /** + * {@code minecraft:blocks/light_blue_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_BLUE_SHULKER_BOX = create(key("blocks/light_blue_shulker_box")); + + /** + * {@code minecraft:blocks/light_blue_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_BLUE_STAINED_GLASS = create(key("blocks/light_blue_stained_glass")); + + /** + * {@code minecraft:blocks/light_blue_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_BLUE_STAINED_GLASS_PANE = create(key("blocks/light_blue_stained_glass_pane")); + + /** + * {@code minecraft:blocks/light_blue_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_BLUE_TERRACOTTA = create(key("blocks/light_blue_terracotta")); + + /** + * {@code minecraft:blocks/light_blue_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_BLUE_WOOL = create(key("blocks/light_blue_wool")); + + /** + * {@code minecraft:blocks/light_gray_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_GRAY_BANNER = create(key("blocks/light_gray_banner")); + + /** + * {@code minecraft:blocks/light_gray_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_GRAY_BED = create(key("blocks/light_gray_bed")); + + /** + * {@code minecraft:blocks/light_gray_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_GRAY_CANDLE = create(key("blocks/light_gray_candle")); + + /** + * {@code minecraft:blocks/light_gray_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_GRAY_CANDLE_CAKE = create(key("blocks/light_gray_candle_cake")); + + /** + * {@code minecraft:blocks/light_gray_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_GRAY_CARPET = create(key("blocks/light_gray_carpet")); + + /** + * {@code minecraft:blocks/light_gray_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_GRAY_CONCRETE = create(key("blocks/light_gray_concrete")); + + /** + * {@code minecraft:blocks/light_gray_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_GRAY_CONCRETE_POWDER = create(key("blocks/light_gray_concrete_powder")); + + /** + * {@code minecraft:blocks/light_gray_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_GRAY_GLAZED_TERRACOTTA = create(key("blocks/light_gray_glazed_terracotta")); + + /** + * {@code minecraft:blocks/light_gray_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_GRAY_SHULKER_BOX = create(key("blocks/light_gray_shulker_box")); + + /** + * {@code minecraft:blocks/light_gray_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_GRAY_STAINED_GLASS = create(key("blocks/light_gray_stained_glass")); + + /** + * {@code minecraft:blocks/light_gray_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_GRAY_STAINED_GLASS_PANE = create(key("blocks/light_gray_stained_glass_pane")); + + /** + * {@code minecraft:blocks/light_gray_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_GRAY_TERRACOTTA = create(key("blocks/light_gray_terracotta")); + + /** + * {@code minecraft:blocks/light_gray_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_GRAY_WOOL = create(key("blocks/light_gray_wool")); + + /** + * {@code minecraft:blocks/light_weighted_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHT_WEIGHTED_PRESSURE_PLATE = create(key("blocks/light_weighted_pressure_plate")); + + /** + * {@code minecraft:blocks/lightning_rod} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIGHTNING_ROD = create(key("blocks/lightning_rod")); + + /** + * {@code minecraft:blocks/lilac} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LILAC = create(key("blocks/lilac")); + + /** + * {@code minecraft:blocks/lily_of_the_valley} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LILY_OF_THE_VALLEY = create(key("blocks/lily_of_the_valley")); + + /** + * {@code minecraft:blocks/lily_pad} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LILY_PAD = create(key("blocks/lily_pad")); + + /** + * {@code minecraft:blocks/lime_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIME_BANNER = create(key("blocks/lime_banner")); + + /** + * {@code minecraft:blocks/lime_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIME_BED = create(key("blocks/lime_bed")); + + /** + * {@code minecraft:blocks/lime_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIME_CANDLE = create(key("blocks/lime_candle")); + + /** + * {@code minecraft:blocks/lime_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIME_CANDLE_CAKE = create(key("blocks/lime_candle_cake")); + + /** + * {@code minecraft:blocks/lime_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIME_CARPET = create(key("blocks/lime_carpet")); + + /** + * {@code minecraft:blocks/lime_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIME_CONCRETE = create(key("blocks/lime_concrete")); + + /** + * {@code minecraft:blocks/lime_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIME_CONCRETE_POWDER = create(key("blocks/lime_concrete_powder")); + + /** + * {@code minecraft:blocks/lime_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIME_GLAZED_TERRACOTTA = create(key("blocks/lime_glazed_terracotta")); + + /** + * {@code minecraft:blocks/lime_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIME_SHULKER_BOX = create(key("blocks/lime_shulker_box")); + + /** + * {@code minecraft:blocks/lime_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIME_STAINED_GLASS = create(key("blocks/lime_stained_glass")); + + /** + * {@code minecraft:blocks/lime_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIME_STAINED_GLASS_PANE = create(key("blocks/lime_stained_glass_pane")); + + /** + * {@code minecraft:blocks/lime_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIME_TERRACOTTA = create(key("blocks/lime_terracotta")); + + /** + * {@code minecraft:blocks/lime_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LIME_WOOL = create(key("blocks/lime_wool")); + + /** + * {@code minecraft:blocks/lodestone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LODESTONE = create(key("blocks/lodestone")); + + /** + * {@code minecraft:blocks/loom} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_LOOM = create(key("blocks/loom")); + + /** + * {@code minecraft:blocks/magenta_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MAGENTA_BANNER = create(key("blocks/magenta_banner")); + + /** + * {@code minecraft:blocks/magenta_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MAGENTA_BED = create(key("blocks/magenta_bed")); + + /** + * {@code minecraft:blocks/magenta_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MAGENTA_CANDLE = create(key("blocks/magenta_candle")); + + /** + * {@code minecraft:blocks/magenta_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MAGENTA_CANDLE_CAKE = create(key("blocks/magenta_candle_cake")); + + /** + * {@code minecraft:blocks/magenta_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MAGENTA_CARPET = create(key("blocks/magenta_carpet")); + + /** + * {@code minecraft:blocks/magenta_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MAGENTA_CONCRETE = create(key("blocks/magenta_concrete")); + + /** + * {@code minecraft:blocks/magenta_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MAGENTA_CONCRETE_POWDER = create(key("blocks/magenta_concrete_powder")); + + /** + * {@code minecraft:blocks/magenta_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MAGENTA_GLAZED_TERRACOTTA = create(key("blocks/magenta_glazed_terracotta")); + + /** + * {@code minecraft:blocks/magenta_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MAGENTA_SHULKER_BOX = create(key("blocks/magenta_shulker_box")); + + /** + * {@code minecraft:blocks/magenta_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MAGENTA_STAINED_GLASS = create(key("blocks/magenta_stained_glass")); + + /** + * {@code minecraft:blocks/magenta_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MAGENTA_STAINED_GLASS_PANE = create(key("blocks/magenta_stained_glass_pane")); + + /** + * {@code minecraft:blocks/magenta_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MAGENTA_TERRACOTTA = create(key("blocks/magenta_terracotta")); + + /** + * {@code minecraft:blocks/magenta_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MAGENTA_WOOL = create(key("blocks/magenta_wool")); + + /** + * {@code minecraft:blocks/magma_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MAGMA_BLOCK = create(key("blocks/magma_block")); + + /** + * {@code minecraft:blocks/mangrove_button} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_BUTTON = create(key("blocks/mangrove_button")); + + /** + * {@code minecraft:blocks/mangrove_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_DOOR = create(key("blocks/mangrove_door")); + + /** + * {@code minecraft:blocks/mangrove_fence} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_FENCE = create(key("blocks/mangrove_fence")); + + /** + * {@code minecraft:blocks/mangrove_fence_gate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_FENCE_GATE = create(key("blocks/mangrove_fence_gate")); + + /** + * {@code minecraft:blocks/mangrove_hanging_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_HANGING_SIGN = create(key("blocks/mangrove_hanging_sign")); + + /** + * {@code minecraft:blocks/mangrove_leaves} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_LEAVES = create(key("blocks/mangrove_leaves")); + + /** + * {@code minecraft:blocks/mangrove_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_LOG = create(key("blocks/mangrove_log")); + + /** + * {@code minecraft:blocks/mangrove_planks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_PLANKS = create(key("blocks/mangrove_planks")); + + /** + * {@code minecraft:blocks/mangrove_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_PRESSURE_PLATE = create(key("blocks/mangrove_pressure_plate")); + + /** + * {@code minecraft:blocks/mangrove_propagule} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_PROPAGULE = create(key("blocks/mangrove_propagule")); + + /** + * {@code minecraft:blocks/mangrove_roots} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_ROOTS = create(key("blocks/mangrove_roots")); + + /** + * {@code minecraft:blocks/mangrove_shelf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_SHELF = create(key("blocks/mangrove_shelf")); + + /** + * {@code minecraft:blocks/mangrove_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_SIGN = create(key("blocks/mangrove_sign")); + + /** + * {@code minecraft:blocks/mangrove_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_SLAB = create(key("blocks/mangrove_slab")); + + /** + * {@code minecraft:blocks/mangrove_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_STAIRS = create(key("blocks/mangrove_stairs")); + + /** + * {@code minecraft:blocks/mangrove_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_TRAPDOOR = create(key("blocks/mangrove_trapdoor")); + + /** + * {@code minecraft:blocks/mangrove_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MANGROVE_WOOD = create(key("blocks/mangrove_wood")); + + /** + * {@code minecraft:blocks/medium_amethyst_bud} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MEDIUM_AMETHYST_BUD = create(key("blocks/medium_amethyst_bud")); + + /** + * {@code minecraft:blocks/melon} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MELON = create(key("blocks/melon")); + + /** + * {@code minecraft:blocks/melon_stem} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MELON_STEM = create(key("blocks/melon_stem")); + + /** + * {@code minecraft:blocks/moss_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MOSS_BLOCK = create(key("blocks/moss_block")); + + /** + * {@code minecraft:blocks/moss_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MOSS_CARPET = create(key("blocks/moss_carpet")); + + /** + * {@code minecraft:blocks/mossy_cobblestone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MOSSY_COBBLESTONE = create(key("blocks/mossy_cobblestone")); + + /** + * {@code minecraft:blocks/mossy_cobblestone_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MOSSY_COBBLESTONE_SLAB = create(key("blocks/mossy_cobblestone_slab")); + + /** + * {@code minecraft:blocks/mossy_cobblestone_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MOSSY_COBBLESTONE_STAIRS = create(key("blocks/mossy_cobblestone_stairs")); + + /** + * {@code minecraft:blocks/mossy_cobblestone_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MOSSY_COBBLESTONE_WALL = create(key("blocks/mossy_cobblestone_wall")); + + /** + * {@code minecraft:blocks/mossy_stone_brick_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MOSSY_STONE_BRICK_SLAB = create(key("blocks/mossy_stone_brick_slab")); + + /** + * {@code minecraft:blocks/mossy_stone_brick_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MOSSY_STONE_BRICK_STAIRS = create(key("blocks/mossy_stone_brick_stairs")); + + /** + * {@code minecraft:blocks/mossy_stone_brick_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MOSSY_STONE_BRICK_WALL = create(key("blocks/mossy_stone_brick_wall")); + + /** + * {@code minecraft:blocks/mossy_stone_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MOSSY_STONE_BRICKS = create(key("blocks/mossy_stone_bricks")); + + /** + * {@code minecraft:blocks/mud} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MUD = create(key("blocks/mud")); + + /** + * {@code minecraft:blocks/mud_brick_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MUD_BRICK_SLAB = create(key("blocks/mud_brick_slab")); + + /** + * {@code minecraft:blocks/mud_brick_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MUD_BRICK_STAIRS = create(key("blocks/mud_brick_stairs")); + + /** + * {@code minecraft:blocks/mud_brick_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MUD_BRICK_WALL = create(key("blocks/mud_brick_wall")); + + /** + * {@code minecraft:blocks/mud_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MUD_BRICKS = create(key("blocks/mud_bricks")); + + /** + * {@code minecraft:blocks/muddy_mangrove_roots} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MUDDY_MANGROVE_ROOTS = create(key("blocks/muddy_mangrove_roots")); + + /** + * {@code minecraft:blocks/mushroom_stem} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MUSHROOM_STEM = create(key("blocks/mushroom_stem")); + + /** + * {@code minecraft:blocks/mycelium} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_MYCELIUM = create(key("blocks/mycelium")); + + /** + * {@code minecraft:blocks/nether_brick_fence} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_NETHER_BRICK_FENCE = create(key("blocks/nether_brick_fence")); + + /** + * {@code minecraft:blocks/nether_brick_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_NETHER_BRICK_SLAB = create(key("blocks/nether_brick_slab")); + + /** + * {@code minecraft:blocks/nether_brick_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_NETHER_BRICK_STAIRS = create(key("blocks/nether_brick_stairs")); + + /** + * {@code minecraft:blocks/nether_brick_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_NETHER_BRICK_WALL = create(key("blocks/nether_brick_wall")); + + /** + * {@code minecraft:blocks/nether_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_NETHER_BRICKS = create(key("blocks/nether_bricks")); + + /** + * {@code minecraft:blocks/nether_gold_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_NETHER_GOLD_ORE = create(key("blocks/nether_gold_ore")); + + /** + * {@code minecraft:blocks/nether_portal} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_NETHER_PORTAL = create(key("blocks/nether_portal")); + + /** + * {@code minecraft:blocks/nether_quartz_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_NETHER_QUARTZ_ORE = create(key("blocks/nether_quartz_ore")); + + /** + * {@code minecraft:blocks/nether_sprouts} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_NETHER_SPROUTS = create(key("blocks/nether_sprouts")); + + /** + * {@code minecraft:blocks/nether_wart} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_NETHER_WART = create(key("blocks/nether_wart")); + + /** + * {@code minecraft:blocks/nether_wart_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_NETHER_WART_BLOCK = create(key("blocks/nether_wart_block")); + + /** + * {@code minecraft:blocks/netherite_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_NETHERITE_BLOCK = create(key("blocks/netherite_block")); + + /** + * {@code minecraft:blocks/netherrack} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_NETHERRACK = create(key("blocks/netherrack")); + + /** + * {@code minecraft:blocks/note_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_NOTE_BLOCK = create(key("blocks/note_block")); + + /** + * {@code minecraft:blocks/oak_button} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_BUTTON = create(key("blocks/oak_button")); + + /** + * {@code minecraft:blocks/oak_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_DOOR = create(key("blocks/oak_door")); + + /** + * {@code minecraft:blocks/oak_fence} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_FENCE = create(key("blocks/oak_fence")); + + /** + * {@code minecraft:blocks/oak_fence_gate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_FENCE_GATE = create(key("blocks/oak_fence_gate")); + + /** + * {@code minecraft:blocks/oak_hanging_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_HANGING_SIGN = create(key("blocks/oak_hanging_sign")); + + /** + * {@code minecraft:blocks/oak_leaves} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_LEAVES = create(key("blocks/oak_leaves")); + + /** + * {@code minecraft:blocks/oak_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_LOG = create(key("blocks/oak_log")); + + /** + * {@code minecraft:blocks/oak_planks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_PLANKS = create(key("blocks/oak_planks")); + + /** + * {@code minecraft:blocks/oak_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_PRESSURE_PLATE = create(key("blocks/oak_pressure_plate")); + + /** + * {@code minecraft:blocks/oak_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_SAPLING = create(key("blocks/oak_sapling")); + + /** + * {@code minecraft:blocks/oak_shelf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_SHELF = create(key("blocks/oak_shelf")); + + /** + * {@code minecraft:blocks/oak_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_SIGN = create(key("blocks/oak_sign")); + + /** + * {@code minecraft:blocks/oak_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_SLAB = create(key("blocks/oak_slab")); + + /** + * {@code minecraft:blocks/oak_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_STAIRS = create(key("blocks/oak_stairs")); + + /** + * {@code minecraft:blocks/oak_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_TRAPDOOR = create(key("blocks/oak_trapdoor")); + + /** + * {@code minecraft:blocks/oak_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OAK_WOOD = create(key("blocks/oak_wood")); + + /** + * {@code minecraft:blocks/observer} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OBSERVER = create(key("blocks/observer")); + + /** + * {@code minecraft:blocks/obsidian} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OBSIDIAN = create(key("blocks/obsidian")); + + /** + * {@code minecraft:blocks/ochre_froglight} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OCHRE_FROGLIGHT = create(key("blocks/ochre_froglight")); + + /** + * {@code minecraft:blocks/open_eyeblossom} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OPEN_EYEBLOSSOM = create(key("blocks/open_eyeblossom")); + + /** + * {@code minecraft:blocks/orange_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ORANGE_BANNER = create(key("blocks/orange_banner")); + + /** + * {@code minecraft:blocks/orange_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ORANGE_BED = create(key("blocks/orange_bed")); + + /** + * {@code minecraft:blocks/orange_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ORANGE_CANDLE = create(key("blocks/orange_candle")); + + /** + * {@code minecraft:blocks/orange_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ORANGE_CANDLE_CAKE = create(key("blocks/orange_candle_cake")); + + /** + * {@code minecraft:blocks/orange_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ORANGE_CARPET = create(key("blocks/orange_carpet")); + + /** + * {@code minecraft:blocks/orange_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ORANGE_CONCRETE = create(key("blocks/orange_concrete")); + + /** + * {@code minecraft:blocks/orange_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ORANGE_CONCRETE_POWDER = create(key("blocks/orange_concrete_powder")); + + /** + * {@code minecraft:blocks/orange_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ORANGE_GLAZED_TERRACOTTA = create(key("blocks/orange_glazed_terracotta")); + + /** + * {@code minecraft:blocks/orange_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ORANGE_SHULKER_BOX = create(key("blocks/orange_shulker_box")); + + /** + * {@code minecraft:blocks/orange_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ORANGE_STAINED_GLASS = create(key("blocks/orange_stained_glass")); + + /** + * {@code minecraft:blocks/orange_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ORANGE_STAINED_GLASS_PANE = create(key("blocks/orange_stained_glass_pane")); + + /** + * {@code minecraft:blocks/orange_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ORANGE_TERRACOTTA = create(key("blocks/orange_terracotta")); + + /** + * {@code minecraft:blocks/orange_tulip} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ORANGE_TULIP = create(key("blocks/orange_tulip")); + + /** + * {@code minecraft:blocks/orange_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ORANGE_WOOL = create(key("blocks/orange_wool")); + + /** + * {@code minecraft:blocks/oxeye_daisy} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXEYE_DAISY = create(key("blocks/oxeye_daisy")); + + /** + * {@code minecraft:blocks/oxidized_chiseled_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXIDIZED_CHISELED_COPPER = create(key("blocks/oxidized_chiseled_copper")); + + /** + * {@code minecraft:blocks/oxidized_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXIDIZED_COPPER = create(key("blocks/oxidized_copper")); + + /** + * {@code minecraft:blocks/oxidized_copper_bars} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXIDIZED_COPPER_BARS = create(key("blocks/oxidized_copper_bars")); + + /** + * {@code minecraft:blocks/oxidized_copper_bulb} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXIDIZED_COPPER_BULB = create(key("blocks/oxidized_copper_bulb")); + + /** + * {@code minecraft:blocks/oxidized_copper_chain} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXIDIZED_COPPER_CHAIN = create(key("blocks/oxidized_copper_chain")); + + /** + * {@code minecraft:blocks/oxidized_copper_chest} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXIDIZED_COPPER_CHEST = create(key("blocks/oxidized_copper_chest")); + + /** + * {@code minecraft:blocks/oxidized_copper_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXIDIZED_COPPER_DOOR = create(key("blocks/oxidized_copper_door")); + + /** + * {@code minecraft:blocks/oxidized_copper_golem_statue} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXIDIZED_COPPER_GOLEM_STATUE = create(key("blocks/oxidized_copper_golem_statue")); + + /** + * {@code minecraft:blocks/oxidized_copper_grate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXIDIZED_COPPER_GRATE = create(key("blocks/oxidized_copper_grate")); + + /** + * {@code minecraft:blocks/oxidized_copper_lantern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXIDIZED_COPPER_LANTERN = create(key("blocks/oxidized_copper_lantern")); + + /** + * {@code minecraft:blocks/oxidized_copper_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXIDIZED_COPPER_TRAPDOOR = create(key("blocks/oxidized_copper_trapdoor")); + + /** + * {@code minecraft:blocks/oxidized_cut_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXIDIZED_CUT_COPPER = create(key("blocks/oxidized_cut_copper")); + + /** + * {@code minecraft:blocks/oxidized_cut_copper_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXIDIZED_CUT_COPPER_SLAB = create(key("blocks/oxidized_cut_copper_slab")); + + /** + * {@code minecraft:blocks/oxidized_cut_copper_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXIDIZED_CUT_COPPER_STAIRS = create(key("blocks/oxidized_cut_copper_stairs")); + + /** + * {@code minecraft:blocks/oxidized_lightning_rod} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_OXIDIZED_LIGHTNING_ROD = create(key("blocks/oxidized_lightning_rod")); + + /** + * {@code minecraft:blocks/packed_ice} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PACKED_ICE = create(key("blocks/packed_ice")); + + /** + * {@code minecraft:blocks/packed_mud} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PACKED_MUD = create(key("blocks/packed_mud")); + + /** + * {@code minecraft:blocks/pale_hanging_moss} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_HANGING_MOSS = create(key("blocks/pale_hanging_moss")); + + /** + * {@code minecraft:blocks/pale_moss_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_MOSS_BLOCK = create(key("blocks/pale_moss_block")); + + /** + * {@code minecraft:blocks/pale_moss_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_MOSS_CARPET = create(key("blocks/pale_moss_carpet")); + + /** + * {@code minecraft:blocks/pale_oak_button} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_BUTTON = create(key("blocks/pale_oak_button")); + + /** + * {@code minecraft:blocks/pale_oak_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_DOOR = create(key("blocks/pale_oak_door")); + + /** + * {@code minecraft:blocks/pale_oak_fence} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_FENCE = create(key("blocks/pale_oak_fence")); + + /** + * {@code minecraft:blocks/pale_oak_fence_gate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_FENCE_GATE = create(key("blocks/pale_oak_fence_gate")); + + /** + * {@code minecraft:blocks/pale_oak_hanging_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_HANGING_SIGN = create(key("blocks/pale_oak_hanging_sign")); + + /** + * {@code minecraft:blocks/pale_oak_leaves} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_LEAVES = create(key("blocks/pale_oak_leaves")); + + /** + * {@code minecraft:blocks/pale_oak_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_LOG = create(key("blocks/pale_oak_log")); + + /** + * {@code minecraft:blocks/pale_oak_planks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_PLANKS = create(key("blocks/pale_oak_planks")); + + /** + * {@code minecraft:blocks/pale_oak_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_PRESSURE_PLATE = create(key("blocks/pale_oak_pressure_plate")); + + /** + * {@code minecraft:blocks/pale_oak_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_SAPLING = create(key("blocks/pale_oak_sapling")); + + /** + * {@code minecraft:blocks/pale_oak_shelf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_SHELF = create(key("blocks/pale_oak_shelf")); + + /** + * {@code minecraft:blocks/pale_oak_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_SIGN = create(key("blocks/pale_oak_sign")); + + /** + * {@code minecraft:blocks/pale_oak_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_SLAB = create(key("blocks/pale_oak_slab")); + + /** + * {@code minecraft:blocks/pale_oak_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_STAIRS = create(key("blocks/pale_oak_stairs")); + + /** + * {@code minecraft:blocks/pale_oak_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_TRAPDOOR = create(key("blocks/pale_oak_trapdoor")); + + /** + * {@code minecraft:blocks/pale_oak_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PALE_OAK_WOOD = create(key("blocks/pale_oak_wood")); + + /** + * {@code minecraft:blocks/pearlescent_froglight} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PEARLESCENT_FROGLIGHT = create(key("blocks/pearlescent_froglight")); + + /** + * {@code minecraft:blocks/peony} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PEONY = create(key("blocks/peony")); + + /** + * {@code minecraft:blocks/petrified_oak_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PETRIFIED_OAK_SLAB = create(key("blocks/petrified_oak_slab")); + + /** + * {@code minecraft:blocks/piglin_head} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PIGLIN_HEAD = create(key("blocks/piglin_head")); + + /** + * {@code minecraft:blocks/pink_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PINK_BANNER = create(key("blocks/pink_banner")); + + /** + * {@code minecraft:blocks/pink_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PINK_BED = create(key("blocks/pink_bed")); + + /** + * {@code minecraft:blocks/pink_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PINK_CANDLE = create(key("blocks/pink_candle")); + + /** + * {@code minecraft:blocks/pink_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PINK_CANDLE_CAKE = create(key("blocks/pink_candle_cake")); + + /** + * {@code minecraft:blocks/pink_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PINK_CARPET = create(key("blocks/pink_carpet")); + + /** + * {@code minecraft:blocks/pink_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PINK_CONCRETE = create(key("blocks/pink_concrete")); + + /** + * {@code minecraft:blocks/pink_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PINK_CONCRETE_POWDER = create(key("blocks/pink_concrete_powder")); + + /** + * {@code minecraft:blocks/pink_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PINK_GLAZED_TERRACOTTA = create(key("blocks/pink_glazed_terracotta")); + + /** + * {@code minecraft:blocks/pink_petals} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PINK_PETALS = create(key("blocks/pink_petals")); + + /** + * {@code minecraft:blocks/pink_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PINK_SHULKER_BOX = create(key("blocks/pink_shulker_box")); + + /** + * {@code minecraft:blocks/pink_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PINK_STAINED_GLASS = create(key("blocks/pink_stained_glass")); + + /** + * {@code minecraft:blocks/pink_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PINK_STAINED_GLASS_PANE = create(key("blocks/pink_stained_glass_pane")); + + /** + * {@code minecraft:blocks/pink_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PINK_TERRACOTTA = create(key("blocks/pink_terracotta")); + + /** + * {@code minecraft:blocks/pink_tulip} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PINK_TULIP = create(key("blocks/pink_tulip")); + + /** + * {@code minecraft:blocks/pink_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PINK_WOOL = create(key("blocks/pink_wool")); + + /** + * {@code minecraft:blocks/piston} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PISTON = create(key("blocks/piston")); + + /** + * {@code minecraft:blocks/pitcher_crop} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PITCHER_CROP = create(key("blocks/pitcher_crop")); + + /** + * {@code minecraft:blocks/pitcher_plant} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PITCHER_PLANT = create(key("blocks/pitcher_plant")); + + /** + * {@code minecraft:blocks/player_head} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PLAYER_HEAD = create(key("blocks/player_head")); + + /** + * {@code minecraft:blocks/podzol} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PODZOL = create(key("blocks/podzol")); + + /** + * {@code minecraft:blocks/pointed_dripstone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POINTED_DRIPSTONE = create(key("blocks/pointed_dripstone")); + + /** + * {@code minecraft:blocks/polished_andesite} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_ANDESITE = create(key("blocks/polished_andesite")); + + /** + * {@code minecraft:blocks/polished_andesite_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_ANDESITE_SLAB = create(key("blocks/polished_andesite_slab")); + + /** + * {@code minecraft:blocks/polished_andesite_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_ANDESITE_STAIRS = create(key("blocks/polished_andesite_stairs")); + + /** + * {@code minecraft:blocks/polished_basalt} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_BASALT = create(key("blocks/polished_basalt")); + + /** + * {@code minecraft:blocks/polished_blackstone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_BLACKSTONE = create(key("blocks/polished_blackstone")); + + /** + * {@code minecraft:blocks/polished_blackstone_brick_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_BLACKSTONE_BRICK_SLAB = create(key("blocks/polished_blackstone_brick_slab")); + + /** + * {@code minecraft:blocks/polished_blackstone_brick_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_BLACKSTONE_BRICK_STAIRS = create(key("blocks/polished_blackstone_brick_stairs")); + + /** + * {@code minecraft:blocks/polished_blackstone_brick_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_BLACKSTONE_BRICK_WALL = create(key("blocks/polished_blackstone_brick_wall")); + + /** + * {@code minecraft:blocks/polished_blackstone_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_BLACKSTONE_BRICKS = create(key("blocks/polished_blackstone_bricks")); + + /** + * {@code minecraft:blocks/polished_blackstone_button} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_BLACKSTONE_BUTTON = create(key("blocks/polished_blackstone_button")); + + /** + * {@code minecraft:blocks/polished_blackstone_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_BLACKSTONE_PRESSURE_PLATE = create(key("blocks/polished_blackstone_pressure_plate")); + + /** + * {@code minecraft:blocks/polished_blackstone_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_BLACKSTONE_SLAB = create(key("blocks/polished_blackstone_slab")); + + /** + * {@code minecraft:blocks/polished_blackstone_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_BLACKSTONE_STAIRS = create(key("blocks/polished_blackstone_stairs")); + + /** + * {@code minecraft:blocks/polished_blackstone_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_BLACKSTONE_WALL = create(key("blocks/polished_blackstone_wall")); + + /** + * {@code minecraft:blocks/polished_deepslate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_DEEPSLATE = create(key("blocks/polished_deepslate")); + + /** + * {@code minecraft:blocks/polished_deepslate_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_DEEPSLATE_SLAB = create(key("blocks/polished_deepslate_slab")); + + /** + * {@code minecraft:blocks/polished_deepslate_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_DEEPSLATE_STAIRS = create(key("blocks/polished_deepslate_stairs")); + + /** + * {@code minecraft:blocks/polished_deepslate_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_DEEPSLATE_WALL = create(key("blocks/polished_deepslate_wall")); + + /** + * {@code minecraft:blocks/polished_diorite} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_DIORITE = create(key("blocks/polished_diorite")); + + /** + * {@code minecraft:blocks/polished_diorite_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_DIORITE_SLAB = create(key("blocks/polished_diorite_slab")); + + /** + * {@code minecraft:blocks/polished_diorite_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_DIORITE_STAIRS = create(key("blocks/polished_diorite_stairs")); + + /** + * {@code minecraft:blocks/polished_granite} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_GRANITE = create(key("blocks/polished_granite")); + + /** + * {@code minecraft:blocks/polished_granite_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_GRANITE_SLAB = create(key("blocks/polished_granite_slab")); + + /** + * {@code minecraft:blocks/polished_granite_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_GRANITE_STAIRS = create(key("blocks/polished_granite_stairs")); + + /** + * {@code minecraft:blocks/polished_tuff} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_TUFF = create(key("blocks/polished_tuff")); + + /** + * {@code minecraft:blocks/polished_tuff_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_TUFF_SLAB = create(key("blocks/polished_tuff_slab")); + + /** + * {@code minecraft:blocks/polished_tuff_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_TUFF_STAIRS = create(key("blocks/polished_tuff_stairs")); + + /** + * {@code minecraft:blocks/polished_tuff_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POLISHED_TUFF_WALL = create(key("blocks/polished_tuff_wall")); + + /** + * {@code minecraft:blocks/poppy} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POPPY = create(key("blocks/poppy")); + + /** + * {@code minecraft:blocks/potatoes} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTATOES = create(key("blocks/potatoes")); + + /** + * {@code minecraft:blocks/potted_acacia_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_ACACIA_SAPLING = create(key("blocks/potted_acacia_sapling")); + + /** + * {@code minecraft:blocks/potted_allium} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_ALLIUM = create(key("blocks/potted_allium")); + + /** + * {@code minecraft:blocks/potted_azalea_bush} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_AZALEA_BUSH = create(key("blocks/potted_azalea_bush")); + + /** + * {@code minecraft:blocks/potted_azure_bluet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_AZURE_BLUET = create(key("blocks/potted_azure_bluet")); + + /** + * {@code minecraft:blocks/potted_bamboo} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_BAMBOO = create(key("blocks/potted_bamboo")); + + /** + * {@code minecraft:blocks/potted_birch_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_BIRCH_SAPLING = create(key("blocks/potted_birch_sapling")); + + /** + * {@code minecraft:blocks/potted_blue_orchid} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_BLUE_ORCHID = create(key("blocks/potted_blue_orchid")); + + /** + * {@code minecraft:blocks/potted_brown_mushroom} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_BROWN_MUSHROOM = create(key("blocks/potted_brown_mushroom")); + + /** + * {@code minecraft:blocks/potted_cactus} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_CACTUS = create(key("blocks/potted_cactus")); + + /** + * {@code minecraft:blocks/potted_cherry_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_CHERRY_SAPLING = create(key("blocks/potted_cherry_sapling")); + + /** + * {@code minecraft:blocks/potted_closed_eyeblossom} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_CLOSED_EYEBLOSSOM = create(key("blocks/potted_closed_eyeblossom")); + + /** + * {@code minecraft:blocks/potted_cornflower} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_CORNFLOWER = create(key("blocks/potted_cornflower")); + + /** + * {@code minecraft:blocks/potted_crimson_fungus} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_CRIMSON_FUNGUS = create(key("blocks/potted_crimson_fungus")); + + /** + * {@code minecraft:blocks/potted_crimson_roots} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_CRIMSON_ROOTS = create(key("blocks/potted_crimson_roots")); + + /** + * {@code minecraft:blocks/potted_dandelion} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_DANDELION = create(key("blocks/potted_dandelion")); + + /** + * {@code minecraft:blocks/potted_dark_oak_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_DARK_OAK_SAPLING = create(key("blocks/potted_dark_oak_sapling")); + + /** + * {@code minecraft:blocks/potted_dead_bush} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_DEAD_BUSH = create(key("blocks/potted_dead_bush")); + + /** + * {@code minecraft:blocks/potted_fern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_FERN = create(key("blocks/potted_fern")); + + /** + * {@code minecraft:blocks/potted_flowering_azalea_bush} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_FLOWERING_AZALEA_BUSH = create(key("blocks/potted_flowering_azalea_bush")); + + /** + * {@code minecraft:blocks/potted_jungle_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_JUNGLE_SAPLING = create(key("blocks/potted_jungle_sapling")); + + /** + * {@code minecraft:blocks/potted_lily_of_the_valley} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_LILY_OF_THE_VALLEY = create(key("blocks/potted_lily_of_the_valley")); + + /** + * {@code minecraft:blocks/potted_mangrove_propagule} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_MANGROVE_PROPAGULE = create(key("blocks/potted_mangrove_propagule")); + + /** + * {@code minecraft:blocks/potted_oak_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_OAK_SAPLING = create(key("blocks/potted_oak_sapling")); + + /** + * {@code minecraft:blocks/potted_open_eyeblossom} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_OPEN_EYEBLOSSOM = create(key("blocks/potted_open_eyeblossom")); + + /** + * {@code minecraft:blocks/potted_orange_tulip} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_ORANGE_TULIP = create(key("blocks/potted_orange_tulip")); + + /** + * {@code minecraft:blocks/potted_oxeye_daisy} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_OXEYE_DAISY = create(key("blocks/potted_oxeye_daisy")); + + /** + * {@code minecraft:blocks/potted_pale_oak_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_PALE_OAK_SAPLING = create(key("blocks/potted_pale_oak_sapling")); + + /** + * {@code minecraft:blocks/potted_pink_tulip} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_PINK_TULIP = create(key("blocks/potted_pink_tulip")); + + /** + * {@code minecraft:blocks/potted_poppy} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_POPPY = create(key("blocks/potted_poppy")); + + /** + * {@code minecraft:blocks/potted_red_mushroom} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_RED_MUSHROOM = create(key("blocks/potted_red_mushroom")); + + /** + * {@code minecraft:blocks/potted_red_tulip} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_RED_TULIP = create(key("blocks/potted_red_tulip")); + + /** + * {@code minecraft:blocks/potted_spruce_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_SPRUCE_SAPLING = create(key("blocks/potted_spruce_sapling")); + + /** + * {@code minecraft:blocks/potted_torchflower} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_TORCHFLOWER = create(key("blocks/potted_torchflower")); + + /** + * {@code minecraft:blocks/potted_warped_fungus} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_WARPED_FUNGUS = create(key("blocks/potted_warped_fungus")); + + /** + * {@code minecraft:blocks/potted_warped_roots} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_WARPED_ROOTS = create(key("blocks/potted_warped_roots")); + + /** + * {@code minecraft:blocks/potted_white_tulip} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_WHITE_TULIP = create(key("blocks/potted_white_tulip")); + + /** + * {@code minecraft:blocks/potted_wither_rose} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POTTED_WITHER_ROSE = create(key("blocks/potted_wither_rose")); + + /** + * {@code minecraft:blocks/powder_snow} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POWDER_SNOW = create(key("blocks/powder_snow")); + + /** + * {@code minecraft:blocks/powder_snow_cauldron} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POWDER_SNOW_CAULDRON = create(key("blocks/powder_snow_cauldron")); + + /** + * {@code minecraft:blocks/powered_rail} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_POWERED_RAIL = create(key("blocks/powered_rail")); + + /** + * {@code minecraft:blocks/prismarine} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PRISMARINE = create(key("blocks/prismarine")); + + /** + * {@code minecraft:blocks/prismarine_brick_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PRISMARINE_BRICK_SLAB = create(key("blocks/prismarine_brick_slab")); + + /** + * {@code minecraft:blocks/prismarine_brick_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PRISMARINE_BRICK_STAIRS = create(key("blocks/prismarine_brick_stairs")); + + /** + * {@code minecraft:blocks/prismarine_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PRISMARINE_BRICKS = create(key("blocks/prismarine_bricks")); + + /** + * {@code minecraft:blocks/prismarine_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PRISMARINE_SLAB = create(key("blocks/prismarine_slab")); + + /** + * {@code minecraft:blocks/prismarine_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PRISMARINE_STAIRS = create(key("blocks/prismarine_stairs")); + + /** + * {@code minecraft:blocks/prismarine_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PRISMARINE_WALL = create(key("blocks/prismarine_wall")); + + /** + * {@code minecraft:blocks/pumpkin} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PUMPKIN = create(key("blocks/pumpkin")); + + /** + * {@code minecraft:blocks/pumpkin_stem} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PUMPKIN_STEM = create(key("blocks/pumpkin_stem")); + + /** + * {@code minecraft:blocks/purple_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPLE_BANNER = create(key("blocks/purple_banner")); + + /** + * {@code minecraft:blocks/purple_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPLE_BED = create(key("blocks/purple_bed")); + + /** + * {@code minecraft:blocks/purple_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPLE_CANDLE = create(key("blocks/purple_candle")); + + /** + * {@code minecraft:blocks/purple_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPLE_CANDLE_CAKE = create(key("blocks/purple_candle_cake")); + + /** + * {@code minecraft:blocks/purple_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPLE_CARPET = create(key("blocks/purple_carpet")); + + /** + * {@code minecraft:blocks/purple_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPLE_CONCRETE = create(key("blocks/purple_concrete")); + + /** + * {@code minecraft:blocks/purple_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPLE_CONCRETE_POWDER = create(key("blocks/purple_concrete_powder")); + + /** + * {@code minecraft:blocks/purple_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPLE_GLAZED_TERRACOTTA = create(key("blocks/purple_glazed_terracotta")); + + /** + * {@code minecraft:blocks/purple_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPLE_SHULKER_BOX = create(key("blocks/purple_shulker_box")); + + /** + * {@code minecraft:blocks/purple_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPLE_STAINED_GLASS = create(key("blocks/purple_stained_glass")); + + /** + * {@code minecraft:blocks/purple_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPLE_STAINED_GLASS_PANE = create(key("blocks/purple_stained_glass_pane")); + + /** + * {@code minecraft:blocks/purple_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPLE_TERRACOTTA = create(key("blocks/purple_terracotta")); + + /** + * {@code minecraft:blocks/purple_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPLE_WOOL = create(key("blocks/purple_wool")); + + /** + * {@code minecraft:blocks/purpur_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPUR_BLOCK = create(key("blocks/purpur_block")); + + /** + * {@code minecraft:blocks/purpur_pillar} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPUR_PILLAR = create(key("blocks/purpur_pillar")); + + /** + * {@code minecraft:blocks/purpur_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPUR_SLAB = create(key("blocks/purpur_slab")); + + /** + * {@code minecraft:blocks/purpur_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_PURPUR_STAIRS = create(key("blocks/purpur_stairs")); + + /** + * {@code minecraft:blocks/quartz_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_QUARTZ_BLOCK = create(key("blocks/quartz_block")); + + /** + * {@code minecraft:blocks/quartz_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_QUARTZ_BRICKS = create(key("blocks/quartz_bricks")); + + /** + * {@code minecraft:blocks/quartz_pillar} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_QUARTZ_PILLAR = create(key("blocks/quartz_pillar")); + + /** + * {@code minecraft:blocks/quartz_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_QUARTZ_SLAB = create(key("blocks/quartz_slab")); + + /** + * {@code minecraft:blocks/quartz_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_QUARTZ_STAIRS = create(key("blocks/quartz_stairs")); + + /** + * {@code minecraft:blocks/rail} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RAIL = create(key("blocks/rail")); + + /** + * {@code minecraft:blocks/raw_copper_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RAW_COPPER_BLOCK = create(key("blocks/raw_copper_block")); + + /** + * {@code minecraft:blocks/raw_gold_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RAW_GOLD_BLOCK = create(key("blocks/raw_gold_block")); + + /** + * {@code minecraft:blocks/raw_iron_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RAW_IRON_BLOCK = create(key("blocks/raw_iron_block")); + + /** + * {@code minecraft:blocks/red_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_BANNER = create(key("blocks/red_banner")); + + /** + * {@code minecraft:blocks/red_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_BED = create(key("blocks/red_bed")); + + /** + * {@code minecraft:blocks/red_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_CANDLE = create(key("blocks/red_candle")); + + /** + * {@code minecraft:blocks/red_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_CANDLE_CAKE = create(key("blocks/red_candle_cake")); + + /** + * {@code minecraft:blocks/red_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_CARPET = create(key("blocks/red_carpet")); + + /** + * {@code minecraft:blocks/red_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_CONCRETE = create(key("blocks/red_concrete")); + + /** + * {@code minecraft:blocks/red_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_CONCRETE_POWDER = create(key("blocks/red_concrete_powder")); + + /** + * {@code minecraft:blocks/red_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_GLAZED_TERRACOTTA = create(key("blocks/red_glazed_terracotta")); + + /** + * {@code minecraft:blocks/red_mushroom} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_MUSHROOM = create(key("blocks/red_mushroom")); + + /** + * {@code minecraft:blocks/red_mushroom_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_MUSHROOM_BLOCK = create(key("blocks/red_mushroom_block")); + + /** + * {@code minecraft:blocks/red_nether_brick_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_NETHER_BRICK_SLAB = create(key("blocks/red_nether_brick_slab")); + + /** + * {@code minecraft:blocks/red_nether_brick_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_NETHER_BRICK_STAIRS = create(key("blocks/red_nether_brick_stairs")); + + /** + * {@code minecraft:blocks/red_nether_brick_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_NETHER_BRICK_WALL = create(key("blocks/red_nether_brick_wall")); + + /** + * {@code minecraft:blocks/red_nether_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_NETHER_BRICKS = create(key("blocks/red_nether_bricks")); + + /** + * {@code minecraft:blocks/red_sand} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_SAND = create(key("blocks/red_sand")); + + /** + * {@code minecraft:blocks/red_sandstone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_SANDSTONE = create(key("blocks/red_sandstone")); + + /** + * {@code minecraft:blocks/red_sandstone_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_SANDSTONE_SLAB = create(key("blocks/red_sandstone_slab")); + + /** + * {@code minecraft:blocks/red_sandstone_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_SANDSTONE_STAIRS = create(key("blocks/red_sandstone_stairs")); + + /** + * {@code minecraft:blocks/red_sandstone_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_SANDSTONE_WALL = create(key("blocks/red_sandstone_wall")); + + /** + * {@code minecraft:blocks/red_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_SHULKER_BOX = create(key("blocks/red_shulker_box")); + + /** + * {@code minecraft:blocks/red_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_STAINED_GLASS = create(key("blocks/red_stained_glass")); + + /** + * {@code minecraft:blocks/red_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_STAINED_GLASS_PANE = create(key("blocks/red_stained_glass_pane")); + + /** + * {@code minecraft:blocks/red_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_TERRACOTTA = create(key("blocks/red_terracotta")); + + /** + * {@code minecraft:blocks/red_tulip} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_TULIP = create(key("blocks/red_tulip")); + + /** + * {@code minecraft:blocks/red_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RED_WOOL = create(key("blocks/red_wool")); + + /** + * {@code minecraft:blocks/redstone_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_REDSTONE_BLOCK = create(key("blocks/redstone_block")); + + /** + * {@code minecraft:blocks/redstone_lamp} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_REDSTONE_LAMP = create(key("blocks/redstone_lamp")); + + /** + * {@code minecraft:blocks/redstone_ore} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_REDSTONE_ORE = create(key("blocks/redstone_ore")); + + /** + * {@code minecraft:blocks/redstone_torch} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_REDSTONE_TORCH = create(key("blocks/redstone_torch")); + + /** + * {@code minecraft:blocks/redstone_wire} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_REDSTONE_WIRE = create(key("blocks/redstone_wire")); + + /** + * {@code minecraft:blocks/reinforced_deepslate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_REINFORCED_DEEPSLATE = create(key("blocks/reinforced_deepslate")); + + /** + * {@code minecraft:blocks/repeater} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_REPEATER = create(key("blocks/repeater")); + + /** + * {@code minecraft:blocks/resin_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RESIN_BLOCK = create(key("blocks/resin_block")); + + /** + * {@code minecraft:blocks/resin_brick_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RESIN_BRICK_SLAB = create(key("blocks/resin_brick_slab")); + + /** + * {@code minecraft:blocks/resin_brick_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RESIN_BRICK_STAIRS = create(key("blocks/resin_brick_stairs")); + + /** + * {@code minecraft:blocks/resin_brick_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RESIN_BRICK_WALL = create(key("blocks/resin_brick_wall")); + + /** + * {@code minecraft:blocks/resin_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RESIN_BRICKS = create(key("blocks/resin_bricks")); + + /** + * {@code minecraft:blocks/resin_clump} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RESIN_CLUMP = create(key("blocks/resin_clump")); + + /** + * {@code minecraft:blocks/respawn_anchor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_RESPAWN_ANCHOR = create(key("blocks/respawn_anchor")); + + /** + * {@code minecraft:blocks/rooted_dirt} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ROOTED_DIRT = create(key("blocks/rooted_dirt")); + + /** + * {@code minecraft:blocks/rose_bush} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ROSE_BUSH = create(key("blocks/rose_bush")); + + /** + * {@code minecraft:blocks/sand} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SAND = create(key("blocks/sand")); + + /** + * {@code minecraft:blocks/sandstone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SANDSTONE = create(key("blocks/sandstone")); + + /** + * {@code minecraft:blocks/sandstone_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SANDSTONE_SLAB = create(key("blocks/sandstone_slab")); + + /** + * {@code minecraft:blocks/sandstone_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SANDSTONE_STAIRS = create(key("blocks/sandstone_stairs")); + + /** + * {@code minecraft:blocks/sandstone_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SANDSTONE_WALL = create(key("blocks/sandstone_wall")); + + /** + * {@code minecraft:blocks/scaffolding} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SCAFFOLDING = create(key("blocks/scaffolding")); + + /** + * {@code minecraft:blocks/sculk} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SCULK = create(key("blocks/sculk")); + + /** + * {@code minecraft:blocks/sculk_catalyst} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SCULK_CATALYST = create(key("blocks/sculk_catalyst")); + + /** + * {@code minecraft:blocks/sculk_sensor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SCULK_SENSOR = create(key("blocks/sculk_sensor")); + + /** + * {@code minecraft:blocks/sculk_shrieker} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SCULK_SHRIEKER = create(key("blocks/sculk_shrieker")); + + /** + * {@code minecraft:blocks/sculk_vein} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SCULK_VEIN = create(key("blocks/sculk_vein")); + + /** + * {@code minecraft:blocks/sea_lantern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SEA_LANTERN = create(key("blocks/sea_lantern")); + + /** + * {@code minecraft:blocks/sea_pickle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SEA_PICKLE = create(key("blocks/sea_pickle")); + + /** + * {@code minecraft:blocks/seagrass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SEAGRASS = create(key("blocks/seagrass")); + + /** + * {@code minecraft:blocks/short_dry_grass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SHORT_DRY_GRASS = create(key("blocks/short_dry_grass")); + + /** + * {@code minecraft:blocks/short_grass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SHORT_GRASS = create(key("blocks/short_grass")); + + /** + * {@code minecraft:blocks/shroomlight} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SHROOMLIGHT = create(key("blocks/shroomlight")); + + /** + * {@code minecraft:blocks/shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SHULKER_BOX = create(key("blocks/shulker_box")); + + /** + * {@code minecraft:blocks/skeleton_skull} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SKELETON_SKULL = create(key("blocks/skeleton_skull")); + + /** + * {@code minecraft:blocks/slime_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SLIME_BLOCK = create(key("blocks/slime_block")); + + /** + * {@code minecraft:blocks/small_amethyst_bud} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMALL_AMETHYST_BUD = create(key("blocks/small_amethyst_bud")); + + /** + * {@code minecraft:blocks/small_dripleaf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMALL_DRIPLEAF = create(key("blocks/small_dripleaf")); + + /** + * {@code minecraft:blocks/smithing_table} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMITHING_TABLE = create(key("blocks/smithing_table")); + + /** + * {@code minecraft:blocks/smoker} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMOKER = create(key("blocks/smoker")); + + /** + * {@code minecraft:blocks/smooth_basalt} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMOOTH_BASALT = create(key("blocks/smooth_basalt")); + + /** + * {@code minecraft:blocks/smooth_quartz} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMOOTH_QUARTZ = create(key("blocks/smooth_quartz")); + + /** + * {@code minecraft:blocks/smooth_quartz_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMOOTH_QUARTZ_SLAB = create(key("blocks/smooth_quartz_slab")); + + /** + * {@code minecraft:blocks/smooth_quartz_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMOOTH_QUARTZ_STAIRS = create(key("blocks/smooth_quartz_stairs")); + + /** + * {@code minecraft:blocks/smooth_red_sandstone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMOOTH_RED_SANDSTONE = create(key("blocks/smooth_red_sandstone")); + + /** + * {@code minecraft:blocks/smooth_red_sandstone_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMOOTH_RED_SANDSTONE_SLAB = create(key("blocks/smooth_red_sandstone_slab")); + + /** + * {@code minecraft:blocks/smooth_red_sandstone_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMOOTH_RED_SANDSTONE_STAIRS = create(key("blocks/smooth_red_sandstone_stairs")); + + /** + * {@code minecraft:blocks/smooth_sandstone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMOOTH_SANDSTONE = create(key("blocks/smooth_sandstone")); + + /** + * {@code minecraft:blocks/smooth_sandstone_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMOOTH_SANDSTONE_SLAB = create(key("blocks/smooth_sandstone_slab")); + + /** + * {@code minecraft:blocks/smooth_sandstone_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMOOTH_SANDSTONE_STAIRS = create(key("blocks/smooth_sandstone_stairs")); + + /** + * {@code minecraft:blocks/smooth_stone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMOOTH_STONE = create(key("blocks/smooth_stone")); + + /** + * {@code minecraft:blocks/smooth_stone_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SMOOTH_STONE_SLAB = create(key("blocks/smooth_stone_slab")); + + /** + * {@code minecraft:blocks/sniffer_egg} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SNIFFER_EGG = create(key("blocks/sniffer_egg")); + + /** + * {@code minecraft:blocks/snow} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SNOW = create(key("blocks/snow")); + + /** + * {@code minecraft:blocks/snow_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SNOW_BLOCK = create(key("blocks/snow_block")); + + /** + * {@code minecraft:blocks/soul_campfire} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SOUL_CAMPFIRE = create(key("blocks/soul_campfire")); + + /** + * {@code minecraft:blocks/soul_fire} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SOUL_FIRE = create(key("blocks/soul_fire")); + + /** + * {@code minecraft:blocks/soul_lantern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SOUL_LANTERN = create(key("blocks/soul_lantern")); + + /** + * {@code minecraft:blocks/soul_sand} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SOUL_SAND = create(key("blocks/soul_sand")); + + /** + * {@code minecraft:blocks/soul_soil} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SOUL_SOIL = create(key("blocks/soul_soil")); + + /** + * {@code minecraft:blocks/soul_torch} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SOUL_TORCH = create(key("blocks/soul_torch")); + + /** + * {@code minecraft:blocks/spawner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPAWNER = create(key("blocks/spawner")); + + /** + * {@code minecraft:blocks/sponge} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPONGE = create(key("blocks/sponge")); + + /** + * {@code minecraft:blocks/spore_blossom} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPORE_BLOSSOM = create(key("blocks/spore_blossom")); + + /** + * {@code minecraft:blocks/spruce_button} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_BUTTON = create(key("blocks/spruce_button")); + + /** + * {@code minecraft:blocks/spruce_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_DOOR = create(key("blocks/spruce_door")); + + /** + * {@code minecraft:blocks/spruce_fence} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_FENCE = create(key("blocks/spruce_fence")); + + /** + * {@code minecraft:blocks/spruce_fence_gate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_FENCE_GATE = create(key("blocks/spruce_fence_gate")); + + /** + * {@code minecraft:blocks/spruce_hanging_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_HANGING_SIGN = create(key("blocks/spruce_hanging_sign")); + + /** + * {@code minecraft:blocks/spruce_leaves} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_LEAVES = create(key("blocks/spruce_leaves")); + + /** + * {@code minecraft:blocks/spruce_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_LOG = create(key("blocks/spruce_log")); + + /** + * {@code minecraft:blocks/spruce_planks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_PLANKS = create(key("blocks/spruce_planks")); + + /** + * {@code minecraft:blocks/spruce_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_PRESSURE_PLATE = create(key("blocks/spruce_pressure_plate")); + + /** + * {@code minecraft:blocks/spruce_sapling} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_SAPLING = create(key("blocks/spruce_sapling")); + + /** + * {@code minecraft:blocks/spruce_shelf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_SHELF = create(key("blocks/spruce_shelf")); + + /** + * {@code minecraft:blocks/spruce_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_SIGN = create(key("blocks/spruce_sign")); + + /** + * {@code minecraft:blocks/spruce_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_SLAB = create(key("blocks/spruce_slab")); + + /** + * {@code minecraft:blocks/spruce_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_STAIRS = create(key("blocks/spruce_stairs")); + + /** + * {@code minecraft:blocks/spruce_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_TRAPDOOR = create(key("blocks/spruce_trapdoor")); + + /** + * {@code minecraft:blocks/spruce_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SPRUCE_WOOD = create(key("blocks/spruce_wood")); + + /** + * {@code minecraft:blocks/sticky_piston} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STICKY_PISTON = create(key("blocks/sticky_piston")); + + /** + * {@code minecraft:blocks/stone} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STONE = create(key("blocks/stone")); + + /** + * {@code minecraft:blocks/stone_brick_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STONE_BRICK_SLAB = create(key("blocks/stone_brick_slab")); + + /** + * {@code minecraft:blocks/stone_brick_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STONE_BRICK_STAIRS = create(key("blocks/stone_brick_stairs")); + + /** + * {@code minecraft:blocks/stone_brick_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STONE_BRICK_WALL = create(key("blocks/stone_brick_wall")); + + /** + * {@code minecraft:blocks/stone_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STONE_BRICKS = create(key("blocks/stone_bricks")); + + /** + * {@code minecraft:blocks/stone_button} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STONE_BUTTON = create(key("blocks/stone_button")); + + /** + * {@code minecraft:blocks/stone_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STONE_PRESSURE_PLATE = create(key("blocks/stone_pressure_plate")); + + /** + * {@code minecraft:blocks/stone_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STONE_SLAB = create(key("blocks/stone_slab")); + + /** + * {@code minecraft:blocks/stone_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STONE_STAIRS = create(key("blocks/stone_stairs")); + + /** + * {@code minecraft:blocks/stonecutter} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STONECUTTER = create(key("blocks/stonecutter")); + + /** + * {@code minecraft:blocks/stripped_acacia_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_ACACIA_LOG = create(key("blocks/stripped_acacia_log")); + + /** + * {@code minecraft:blocks/stripped_acacia_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_ACACIA_WOOD = create(key("blocks/stripped_acacia_wood")); + + /** + * {@code minecraft:blocks/stripped_bamboo_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_BAMBOO_BLOCK = create(key("blocks/stripped_bamboo_block")); + + /** + * {@code minecraft:blocks/stripped_birch_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_BIRCH_LOG = create(key("blocks/stripped_birch_log")); + + /** + * {@code minecraft:blocks/stripped_birch_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_BIRCH_WOOD = create(key("blocks/stripped_birch_wood")); + + /** + * {@code minecraft:blocks/stripped_cherry_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_CHERRY_LOG = create(key("blocks/stripped_cherry_log")); + + /** + * {@code minecraft:blocks/stripped_cherry_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_CHERRY_WOOD = create(key("blocks/stripped_cherry_wood")); + + /** + * {@code minecraft:blocks/stripped_crimson_hyphae} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_CRIMSON_HYPHAE = create(key("blocks/stripped_crimson_hyphae")); + + /** + * {@code minecraft:blocks/stripped_crimson_stem} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_CRIMSON_STEM = create(key("blocks/stripped_crimson_stem")); + + /** + * {@code minecraft:blocks/stripped_dark_oak_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_DARK_OAK_LOG = create(key("blocks/stripped_dark_oak_log")); + + /** + * {@code minecraft:blocks/stripped_dark_oak_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_DARK_OAK_WOOD = create(key("blocks/stripped_dark_oak_wood")); + + /** + * {@code minecraft:blocks/stripped_jungle_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_JUNGLE_LOG = create(key("blocks/stripped_jungle_log")); + + /** + * {@code minecraft:blocks/stripped_jungle_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_JUNGLE_WOOD = create(key("blocks/stripped_jungle_wood")); + + /** + * {@code minecraft:blocks/stripped_mangrove_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_MANGROVE_LOG = create(key("blocks/stripped_mangrove_log")); + + /** + * {@code minecraft:blocks/stripped_mangrove_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_MANGROVE_WOOD = create(key("blocks/stripped_mangrove_wood")); + + /** + * {@code minecraft:blocks/stripped_oak_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_OAK_LOG = create(key("blocks/stripped_oak_log")); + + /** + * {@code minecraft:blocks/stripped_oak_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_OAK_WOOD = create(key("blocks/stripped_oak_wood")); + + /** + * {@code minecraft:blocks/stripped_pale_oak_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_PALE_OAK_LOG = create(key("blocks/stripped_pale_oak_log")); + + /** + * {@code minecraft:blocks/stripped_pale_oak_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_PALE_OAK_WOOD = create(key("blocks/stripped_pale_oak_wood")); + + /** + * {@code minecraft:blocks/stripped_spruce_log} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_SPRUCE_LOG = create(key("blocks/stripped_spruce_log")); + + /** + * {@code minecraft:blocks/stripped_spruce_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_SPRUCE_WOOD = create(key("blocks/stripped_spruce_wood")); + + /** + * {@code minecraft:blocks/stripped_warped_hyphae} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_WARPED_HYPHAE = create(key("blocks/stripped_warped_hyphae")); + + /** + * {@code minecraft:blocks/stripped_warped_stem} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_STRIPPED_WARPED_STEM = create(key("blocks/stripped_warped_stem")); + + /** + * {@code minecraft:blocks/sugar_cane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SUGAR_CANE = create(key("blocks/sugar_cane")); + + /** + * {@code minecraft:blocks/sunflower} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SUNFLOWER = create(key("blocks/sunflower")); + + /** + * {@code minecraft:blocks/suspicious_gravel} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SUSPICIOUS_GRAVEL = create(key("blocks/suspicious_gravel")); + + /** + * {@code minecraft:blocks/suspicious_sand} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SUSPICIOUS_SAND = create(key("blocks/suspicious_sand")); + + /** + * {@code minecraft:blocks/sweet_berry_bush} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_SWEET_BERRY_BUSH = create(key("blocks/sweet_berry_bush")); + + /** + * {@code minecraft:blocks/tall_dry_grass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TALL_DRY_GRASS = create(key("blocks/tall_dry_grass")); + + /** + * {@code minecraft:blocks/tall_grass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TALL_GRASS = create(key("blocks/tall_grass")); + + /** + * {@code minecraft:blocks/tall_seagrass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TALL_SEAGRASS = create(key("blocks/tall_seagrass")); + + /** + * {@code minecraft:blocks/target} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TARGET = create(key("blocks/target")); + + /** + * {@code minecraft:blocks/terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TERRACOTTA = create(key("blocks/terracotta")); + + /** + * {@code minecraft:blocks/tinted_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TINTED_GLASS = create(key("blocks/tinted_glass")); + + /** + * {@code minecraft:blocks/tnt} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TNT = create(key("blocks/tnt")); + + /** + * {@code minecraft:blocks/torch} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TORCH = create(key("blocks/torch")); + + /** + * {@code minecraft:blocks/torchflower} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TORCHFLOWER = create(key("blocks/torchflower")); + + /** + * {@code minecraft:blocks/torchflower_crop} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TORCHFLOWER_CROP = create(key("blocks/torchflower_crop")); + + /** + * {@code minecraft:blocks/trapped_chest} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TRAPPED_CHEST = create(key("blocks/trapped_chest")); + + /** + * {@code minecraft:blocks/trial_spawner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TRIAL_SPAWNER = create(key("blocks/trial_spawner")); + + /** + * {@code minecraft:blocks/tripwire} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TRIPWIRE = create(key("blocks/tripwire")); + + /** + * {@code minecraft:blocks/tripwire_hook} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TRIPWIRE_HOOK = create(key("blocks/tripwire_hook")); + + /** + * {@code minecraft:blocks/tube_coral} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TUBE_CORAL = create(key("blocks/tube_coral")); + + /** + * {@code minecraft:blocks/tube_coral_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TUBE_CORAL_BLOCK = create(key("blocks/tube_coral_block")); + + /** + * {@code minecraft:blocks/tube_coral_fan} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TUBE_CORAL_FAN = create(key("blocks/tube_coral_fan")); + + /** + * {@code minecraft:blocks/tuff} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TUFF = create(key("blocks/tuff")); + + /** + * {@code minecraft:blocks/tuff_brick_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TUFF_BRICK_SLAB = create(key("blocks/tuff_brick_slab")); + + /** + * {@code minecraft:blocks/tuff_brick_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TUFF_BRICK_STAIRS = create(key("blocks/tuff_brick_stairs")); + + /** + * {@code minecraft:blocks/tuff_brick_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TUFF_BRICK_WALL = create(key("blocks/tuff_brick_wall")); + + /** + * {@code minecraft:blocks/tuff_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TUFF_BRICKS = create(key("blocks/tuff_bricks")); + + /** + * {@code minecraft:blocks/tuff_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TUFF_SLAB = create(key("blocks/tuff_slab")); + + /** + * {@code minecraft:blocks/tuff_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TUFF_STAIRS = create(key("blocks/tuff_stairs")); + + /** + * {@code minecraft:blocks/tuff_wall} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TUFF_WALL = create(key("blocks/tuff_wall")); + + /** + * {@code minecraft:blocks/turtle_egg} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TURTLE_EGG = create(key("blocks/turtle_egg")); + + /** + * {@code minecraft:blocks/twisting_vines} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TWISTING_VINES = create(key("blocks/twisting_vines")); + + /** + * {@code minecraft:blocks/twisting_vines_plant} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_TWISTING_VINES_PLANT = create(key("blocks/twisting_vines_plant")); + + /** + * {@code minecraft:blocks/vault} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_VAULT = create(key("blocks/vault")); + + /** + * {@code minecraft:blocks/verdant_froglight} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_VERDANT_FROGLIGHT = create(key("blocks/verdant_froglight")); + + /** + * {@code minecraft:blocks/vine} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_VINE = create(key("blocks/vine")); + + /** + * {@code minecraft:blocks/warped_button} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_BUTTON = create(key("blocks/warped_button")); + + /** + * {@code minecraft:blocks/warped_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_DOOR = create(key("blocks/warped_door")); + + /** + * {@code minecraft:blocks/warped_fence} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_FENCE = create(key("blocks/warped_fence")); + + /** + * {@code minecraft:blocks/warped_fence_gate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_FENCE_GATE = create(key("blocks/warped_fence_gate")); + + /** + * {@code minecraft:blocks/warped_fungus} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_FUNGUS = create(key("blocks/warped_fungus")); + + /** + * {@code minecraft:blocks/warped_hanging_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_HANGING_SIGN = create(key("blocks/warped_hanging_sign")); + + /** + * {@code minecraft:blocks/warped_hyphae} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_HYPHAE = create(key("blocks/warped_hyphae")); + + /** + * {@code minecraft:blocks/warped_nylium} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_NYLIUM = create(key("blocks/warped_nylium")); + + /** + * {@code minecraft:blocks/warped_planks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_PLANKS = create(key("blocks/warped_planks")); + + /** + * {@code minecraft:blocks/warped_pressure_plate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_PRESSURE_PLATE = create(key("blocks/warped_pressure_plate")); + + /** + * {@code minecraft:blocks/warped_roots} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_ROOTS = create(key("blocks/warped_roots")); + + /** + * {@code minecraft:blocks/warped_shelf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_SHELF = create(key("blocks/warped_shelf")); + + /** + * {@code minecraft:blocks/warped_sign} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_SIGN = create(key("blocks/warped_sign")); + + /** + * {@code minecraft:blocks/warped_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_SLAB = create(key("blocks/warped_slab")); + + /** + * {@code minecraft:blocks/warped_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_STAIRS = create(key("blocks/warped_stairs")); + + /** + * {@code minecraft:blocks/warped_stem} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_STEM = create(key("blocks/warped_stem")); + + /** + * {@code minecraft:blocks/warped_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_TRAPDOOR = create(key("blocks/warped_trapdoor")); + + /** + * {@code minecraft:blocks/warped_wart_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WARPED_WART_BLOCK = create(key("blocks/warped_wart_block")); + + /** + * {@code minecraft:blocks/water_cauldron} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WATER_CAULDRON = create(key("blocks/water_cauldron")); + + /** + * {@code minecraft:blocks/waxed_chiseled_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_CHISELED_COPPER = create(key("blocks/waxed_chiseled_copper")); + + /** + * {@code minecraft:blocks/waxed_copper_bars} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_COPPER_BARS = create(key("blocks/waxed_copper_bars")); + + /** + * {@code minecraft:blocks/waxed_copper_block} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_COPPER_BLOCK = create(key("blocks/waxed_copper_block")); + + /** + * {@code minecraft:blocks/waxed_copper_bulb} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_COPPER_BULB = create(key("blocks/waxed_copper_bulb")); + + /** + * {@code minecraft:blocks/waxed_copper_chain} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_COPPER_CHAIN = create(key("blocks/waxed_copper_chain")); + + /** + * {@code minecraft:blocks/waxed_copper_chest} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_COPPER_CHEST = create(key("blocks/waxed_copper_chest")); + + /** + * {@code minecraft:blocks/waxed_copper_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_COPPER_DOOR = create(key("blocks/waxed_copper_door")); + + /** + * {@code minecraft:blocks/waxed_copper_golem_statue} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_COPPER_GOLEM_STATUE = create(key("blocks/waxed_copper_golem_statue")); + + /** + * {@code minecraft:blocks/waxed_copper_grate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_COPPER_GRATE = create(key("blocks/waxed_copper_grate")); + + /** + * {@code minecraft:blocks/waxed_copper_lantern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_COPPER_LANTERN = create(key("blocks/waxed_copper_lantern")); + + /** + * {@code minecraft:blocks/waxed_copper_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_COPPER_TRAPDOOR = create(key("blocks/waxed_copper_trapdoor")); + + /** + * {@code minecraft:blocks/waxed_cut_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_CUT_COPPER = create(key("blocks/waxed_cut_copper")); + + /** + * {@code minecraft:blocks/waxed_cut_copper_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_CUT_COPPER_SLAB = create(key("blocks/waxed_cut_copper_slab")); + + /** + * {@code minecraft:blocks/waxed_cut_copper_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_CUT_COPPER_STAIRS = create(key("blocks/waxed_cut_copper_stairs")); + + /** + * {@code minecraft:blocks/waxed_exposed_chiseled_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_EXPOSED_CHISELED_COPPER = create(key("blocks/waxed_exposed_chiseled_copper")); + + /** + * {@code minecraft:blocks/waxed_exposed_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_EXPOSED_COPPER = create(key("blocks/waxed_exposed_copper")); + + /** + * {@code minecraft:blocks/waxed_exposed_copper_bars} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_EXPOSED_COPPER_BARS = create(key("blocks/waxed_exposed_copper_bars")); + + /** + * {@code minecraft:blocks/waxed_exposed_copper_bulb} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_EXPOSED_COPPER_BULB = create(key("blocks/waxed_exposed_copper_bulb")); + + /** + * {@code minecraft:blocks/waxed_exposed_copper_chain} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_EXPOSED_COPPER_CHAIN = create(key("blocks/waxed_exposed_copper_chain")); + + /** + * {@code minecraft:blocks/waxed_exposed_copper_chest} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_EXPOSED_COPPER_CHEST = create(key("blocks/waxed_exposed_copper_chest")); + + /** + * {@code minecraft:blocks/waxed_exposed_copper_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_EXPOSED_COPPER_DOOR = create(key("blocks/waxed_exposed_copper_door")); + + /** + * {@code minecraft:blocks/waxed_exposed_copper_golem_statue} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_EXPOSED_COPPER_GOLEM_STATUE = create(key("blocks/waxed_exposed_copper_golem_statue")); + + /** + * {@code minecraft:blocks/waxed_exposed_copper_grate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_EXPOSED_COPPER_GRATE = create(key("blocks/waxed_exposed_copper_grate")); + + /** + * {@code minecraft:blocks/waxed_exposed_copper_lantern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_EXPOSED_COPPER_LANTERN = create(key("blocks/waxed_exposed_copper_lantern")); + + /** + * {@code minecraft:blocks/waxed_exposed_copper_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_EXPOSED_COPPER_TRAPDOOR = create(key("blocks/waxed_exposed_copper_trapdoor")); + + /** + * {@code minecraft:blocks/waxed_exposed_cut_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_EXPOSED_CUT_COPPER = create(key("blocks/waxed_exposed_cut_copper")); + + /** + * {@code minecraft:blocks/waxed_exposed_cut_copper_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_EXPOSED_CUT_COPPER_SLAB = create(key("blocks/waxed_exposed_cut_copper_slab")); + + /** + * {@code minecraft:blocks/waxed_exposed_cut_copper_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_EXPOSED_CUT_COPPER_STAIRS = create(key("blocks/waxed_exposed_cut_copper_stairs")); + + /** + * {@code minecraft:blocks/waxed_exposed_lightning_rod} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_EXPOSED_LIGHTNING_ROD = create(key("blocks/waxed_exposed_lightning_rod")); + + /** + * {@code minecraft:blocks/waxed_lightning_rod} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_LIGHTNING_ROD = create(key("blocks/waxed_lightning_rod")); + + /** + * {@code minecraft:blocks/waxed_oxidized_chiseled_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_OXIDIZED_CHISELED_COPPER = create(key("blocks/waxed_oxidized_chiseled_copper")); + + /** + * {@code minecraft:blocks/waxed_oxidized_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_OXIDIZED_COPPER = create(key("blocks/waxed_oxidized_copper")); + + /** + * {@code minecraft:blocks/waxed_oxidized_copper_bars} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_OXIDIZED_COPPER_BARS = create(key("blocks/waxed_oxidized_copper_bars")); + + /** + * {@code minecraft:blocks/waxed_oxidized_copper_bulb} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_OXIDIZED_COPPER_BULB = create(key("blocks/waxed_oxidized_copper_bulb")); + + /** + * {@code minecraft:blocks/waxed_oxidized_copper_chain} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_OXIDIZED_COPPER_CHAIN = create(key("blocks/waxed_oxidized_copper_chain")); + + /** + * {@code minecraft:blocks/waxed_oxidized_copper_chest} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_OXIDIZED_COPPER_CHEST = create(key("blocks/waxed_oxidized_copper_chest")); + + /** + * {@code minecraft:blocks/waxed_oxidized_copper_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_OXIDIZED_COPPER_DOOR = create(key("blocks/waxed_oxidized_copper_door")); + + /** + * {@code minecraft:blocks/waxed_oxidized_copper_golem_statue} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_OXIDIZED_COPPER_GOLEM_STATUE = create(key("blocks/waxed_oxidized_copper_golem_statue")); + + /** + * {@code minecraft:blocks/waxed_oxidized_copper_grate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_OXIDIZED_COPPER_GRATE = create(key("blocks/waxed_oxidized_copper_grate")); + + /** + * {@code minecraft:blocks/waxed_oxidized_copper_lantern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_OXIDIZED_COPPER_LANTERN = create(key("blocks/waxed_oxidized_copper_lantern")); + + /** + * {@code minecraft:blocks/waxed_oxidized_copper_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_OXIDIZED_COPPER_TRAPDOOR = create(key("blocks/waxed_oxidized_copper_trapdoor")); + + /** + * {@code minecraft:blocks/waxed_oxidized_cut_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_OXIDIZED_CUT_COPPER = create(key("blocks/waxed_oxidized_cut_copper")); + + /** + * {@code minecraft:blocks/waxed_oxidized_cut_copper_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_OXIDIZED_CUT_COPPER_SLAB = create(key("blocks/waxed_oxidized_cut_copper_slab")); + + /** + * {@code minecraft:blocks/waxed_oxidized_cut_copper_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_OXIDIZED_CUT_COPPER_STAIRS = create(key("blocks/waxed_oxidized_cut_copper_stairs")); + + /** + * {@code minecraft:blocks/waxed_oxidized_lightning_rod} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_OXIDIZED_LIGHTNING_ROD = create(key("blocks/waxed_oxidized_lightning_rod")); + + /** + * {@code minecraft:blocks/waxed_weathered_chiseled_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_WEATHERED_CHISELED_COPPER = create(key("blocks/waxed_weathered_chiseled_copper")); + + /** + * {@code minecraft:blocks/waxed_weathered_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_WEATHERED_COPPER = create(key("blocks/waxed_weathered_copper")); + + /** + * {@code minecraft:blocks/waxed_weathered_copper_bars} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_WEATHERED_COPPER_BARS = create(key("blocks/waxed_weathered_copper_bars")); + + /** + * {@code minecraft:blocks/waxed_weathered_copper_bulb} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_WEATHERED_COPPER_BULB = create(key("blocks/waxed_weathered_copper_bulb")); + + /** + * {@code minecraft:blocks/waxed_weathered_copper_chain} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_WEATHERED_COPPER_CHAIN = create(key("blocks/waxed_weathered_copper_chain")); + + /** + * {@code minecraft:blocks/waxed_weathered_copper_chest} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_WEATHERED_COPPER_CHEST = create(key("blocks/waxed_weathered_copper_chest")); + + /** + * {@code minecraft:blocks/waxed_weathered_copper_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_WEATHERED_COPPER_DOOR = create(key("blocks/waxed_weathered_copper_door")); + + /** + * {@code minecraft:blocks/waxed_weathered_copper_golem_statue} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_WEATHERED_COPPER_GOLEM_STATUE = create(key("blocks/waxed_weathered_copper_golem_statue")); + + /** + * {@code minecraft:blocks/waxed_weathered_copper_grate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_WEATHERED_COPPER_GRATE = create(key("blocks/waxed_weathered_copper_grate")); + + /** + * {@code minecraft:blocks/waxed_weathered_copper_lantern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_WEATHERED_COPPER_LANTERN = create(key("blocks/waxed_weathered_copper_lantern")); + + /** + * {@code minecraft:blocks/waxed_weathered_copper_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_WEATHERED_COPPER_TRAPDOOR = create(key("blocks/waxed_weathered_copper_trapdoor")); + + /** + * {@code minecraft:blocks/waxed_weathered_cut_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_WEATHERED_CUT_COPPER = create(key("blocks/waxed_weathered_cut_copper")); + + /** + * {@code minecraft:blocks/waxed_weathered_cut_copper_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_WEATHERED_CUT_COPPER_SLAB = create(key("blocks/waxed_weathered_cut_copper_slab")); + + /** + * {@code minecraft:blocks/waxed_weathered_cut_copper_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_WEATHERED_CUT_COPPER_STAIRS = create(key("blocks/waxed_weathered_cut_copper_stairs")); + + /** + * {@code minecraft:blocks/waxed_weathered_lightning_rod} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WAXED_WEATHERED_LIGHTNING_ROD = create(key("blocks/waxed_weathered_lightning_rod")); + + /** + * {@code minecraft:blocks/weathered_chiseled_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEATHERED_CHISELED_COPPER = create(key("blocks/weathered_chiseled_copper")); + + /** + * {@code minecraft:blocks/weathered_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEATHERED_COPPER = create(key("blocks/weathered_copper")); + + /** + * {@code minecraft:blocks/weathered_copper_bars} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEATHERED_COPPER_BARS = create(key("blocks/weathered_copper_bars")); + + /** + * {@code minecraft:blocks/weathered_copper_bulb} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEATHERED_COPPER_BULB = create(key("blocks/weathered_copper_bulb")); + + /** + * {@code minecraft:blocks/weathered_copper_chain} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEATHERED_COPPER_CHAIN = create(key("blocks/weathered_copper_chain")); + + /** + * {@code minecraft:blocks/weathered_copper_chest} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEATHERED_COPPER_CHEST = create(key("blocks/weathered_copper_chest")); + + /** + * {@code minecraft:blocks/weathered_copper_door} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEATHERED_COPPER_DOOR = create(key("blocks/weathered_copper_door")); + + /** + * {@code minecraft:blocks/weathered_copper_golem_statue} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEATHERED_COPPER_GOLEM_STATUE = create(key("blocks/weathered_copper_golem_statue")); + + /** + * {@code minecraft:blocks/weathered_copper_grate} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEATHERED_COPPER_GRATE = create(key("blocks/weathered_copper_grate")); + + /** + * {@code minecraft:blocks/weathered_copper_lantern} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEATHERED_COPPER_LANTERN = create(key("blocks/weathered_copper_lantern")); + + /** + * {@code minecraft:blocks/weathered_copper_trapdoor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEATHERED_COPPER_TRAPDOOR = create(key("blocks/weathered_copper_trapdoor")); + + /** + * {@code minecraft:blocks/weathered_cut_copper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEATHERED_CUT_COPPER = create(key("blocks/weathered_cut_copper")); + + /** + * {@code minecraft:blocks/weathered_cut_copper_slab} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEATHERED_CUT_COPPER_SLAB = create(key("blocks/weathered_cut_copper_slab")); + + /** + * {@code minecraft:blocks/weathered_cut_copper_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEATHERED_CUT_COPPER_STAIRS = create(key("blocks/weathered_cut_copper_stairs")); + + /** + * {@code minecraft:blocks/weathered_lightning_rod} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEATHERED_LIGHTNING_ROD = create(key("blocks/weathered_lightning_rod")); + + /** + * {@code minecraft:blocks/weeping_vines} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEEPING_VINES = create(key("blocks/weeping_vines")); + + /** + * {@code minecraft:blocks/weeping_vines_plant} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WEEPING_VINES_PLANT = create(key("blocks/weeping_vines_plant")); + + /** + * {@code minecraft:blocks/wet_sponge} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WET_SPONGE = create(key("blocks/wet_sponge")); + + /** + * {@code minecraft:blocks/wheat} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WHEAT = create(key("blocks/wheat")); + + /** + * {@code minecraft:blocks/white_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WHITE_BANNER = create(key("blocks/white_banner")); + + /** + * {@code minecraft:blocks/white_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WHITE_BED = create(key("blocks/white_bed")); + + /** + * {@code minecraft:blocks/white_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WHITE_CANDLE = create(key("blocks/white_candle")); + + /** + * {@code minecraft:blocks/white_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WHITE_CANDLE_CAKE = create(key("blocks/white_candle_cake")); + + /** + * {@code minecraft:blocks/white_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WHITE_CARPET = create(key("blocks/white_carpet")); + + /** + * {@code minecraft:blocks/white_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WHITE_CONCRETE = create(key("blocks/white_concrete")); + + /** + * {@code minecraft:blocks/white_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WHITE_CONCRETE_POWDER = create(key("blocks/white_concrete_powder")); + + /** + * {@code minecraft:blocks/white_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WHITE_GLAZED_TERRACOTTA = create(key("blocks/white_glazed_terracotta")); + + /** + * {@code minecraft:blocks/white_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WHITE_SHULKER_BOX = create(key("blocks/white_shulker_box")); + + /** + * {@code minecraft:blocks/white_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WHITE_STAINED_GLASS = create(key("blocks/white_stained_glass")); + + /** + * {@code minecraft:blocks/white_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WHITE_STAINED_GLASS_PANE = create(key("blocks/white_stained_glass_pane")); + + /** + * {@code minecraft:blocks/white_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WHITE_TERRACOTTA = create(key("blocks/white_terracotta")); + + /** + * {@code minecraft:blocks/white_tulip} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WHITE_TULIP = create(key("blocks/white_tulip")); + + /** + * {@code minecraft:blocks/white_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WHITE_WOOL = create(key("blocks/white_wool")); + + /** + * {@code minecraft:blocks/wildflowers} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WILDFLOWERS = create(key("blocks/wildflowers")); + + /** + * {@code minecraft:blocks/wither_rose} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WITHER_ROSE = create(key("blocks/wither_rose")); + + /** + * {@code minecraft:blocks/wither_skeleton_skull} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_WITHER_SKELETON_SKULL = create(key("blocks/wither_skeleton_skull")); + + /** + * {@code minecraft:blocks/yellow_banner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_YELLOW_BANNER = create(key("blocks/yellow_banner")); + + /** + * {@code minecraft:blocks/yellow_bed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_YELLOW_BED = create(key("blocks/yellow_bed")); + + /** + * {@code minecraft:blocks/yellow_candle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_YELLOW_CANDLE = create(key("blocks/yellow_candle")); + + /** + * {@code minecraft:blocks/yellow_candle_cake} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_YELLOW_CANDLE_CAKE = create(key("blocks/yellow_candle_cake")); + + /** + * {@code minecraft:blocks/yellow_carpet} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_YELLOW_CARPET = create(key("blocks/yellow_carpet")); + + /** + * {@code minecraft:blocks/yellow_concrete} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_YELLOW_CONCRETE = create(key("blocks/yellow_concrete")); + + /** + * {@code minecraft:blocks/yellow_concrete_powder} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_YELLOW_CONCRETE_POWDER = create(key("blocks/yellow_concrete_powder")); + + /** + * {@code minecraft:blocks/yellow_glazed_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_YELLOW_GLAZED_TERRACOTTA = create(key("blocks/yellow_glazed_terracotta")); + + /** + * {@code minecraft:blocks/yellow_shulker_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_YELLOW_SHULKER_BOX = create(key("blocks/yellow_shulker_box")); + + /** + * {@code minecraft:blocks/yellow_stained_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_YELLOW_STAINED_GLASS = create(key("blocks/yellow_stained_glass")); + + /** + * {@code minecraft:blocks/yellow_stained_glass_pane} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_YELLOW_STAINED_GLASS_PANE = create(key("blocks/yellow_stained_glass_pane")); + + /** + * {@code minecraft:blocks/yellow_terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_YELLOW_TERRACOTTA = create(key("blocks/yellow_terracotta")); + + /** + * {@code minecraft:blocks/yellow_wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_YELLOW_WOOL = create(key("blocks/yellow_wool")); + + /** + * {@code minecraft:blocks/zombie_head} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BLOCKS_ZOMBIE_HEAD = create(key("blocks/zombie_head")); + + /** + * {@code minecraft:brush/armadillo} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey BRUSH_ARMADILLO = create(key("brush/armadillo")); + + /** + * {@code minecraft:carve/pumpkin} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CARVE_PUMPKIN = create(key("carve/pumpkin")); + + /** + * {@code minecraft:charged_creeper/creeper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHARGED_CREEPER_CREEPER = create(key("charged_creeper/creeper")); + + /** + * {@code minecraft:charged_creeper/piglin} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHARGED_CREEPER_PIGLIN = create(key("charged_creeper/piglin")); + + /** + * {@code minecraft:charged_creeper/root} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHARGED_CREEPER_ROOT = create(key("charged_creeper/root")); + + /** + * {@code minecraft:charged_creeper/skeleton} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHARGED_CREEPER_SKELETON = create(key("charged_creeper/skeleton")); + + /** + * {@code minecraft:charged_creeper/wither_skeleton} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHARGED_CREEPER_WITHER_SKELETON = create(key("charged_creeper/wither_skeleton")); + + /** + * {@code minecraft:charged_creeper/zombie} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHARGED_CREEPER_ZOMBIE = create(key("charged_creeper/zombie")); + + /** + * {@code minecraft:chests/abandoned_mineshaft} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_ABANDONED_MINESHAFT = create(key("chests/abandoned_mineshaft")); + + /** + * {@code minecraft:chests/ancient_city} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_ANCIENT_CITY = create(key("chests/ancient_city")); + + /** + * {@code minecraft:chests/ancient_city_ice_box} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_ANCIENT_CITY_ICE_BOX = create(key("chests/ancient_city_ice_box")); + + /** + * {@code minecraft:chests/bastion_bridge} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_BASTION_BRIDGE = create(key("chests/bastion_bridge")); + + /** + * {@code minecraft:chests/bastion_hoglin_stable} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_BASTION_HOGLIN_STABLE = create(key("chests/bastion_hoglin_stable")); + + /** + * {@code minecraft:chests/bastion_other} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_BASTION_OTHER = create(key("chests/bastion_other")); + + /** + * {@code minecraft:chests/bastion_treasure} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_BASTION_TREASURE = create(key("chests/bastion_treasure")); + + /** + * {@code minecraft:chests/buried_treasure} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_BURIED_TREASURE = create(key("chests/buried_treasure")); + + /** + * {@code minecraft:chests/desert_pyramid} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_DESERT_PYRAMID = create(key("chests/desert_pyramid")); + + /** + * {@code minecraft:chests/end_city_treasure} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_END_CITY_TREASURE = create(key("chests/end_city_treasure")); + + /** + * {@code minecraft:chests/igloo_chest} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_IGLOO_CHEST = create(key("chests/igloo_chest")); + + /** + * {@code minecraft:chests/jungle_temple} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_JUNGLE_TEMPLE = create(key("chests/jungle_temple")); + + /** + * {@code minecraft:chests/jungle_temple_dispenser} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_JUNGLE_TEMPLE_DISPENSER = create(key("chests/jungle_temple_dispenser")); + + /** + * {@code minecraft:chests/nether_bridge} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_NETHER_BRIDGE = create(key("chests/nether_bridge")); + + /** + * {@code minecraft:chests/pillager_outpost} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_PILLAGER_OUTPOST = create(key("chests/pillager_outpost")); + + /** + * {@code minecraft:chests/ruined_portal} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_RUINED_PORTAL = create(key("chests/ruined_portal")); + + /** + * {@code minecraft:chests/shipwreck_map} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_SHIPWRECK_MAP = create(key("chests/shipwreck_map")); + + /** + * {@code minecraft:chests/shipwreck_supply} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_SHIPWRECK_SUPPLY = create(key("chests/shipwreck_supply")); + + /** + * {@code minecraft:chests/shipwreck_treasure} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_SHIPWRECK_TREASURE = create(key("chests/shipwreck_treasure")); + + /** + * {@code minecraft:chests/simple_dungeon} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_SIMPLE_DUNGEON = create(key("chests/simple_dungeon")); + + /** + * {@code minecraft:chests/spawn_bonus_chest} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_SPAWN_BONUS_CHEST = create(key("chests/spawn_bonus_chest")); + + /** + * {@code minecraft:chests/stronghold_corridor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_STRONGHOLD_CORRIDOR = create(key("chests/stronghold_corridor")); + + /** + * {@code minecraft:chests/stronghold_crossing} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_STRONGHOLD_CROSSING = create(key("chests/stronghold_crossing")); + + /** + * {@code minecraft:chests/stronghold_library} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_STRONGHOLD_LIBRARY = create(key("chests/stronghold_library")); + + /** + * {@code minecraft:chests/trial_chambers/corridor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_TRIAL_CHAMBERS_CORRIDOR = create(key("chests/trial_chambers/corridor")); + + /** + * {@code minecraft:chests/trial_chambers/entrance} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_TRIAL_CHAMBERS_ENTRANCE = create(key("chests/trial_chambers/entrance")); + + /** + * {@code minecraft:chests/trial_chambers/intersection} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_TRIAL_CHAMBERS_INTERSECTION = create(key("chests/trial_chambers/intersection")); + + /** + * {@code minecraft:chests/trial_chambers/intersection_barrel} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_TRIAL_CHAMBERS_INTERSECTION_BARREL = create(key("chests/trial_chambers/intersection_barrel")); + + /** + * {@code minecraft:chests/trial_chambers/reward} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_TRIAL_CHAMBERS_REWARD = create(key("chests/trial_chambers/reward")); + + /** + * {@code minecraft:chests/trial_chambers/reward_common} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_TRIAL_CHAMBERS_REWARD_COMMON = create(key("chests/trial_chambers/reward_common")); + + /** + * {@code minecraft:chests/trial_chambers/reward_ominous} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_TRIAL_CHAMBERS_REWARD_OMINOUS = create(key("chests/trial_chambers/reward_ominous")); + + /** + * {@code minecraft:chests/trial_chambers/reward_ominous_common} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_TRIAL_CHAMBERS_REWARD_OMINOUS_COMMON = create(key("chests/trial_chambers/reward_ominous_common")); + + /** + * {@code minecraft:chests/trial_chambers/reward_ominous_rare} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_TRIAL_CHAMBERS_REWARD_OMINOUS_RARE = create(key("chests/trial_chambers/reward_ominous_rare")); + + /** + * {@code minecraft:chests/trial_chambers/reward_ominous_unique} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_TRIAL_CHAMBERS_REWARD_OMINOUS_UNIQUE = create(key("chests/trial_chambers/reward_ominous_unique")); + + /** + * {@code minecraft:chests/trial_chambers/reward_rare} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_TRIAL_CHAMBERS_REWARD_RARE = create(key("chests/trial_chambers/reward_rare")); + + /** + * {@code minecraft:chests/trial_chambers/reward_unique} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_TRIAL_CHAMBERS_REWARD_UNIQUE = create(key("chests/trial_chambers/reward_unique")); + + /** + * {@code minecraft:chests/trial_chambers/supply} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_TRIAL_CHAMBERS_SUPPLY = create(key("chests/trial_chambers/supply")); + + /** + * {@code minecraft:chests/underwater_ruin_big} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_UNDERWATER_RUIN_BIG = create(key("chests/underwater_ruin_big")); + + /** + * {@code minecraft:chests/underwater_ruin_small} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_UNDERWATER_RUIN_SMALL = create(key("chests/underwater_ruin_small")); + + /** + * {@code minecraft:chests/village/village_armorer} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_ARMORER = create(key("chests/village/village_armorer")); + + /** + * {@code minecraft:chests/village/village_butcher} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_BUTCHER = create(key("chests/village/village_butcher")); + + /** + * {@code minecraft:chests/village/village_cartographer} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_CARTOGRAPHER = create(key("chests/village/village_cartographer")); + + /** + * {@code minecraft:chests/village/village_desert_house} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_DESERT_HOUSE = create(key("chests/village/village_desert_house")); + + /** + * {@code minecraft:chests/village/village_fisher} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_FISHER = create(key("chests/village/village_fisher")); + + /** + * {@code minecraft:chests/village/village_fletcher} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_FLETCHER = create(key("chests/village/village_fletcher")); + + /** + * {@code minecraft:chests/village/village_mason} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_MASON = create(key("chests/village/village_mason")); + + /** + * {@code minecraft:chests/village/village_plains_house} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_PLAINS_HOUSE = create(key("chests/village/village_plains_house")); + + /** + * {@code minecraft:chests/village/village_savanna_house} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_SAVANNA_HOUSE = create(key("chests/village/village_savanna_house")); + + /** + * {@code minecraft:chests/village/village_shepherd} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_SHEPHERD = create(key("chests/village/village_shepherd")); + + /** + * {@code minecraft:chests/village/village_snowy_house} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_SNOWY_HOUSE = create(key("chests/village/village_snowy_house")); + + /** + * {@code minecraft:chests/village/village_taiga_house} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_TAIGA_HOUSE = create(key("chests/village/village_taiga_house")); + + /** + * {@code minecraft:chests/village/village_tannery} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_TANNERY = create(key("chests/village/village_tannery")); + + /** + * {@code minecraft:chests/village/village_temple} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_TEMPLE = create(key("chests/village/village_temple")); + + /** + * {@code minecraft:chests/village/village_toolsmith} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_TOOLSMITH = create(key("chests/village/village_toolsmith")); + + /** + * {@code minecraft:chests/village/village_weaponsmith} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_VILLAGE_VILLAGE_WEAPONSMITH = create(key("chests/village/village_weaponsmith")); + + /** + * {@code minecraft:chests/woodland_mansion} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey CHESTS_WOODLAND_MANSION = create(key("chests/woodland_mansion")); + + /** + * {@code minecraft:dispensers/trial_chambers/chamber} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey DISPENSERS_TRIAL_CHAMBERS_CHAMBER = create(key("dispensers/trial_chambers/chamber")); + + /** + * {@code minecraft:dispensers/trial_chambers/corridor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey DISPENSERS_TRIAL_CHAMBERS_CORRIDOR = create(key("dispensers/trial_chambers/corridor")); + + /** + * {@code minecraft:dispensers/trial_chambers/water} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey DISPENSERS_TRIAL_CHAMBERS_WATER = create(key("dispensers/trial_chambers/water")); + + /** + * {@code minecraft:entities/allay} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_ALLAY = create(key("entities/allay")); + + /** + * {@code minecraft:entities/armadillo} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_ARMADILLO = create(key("entities/armadillo")); + + /** + * {@code minecraft:entities/armor_stand} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_ARMOR_STAND = create(key("entities/armor_stand")); + + /** + * {@code minecraft:entities/axolotl} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_AXOLOTL = create(key("entities/axolotl")); + + /** + * {@code minecraft:entities/bat} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_BAT = create(key("entities/bat")); + + /** + * {@code minecraft:entities/bee} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_BEE = create(key("entities/bee")); + + /** + * {@code minecraft:entities/blaze} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_BLAZE = create(key("entities/blaze")); + + /** + * {@code minecraft:entities/bogged} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_BOGGED = create(key("entities/bogged")); + + /** + * {@code minecraft:entities/breeze} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_BREEZE = create(key("entities/breeze")); + + /** + * {@code minecraft:entities/camel} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_CAMEL = create(key("entities/camel")); + + /** + * {@code minecraft:entities/camel_husk} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_CAMEL_HUSK = create(key("entities/camel_husk")); + + /** + * {@code minecraft:entities/cat} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_CAT = create(key("entities/cat")); + + /** + * {@code minecraft:entities/cave_spider} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_CAVE_SPIDER = create(key("entities/cave_spider")); + + /** + * {@code minecraft:entities/chicken} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_CHICKEN = create(key("entities/chicken")); + + /** + * {@code minecraft:entities/cod} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_COD = create(key("entities/cod")); + + /** + * {@code minecraft:entities/copper_golem} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_COPPER_GOLEM = create(key("entities/copper_golem")); + + /** + * {@code minecraft:entities/cow} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_COW = create(key("entities/cow")); + + /** + * {@code minecraft:entities/creaking} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_CREAKING = create(key("entities/creaking")); + + /** + * {@code minecraft:entities/creeper} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_CREEPER = create(key("entities/creeper")); + + /** + * {@code minecraft:entities/dolphin} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_DOLPHIN = create(key("entities/dolphin")); + + /** + * {@code minecraft:entities/donkey} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_DONKEY = create(key("entities/donkey")); + + /** + * {@code minecraft:entities/drowned} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_DROWNED = create(key("entities/drowned")); + + /** + * {@code minecraft:entities/elder_guardian} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_ELDER_GUARDIAN = create(key("entities/elder_guardian")); + + /** + * {@code minecraft:entities/ender_dragon} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_ENDER_DRAGON = create(key("entities/ender_dragon")); + + /** + * {@code minecraft:entities/enderman} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_ENDERMAN = create(key("entities/enderman")); + + /** + * {@code minecraft:entities/endermite} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_ENDERMITE = create(key("entities/endermite")); + + /** + * {@code minecraft:entities/evoker} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_EVOKER = create(key("entities/evoker")); + + /** + * {@code minecraft:entities/fox} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_FOX = create(key("entities/fox")); + + /** + * {@code minecraft:entities/frog} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_FROG = create(key("entities/frog")); + + /** + * {@code minecraft:entities/ghast} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_GHAST = create(key("entities/ghast")); + + /** + * {@code minecraft:entities/giant} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_GIANT = create(key("entities/giant")); + + /** + * {@code minecraft:entities/glow_squid} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_GLOW_SQUID = create(key("entities/glow_squid")); + + /** + * {@code minecraft:entities/goat} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_GOAT = create(key("entities/goat")); + + /** + * {@code minecraft:entities/guardian} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_GUARDIAN = create(key("entities/guardian")); + + /** + * {@code minecraft:entities/happy_ghast} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_HAPPY_GHAST = create(key("entities/happy_ghast")); + + /** + * {@code minecraft:entities/hoglin} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_HOGLIN = create(key("entities/hoglin")); + + /** + * {@code minecraft:entities/horse} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_HORSE = create(key("entities/horse")); + + /** + * {@code minecraft:entities/husk} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_HUSK = create(key("entities/husk")); + + /** + * {@code minecraft:entities/illusioner} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_ILLUSIONER = create(key("entities/illusioner")); + + /** + * {@code minecraft:entities/iron_golem} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_IRON_GOLEM = create(key("entities/iron_golem")); + + /** + * {@code minecraft:entities/llama} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_LLAMA = create(key("entities/llama")); + + /** + * {@code minecraft:entities/magma_cube} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_MAGMA_CUBE = create(key("entities/magma_cube")); + + /** + * {@code minecraft:entities/mannequin} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_MANNEQUIN = create(key("entities/mannequin")); + + /** + * {@code minecraft:entities/mooshroom} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_MOOSHROOM = create(key("entities/mooshroom")); + + /** + * {@code minecraft:entities/mule} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_MULE = create(key("entities/mule")); + + /** + * {@code minecraft:entities/nautilus} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_NAUTILUS = create(key("entities/nautilus")); + + /** + * {@code minecraft:entities/ocelot} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_OCELOT = create(key("entities/ocelot")); + + /** + * {@code minecraft:entities/panda} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_PANDA = create(key("entities/panda")); + + /** + * {@code minecraft:entities/parched} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_PARCHED = create(key("entities/parched")); + + /** + * {@code minecraft:entities/parrot} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_PARROT = create(key("entities/parrot")); + + /** + * {@code minecraft:entities/phantom} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_PHANTOM = create(key("entities/phantom")); + + /** + * {@code minecraft:entities/pig} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_PIG = create(key("entities/pig")); + + /** + * {@code minecraft:entities/piglin} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_PIGLIN = create(key("entities/piglin")); + + /** + * {@code minecraft:entities/piglin_brute} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_PIGLIN_BRUTE = create(key("entities/piglin_brute")); + + /** + * {@code minecraft:entities/pillager} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_PILLAGER = create(key("entities/pillager")); + + /** + * {@code minecraft:entities/player} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_PLAYER = create(key("entities/player")); + + /** + * {@code minecraft:entities/polar_bear} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_POLAR_BEAR = create(key("entities/polar_bear")); + + /** + * {@code minecraft:entities/pufferfish} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_PUFFERFISH = create(key("entities/pufferfish")); + + /** + * {@code minecraft:entities/rabbit} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_RABBIT = create(key("entities/rabbit")); + + /** + * {@code minecraft:entities/ravager} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_RAVAGER = create(key("entities/ravager")); + + /** + * {@code minecraft:entities/salmon} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SALMON = create(key("entities/salmon")); + + /** + * {@code minecraft:entities/sheep} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP = create(key("entities/sheep")); + + /** + * {@code minecraft:entities/sheep/black} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_BLACK = create(key("entities/sheep/black")); + + /** + * {@code minecraft:entities/sheep/blue} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_BLUE = create(key("entities/sheep/blue")); + + /** + * {@code minecraft:entities/sheep/brown} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_BROWN = create(key("entities/sheep/brown")); + + /** + * {@code minecraft:entities/sheep/cyan} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_CYAN = create(key("entities/sheep/cyan")); + + /** + * {@code minecraft:entities/sheep/gray} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_GRAY = create(key("entities/sheep/gray")); + + /** + * {@code minecraft:entities/sheep/green} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_GREEN = create(key("entities/sheep/green")); + + /** + * {@code minecraft:entities/sheep/light_blue} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_LIGHT_BLUE = create(key("entities/sheep/light_blue")); + + /** + * {@code minecraft:entities/sheep/light_gray} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_LIGHT_GRAY = create(key("entities/sheep/light_gray")); + + /** + * {@code minecraft:entities/sheep/lime} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_LIME = create(key("entities/sheep/lime")); + + /** + * {@code minecraft:entities/sheep/magenta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_MAGENTA = create(key("entities/sheep/magenta")); + + /** + * {@code minecraft:entities/sheep/orange} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_ORANGE = create(key("entities/sheep/orange")); + + /** + * {@code minecraft:entities/sheep/pink} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_PINK = create(key("entities/sheep/pink")); + + /** + * {@code minecraft:entities/sheep/purple} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_PURPLE = create(key("entities/sheep/purple")); + + /** + * {@code minecraft:entities/sheep/red} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_RED = create(key("entities/sheep/red")); + + /** + * {@code minecraft:entities/sheep/white} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_WHITE = create(key("entities/sheep/white")); + + /** + * {@code minecraft:entities/sheep/yellow} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHEEP_YELLOW = create(key("entities/sheep/yellow")); + + /** + * {@code minecraft:entities/shulker} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SHULKER = create(key("entities/shulker")); + + /** + * {@code minecraft:entities/silverfish} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SILVERFISH = create(key("entities/silverfish")); + + /** + * {@code minecraft:entities/skeleton} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SKELETON = create(key("entities/skeleton")); + + /** + * {@code minecraft:entities/skeleton_horse} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SKELETON_HORSE = create(key("entities/skeleton_horse")); + + /** + * {@code minecraft:entities/slime} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SLIME = create(key("entities/slime")); + + /** + * {@code minecraft:entities/sniffer} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SNIFFER = create(key("entities/sniffer")); + + /** + * {@code minecraft:entities/snow_golem} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SNOW_GOLEM = create(key("entities/snow_golem")); + + /** + * {@code minecraft:entities/spider} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SPIDER = create(key("entities/spider")); + + /** + * {@code minecraft:entities/squid} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_SQUID = create(key("entities/squid")); + + /** + * {@code minecraft:entities/stray} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_STRAY = create(key("entities/stray")); + + /** + * {@code minecraft:entities/strider} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_STRIDER = create(key("entities/strider")); + + /** + * {@code minecraft:entities/tadpole} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_TADPOLE = create(key("entities/tadpole")); + + /** + * {@code minecraft:entities/trader_llama} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_TRADER_LLAMA = create(key("entities/trader_llama")); + + /** + * {@code minecraft:entities/tropical_fish} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_TROPICAL_FISH = create(key("entities/tropical_fish")); + + /** + * {@code minecraft:entities/turtle} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_TURTLE = create(key("entities/turtle")); + + /** + * {@code minecraft:entities/vex} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_VEX = create(key("entities/vex")); + + /** + * {@code minecraft:entities/villager} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_VILLAGER = create(key("entities/villager")); + + /** + * {@code minecraft:entities/vindicator} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_VINDICATOR = create(key("entities/vindicator")); + + /** + * {@code minecraft:entities/wandering_trader} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_WANDERING_TRADER = create(key("entities/wandering_trader")); + + /** + * {@code minecraft:entities/warden} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_WARDEN = create(key("entities/warden")); + + /** + * {@code minecraft:entities/witch} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_WITCH = create(key("entities/witch")); + + /** + * {@code minecraft:entities/wither} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_WITHER = create(key("entities/wither")); + + /** + * {@code minecraft:entities/wither_skeleton} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_WITHER_SKELETON = create(key("entities/wither_skeleton")); + + /** + * {@code minecraft:entities/wolf} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_WOLF = create(key("entities/wolf")); + + /** + * {@code minecraft:entities/zoglin} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_ZOGLIN = create(key("entities/zoglin")); + + /** + * {@code minecraft:entities/zombie} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_ZOMBIE = create(key("entities/zombie")); + + /** + * {@code minecraft:entities/zombie_horse} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_ZOMBIE_HORSE = create(key("entities/zombie_horse")); + + /** + * {@code minecraft:entities/zombie_nautilus} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_ZOMBIE_NAUTILUS = create(key("entities/zombie_nautilus")); + + /** + * {@code minecraft:entities/zombie_villager} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_ZOMBIE_VILLAGER = create(key("entities/zombie_villager")); + + /** + * {@code minecraft:entities/zombified_piglin} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey ENTITIES_ZOMBIFIED_PIGLIN = create(key("entities/zombified_piglin")); + + /** + * {@code minecraft:equipment/trial_chamber} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey EQUIPMENT_TRIAL_CHAMBER = create(key("equipment/trial_chamber")); + + /** + * {@code minecraft:equipment/trial_chamber_melee} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey EQUIPMENT_TRIAL_CHAMBER_MELEE = create(key("equipment/trial_chamber_melee")); + + /** + * {@code minecraft:equipment/trial_chamber_ranged} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey EQUIPMENT_TRIAL_CHAMBER_RANGED = create(key("equipment/trial_chamber_ranged")); + + /** + * {@code minecraft:gameplay/armadillo_shed} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_ARMADILLO_SHED = create(key("gameplay/armadillo_shed")); + + /** + * {@code minecraft:gameplay/cat_morning_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_CAT_MORNING_GIFT = create(key("gameplay/cat_morning_gift")); + + /** + * {@code minecraft:gameplay/chicken_lay} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_CHICKEN_LAY = create(key("gameplay/chicken_lay")); + + /** + * {@code minecraft:gameplay/fishing} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_FISHING = create(key("gameplay/fishing")); + + /** + * {@code minecraft:gameplay/fishing/fish} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_FISHING_FISH = create(key("gameplay/fishing/fish")); + + /** + * {@code minecraft:gameplay/fishing/junk} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_FISHING_JUNK = create(key("gameplay/fishing/junk")); + + /** + * {@code minecraft:gameplay/fishing/treasure} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_FISHING_TREASURE = create(key("gameplay/fishing/treasure")); + + /** + * {@code minecraft:gameplay/hero_of_the_village/armorer_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_HERO_OF_THE_VILLAGE_ARMORER_GIFT = create(key("gameplay/hero_of_the_village/armorer_gift")); + + /** + * {@code minecraft:gameplay/hero_of_the_village/baby_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_HERO_OF_THE_VILLAGE_BABY_GIFT = create(key("gameplay/hero_of_the_village/baby_gift")); + + /** + * {@code minecraft:gameplay/hero_of_the_village/butcher_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_HERO_OF_THE_VILLAGE_BUTCHER_GIFT = create(key("gameplay/hero_of_the_village/butcher_gift")); + + /** + * {@code minecraft:gameplay/hero_of_the_village/cartographer_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_HERO_OF_THE_VILLAGE_CARTOGRAPHER_GIFT = create(key("gameplay/hero_of_the_village/cartographer_gift")); + + /** + * {@code minecraft:gameplay/hero_of_the_village/cleric_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_HERO_OF_THE_VILLAGE_CLERIC_GIFT = create(key("gameplay/hero_of_the_village/cleric_gift")); + + /** + * {@code minecraft:gameplay/hero_of_the_village/farmer_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_HERO_OF_THE_VILLAGE_FARMER_GIFT = create(key("gameplay/hero_of_the_village/farmer_gift")); + + /** + * {@code minecraft:gameplay/hero_of_the_village/fisherman_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_HERO_OF_THE_VILLAGE_FISHERMAN_GIFT = create(key("gameplay/hero_of_the_village/fisherman_gift")); + + /** + * {@code minecraft:gameplay/hero_of_the_village/fletcher_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_HERO_OF_THE_VILLAGE_FLETCHER_GIFT = create(key("gameplay/hero_of_the_village/fletcher_gift")); + + /** + * {@code minecraft:gameplay/hero_of_the_village/leatherworker_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_HERO_OF_THE_VILLAGE_LEATHERWORKER_GIFT = create(key("gameplay/hero_of_the_village/leatherworker_gift")); + + /** + * {@code minecraft:gameplay/hero_of_the_village/librarian_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_HERO_OF_THE_VILLAGE_LIBRARIAN_GIFT = create(key("gameplay/hero_of_the_village/librarian_gift")); + + /** + * {@code minecraft:gameplay/hero_of_the_village/mason_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_HERO_OF_THE_VILLAGE_MASON_GIFT = create(key("gameplay/hero_of_the_village/mason_gift")); + + /** + * {@code minecraft:gameplay/hero_of_the_village/shepherd_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_HERO_OF_THE_VILLAGE_SHEPHERD_GIFT = create(key("gameplay/hero_of_the_village/shepherd_gift")); + + /** + * {@code minecraft:gameplay/hero_of_the_village/toolsmith_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_HERO_OF_THE_VILLAGE_TOOLSMITH_GIFT = create(key("gameplay/hero_of_the_village/toolsmith_gift")); + + /** + * {@code minecraft:gameplay/hero_of_the_village/unemployed_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_HERO_OF_THE_VILLAGE_UNEMPLOYED_GIFT = create(key("gameplay/hero_of_the_village/unemployed_gift")); + + /** + * {@code minecraft:gameplay/hero_of_the_village/weaponsmith_gift} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_HERO_OF_THE_VILLAGE_WEAPONSMITH_GIFT = create(key("gameplay/hero_of_the_village/weaponsmith_gift")); + + /** + * {@code minecraft:gameplay/panda_sneeze} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_PANDA_SNEEZE = create(key("gameplay/panda_sneeze")); + + /** + * {@code minecraft:gameplay/piglin_bartering} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_PIGLIN_BARTERING = create(key("gameplay/piglin_bartering")); + + /** + * {@code minecraft:gameplay/sniffer_digging} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_SNIFFER_DIGGING = create(key("gameplay/sniffer_digging")); + + /** + * {@code minecraft:gameplay/turtle_grow} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey GAMEPLAY_TURTLE_GROW = create(key("gameplay/turtle_grow")); + + /** + * {@code minecraft:harvest/beehive} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey HARVEST_BEEHIVE = create(key("harvest/beehive")); + + /** + * {@code minecraft:harvest/cave_vine} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey HARVEST_CAVE_VINE = create(key("harvest/cave_vine")); + + /** + * {@code minecraft:harvest/sweet_berry_bush} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey HARVEST_SWEET_BERRY_BUSH = create(key("harvest/sweet_berry_bush")); + + /** + * {@code minecraft:pots/trial_chambers/corridor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey POTS_TRIAL_CHAMBERS_CORRIDOR = create(key("pots/trial_chambers/corridor")); + + /** + * {@code minecraft:shearing/bogged} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_BOGGED = create(key("shearing/bogged")); + + /** + * {@code minecraft:shearing/mooshroom} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_MOOSHROOM = create(key("shearing/mooshroom")); + + /** + * {@code minecraft:shearing/mooshroom/brown} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_MOOSHROOM_BROWN = create(key("shearing/mooshroom/brown")); + + /** + * {@code minecraft:shearing/mooshroom/red} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_MOOSHROOM_RED = create(key("shearing/mooshroom/red")); + + /** + * {@code minecraft:shearing/sheep} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP = create(key("shearing/sheep")); + + /** + * {@code minecraft:shearing/sheep/black} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_BLACK = create(key("shearing/sheep/black")); + + /** + * {@code minecraft:shearing/sheep/blue} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_BLUE = create(key("shearing/sheep/blue")); + + /** + * {@code minecraft:shearing/sheep/brown} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_BROWN = create(key("shearing/sheep/brown")); + + /** + * {@code minecraft:shearing/sheep/cyan} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_CYAN = create(key("shearing/sheep/cyan")); + + /** + * {@code minecraft:shearing/sheep/gray} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_GRAY = create(key("shearing/sheep/gray")); + + /** + * {@code minecraft:shearing/sheep/green} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_GREEN = create(key("shearing/sheep/green")); + + /** + * {@code minecraft:shearing/sheep/light_blue} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_LIGHT_BLUE = create(key("shearing/sheep/light_blue")); + + /** + * {@code minecraft:shearing/sheep/light_gray} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_LIGHT_GRAY = create(key("shearing/sheep/light_gray")); + + /** + * {@code minecraft:shearing/sheep/lime} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_LIME = create(key("shearing/sheep/lime")); + + /** + * {@code minecraft:shearing/sheep/magenta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_MAGENTA = create(key("shearing/sheep/magenta")); + + /** + * {@code minecraft:shearing/sheep/orange} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_ORANGE = create(key("shearing/sheep/orange")); + + /** + * {@code minecraft:shearing/sheep/pink} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_PINK = create(key("shearing/sheep/pink")); + + /** + * {@code minecraft:shearing/sheep/purple} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_PURPLE = create(key("shearing/sheep/purple")); + + /** + * {@code minecraft:shearing/sheep/red} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_RED = create(key("shearing/sheep/red")); + + /** + * {@code minecraft:shearing/sheep/white} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_WHITE = create(key("shearing/sheep/white")); + + /** + * {@code minecraft:shearing/sheep/yellow} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SHEEP_YELLOW = create(key("shearing/sheep/yellow")); + + /** + * {@code minecraft:shearing/snow_golem} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SHEARING_SNOW_GOLEM = create(key("shearing/snow_golem")); + + /** + * {@code minecraft:spawners/ominous/trial_chamber/consumables} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SPAWNERS_OMINOUS_TRIAL_CHAMBER_CONSUMABLES = create(key("spawners/ominous/trial_chamber/consumables")); + + /** + * {@code minecraft:spawners/ominous/trial_chamber/key} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SPAWNERS_OMINOUS_TRIAL_CHAMBER_KEY = create(key("spawners/ominous/trial_chamber/key")); + + /** + * {@code minecraft:spawners/trial_chamber/consumables} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SPAWNERS_TRIAL_CHAMBER_CONSUMABLES = create(key("spawners/trial_chamber/consumables")); + + /** + * {@code minecraft:spawners/trial_chamber/items_to_drop_when_ominous} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SPAWNERS_TRIAL_CHAMBER_ITEMS_TO_DROP_WHEN_OMINOUS = create(key("spawners/trial_chamber/items_to_drop_when_ominous")); + + /** + * {@code minecraft:spawners/trial_chamber/key} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TypedKey SPAWNERS_TRIAL_CHAMBER_KEY = create(key("spawners/trial_chamber/key")); + + private LootTableKeys() { + } + + /** + * Creates a typed key for {@link LootTable} in the registry {@code minecraft:loot_table}. + * + * @param key the value's key in the registry + * @return a new typed key + */ + public static TypedKey create(final Key key) { + return TypedKey.create(RegistryKey.LOOT_TABLE, key); + } +} diff --git a/paper-api/src/main/java/io/papermc/paper/registry/RegistryKey.java b/paper-api/src/main/java/io/papermc/paper/registry/RegistryKey.java index dcee3d88f5b7..113a85cbe845 100644 --- a/paper-api/src/main/java/io/papermc/paper/registry/RegistryKey.java +++ b/paper-api/src/main/java/io/papermc/paper/registry/RegistryKey.java @@ -36,6 +36,7 @@ import org.bukkit.inventory.MenuType; import org.bukkit.inventory.meta.trim.TrimMaterial; import org.bukkit.inventory.meta.trim.TrimPattern; +import org.bukkit.loot.LootTable; import org.bukkit.map.MapCursor; import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionType; @@ -231,6 +232,11 @@ public sealed interface RegistryKey extends Keyed permits RegistryKeyImpl { * @see io.papermc.paper.registry.keys.DialogKeys */ RegistryKey DIALOG = create("dialog"); + /** + * Data-driven registry for loot-tables. + * @see io.papermc.paper.registry.keys.LootTableKeys + */ + RegistryKey LOOT_TABLE = create("loot_table"); /* ******************* * diff --git a/paper-api/src/main/java/io/papermc/paper/world/LootTables.java b/paper-api/src/main/java/io/papermc/paper/world/LootTables.java new file mode 100644 index 000000000000..4aa38d784ec3 --- /dev/null +++ b/paper-api/src/main/java/io/papermc/paper/world/LootTables.java @@ -0,0 +1,2672 @@ +package io.papermc.paper.world; + +import io.papermc.paper.registry.RegistryAccess; +import io.papermc.paper.registry.RegistryKey; +import net.kyori.adventure.key.Key; +import net.kyori.adventure.key.KeyPattern; +import org.bukkit.loot.LootTable; +import org.jspecify.annotations.NullMarked; + +/** + * All the vanilla loot tables + */ +@NullMarked +public final class LootTables { + + // Start generate - LootTables + public static final LootTable ARCHAEOLOGY_DESERT_PYRAMID = getTable("archaeology/desert_pyramid"); + + public static final LootTable ARCHAEOLOGY_DESERT_WELL = getTable("archaeology/desert_well"); + + public static final LootTable ARCHAEOLOGY_OCEAN_RUIN_COLD = getTable("archaeology/ocean_ruin_cold"); + + public static final LootTable ARCHAEOLOGY_OCEAN_RUIN_WARM = getTable("archaeology/ocean_ruin_warm"); + + public static final LootTable ARCHAEOLOGY_TRAIL_RUINS_COMMON = getTable("archaeology/trail_ruins_common"); + + public static final LootTable ARCHAEOLOGY_TRAIL_RUINS_RARE = getTable("archaeology/trail_ruins_rare"); + + public static final LootTable BLOCKS_ACACIA_BUTTON = getTable("blocks/acacia_button"); + + public static final LootTable BLOCKS_ACACIA_DOOR = getTable("blocks/acacia_door"); + + public static final LootTable BLOCKS_ACACIA_FENCE = getTable("blocks/acacia_fence"); + + public static final LootTable BLOCKS_ACACIA_FENCE_GATE = getTable("blocks/acacia_fence_gate"); + + public static final LootTable BLOCKS_ACACIA_HANGING_SIGN = getTable("blocks/acacia_hanging_sign"); + + public static final LootTable BLOCKS_ACACIA_LEAVES = getTable("blocks/acacia_leaves"); + + public static final LootTable BLOCKS_ACACIA_LOG = getTable("blocks/acacia_log"); + + public static final LootTable BLOCKS_ACACIA_PLANKS = getTable("blocks/acacia_planks"); + + public static final LootTable BLOCKS_ACACIA_PRESSURE_PLATE = getTable("blocks/acacia_pressure_plate"); + + public static final LootTable BLOCKS_ACACIA_SAPLING = getTable("blocks/acacia_sapling"); + + public static final LootTable BLOCKS_ACACIA_SHELF = getTable("blocks/acacia_shelf"); + + public static final LootTable BLOCKS_ACACIA_SIGN = getTable("blocks/acacia_sign"); + + public static final LootTable BLOCKS_ACACIA_SLAB = getTable("blocks/acacia_slab"); + + public static final LootTable BLOCKS_ACACIA_STAIRS = getTable("blocks/acacia_stairs"); + + public static final LootTable BLOCKS_ACACIA_TRAPDOOR = getTable("blocks/acacia_trapdoor"); + + public static final LootTable BLOCKS_ACACIA_WOOD = getTable("blocks/acacia_wood"); + + public static final LootTable BLOCKS_ACTIVATOR_RAIL = getTable("blocks/activator_rail"); + + public static final LootTable BLOCKS_ALLIUM = getTable("blocks/allium"); + + public static final LootTable BLOCKS_AMETHYST_BLOCK = getTable("blocks/amethyst_block"); + + public static final LootTable BLOCKS_AMETHYST_CLUSTER = getTable("blocks/amethyst_cluster"); + + public static final LootTable BLOCKS_ANCIENT_DEBRIS = getTable("blocks/ancient_debris"); + + public static final LootTable BLOCKS_ANDESITE = getTable("blocks/andesite"); + + public static final LootTable BLOCKS_ANDESITE_SLAB = getTable("blocks/andesite_slab"); + + public static final LootTable BLOCKS_ANDESITE_STAIRS = getTable("blocks/andesite_stairs"); + + public static final LootTable BLOCKS_ANDESITE_WALL = getTable("blocks/andesite_wall"); + + public static final LootTable BLOCKS_ANVIL = getTable("blocks/anvil"); + + public static final LootTable BLOCKS_ATTACHED_MELON_STEM = getTable("blocks/attached_melon_stem"); + + public static final LootTable BLOCKS_ATTACHED_PUMPKIN_STEM = getTable("blocks/attached_pumpkin_stem"); + + public static final LootTable BLOCKS_AZALEA = getTable("blocks/azalea"); + + public static final LootTable BLOCKS_AZALEA_LEAVES = getTable("blocks/azalea_leaves"); + + public static final LootTable BLOCKS_AZURE_BLUET = getTable("blocks/azure_bluet"); + + public static final LootTable BLOCKS_BAMBOO = getTable("blocks/bamboo"); + + public static final LootTable BLOCKS_BAMBOO_BLOCK = getTable("blocks/bamboo_block"); + + public static final LootTable BLOCKS_BAMBOO_BUTTON = getTable("blocks/bamboo_button"); + + public static final LootTable BLOCKS_BAMBOO_DOOR = getTable("blocks/bamboo_door"); + + public static final LootTable BLOCKS_BAMBOO_FENCE = getTable("blocks/bamboo_fence"); + + public static final LootTable BLOCKS_BAMBOO_FENCE_GATE = getTable("blocks/bamboo_fence_gate"); + + public static final LootTable BLOCKS_BAMBOO_HANGING_SIGN = getTable("blocks/bamboo_hanging_sign"); + + public static final LootTable BLOCKS_BAMBOO_MOSAIC = getTable("blocks/bamboo_mosaic"); + + public static final LootTable BLOCKS_BAMBOO_MOSAIC_SLAB = getTable("blocks/bamboo_mosaic_slab"); + + public static final LootTable BLOCKS_BAMBOO_MOSAIC_STAIRS = getTable("blocks/bamboo_mosaic_stairs"); + + public static final LootTable BLOCKS_BAMBOO_PLANKS = getTable("blocks/bamboo_planks"); + + public static final LootTable BLOCKS_BAMBOO_PRESSURE_PLATE = getTable("blocks/bamboo_pressure_plate"); + + public static final LootTable BLOCKS_BAMBOO_SAPLING = getTable("blocks/bamboo_sapling"); + + public static final LootTable BLOCKS_BAMBOO_SHELF = getTable("blocks/bamboo_shelf"); + + public static final LootTable BLOCKS_BAMBOO_SIGN = getTable("blocks/bamboo_sign"); + + public static final LootTable BLOCKS_BAMBOO_SLAB = getTable("blocks/bamboo_slab"); + + public static final LootTable BLOCKS_BAMBOO_STAIRS = getTable("blocks/bamboo_stairs"); + + public static final LootTable BLOCKS_BAMBOO_TRAPDOOR = getTable("blocks/bamboo_trapdoor"); + + public static final LootTable BLOCKS_BARREL = getTable("blocks/barrel"); + + public static final LootTable BLOCKS_BASALT = getTable("blocks/basalt"); + + public static final LootTable BLOCKS_BEACON = getTable("blocks/beacon"); + + public static final LootTable BLOCKS_BEE_NEST = getTable("blocks/bee_nest"); + + public static final LootTable BLOCKS_BEEHIVE = getTable("blocks/beehive"); + + public static final LootTable BLOCKS_BEETROOTS = getTable("blocks/beetroots"); + + public static final LootTable BLOCKS_BELL = getTable("blocks/bell"); + + public static final LootTable BLOCKS_BIG_DRIPLEAF = getTable("blocks/big_dripleaf"); + + public static final LootTable BLOCKS_BIG_DRIPLEAF_STEM = getTable("blocks/big_dripleaf_stem"); + + public static final LootTable BLOCKS_BIRCH_BUTTON = getTable("blocks/birch_button"); + + public static final LootTable BLOCKS_BIRCH_DOOR = getTable("blocks/birch_door"); + + public static final LootTable BLOCKS_BIRCH_FENCE = getTable("blocks/birch_fence"); + + public static final LootTable BLOCKS_BIRCH_FENCE_GATE = getTable("blocks/birch_fence_gate"); + + public static final LootTable BLOCKS_BIRCH_HANGING_SIGN = getTable("blocks/birch_hanging_sign"); + + public static final LootTable BLOCKS_BIRCH_LEAVES = getTable("blocks/birch_leaves"); + + public static final LootTable BLOCKS_BIRCH_LOG = getTable("blocks/birch_log"); + + public static final LootTable BLOCKS_BIRCH_PLANKS = getTable("blocks/birch_planks"); + + public static final LootTable BLOCKS_BIRCH_PRESSURE_PLATE = getTable("blocks/birch_pressure_plate"); + + public static final LootTable BLOCKS_BIRCH_SAPLING = getTable("blocks/birch_sapling"); + + public static final LootTable BLOCKS_BIRCH_SHELF = getTable("blocks/birch_shelf"); + + public static final LootTable BLOCKS_BIRCH_SIGN = getTable("blocks/birch_sign"); + + public static final LootTable BLOCKS_BIRCH_SLAB = getTable("blocks/birch_slab"); + + public static final LootTable BLOCKS_BIRCH_STAIRS = getTable("blocks/birch_stairs"); + + public static final LootTable BLOCKS_BIRCH_TRAPDOOR = getTable("blocks/birch_trapdoor"); + + public static final LootTable BLOCKS_BIRCH_WOOD = getTable("blocks/birch_wood"); + + public static final LootTable BLOCKS_BLACK_BANNER = getTable("blocks/black_banner"); + + public static final LootTable BLOCKS_BLACK_BED = getTable("blocks/black_bed"); + + public static final LootTable BLOCKS_BLACK_CANDLE = getTable("blocks/black_candle"); + + public static final LootTable BLOCKS_BLACK_CANDLE_CAKE = getTable("blocks/black_candle_cake"); + + public static final LootTable BLOCKS_BLACK_CARPET = getTable("blocks/black_carpet"); + + public static final LootTable BLOCKS_BLACK_CONCRETE = getTable("blocks/black_concrete"); + + public static final LootTable BLOCKS_BLACK_CONCRETE_POWDER = getTable("blocks/black_concrete_powder"); + + public static final LootTable BLOCKS_BLACK_GLAZED_TERRACOTTA = getTable("blocks/black_glazed_terracotta"); + + public static final LootTable BLOCKS_BLACK_SHULKER_BOX = getTable("blocks/black_shulker_box"); + + public static final LootTable BLOCKS_BLACK_STAINED_GLASS = getTable("blocks/black_stained_glass"); + + public static final LootTable BLOCKS_BLACK_STAINED_GLASS_PANE = getTable("blocks/black_stained_glass_pane"); + + public static final LootTable BLOCKS_BLACK_TERRACOTTA = getTable("blocks/black_terracotta"); + + public static final LootTable BLOCKS_BLACK_WOOL = getTable("blocks/black_wool"); + + public static final LootTable BLOCKS_BLACKSTONE = getTable("blocks/blackstone"); + + public static final LootTable BLOCKS_BLACKSTONE_SLAB = getTable("blocks/blackstone_slab"); + + public static final LootTable BLOCKS_BLACKSTONE_STAIRS = getTable("blocks/blackstone_stairs"); + + public static final LootTable BLOCKS_BLACKSTONE_WALL = getTable("blocks/blackstone_wall"); + + public static final LootTable BLOCKS_BLAST_FURNACE = getTable("blocks/blast_furnace"); + + public static final LootTable BLOCKS_BLUE_BANNER = getTable("blocks/blue_banner"); + + public static final LootTable BLOCKS_BLUE_BED = getTable("blocks/blue_bed"); + + public static final LootTable BLOCKS_BLUE_CANDLE = getTable("blocks/blue_candle"); + + public static final LootTable BLOCKS_BLUE_CANDLE_CAKE = getTable("blocks/blue_candle_cake"); + + public static final LootTable BLOCKS_BLUE_CARPET = getTable("blocks/blue_carpet"); + + public static final LootTable BLOCKS_BLUE_CONCRETE = getTable("blocks/blue_concrete"); + + public static final LootTable BLOCKS_BLUE_CONCRETE_POWDER = getTable("blocks/blue_concrete_powder"); + + public static final LootTable BLOCKS_BLUE_GLAZED_TERRACOTTA = getTable("blocks/blue_glazed_terracotta"); + + public static final LootTable BLOCKS_BLUE_ICE = getTable("blocks/blue_ice"); + + public static final LootTable BLOCKS_BLUE_ORCHID = getTable("blocks/blue_orchid"); + + public static final LootTable BLOCKS_BLUE_SHULKER_BOX = getTable("blocks/blue_shulker_box"); + + public static final LootTable BLOCKS_BLUE_STAINED_GLASS = getTable("blocks/blue_stained_glass"); + + public static final LootTable BLOCKS_BLUE_STAINED_GLASS_PANE = getTable("blocks/blue_stained_glass_pane"); + + public static final LootTable BLOCKS_BLUE_TERRACOTTA = getTable("blocks/blue_terracotta"); + + public static final LootTable BLOCKS_BLUE_WOOL = getTable("blocks/blue_wool"); + + public static final LootTable BLOCKS_BONE_BLOCK = getTable("blocks/bone_block"); + + public static final LootTable BLOCKS_BOOKSHELF = getTable("blocks/bookshelf"); + + public static final LootTable BLOCKS_BRAIN_CORAL = getTable("blocks/brain_coral"); + + public static final LootTable BLOCKS_BRAIN_CORAL_BLOCK = getTable("blocks/brain_coral_block"); + + public static final LootTable BLOCKS_BRAIN_CORAL_FAN = getTable("blocks/brain_coral_fan"); + + public static final LootTable BLOCKS_BREWING_STAND = getTable("blocks/brewing_stand"); + + public static final LootTable BLOCKS_BRICK_SLAB = getTable("blocks/brick_slab"); + + public static final LootTable BLOCKS_BRICK_STAIRS = getTable("blocks/brick_stairs"); + + public static final LootTable BLOCKS_BRICK_WALL = getTable("blocks/brick_wall"); + + public static final LootTable BLOCKS_BRICKS = getTable("blocks/bricks"); + + public static final LootTable BLOCKS_BROWN_BANNER = getTable("blocks/brown_banner"); + + public static final LootTable BLOCKS_BROWN_BED = getTable("blocks/brown_bed"); + + public static final LootTable BLOCKS_BROWN_CANDLE = getTable("blocks/brown_candle"); + + public static final LootTable BLOCKS_BROWN_CANDLE_CAKE = getTable("blocks/brown_candle_cake"); + + public static final LootTable BLOCKS_BROWN_CARPET = getTable("blocks/brown_carpet"); + + public static final LootTable BLOCKS_BROWN_CONCRETE = getTable("blocks/brown_concrete"); + + public static final LootTable BLOCKS_BROWN_CONCRETE_POWDER = getTable("blocks/brown_concrete_powder"); + + public static final LootTable BLOCKS_BROWN_GLAZED_TERRACOTTA = getTable("blocks/brown_glazed_terracotta"); + + public static final LootTable BLOCKS_BROWN_MUSHROOM = getTable("blocks/brown_mushroom"); + + public static final LootTable BLOCKS_BROWN_MUSHROOM_BLOCK = getTable("blocks/brown_mushroom_block"); + + public static final LootTable BLOCKS_BROWN_SHULKER_BOX = getTable("blocks/brown_shulker_box"); + + public static final LootTable BLOCKS_BROWN_STAINED_GLASS = getTable("blocks/brown_stained_glass"); + + public static final LootTable BLOCKS_BROWN_STAINED_GLASS_PANE = getTable("blocks/brown_stained_glass_pane"); + + public static final LootTable BLOCKS_BROWN_TERRACOTTA = getTable("blocks/brown_terracotta"); + + public static final LootTable BLOCKS_BROWN_WOOL = getTable("blocks/brown_wool"); + + public static final LootTable BLOCKS_BUBBLE_CORAL = getTable("blocks/bubble_coral"); + + public static final LootTable BLOCKS_BUBBLE_CORAL_BLOCK = getTable("blocks/bubble_coral_block"); + + public static final LootTable BLOCKS_BUBBLE_CORAL_FAN = getTable("blocks/bubble_coral_fan"); + + public static final LootTable BLOCKS_BUDDING_AMETHYST = getTable("blocks/budding_amethyst"); + + public static final LootTable BLOCKS_BUSH = getTable("blocks/bush"); + + public static final LootTable BLOCKS_CACTUS = getTable("blocks/cactus"); + + public static final LootTable BLOCKS_CACTUS_FLOWER = getTable("blocks/cactus_flower"); + + public static final LootTable BLOCKS_CAKE = getTable("blocks/cake"); + + public static final LootTable BLOCKS_CALCITE = getTable("blocks/calcite"); + + public static final LootTable BLOCKS_CALIBRATED_SCULK_SENSOR = getTable("blocks/calibrated_sculk_sensor"); + + public static final LootTable BLOCKS_CAMPFIRE = getTable("blocks/campfire"); + + public static final LootTable BLOCKS_CANDLE = getTable("blocks/candle"); + + public static final LootTable BLOCKS_CANDLE_CAKE = getTable("blocks/candle_cake"); + + public static final LootTable BLOCKS_CARROTS = getTable("blocks/carrots"); + + public static final LootTable BLOCKS_CARTOGRAPHY_TABLE = getTable("blocks/cartography_table"); + + public static final LootTable BLOCKS_CARVED_PUMPKIN = getTable("blocks/carved_pumpkin"); + + public static final LootTable BLOCKS_CAULDRON = getTable("blocks/cauldron"); + + public static final LootTable BLOCKS_CAVE_VINES = getTable("blocks/cave_vines"); + + public static final LootTable BLOCKS_CAVE_VINES_PLANT = getTable("blocks/cave_vines_plant"); + + public static final LootTable BLOCKS_CHERRY_BUTTON = getTable("blocks/cherry_button"); + + public static final LootTable BLOCKS_CHERRY_DOOR = getTable("blocks/cherry_door"); + + public static final LootTable BLOCKS_CHERRY_FENCE = getTable("blocks/cherry_fence"); + + public static final LootTable BLOCKS_CHERRY_FENCE_GATE = getTable("blocks/cherry_fence_gate"); + + public static final LootTable BLOCKS_CHERRY_HANGING_SIGN = getTable("blocks/cherry_hanging_sign"); + + public static final LootTable BLOCKS_CHERRY_LEAVES = getTable("blocks/cherry_leaves"); + + public static final LootTable BLOCKS_CHERRY_LOG = getTable("blocks/cherry_log"); + + public static final LootTable BLOCKS_CHERRY_PLANKS = getTable("blocks/cherry_planks"); + + public static final LootTable BLOCKS_CHERRY_PRESSURE_PLATE = getTable("blocks/cherry_pressure_plate"); + + public static final LootTable BLOCKS_CHERRY_SAPLING = getTable("blocks/cherry_sapling"); + + public static final LootTable BLOCKS_CHERRY_SHELF = getTable("blocks/cherry_shelf"); + + public static final LootTable BLOCKS_CHERRY_SIGN = getTable("blocks/cherry_sign"); + + public static final LootTable BLOCKS_CHERRY_SLAB = getTable("blocks/cherry_slab"); + + public static final LootTable BLOCKS_CHERRY_STAIRS = getTable("blocks/cherry_stairs"); + + public static final LootTable BLOCKS_CHERRY_TRAPDOOR = getTable("blocks/cherry_trapdoor"); + + public static final LootTable BLOCKS_CHERRY_WOOD = getTable("blocks/cherry_wood"); + + public static final LootTable BLOCKS_CHEST = getTable("blocks/chest"); + + public static final LootTable BLOCKS_CHIPPED_ANVIL = getTable("blocks/chipped_anvil"); + + public static final LootTable BLOCKS_CHISELED_BOOKSHELF = getTable("blocks/chiseled_bookshelf"); + + public static final LootTable BLOCKS_CHISELED_COPPER = getTable("blocks/chiseled_copper"); + + public static final LootTable BLOCKS_CHISELED_DEEPSLATE = getTable("blocks/chiseled_deepslate"); + + public static final LootTable BLOCKS_CHISELED_NETHER_BRICKS = getTable("blocks/chiseled_nether_bricks"); + + public static final LootTable BLOCKS_CHISELED_POLISHED_BLACKSTONE = getTable("blocks/chiseled_polished_blackstone"); + + public static final LootTable BLOCKS_CHISELED_QUARTZ_BLOCK = getTable("blocks/chiseled_quartz_block"); + + public static final LootTable BLOCKS_CHISELED_RED_SANDSTONE = getTable("blocks/chiseled_red_sandstone"); + + public static final LootTable BLOCKS_CHISELED_RESIN_BRICKS = getTable("blocks/chiseled_resin_bricks"); + + public static final LootTable BLOCKS_CHISELED_SANDSTONE = getTable("blocks/chiseled_sandstone"); + + public static final LootTable BLOCKS_CHISELED_STONE_BRICKS = getTable("blocks/chiseled_stone_bricks"); + + public static final LootTable BLOCKS_CHISELED_TUFF = getTable("blocks/chiseled_tuff"); + + public static final LootTable BLOCKS_CHISELED_TUFF_BRICKS = getTable("blocks/chiseled_tuff_bricks"); + + public static final LootTable BLOCKS_CHORUS_FLOWER = getTable("blocks/chorus_flower"); + + public static final LootTable BLOCKS_CHORUS_PLANT = getTable("blocks/chorus_plant"); + + public static final LootTable BLOCKS_CLAY = getTable("blocks/clay"); + + public static final LootTable BLOCKS_CLOSED_EYEBLOSSOM = getTable("blocks/closed_eyeblossom"); + + public static final LootTable BLOCKS_COAL_BLOCK = getTable("blocks/coal_block"); + + public static final LootTable BLOCKS_COAL_ORE = getTable("blocks/coal_ore"); + + public static final LootTable BLOCKS_COARSE_DIRT = getTable("blocks/coarse_dirt"); + + public static final LootTable BLOCKS_COBBLED_DEEPSLATE = getTable("blocks/cobbled_deepslate"); + + public static final LootTable BLOCKS_COBBLED_DEEPSLATE_SLAB = getTable("blocks/cobbled_deepslate_slab"); + + public static final LootTable BLOCKS_COBBLED_DEEPSLATE_STAIRS = getTable("blocks/cobbled_deepslate_stairs"); + + public static final LootTable BLOCKS_COBBLED_DEEPSLATE_WALL = getTable("blocks/cobbled_deepslate_wall"); + + public static final LootTable BLOCKS_COBBLESTONE = getTable("blocks/cobblestone"); + + public static final LootTable BLOCKS_COBBLESTONE_SLAB = getTable("blocks/cobblestone_slab"); + + public static final LootTable BLOCKS_COBBLESTONE_STAIRS = getTable("blocks/cobblestone_stairs"); + + public static final LootTable BLOCKS_COBBLESTONE_WALL = getTable("blocks/cobblestone_wall"); + + public static final LootTable BLOCKS_COBWEB = getTable("blocks/cobweb"); + + public static final LootTable BLOCKS_COCOA = getTable("blocks/cocoa"); + + public static final LootTable BLOCKS_COMPARATOR = getTable("blocks/comparator"); + + public static final LootTable BLOCKS_COMPOSTER = getTable("blocks/composter"); + + public static final LootTable BLOCKS_CONDUIT = getTable("blocks/conduit"); + + public static final LootTable BLOCKS_COPPER_BARS = getTable("blocks/copper_bars"); + + public static final LootTable BLOCKS_COPPER_BLOCK = getTable("blocks/copper_block"); + + public static final LootTable BLOCKS_COPPER_BULB = getTable("blocks/copper_bulb"); + + public static final LootTable BLOCKS_COPPER_CHAIN = getTable("blocks/copper_chain"); + + public static final LootTable BLOCKS_COPPER_CHEST = getTable("blocks/copper_chest"); + + public static final LootTable BLOCKS_COPPER_DOOR = getTable("blocks/copper_door"); + + public static final LootTable BLOCKS_COPPER_GOLEM_STATUE = getTable("blocks/copper_golem_statue"); + + public static final LootTable BLOCKS_COPPER_GRATE = getTable("blocks/copper_grate"); + + public static final LootTable BLOCKS_COPPER_LANTERN = getTable("blocks/copper_lantern"); + + public static final LootTable BLOCKS_COPPER_ORE = getTable("blocks/copper_ore"); + + public static final LootTable BLOCKS_COPPER_TORCH = getTable("blocks/copper_torch"); + + public static final LootTable BLOCKS_COPPER_TRAPDOOR = getTable("blocks/copper_trapdoor"); + + public static final LootTable BLOCKS_CORNFLOWER = getTable("blocks/cornflower"); + + public static final LootTable BLOCKS_CRACKED_DEEPSLATE_BRICKS = getTable("blocks/cracked_deepslate_bricks"); + + public static final LootTable BLOCKS_CRACKED_DEEPSLATE_TILES = getTable("blocks/cracked_deepslate_tiles"); + + public static final LootTable BLOCKS_CRACKED_NETHER_BRICKS = getTable("blocks/cracked_nether_bricks"); + + public static final LootTable BLOCKS_CRACKED_POLISHED_BLACKSTONE_BRICKS = getTable("blocks/cracked_polished_blackstone_bricks"); + + public static final LootTable BLOCKS_CRACKED_STONE_BRICKS = getTable("blocks/cracked_stone_bricks"); + + public static final LootTable BLOCKS_CRAFTER = getTable("blocks/crafter"); + + public static final LootTable BLOCKS_CRAFTING_TABLE = getTable("blocks/crafting_table"); + + public static final LootTable BLOCKS_CREAKING_HEART = getTable("blocks/creaking_heart"); + + public static final LootTable BLOCKS_CREEPER_HEAD = getTable("blocks/creeper_head"); + + public static final LootTable BLOCKS_CRIMSON_BUTTON = getTable("blocks/crimson_button"); + + public static final LootTable BLOCKS_CRIMSON_DOOR = getTable("blocks/crimson_door"); + + public static final LootTable BLOCKS_CRIMSON_FENCE = getTable("blocks/crimson_fence"); + + public static final LootTable BLOCKS_CRIMSON_FENCE_GATE = getTable("blocks/crimson_fence_gate"); + + public static final LootTable BLOCKS_CRIMSON_FUNGUS = getTable("blocks/crimson_fungus"); + + public static final LootTable BLOCKS_CRIMSON_HANGING_SIGN = getTable("blocks/crimson_hanging_sign"); + + public static final LootTable BLOCKS_CRIMSON_HYPHAE = getTable("blocks/crimson_hyphae"); + + public static final LootTable BLOCKS_CRIMSON_NYLIUM = getTable("blocks/crimson_nylium"); + + public static final LootTable BLOCKS_CRIMSON_PLANKS = getTable("blocks/crimson_planks"); + + public static final LootTable BLOCKS_CRIMSON_PRESSURE_PLATE = getTable("blocks/crimson_pressure_plate"); + + public static final LootTable BLOCKS_CRIMSON_ROOTS = getTable("blocks/crimson_roots"); + + public static final LootTable BLOCKS_CRIMSON_SHELF = getTable("blocks/crimson_shelf"); + + public static final LootTable BLOCKS_CRIMSON_SIGN = getTable("blocks/crimson_sign"); + + public static final LootTable BLOCKS_CRIMSON_SLAB = getTable("blocks/crimson_slab"); + + public static final LootTable BLOCKS_CRIMSON_STAIRS = getTable("blocks/crimson_stairs"); + + public static final LootTable BLOCKS_CRIMSON_STEM = getTable("blocks/crimson_stem"); + + public static final LootTable BLOCKS_CRIMSON_TRAPDOOR = getTable("blocks/crimson_trapdoor"); + + public static final LootTable BLOCKS_CRYING_OBSIDIAN = getTable("blocks/crying_obsidian"); + + public static final LootTable BLOCKS_CUT_COPPER = getTable("blocks/cut_copper"); + + public static final LootTable BLOCKS_CUT_COPPER_SLAB = getTable("blocks/cut_copper_slab"); + + public static final LootTable BLOCKS_CUT_COPPER_STAIRS = getTable("blocks/cut_copper_stairs"); + + public static final LootTable BLOCKS_CUT_RED_SANDSTONE = getTable("blocks/cut_red_sandstone"); + + public static final LootTable BLOCKS_CUT_RED_SANDSTONE_SLAB = getTable("blocks/cut_red_sandstone_slab"); + + public static final LootTable BLOCKS_CUT_SANDSTONE = getTable("blocks/cut_sandstone"); + + public static final LootTable BLOCKS_CUT_SANDSTONE_SLAB = getTable("blocks/cut_sandstone_slab"); + + public static final LootTable BLOCKS_CYAN_BANNER = getTable("blocks/cyan_banner"); + + public static final LootTable BLOCKS_CYAN_BED = getTable("blocks/cyan_bed"); + + public static final LootTable BLOCKS_CYAN_CANDLE = getTable("blocks/cyan_candle"); + + public static final LootTable BLOCKS_CYAN_CANDLE_CAKE = getTable("blocks/cyan_candle_cake"); + + public static final LootTable BLOCKS_CYAN_CARPET = getTable("blocks/cyan_carpet"); + + public static final LootTable BLOCKS_CYAN_CONCRETE = getTable("blocks/cyan_concrete"); + + public static final LootTable BLOCKS_CYAN_CONCRETE_POWDER = getTable("blocks/cyan_concrete_powder"); + + public static final LootTable BLOCKS_CYAN_GLAZED_TERRACOTTA = getTable("blocks/cyan_glazed_terracotta"); + + public static final LootTable BLOCKS_CYAN_SHULKER_BOX = getTable("blocks/cyan_shulker_box"); + + public static final LootTable BLOCKS_CYAN_STAINED_GLASS = getTable("blocks/cyan_stained_glass"); + + public static final LootTable BLOCKS_CYAN_STAINED_GLASS_PANE = getTable("blocks/cyan_stained_glass_pane"); + + public static final LootTable BLOCKS_CYAN_TERRACOTTA = getTable("blocks/cyan_terracotta"); + + public static final LootTable BLOCKS_CYAN_WOOL = getTable("blocks/cyan_wool"); + + public static final LootTable BLOCKS_DAMAGED_ANVIL = getTable("blocks/damaged_anvil"); + + public static final LootTable BLOCKS_DANDELION = getTable("blocks/dandelion"); + + public static final LootTable BLOCKS_DARK_OAK_BUTTON = getTable("blocks/dark_oak_button"); + + public static final LootTable BLOCKS_DARK_OAK_DOOR = getTable("blocks/dark_oak_door"); + + public static final LootTable BLOCKS_DARK_OAK_FENCE = getTable("blocks/dark_oak_fence"); + + public static final LootTable BLOCKS_DARK_OAK_FENCE_GATE = getTable("blocks/dark_oak_fence_gate"); + + public static final LootTable BLOCKS_DARK_OAK_HANGING_SIGN = getTable("blocks/dark_oak_hanging_sign"); + + public static final LootTable BLOCKS_DARK_OAK_LEAVES = getTable("blocks/dark_oak_leaves"); + + public static final LootTable BLOCKS_DARK_OAK_LOG = getTable("blocks/dark_oak_log"); + + public static final LootTable BLOCKS_DARK_OAK_PLANKS = getTable("blocks/dark_oak_planks"); + + public static final LootTable BLOCKS_DARK_OAK_PRESSURE_PLATE = getTable("blocks/dark_oak_pressure_plate"); + + public static final LootTable BLOCKS_DARK_OAK_SAPLING = getTable("blocks/dark_oak_sapling"); + + public static final LootTable BLOCKS_DARK_OAK_SHELF = getTable("blocks/dark_oak_shelf"); + + public static final LootTable BLOCKS_DARK_OAK_SIGN = getTable("blocks/dark_oak_sign"); + + public static final LootTable BLOCKS_DARK_OAK_SLAB = getTable("blocks/dark_oak_slab"); + + public static final LootTable BLOCKS_DARK_OAK_STAIRS = getTable("blocks/dark_oak_stairs"); + + public static final LootTable BLOCKS_DARK_OAK_TRAPDOOR = getTable("blocks/dark_oak_trapdoor"); + + public static final LootTable BLOCKS_DARK_OAK_WOOD = getTable("blocks/dark_oak_wood"); + + public static final LootTable BLOCKS_DARK_PRISMARINE = getTable("blocks/dark_prismarine"); + + public static final LootTable BLOCKS_DARK_PRISMARINE_SLAB = getTable("blocks/dark_prismarine_slab"); + + public static final LootTable BLOCKS_DARK_PRISMARINE_STAIRS = getTable("blocks/dark_prismarine_stairs"); + + public static final LootTable BLOCKS_DAYLIGHT_DETECTOR = getTable("blocks/daylight_detector"); + + public static final LootTable BLOCKS_DEAD_BRAIN_CORAL = getTable("blocks/dead_brain_coral"); + + public static final LootTable BLOCKS_DEAD_BRAIN_CORAL_BLOCK = getTable("blocks/dead_brain_coral_block"); + + public static final LootTable BLOCKS_DEAD_BRAIN_CORAL_FAN = getTable("blocks/dead_brain_coral_fan"); + + public static final LootTable BLOCKS_DEAD_BUBBLE_CORAL = getTable("blocks/dead_bubble_coral"); + + public static final LootTable BLOCKS_DEAD_BUBBLE_CORAL_BLOCK = getTable("blocks/dead_bubble_coral_block"); + + public static final LootTable BLOCKS_DEAD_BUBBLE_CORAL_FAN = getTable("blocks/dead_bubble_coral_fan"); + + public static final LootTable BLOCKS_DEAD_BUSH = getTable("blocks/dead_bush"); + + public static final LootTable BLOCKS_DEAD_FIRE_CORAL = getTable("blocks/dead_fire_coral"); + + public static final LootTable BLOCKS_DEAD_FIRE_CORAL_BLOCK = getTable("blocks/dead_fire_coral_block"); + + public static final LootTable BLOCKS_DEAD_FIRE_CORAL_FAN = getTable("blocks/dead_fire_coral_fan"); + + public static final LootTable BLOCKS_DEAD_HORN_CORAL = getTable("blocks/dead_horn_coral"); + + public static final LootTable BLOCKS_DEAD_HORN_CORAL_BLOCK = getTable("blocks/dead_horn_coral_block"); + + public static final LootTable BLOCKS_DEAD_HORN_CORAL_FAN = getTable("blocks/dead_horn_coral_fan"); + + public static final LootTable BLOCKS_DEAD_TUBE_CORAL = getTable("blocks/dead_tube_coral"); + + public static final LootTable BLOCKS_DEAD_TUBE_CORAL_BLOCK = getTable("blocks/dead_tube_coral_block"); + + public static final LootTable BLOCKS_DEAD_TUBE_CORAL_FAN = getTable("blocks/dead_tube_coral_fan"); + + public static final LootTable BLOCKS_DECORATED_POT = getTable("blocks/decorated_pot"); + + public static final LootTable BLOCKS_DEEPSLATE = getTable("blocks/deepslate"); + + public static final LootTable BLOCKS_DEEPSLATE_BRICK_SLAB = getTable("blocks/deepslate_brick_slab"); + + public static final LootTable BLOCKS_DEEPSLATE_BRICK_STAIRS = getTable("blocks/deepslate_brick_stairs"); + + public static final LootTable BLOCKS_DEEPSLATE_BRICK_WALL = getTable("blocks/deepslate_brick_wall"); + + public static final LootTable BLOCKS_DEEPSLATE_BRICKS = getTable("blocks/deepslate_bricks"); + + public static final LootTable BLOCKS_DEEPSLATE_COAL_ORE = getTable("blocks/deepslate_coal_ore"); + + public static final LootTable BLOCKS_DEEPSLATE_COPPER_ORE = getTable("blocks/deepslate_copper_ore"); + + public static final LootTable BLOCKS_DEEPSLATE_DIAMOND_ORE = getTable("blocks/deepslate_diamond_ore"); + + public static final LootTable BLOCKS_DEEPSLATE_EMERALD_ORE = getTable("blocks/deepslate_emerald_ore"); + + public static final LootTable BLOCKS_DEEPSLATE_GOLD_ORE = getTable("blocks/deepslate_gold_ore"); + + public static final LootTable BLOCKS_DEEPSLATE_IRON_ORE = getTable("blocks/deepslate_iron_ore"); + + public static final LootTable BLOCKS_DEEPSLATE_LAPIS_ORE = getTable("blocks/deepslate_lapis_ore"); + + public static final LootTable BLOCKS_DEEPSLATE_REDSTONE_ORE = getTable("blocks/deepslate_redstone_ore"); + + public static final LootTable BLOCKS_DEEPSLATE_TILE_SLAB = getTable("blocks/deepslate_tile_slab"); + + public static final LootTable BLOCKS_DEEPSLATE_TILE_STAIRS = getTable("blocks/deepslate_tile_stairs"); + + public static final LootTable BLOCKS_DEEPSLATE_TILE_WALL = getTable("blocks/deepslate_tile_wall"); + + public static final LootTable BLOCKS_DEEPSLATE_TILES = getTable("blocks/deepslate_tiles"); + + public static final LootTable BLOCKS_DETECTOR_RAIL = getTable("blocks/detector_rail"); + + public static final LootTable BLOCKS_DIAMOND_BLOCK = getTable("blocks/diamond_block"); + + public static final LootTable BLOCKS_DIAMOND_ORE = getTable("blocks/diamond_ore"); + + public static final LootTable BLOCKS_DIORITE = getTable("blocks/diorite"); + + public static final LootTable BLOCKS_DIORITE_SLAB = getTable("blocks/diorite_slab"); + + public static final LootTable BLOCKS_DIORITE_STAIRS = getTable("blocks/diorite_stairs"); + + public static final LootTable BLOCKS_DIORITE_WALL = getTable("blocks/diorite_wall"); + + public static final LootTable BLOCKS_DIRT = getTable("blocks/dirt"); + + public static final LootTable BLOCKS_DIRT_PATH = getTable("blocks/dirt_path"); + + public static final LootTable BLOCKS_DISPENSER = getTable("blocks/dispenser"); + + public static final LootTable BLOCKS_DRAGON_EGG = getTable("blocks/dragon_egg"); + + public static final LootTable BLOCKS_DRAGON_HEAD = getTable("blocks/dragon_head"); + + public static final LootTable BLOCKS_DRIED_GHAST = getTable("blocks/dried_ghast"); + + public static final LootTable BLOCKS_DRIED_KELP_BLOCK = getTable("blocks/dried_kelp_block"); + + public static final LootTable BLOCKS_DRIPSTONE_BLOCK = getTable("blocks/dripstone_block"); + + public static final LootTable BLOCKS_DROPPER = getTable("blocks/dropper"); + + public static final LootTable BLOCKS_EMERALD_BLOCK = getTable("blocks/emerald_block"); + + public static final LootTable BLOCKS_EMERALD_ORE = getTable("blocks/emerald_ore"); + + public static final LootTable BLOCKS_ENCHANTING_TABLE = getTable("blocks/enchanting_table"); + + public static final LootTable BLOCKS_END_ROD = getTable("blocks/end_rod"); + + public static final LootTable BLOCKS_END_STONE = getTable("blocks/end_stone"); + + public static final LootTable BLOCKS_END_STONE_BRICK_SLAB = getTable("blocks/end_stone_brick_slab"); + + public static final LootTable BLOCKS_END_STONE_BRICK_STAIRS = getTable("blocks/end_stone_brick_stairs"); + + public static final LootTable BLOCKS_END_STONE_BRICK_WALL = getTable("blocks/end_stone_brick_wall"); + + public static final LootTable BLOCKS_END_STONE_BRICKS = getTable("blocks/end_stone_bricks"); + + public static final LootTable BLOCKS_ENDER_CHEST = getTable("blocks/ender_chest"); + + public static final LootTable BLOCKS_EXPOSED_CHISELED_COPPER = getTable("blocks/exposed_chiseled_copper"); + + public static final LootTable BLOCKS_EXPOSED_COPPER = getTable("blocks/exposed_copper"); + + public static final LootTable BLOCKS_EXPOSED_COPPER_BARS = getTable("blocks/exposed_copper_bars"); + + public static final LootTable BLOCKS_EXPOSED_COPPER_BULB = getTable("blocks/exposed_copper_bulb"); + + public static final LootTable BLOCKS_EXPOSED_COPPER_CHAIN = getTable("blocks/exposed_copper_chain"); + + public static final LootTable BLOCKS_EXPOSED_COPPER_CHEST = getTable("blocks/exposed_copper_chest"); + + public static final LootTable BLOCKS_EXPOSED_COPPER_DOOR = getTable("blocks/exposed_copper_door"); + + public static final LootTable BLOCKS_EXPOSED_COPPER_GOLEM_STATUE = getTable("blocks/exposed_copper_golem_statue"); + + public static final LootTable BLOCKS_EXPOSED_COPPER_GRATE = getTable("blocks/exposed_copper_grate"); + + public static final LootTable BLOCKS_EXPOSED_COPPER_LANTERN = getTable("blocks/exposed_copper_lantern"); + + public static final LootTable BLOCKS_EXPOSED_COPPER_TRAPDOOR = getTable("blocks/exposed_copper_trapdoor"); + + public static final LootTable BLOCKS_EXPOSED_CUT_COPPER = getTable("blocks/exposed_cut_copper"); + + public static final LootTable BLOCKS_EXPOSED_CUT_COPPER_SLAB = getTable("blocks/exposed_cut_copper_slab"); + + public static final LootTable BLOCKS_EXPOSED_CUT_COPPER_STAIRS = getTable("blocks/exposed_cut_copper_stairs"); + + public static final LootTable BLOCKS_EXPOSED_LIGHTNING_ROD = getTable("blocks/exposed_lightning_rod"); + + public static final LootTable BLOCKS_FARMLAND = getTable("blocks/farmland"); + + public static final LootTable BLOCKS_FERN = getTable("blocks/fern"); + + public static final LootTable BLOCKS_FIRE = getTable("blocks/fire"); + + public static final LootTable BLOCKS_FIRE_CORAL = getTable("blocks/fire_coral"); + + public static final LootTable BLOCKS_FIRE_CORAL_BLOCK = getTable("blocks/fire_coral_block"); + + public static final LootTable BLOCKS_FIRE_CORAL_FAN = getTable("blocks/fire_coral_fan"); + + public static final LootTable BLOCKS_FIREFLY_BUSH = getTable("blocks/firefly_bush"); + + public static final LootTable BLOCKS_FLETCHING_TABLE = getTable("blocks/fletching_table"); + + public static final LootTable BLOCKS_FLOWER_POT = getTable("blocks/flower_pot"); + + public static final LootTable BLOCKS_FLOWERING_AZALEA = getTable("blocks/flowering_azalea"); + + public static final LootTable BLOCKS_FLOWERING_AZALEA_LEAVES = getTable("blocks/flowering_azalea_leaves"); + + public static final LootTable BLOCKS_FROGSPAWN = getTable("blocks/frogspawn"); + + public static final LootTable BLOCKS_FROSTED_ICE = getTable("blocks/frosted_ice"); + + public static final LootTable BLOCKS_FURNACE = getTable("blocks/furnace"); + + public static final LootTable BLOCKS_GILDED_BLACKSTONE = getTable("blocks/gilded_blackstone"); + + public static final LootTable BLOCKS_GLASS = getTable("blocks/glass"); + + public static final LootTable BLOCKS_GLASS_PANE = getTable("blocks/glass_pane"); + + public static final LootTable BLOCKS_GLOW_LICHEN = getTable("blocks/glow_lichen"); + + public static final LootTable BLOCKS_GLOWSTONE = getTable("blocks/glowstone"); + + public static final LootTable BLOCKS_GOLD_BLOCK = getTable("blocks/gold_block"); + + public static final LootTable BLOCKS_GOLD_ORE = getTable("blocks/gold_ore"); + + public static final LootTable BLOCKS_GRANITE = getTable("blocks/granite"); + + public static final LootTable BLOCKS_GRANITE_SLAB = getTable("blocks/granite_slab"); + + public static final LootTable BLOCKS_GRANITE_STAIRS = getTable("blocks/granite_stairs"); + + public static final LootTable BLOCKS_GRANITE_WALL = getTable("blocks/granite_wall"); + + public static final LootTable BLOCKS_GRASS_BLOCK = getTable("blocks/grass_block"); + + public static final LootTable BLOCKS_GRAVEL = getTable("blocks/gravel"); + + public static final LootTable BLOCKS_GRAY_BANNER = getTable("blocks/gray_banner"); + + public static final LootTable BLOCKS_GRAY_BED = getTable("blocks/gray_bed"); + + public static final LootTable BLOCKS_GRAY_CANDLE = getTable("blocks/gray_candle"); + + public static final LootTable BLOCKS_GRAY_CANDLE_CAKE = getTable("blocks/gray_candle_cake"); + + public static final LootTable BLOCKS_GRAY_CARPET = getTable("blocks/gray_carpet"); + + public static final LootTable BLOCKS_GRAY_CONCRETE = getTable("blocks/gray_concrete"); + + public static final LootTable BLOCKS_GRAY_CONCRETE_POWDER = getTable("blocks/gray_concrete_powder"); + + public static final LootTable BLOCKS_GRAY_GLAZED_TERRACOTTA = getTable("blocks/gray_glazed_terracotta"); + + public static final LootTable BLOCKS_GRAY_SHULKER_BOX = getTable("blocks/gray_shulker_box"); + + public static final LootTable BLOCKS_GRAY_STAINED_GLASS = getTable("blocks/gray_stained_glass"); + + public static final LootTable BLOCKS_GRAY_STAINED_GLASS_PANE = getTable("blocks/gray_stained_glass_pane"); + + public static final LootTable BLOCKS_GRAY_TERRACOTTA = getTable("blocks/gray_terracotta"); + + public static final LootTable BLOCKS_GRAY_WOOL = getTable("blocks/gray_wool"); + + public static final LootTable BLOCKS_GREEN_BANNER = getTable("blocks/green_banner"); + + public static final LootTable BLOCKS_GREEN_BED = getTable("blocks/green_bed"); + + public static final LootTable BLOCKS_GREEN_CANDLE = getTable("blocks/green_candle"); + + public static final LootTable BLOCKS_GREEN_CANDLE_CAKE = getTable("blocks/green_candle_cake"); + + public static final LootTable BLOCKS_GREEN_CARPET = getTable("blocks/green_carpet"); + + public static final LootTable BLOCKS_GREEN_CONCRETE = getTable("blocks/green_concrete"); + + public static final LootTable BLOCKS_GREEN_CONCRETE_POWDER = getTable("blocks/green_concrete_powder"); + + public static final LootTable BLOCKS_GREEN_GLAZED_TERRACOTTA = getTable("blocks/green_glazed_terracotta"); + + public static final LootTable BLOCKS_GREEN_SHULKER_BOX = getTable("blocks/green_shulker_box"); + + public static final LootTable BLOCKS_GREEN_STAINED_GLASS = getTable("blocks/green_stained_glass"); + + public static final LootTable BLOCKS_GREEN_STAINED_GLASS_PANE = getTable("blocks/green_stained_glass_pane"); + + public static final LootTable BLOCKS_GREEN_TERRACOTTA = getTable("blocks/green_terracotta"); + + public static final LootTable BLOCKS_GREEN_WOOL = getTable("blocks/green_wool"); + + public static final LootTable BLOCKS_GRINDSTONE = getTable("blocks/grindstone"); + + public static final LootTable BLOCKS_HANGING_ROOTS = getTable("blocks/hanging_roots"); + + public static final LootTable BLOCKS_HAY_BLOCK = getTable("blocks/hay_block"); + + public static final LootTable BLOCKS_HEAVY_CORE = getTable("blocks/heavy_core"); + + public static final LootTable BLOCKS_HEAVY_WEIGHTED_PRESSURE_PLATE = getTable("blocks/heavy_weighted_pressure_plate"); + + public static final LootTable BLOCKS_HONEY_BLOCK = getTable("blocks/honey_block"); + + public static final LootTable BLOCKS_HONEYCOMB_BLOCK = getTable("blocks/honeycomb_block"); + + public static final LootTable BLOCKS_HOPPER = getTable("blocks/hopper"); + + public static final LootTable BLOCKS_HORN_CORAL = getTable("blocks/horn_coral"); + + public static final LootTable BLOCKS_HORN_CORAL_BLOCK = getTable("blocks/horn_coral_block"); + + public static final LootTable BLOCKS_HORN_CORAL_FAN = getTable("blocks/horn_coral_fan"); + + public static final LootTable BLOCKS_ICE = getTable("blocks/ice"); + + public static final LootTable BLOCKS_INFESTED_CHISELED_STONE_BRICKS = getTable("blocks/infested_chiseled_stone_bricks"); + + public static final LootTable BLOCKS_INFESTED_COBBLESTONE = getTable("blocks/infested_cobblestone"); + + public static final LootTable BLOCKS_INFESTED_CRACKED_STONE_BRICKS = getTable("blocks/infested_cracked_stone_bricks"); + + public static final LootTable BLOCKS_INFESTED_DEEPSLATE = getTable("blocks/infested_deepslate"); + + public static final LootTable BLOCKS_INFESTED_MOSSY_STONE_BRICKS = getTable("blocks/infested_mossy_stone_bricks"); + + public static final LootTable BLOCKS_INFESTED_STONE = getTable("blocks/infested_stone"); + + public static final LootTable BLOCKS_INFESTED_STONE_BRICKS = getTable("blocks/infested_stone_bricks"); + + public static final LootTable BLOCKS_IRON_BARS = getTable("blocks/iron_bars"); + + public static final LootTable BLOCKS_IRON_BLOCK = getTable("blocks/iron_block"); + + public static final LootTable BLOCKS_IRON_CHAIN = getTable("blocks/iron_chain"); + + public static final LootTable BLOCKS_IRON_DOOR = getTable("blocks/iron_door"); + + public static final LootTable BLOCKS_IRON_ORE = getTable("blocks/iron_ore"); + + public static final LootTable BLOCKS_IRON_TRAPDOOR = getTable("blocks/iron_trapdoor"); + + public static final LootTable BLOCKS_JACK_O_LANTERN = getTable("blocks/jack_o_lantern"); + + public static final LootTable BLOCKS_JUKEBOX = getTable("blocks/jukebox"); + + public static final LootTable BLOCKS_JUNGLE_BUTTON = getTable("blocks/jungle_button"); + + public static final LootTable BLOCKS_JUNGLE_DOOR = getTable("blocks/jungle_door"); + + public static final LootTable BLOCKS_JUNGLE_FENCE = getTable("blocks/jungle_fence"); + + public static final LootTable BLOCKS_JUNGLE_FENCE_GATE = getTable("blocks/jungle_fence_gate"); + + public static final LootTable BLOCKS_JUNGLE_HANGING_SIGN = getTable("blocks/jungle_hanging_sign"); + + public static final LootTable BLOCKS_JUNGLE_LEAVES = getTable("blocks/jungle_leaves"); + + public static final LootTable BLOCKS_JUNGLE_LOG = getTable("blocks/jungle_log"); + + public static final LootTable BLOCKS_JUNGLE_PLANKS = getTable("blocks/jungle_planks"); + + public static final LootTable BLOCKS_JUNGLE_PRESSURE_PLATE = getTable("blocks/jungle_pressure_plate"); + + public static final LootTable BLOCKS_JUNGLE_SAPLING = getTable("blocks/jungle_sapling"); + + public static final LootTable BLOCKS_JUNGLE_SHELF = getTable("blocks/jungle_shelf"); + + public static final LootTable BLOCKS_JUNGLE_SIGN = getTable("blocks/jungle_sign"); + + public static final LootTable BLOCKS_JUNGLE_SLAB = getTable("blocks/jungle_slab"); + + public static final LootTable BLOCKS_JUNGLE_STAIRS = getTable("blocks/jungle_stairs"); + + public static final LootTable BLOCKS_JUNGLE_TRAPDOOR = getTable("blocks/jungle_trapdoor"); + + public static final LootTable BLOCKS_JUNGLE_WOOD = getTable("blocks/jungle_wood"); + + public static final LootTable BLOCKS_KELP = getTable("blocks/kelp"); + + public static final LootTable BLOCKS_KELP_PLANT = getTable("blocks/kelp_plant"); + + public static final LootTable BLOCKS_LADDER = getTable("blocks/ladder"); + + public static final LootTable BLOCKS_LANTERN = getTable("blocks/lantern"); + + public static final LootTable BLOCKS_LAPIS_BLOCK = getTable("blocks/lapis_block"); + + public static final LootTable BLOCKS_LAPIS_ORE = getTable("blocks/lapis_ore"); + + public static final LootTable BLOCKS_LARGE_AMETHYST_BUD = getTable("blocks/large_amethyst_bud"); + + public static final LootTable BLOCKS_LARGE_FERN = getTable("blocks/large_fern"); + + public static final LootTable BLOCKS_LAVA_CAULDRON = getTable("blocks/lava_cauldron"); + + public static final LootTable BLOCKS_LEAF_LITTER = getTable("blocks/leaf_litter"); + + public static final LootTable BLOCKS_LECTERN = getTable("blocks/lectern"); + + public static final LootTable BLOCKS_LEVER = getTable("blocks/lever"); + + public static final LootTable BLOCKS_LIGHT_BLUE_BANNER = getTable("blocks/light_blue_banner"); + + public static final LootTable BLOCKS_LIGHT_BLUE_BED = getTable("blocks/light_blue_bed"); + + public static final LootTable BLOCKS_LIGHT_BLUE_CANDLE = getTable("blocks/light_blue_candle"); + + public static final LootTable BLOCKS_LIGHT_BLUE_CANDLE_CAKE = getTable("blocks/light_blue_candle_cake"); + + public static final LootTable BLOCKS_LIGHT_BLUE_CARPET = getTable("blocks/light_blue_carpet"); + + public static final LootTable BLOCKS_LIGHT_BLUE_CONCRETE = getTable("blocks/light_blue_concrete"); + + public static final LootTable BLOCKS_LIGHT_BLUE_CONCRETE_POWDER = getTable("blocks/light_blue_concrete_powder"); + + public static final LootTable BLOCKS_LIGHT_BLUE_GLAZED_TERRACOTTA = getTable("blocks/light_blue_glazed_terracotta"); + + public static final LootTable BLOCKS_LIGHT_BLUE_SHULKER_BOX = getTable("blocks/light_blue_shulker_box"); + + public static final LootTable BLOCKS_LIGHT_BLUE_STAINED_GLASS = getTable("blocks/light_blue_stained_glass"); + + public static final LootTable BLOCKS_LIGHT_BLUE_STAINED_GLASS_PANE = getTable("blocks/light_blue_stained_glass_pane"); + + public static final LootTable BLOCKS_LIGHT_BLUE_TERRACOTTA = getTable("blocks/light_blue_terracotta"); + + public static final LootTable BLOCKS_LIGHT_BLUE_WOOL = getTable("blocks/light_blue_wool"); + + public static final LootTable BLOCKS_LIGHT_GRAY_BANNER = getTable("blocks/light_gray_banner"); + + public static final LootTable BLOCKS_LIGHT_GRAY_BED = getTable("blocks/light_gray_bed"); + + public static final LootTable BLOCKS_LIGHT_GRAY_CANDLE = getTable("blocks/light_gray_candle"); + + public static final LootTable BLOCKS_LIGHT_GRAY_CANDLE_CAKE = getTable("blocks/light_gray_candle_cake"); + + public static final LootTable BLOCKS_LIGHT_GRAY_CARPET = getTable("blocks/light_gray_carpet"); + + public static final LootTable BLOCKS_LIGHT_GRAY_CONCRETE = getTable("blocks/light_gray_concrete"); + + public static final LootTable BLOCKS_LIGHT_GRAY_CONCRETE_POWDER = getTable("blocks/light_gray_concrete_powder"); + + public static final LootTable BLOCKS_LIGHT_GRAY_GLAZED_TERRACOTTA = getTable("blocks/light_gray_glazed_terracotta"); + + public static final LootTable BLOCKS_LIGHT_GRAY_SHULKER_BOX = getTable("blocks/light_gray_shulker_box"); + + public static final LootTable BLOCKS_LIGHT_GRAY_STAINED_GLASS = getTable("blocks/light_gray_stained_glass"); + + public static final LootTable BLOCKS_LIGHT_GRAY_STAINED_GLASS_PANE = getTable("blocks/light_gray_stained_glass_pane"); + + public static final LootTable BLOCKS_LIGHT_GRAY_TERRACOTTA = getTable("blocks/light_gray_terracotta"); + + public static final LootTable BLOCKS_LIGHT_GRAY_WOOL = getTable("blocks/light_gray_wool"); + + public static final LootTable BLOCKS_LIGHT_WEIGHTED_PRESSURE_PLATE = getTable("blocks/light_weighted_pressure_plate"); + + public static final LootTable BLOCKS_LIGHTNING_ROD = getTable("blocks/lightning_rod"); + + public static final LootTable BLOCKS_LILAC = getTable("blocks/lilac"); + + public static final LootTable BLOCKS_LILY_OF_THE_VALLEY = getTable("blocks/lily_of_the_valley"); + + public static final LootTable BLOCKS_LILY_PAD = getTable("blocks/lily_pad"); + + public static final LootTable BLOCKS_LIME_BANNER = getTable("blocks/lime_banner"); + + public static final LootTable BLOCKS_LIME_BED = getTable("blocks/lime_bed"); + + public static final LootTable BLOCKS_LIME_CANDLE = getTable("blocks/lime_candle"); + + public static final LootTable BLOCKS_LIME_CANDLE_CAKE = getTable("blocks/lime_candle_cake"); + + public static final LootTable BLOCKS_LIME_CARPET = getTable("blocks/lime_carpet"); + + public static final LootTable BLOCKS_LIME_CONCRETE = getTable("blocks/lime_concrete"); + + public static final LootTable BLOCKS_LIME_CONCRETE_POWDER = getTable("blocks/lime_concrete_powder"); + + public static final LootTable BLOCKS_LIME_GLAZED_TERRACOTTA = getTable("blocks/lime_glazed_terracotta"); + + public static final LootTable BLOCKS_LIME_SHULKER_BOX = getTable("blocks/lime_shulker_box"); + + public static final LootTable BLOCKS_LIME_STAINED_GLASS = getTable("blocks/lime_stained_glass"); + + public static final LootTable BLOCKS_LIME_STAINED_GLASS_PANE = getTable("blocks/lime_stained_glass_pane"); + + public static final LootTable BLOCKS_LIME_TERRACOTTA = getTable("blocks/lime_terracotta"); + + public static final LootTable BLOCKS_LIME_WOOL = getTable("blocks/lime_wool"); + + public static final LootTable BLOCKS_LODESTONE = getTable("blocks/lodestone"); + + public static final LootTable BLOCKS_LOOM = getTable("blocks/loom"); + + public static final LootTable BLOCKS_MAGENTA_BANNER = getTable("blocks/magenta_banner"); + + public static final LootTable BLOCKS_MAGENTA_BED = getTable("blocks/magenta_bed"); + + public static final LootTable BLOCKS_MAGENTA_CANDLE = getTable("blocks/magenta_candle"); + + public static final LootTable BLOCKS_MAGENTA_CANDLE_CAKE = getTable("blocks/magenta_candle_cake"); + + public static final LootTable BLOCKS_MAGENTA_CARPET = getTable("blocks/magenta_carpet"); + + public static final LootTable BLOCKS_MAGENTA_CONCRETE = getTable("blocks/magenta_concrete"); + + public static final LootTable BLOCKS_MAGENTA_CONCRETE_POWDER = getTable("blocks/magenta_concrete_powder"); + + public static final LootTable BLOCKS_MAGENTA_GLAZED_TERRACOTTA = getTable("blocks/magenta_glazed_terracotta"); + + public static final LootTable BLOCKS_MAGENTA_SHULKER_BOX = getTable("blocks/magenta_shulker_box"); + + public static final LootTable BLOCKS_MAGENTA_STAINED_GLASS = getTable("blocks/magenta_stained_glass"); + + public static final LootTable BLOCKS_MAGENTA_STAINED_GLASS_PANE = getTable("blocks/magenta_stained_glass_pane"); + + public static final LootTable BLOCKS_MAGENTA_TERRACOTTA = getTable("blocks/magenta_terracotta"); + + public static final LootTable BLOCKS_MAGENTA_WOOL = getTable("blocks/magenta_wool"); + + public static final LootTable BLOCKS_MAGMA_BLOCK = getTable("blocks/magma_block"); + + public static final LootTable BLOCKS_MANGROVE_BUTTON = getTable("blocks/mangrove_button"); + + public static final LootTable BLOCKS_MANGROVE_DOOR = getTable("blocks/mangrove_door"); + + public static final LootTable BLOCKS_MANGROVE_FENCE = getTable("blocks/mangrove_fence"); + + public static final LootTable BLOCKS_MANGROVE_FENCE_GATE = getTable("blocks/mangrove_fence_gate"); + + public static final LootTable BLOCKS_MANGROVE_HANGING_SIGN = getTable("blocks/mangrove_hanging_sign"); + + public static final LootTable BLOCKS_MANGROVE_LEAVES = getTable("blocks/mangrove_leaves"); + + public static final LootTable BLOCKS_MANGROVE_LOG = getTable("blocks/mangrove_log"); + + public static final LootTable BLOCKS_MANGROVE_PLANKS = getTable("blocks/mangrove_planks"); + + public static final LootTable BLOCKS_MANGROVE_PRESSURE_PLATE = getTable("blocks/mangrove_pressure_plate"); + + public static final LootTable BLOCKS_MANGROVE_PROPAGULE = getTable("blocks/mangrove_propagule"); + + public static final LootTable BLOCKS_MANGROVE_ROOTS = getTable("blocks/mangrove_roots"); + + public static final LootTable BLOCKS_MANGROVE_SHELF = getTable("blocks/mangrove_shelf"); + + public static final LootTable BLOCKS_MANGROVE_SIGN = getTable("blocks/mangrove_sign"); + + public static final LootTable BLOCKS_MANGROVE_SLAB = getTable("blocks/mangrove_slab"); + + public static final LootTable BLOCKS_MANGROVE_STAIRS = getTable("blocks/mangrove_stairs"); + + public static final LootTable BLOCKS_MANGROVE_TRAPDOOR = getTable("blocks/mangrove_trapdoor"); + + public static final LootTable BLOCKS_MANGROVE_WOOD = getTable("blocks/mangrove_wood"); + + public static final LootTable BLOCKS_MEDIUM_AMETHYST_BUD = getTable("blocks/medium_amethyst_bud"); + + public static final LootTable BLOCKS_MELON = getTable("blocks/melon"); + + public static final LootTable BLOCKS_MELON_STEM = getTable("blocks/melon_stem"); + + public static final LootTable BLOCKS_MOSS_BLOCK = getTable("blocks/moss_block"); + + public static final LootTable BLOCKS_MOSS_CARPET = getTable("blocks/moss_carpet"); + + public static final LootTable BLOCKS_MOSSY_COBBLESTONE = getTable("blocks/mossy_cobblestone"); + + public static final LootTable BLOCKS_MOSSY_COBBLESTONE_SLAB = getTable("blocks/mossy_cobblestone_slab"); + + public static final LootTable BLOCKS_MOSSY_COBBLESTONE_STAIRS = getTable("blocks/mossy_cobblestone_stairs"); + + public static final LootTable BLOCKS_MOSSY_COBBLESTONE_WALL = getTable("blocks/mossy_cobblestone_wall"); + + public static final LootTable BLOCKS_MOSSY_STONE_BRICK_SLAB = getTable("blocks/mossy_stone_brick_slab"); + + public static final LootTable BLOCKS_MOSSY_STONE_BRICK_STAIRS = getTable("blocks/mossy_stone_brick_stairs"); + + public static final LootTable BLOCKS_MOSSY_STONE_BRICK_WALL = getTable("blocks/mossy_stone_brick_wall"); + + public static final LootTable BLOCKS_MOSSY_STONE_BRICKS = getTable("blocks/mossy_stone_bricks"); + + public static final LootTable BLOCKS_MUD = getTable("blocks/mud"); + + public static final LootTable BLOCKS_MUD_BRICK_SLAB = getTable("blocks/mud_brick_slab"); + + public static final LootTable BLOCKS_MUD_BRICK_STAIRS = getTable("blocks/mud_brick_stairs"); + + public static final LootTable BLOCKS_MUD_BRICK_WALL = getTable("blocks/mud_brick_wall"); + + public static final LootTable BLOCKS_MUD_BRICKS = getTable("blocks/mud_bricks"); + + public static final LootTable BLOCKS_MUDDY_MANGROVE_ROOTS = getTable("blocks/muddy_mangrove_roots"); + + public static final LootTable BLOCKS_MUSHROOM_STEM = getTable("blocks/mushroom_stem"); + + public static final LootTable BLOCKS_MYCELIUM = getTable("blocks/mycelium"); + + public static final LootTable BLOCKS_NETHER_BRICK_FENCE = getTable("blocks/nether_brick_fence"); + + public static final LootTable BLOCKS_NETHER_BRICK_SLAB = getTable("blocks/nether_brick_slab"); + + public static final LootTable BLOCKS_NETHER_BRICK_STAIRS = getTable("blocks/nether_brick_stairs"); + + public static final LootTable BLOCKS_NETHER_BRICK_WALL = getTable("blocks/nether_brick_wall"); + + public static final LootTable BLOCKS_NETHER_BRICKS = getTable("blocks/nether_bricks"); + + public static final LootTable BLOCKS_NETHER_GOLD_ORE = getTable("blocks/nether_gold_ore"); + + public static final LootTable BLOCKS_NETHER_PORTAL = getTable("blocks/nether_portal"); + + public static final LootTable BLOCKS_NETHER_QUARTZ_ORE = getTable("blocks/nether_quartz_ore"); + + public static final LootTable BLOCKS_NETHER_SPROUTS = getTable("blocks/nether_sprouts"); + + public static final LootTable BLOCKS_NETHER_WART = getTable("blocks/nether_wart"); + + public static final LootTable BLOCKS_NETHER_WART_BLOCK = getTable("blocks/nether_wart_block"); + + public static final LootTable BLOCKS_NETHERITE_BLOCK = getTable("blocks/netherite_block"); + + public static final LootTable BLOCKS_NETHERRACK = getTable("blocks/netherrack"); + + public static final LootTable BLOCKS_NOTE_BLOCK = getTable("blocks/note_block"); + + public static final LootTable BLOCKS_OAK_BUTTON = getTable("blocks/oak_button"); + + public static final LootTable BLOCKS_OAK_DOOR = getTable("blocks/oak_door"); + + public static final LootTable BLOCKS_OAK_FENCE = getTable("blocks/oak_fence"); + + public static final LootTable BLOCKS_OAK_FENCE_GATE = getTable("blocks/oak_fence_gate"); + + public static final LootTable BLOCKS_OAK_HANGING_SIGN = getTable("blocks/oak_hanging_sign"); + + public static final LootTable BLOCKS_OAK_LEAVES = getTable("blocks/oak_leaves"); + + public static final LootTable BLOCKS_OAK_LOG = getTable("blocks/oak_log"); + + public static final LootTable BLOCKS_OAK_PLANKS = getTable("blocks/oak_planks"); + + public static final LootTable BLOCKS_OAK_PRESSURE_PLATE = getTable("blocks/oak_pressure_plate"); + + public static final LootTable BLOCKS_OAK_SAPLING = getTable("blocks/oak_sapling"); + + public static final LootTable BLOCKS_OAK_SHELF = getTable("blocks/oak_shelf"); + + public static final LootTable BLOCKS_OAK_SIGN = getTable("blocks/oak_sign"); + + public static final LootTable BLOCKS_OAK_SLAB = getTable("blocks/oak_slab"); + + public static final LootTable BLOCKS_OAK_STAIRS = getTable("blocks/oak_stairs"); + + public static final LootTable BLOCKS_OAK_TRAPDOOR = getTable("blocks/oak_trapdoor"); + + public static final LootTable BLOCKS_OAK_WOOD = getTable("blocks/oak_wood"); + + public static final LootTable BLOCKS_OBSERVER = getTable("blocks/observer"); + + public static final LootTable BLOCKS_OBSIDIAN = getTable("blocks/obsidian"); + + public static final LootTable BLOCKS_OCHRE_FROGLIGHT = getTable("blocks/ochre_froglight"); + + public static final LootTable BLOCKS_OPEN_EYEBLOSSOM = getTable("blocks/open_eyeblossom"); + + public static final LootTable BLOCKS_ORANGE_BANNER = getTable("blocks/orange_banner"); + + public static final LootTable BLOCKS_ORANGE_BED = getTable("blocks/orange_bed"); + + public static final LootTable BLOCKS_ORANGE_CANDLE = getTable("blocks/orange_candle"); + + public static final LootTable BLOCKS_ORANGE_CANDLE_CAKE = getTable("blocks/orange_candle_cake"); + + public static final LootTable BLOCKS_ORANGE_CARPET = getTable("blocks/orange_carpet"); + + public static final LootTable BLOCKS_ORANGE_CONCRETE = getTable("blocks/orange_concrete"); + + public static final LootTable BLOCKS_ORANGE_CONCRETE_POWDER = getTable("blocks/orange_concrete_powder"); + + public static final LootTable BLOCKS_ORANGE_GLAZED_TERRACOTTA = getTable("blocks/orange_glazed_terracotta"); + + public static final LootTable BLOCKS_ORANGE_SHULKER_BOX = getTable("blocks/orange_shulker_box"); + + public static final LootTable BLOCKS_ORANGE_STAINED_GLASS = getTable("blocks/orange_stained_glass"); + + public static final LootTable BLOCKS_ORANGE_STAINED_GLASS_PANE = getTable("blocks/orange_stained_glass_pane"); + + public static final LootTable BLOCKS_ORANGE_TERRACOTTA = getTable("blocks/orange_terracotta"); + + public static final LootTable BLOCKS_ORANGE_TULIP = getTable("blocks/orange_tulip"); + + public static final LootTable BLOCKS_ORANGE_WOOL = getTable("blocks/orange_wool"); + + public static final LootTable BLOCKS_OXEYE_DAISY = getTable("blocks/oxeye_daisy"); + + public static final LootTable BLOCKS_OXIDIZED_CHISELED_COPPER = getTable("blocks/oxidized_chiseled_copper"); + + public static final LootTable BLOCKS_OXIDIZED_COPPER = getTable("blocks/oxidized_copper"); + + public static final LootTable BLOCKS_OXIDIZED_COPPER_BARS = getTable("blocks/oxidized_copper_bars"); + + public static final LootTable BLOCKS_OXIDIZED_COPPER_BULB = getTable("blocks/oxidized_copper_bulb"); + + public static final LootTable BLOCKS_OXIDIZED_COPPER_CHAIN = getTable("blocks/oxidized_copper_chain"); + + public static final LootTable BLOCKS_OXIDIZED_COPPER_CHEST = getTable("blocks/oxidized_copper_chest"); + + public static final LootTable BLOCKS_OXIDIZED_COPPER_DOOR = getTable("blocks/oxidized_copper_door"); + + public static final LootTable BLOCKS_OXIDIZED_COPPER_GOLEM_STATUE = getTable("blocks/oxidized_copper_golem_statue"); + + public static final LootTable BLOCKS_OXIDIZED_COPPER_GRATE = getTable("blocks/oxidized_copper_grate"); + + public static final LootTable BLOCKS_OXIDIZED_COPPER_LANTERN = getTable("blocks/oxidized_copper_lantern"); + + public static final LootTable BLOCKS_OXIDIZED_COPPER_TRAPDOOR = getTable("blocks/oxidized_copper_trapdoor"); + + public static final LootTable BLOCKS_OXIDIZED_CUT_COPPER = getTable("blocks/oxidized_cut_copper"); + + public static final LootTable BLOCKS_OXIDIZED_CUT_COPPER_SLAB = getTable("blocks/oxidized_cut_copper_slab"); + + public static final LootTable BLOCKS_OXIDIZED_CUT_COPPER_STAIRS = getTable("blocks/oxidized_cut_copper_stairs"); + + public static final LootTable BLOCKS_OXIDIZED_LIGHTNING_ROD = getTable("blocks/oxidized_lightning_rod"); + + public static final LootTable BLOCKS_PACKED_ICE = getTable("blocks/packed_ice"); + + public static final LootTable BLOCKS_PACKED_MUD = getTable("blocks/packed_mud"); + + public static final LootTable BLOCKS_PALE_HANGING_MOSS = getTable("blocks/pale_hanging_moss"); + + public static final LootTable BLOCKS_PALE_MOSS_BLOCK = getTable("blocks/pale_moss_block"); + + public static final LootTable BLOCKS_PALE_MOSS_CARPET = getTable("blocks/pale_moss_carpet"); + + public static final LootTable BLOCKS_PALE_OAK_BUTTON = getTable("blocks/pale_oak_button"); + + public static final LootTable BLOCKS_PALE_OAK_DOOR = getTable("blocks/pale_oak_door"); + + public static final LootTable BLOCKS_PALE_OAK_FENCE = getTable("blocks/pale_oak_fence"); + + public static final LootTable BLOCKS_PALE_OAK_FENCE_GATE = getTable("blocks/pale_oak_fence_gate"); + + public static final LootTable BLOCKS_PALE_OAK_HANGING_SIGN = getTable("blocks/pale_oak_hanging_sign"); + + public static final LootTable BLOCKS_PALE_OAK_LEAVES = getTable("blocks/pale_oak_leaves"); + + public static final LootTable BLOCKS_PALE_OAK_LOG = getTable("blocks/pale_oak_log"); + + public static final LootTable BLOCKS_PALE_OAK_PLANKS = getTable("blocks/pale_oak_planks"); + + public static final LootTable BLOCKS_PALE_OAK_PRESSURE_PLATE = getTable("blocks/pale_oak_pressure_plate"); + + public static final LootTable BLOCKS_PALE_OAK_SAPLING = getTable("blocks/pale_oak_sapling"); + + public static final LootTable BLOCKS_PALE_OAK_SHELF = getTable("blocks/pale_oak_shelf"); + + public static final LootTable BLOCKS_PALE_OAK_SIGN = getTable("blocks/pale_oak_sign"); + + public static final LootTable BLOCKS_PALE_OAK_SLAB = getTable("blocks/pale_oak_slab"); + + public static final LootTable BLOCKS_PALE_OAK_STAIRS = getTable("blocks/pale_oak_stairs"); + + public static final LootTable BLOCKS_PALE_OAK_TRAPDOOR = getTable("blocks/pale_oak_trapdoor"); + + public static final LootTable BLOCKS_PALE_OAK_WOOD = getTable("blocks/pale_oak_wood"); + + public static final LootTable BLOCKS_PEARLESCENT_FROGLIGHT = getTable("blocks/pearlescent_froglight"); + + public static final LootTable BLOCKS_PEONY = getTable("blocks/peony"); + + public static final LootTable BLOCKS_PETRIFIED_OAK_SLAB = getTable("blocks/petrified_oak_slab"); + + public static final LootTable BLOCKS_PIGLIN_HEAD = getTable("blocks/piglin_head"); + + public static final LootTable BLOCKS_PINK_BANNER = getTable("blocks/pink_banner"); + + public static final LootTable BLOCKS_PINK_BED = getTable("blocks/pink_bed"); + + public static final LootTable BLOCKS_PINK_CANDLE = getTable("blocks/pink_candle"); + + public static final LootTable BLOCKS_PINK_CANDLE_CAKE = getTable("blocks/pink_candle_cake"); + + public static final LootTable BLOCKS_PINK_CARPET = getTable("blocks/pink_carpet"); + + public static final LootTable BLOCKS_PINK_CONCRETE = getTable("blocks/pink_concrete"); + + public static final LootTable BLOCKS_PINK_CONCRETE_POWDER = getTable("blocks/pink_concrete_powder"); + + public static final LootTable BLOCKS_PINK_GLAZED_TERRACOTTA = getTable("blocks/pink_glazed_terracotta"); + + public static final LootTable BLOCKS_PINK_PETALS = getTable("blocks/pink_petals"); + + public static final LootTable BLOCKS_PINK_SHULKER_BOX = getTable("blocks/pink_shulker_box"); + + public static final LootTable BLOCKS_PINK_STAINED_GLASS = getTable("blocks/pink_stained_glass"); + + public static final LootTable BLOCKS_PINK_STAINED_GLASS_PANE = getTable("blocks/pink_stained_glass_pane"); + + public static final LootTable BLOCKS_PINK_TERRACOTTA = getTable("blocks/pink_terracotta"); + + public static final LootTable BLOCKS_PINK_TULIP = getTable("blocks/pink_tulip"); + + public static final LootTable BLOCKS_PINK_WOOL = getTable("blocks/pink_wool"); + + public static final LootTable BLOCKS_PISTON = getTable("blocks/piston"); + + public static final LootTable BLOCKS_PITCHER_CROP = getTable("blocks/pitcher_crop"); + + public static final LootTable BLOCKS_PITCHER_PLANT = getTable("blocks/pitcher_plant"); + + public static final LootTable BLOCKS_PLAYER_HEAD = getTable("blocks/player_head"); + + public static final LootTable BLOCKS_PODZOL = getTable("blocks/podzol"); + + public static final LootTable BLOCKS_POINTED_DRIPSTONE = getTable("blocks/pointed_dripstone"); + + public static final LootTable BLOCKS_POLISHED_ANDESITE = getTable("blocks/polished_andesite"); + + public static final LootTable BLOCKS_POLISHED_ANDESITE_SLAB = getTable("blocks/polished_andesite_slab"); + + public static final LootTable BLOCKS_POLISHED_ANDESITE_STAIRS = getTable("blocks/polished_andesite_stairs"); + + public static final LootTable BLOCKS_POLISHED_BASALT = getTable("blocks/polished_basalt"); + + public static final LootTable BLOCKS_POLISHED_BLACKSTONE = getTable("blocks/polished_blackstone"); + + public static final LootTable BLOCKS_POLISHED_BLACKSTONE_BRICK_SLAB = getTable("blocks/polished_blackstone_brick_slab"); + + public static final LootTable BLOCKS_POLISHED_BLACKSTONE_BRICK_STAIRS = getTable("blocks/polished_blackstone_brick_stairs"); + + public static final LootTable BLOCKS_POLISHED_BLACKSTONE_BRICK_WALL = getTable("blocks/polished_blackstone_brick_wall"); + + public static final LootTable BLOCKS_POLISHED_BLACKSTONE_BRICKS = getTable("blocks/polished_blackstone_bricks"); + + public static final LootTable BLOCKS_POLISHED_BLACKSTONE_BUTTON = getTable("blocks/polished_blackstone_button"); + + public static final LootTable BLOCKS_POLISHED_BLACKSTONE_PRESSURE_PLATE = getTable("blocks/polished_blackstone_pressure_plate"); + + public static final LootTable BLOCKS_POLISHED_BLACKSTONE_SLAB = getTable("blocks/polished_blackstone_slab"); + + public static final LootTable BLOCKS_POLISHED_BLACKSTONE_STAIRS = getTable("blocks/polished_blackstone_stairs"); + + public static final LootTable BLOCKS_POLISHED_BLACKSTONE_WALL = getTable("blocks/polished_blackstone_wall"); + + public static final LootTable BLOCKS_POLISHED_DEEPSLATE = getTable("blocks/polished_deepslate"); + + public static final LootTable BLOCKS_POLISHED_DEEPSLATE_SLAB = getTable("blocks/polished_deepslate_slab"); + + public static final LootTable BLOCKS_POLISHED_DEEPSLATE_STAIRS = getTable("blocks/polished_deepslate_stairs"); + + public static final LootTable BLOCKS_POLISHED_DEEPSLATE_WALL = getTable("blocks/polished_deepslate_wall"); + + public static final LootTable BLOCKS_POLISHED_DIORITE = getTable("blocks/polished_diorite"); + + public static final LootTable BLOCKS_POLISHED_DIORITE_SLAB = getTable("blocks/polished_diorite_slab"); + + public static final LootTable BLOCKS_POLISHED_DIORITE_STAIRS = getTable("blocks/polished_diorite_stairs"); + + public static final LootTable BLOCKS_POLISHED_GRANITE = getTable("blocks/polished_granite"); + + public static final LootTable BLOCKS_POLISHED_GRANITE_SLAB = getTable("blocks/polished_granite_slab"); + + public static final LootTable BLOCKS_POLISHED_GRANITE_STAIRS = getTable("blocks/polished_granite_stairs"); + + public static final LootTable BLOCKS_POLISHED_TUFF = getTable("blocks/polished_tuff"); + + public static final LootTable BLOCKS_POLISHED_TUFF_SLAB = getTable("blocks/polished_tuff_slab"); + + public static final LootTable BLOCKS_POLISHED_TUFF_STAIRS = getTable("blocks/polished_tuff_stairs"); + + public static final LootTable BLOCKS_POLISHED_TUFF_WALL = getTable("blocks/polished_tuff_wall"); + + public static final LootTable BLOCKS_POPPY = getTable("blocks/poppy"); + + public static final LootTable BLOCKS_POTATOES = getTable("blocks/potatoes"); + + public static final LootTable BLOCKS_POTTED_ACACIA_SAPLING = getTable("blocks/potted_acacia_sapling"); + + public static final LootTable BLOCKS_POTTED_ALLIUM = getTable("blocks/potted_allium"); + + public static final LootTable BLOCKS_POTTED_AZALEA_BUSH = getTable("blocks/potted_azalea_bush"); + + public static final LootTable BLOCKS_POTTED_AZURE_BLUET = getTable("blocks/potted_azure_bluet"); + + public static final LootTable BLOCKS_POTTED_BAMBOO = getTable("blocks/potted_bamboo"); + + public static final LootTable BLOCKS_POTTED_BIRCH_SAPLING = getTable("blocks/potted_birch_sapling"); + + public static final LootTable BLOCKS_POTTED_BLUE_ORCHID = getTable("blocks/potted_blue_orchid"); + + public static final LootTable BLOCKS_POTTED_BROWN_MUSHROOM = getTable("blocks/potted_brown_mushroom"); + + public static final LootTable BLOCKS_POTTED_CACTUS = getTable("blocks/potted_cactus"); + + public static final LootTable BLOCKS_POTTED_CHERRY_SAPLING = getTable("blocks/potted_cherry_sapling"); + + public static final LootTable BLOCKS_POTTED_CLOSED_EYEBLOSSOM = getTable("blocks/potted_closed_eyeblossom"); + + public static final LootTable BLOCKS_POTTED_CORNFLOWER = getTable("blocks/potted_cornflower"); + + public static final LootTable BLOCKS_POTTED_CRIMSON_FUNGUS = getTable("blocks/potted_crimson_fungus"); + + public static final LootTable BLOCKS_POTTED_CRIMSON_ROOTS = getTable("blocks/potted_crimson_roots"); + + public static final LootTable BLOCKS_POTTED_DANDELION = getTable("blocks/potted_dandelion"); + + public static final LootTable BLOCKS_POTTED_DARK_OAK_SAPLING = getTable("blocks/potted_dark_oak_sapling"); + + public static final LootTable BLOCKS_POTTED_DEAD_BUSH = getTable("blocks/potted_dead_bush"); + + public static final LootTable BLOCKS_POTTED_FERN = getTable("blocks/potted_fern"); + + public static final LootTable BLOCKS_POTTED_FLOWERING_AZALEA_BUSH = getTable("blocks/potted_flowering_azalea_bush"); + + public static final LootTable BLOCKS_POTTED_JUNGLE_SAPLING = getTable("blocks/potted_jungle_sapling"); + + public static final LootTable BLOCKS_POTTED_LILY_OF_THE_VALLEY = getTable("blocks/potted_lily_of_the_valley"); + + public static final LootTable BLOCKS_POTTED_MANGROVE_PROPAGULE = getTable("blocks/potted_mangrove_propagule"); + + public static final LootTable BLOCKS_POTTED_OAK_SAPLING = getTable("blocks/potted_oak_sapling"); + + public static final LootTable BLOCKS_POTTED_OPEN_EYEBLOSSOM = getTable("blocks/potted_open_eyeblossom"); + + public static final LootTable BLOCKS_POTTED_ORANGE_TULIP = getTable("blocks/potted_orange_tulip"); + + public static final LootTable BLOCKS_POTTED_OXEYE_DAISY = getTable("blocks/potted_oxeye_daisy"); + + public static final LootTable BLOCKS_POTTED_PALE_OAK_SAPLING = getTable("blocks/potted_pale_oak_sapling"); + + public static final LootTable BLOCKS_POTTED_PINK_TULIP = getTable("blocks/potted_pink_tulip"); + + public static final LootTable BLOCKS_POTTED_POPPY = getTable("blocks/potted_poppy"); + + public static final LootTable BLOCKS_POTTED_RED_MUSHROOM = getTable("blocks/potted_red_mushroom"); + + public static final LootTable BLOCKS_POTTED_RED_TULIP = getTable("blocks/potted_red_tulip"); + + public static final LootTable BLOCKS_POTTED_SPRUCE_SAPLING = getTable("blocks/potted_spruce_sapling"); + + public static final LootTable BLOCKS_POTTED_TORCHFLOWER = getTable("blocks/potted_torchflower"); + + public static final LootTable BLOCKS_POTTED_WARPED_FUNGUS = getTable("blocks/potted_warped_fungus"); + + public static final LootTable BLOCKS_POTTED_WARPED_ROOTS = getTable("blocks/potted_warped_roots"); + + public static final LootTable BLOCKS_POTTED_WHITE_TULIP = getTable("blocks/potted_white_tulip"); + + public static final LootTable BLOCKS_POTTED_WITHER_ROSE = getTable("blocks/potted_wither_rose"); + + public static final LootTable BLOCKS_POWDER_SNOW = getTable("blocks/powder_snow"); + + public static final LootTable BLOCKS_POWDER_SNOW_CAULDRON = getTable("blocks/powder_snow_cauldron"); + + public static final LootTable BLOCKS_POWERED_RAIL = getTable("blocks/powered_rail"); + + public static final LootTable BLOCKS_PRISMARINE = getTable("blocks/prismarine"); + + public static final LootTable BLOCKS_PRISMARINE_BRICK_SLAB = getTable("blocks/prismarine_brick_slab"); + + public static final LootTable BLOCKS_PRISMARINE_BRICK_STAIRS = getTable("blocks/prismarine_brick_stairs"); + + public static final LootTable BLOCKS_PRISMARINE_BRICKS = getTable("blocks/prismarine_bricks"); + + public static final LootTable BLOCKS_PRISMARINE_SLAB = getTable("blocks/prismarine_slab"); + + public static final LootTable BLOCKS_PRISMARINE_STAIRS = getTable("blocks/prismarine_stairs"); + + public static final LootTable BLOCKS_PRISMARINE_WALL = getTable("blocks/prismarine_wall"); + + public static final LootTable BLOCKS_PUMPKIN = getTable("blocks/pumpkin"); + + public static final LootTable BLOCKS_PUMPKIN_STEM = getTable("blocks/pumpkin_stem"); + + public static final LootTable BLOCKS_PURPLE_BANNER = getTable("blocks/purple_banner"); + + public static final LootTable BLOCKS_PURPLE_BED = getTable("blocks/purple_bed"); + + public static final LootTable BLOCKS_PURPLE_CANDLE = getTable("blocks/purple_candle"); + + public static final LootTable BLOCKS_PURPLE_CANDLE_CAKE = getTable("blocks/purple_candle_cake"); + + public static final LootTable BLOCKS_PURPLE_CARPET = getTable("blocks/purple_carpet"); + + public static final LootTable BLOCKS_PURPLE_CONCRETE = getTable("blocks/purple_concrete"); + + public static final LootTable BLOCKS_PURPLE_CONCRETE_POWDER = getTable("blocks/purple_concrete_powder"); + + public static final LootTable BLOCKS_PURPLE_GLAZED_TERRACOTTA = getTable("blocks/purple_glazed_terracotta"); + + public static final LootTable BLOCKS_PURPLE_SHULKER_BOX = getTable("blocks/purple_shulker_box"); + + public static final LootTable BLOCKS_PURPLE_STAINED_GLASS = getTable("blocks/purple_stained_glass"); + + public static final LootTable BLOCKS_PURPLE_STAINED_GLASS_PANE = getTable("blocks/purple_stained_glass_pane"); + + public static final LootTable BLOCKS_PURPLE_TERRACOTTA = getTable("blocks/purple_terracotta"); + + public static final LootTable BLOCKS_PURPLE_WOOL = getTable("blocks/purple_wool"); + + public static final LootTable BLOCKS_PURPUR_BLOCK = getTable("blocks/purpur_block"); + + public static final LootTable BLOCKS_PURPUR_PILLAR = getTable("blocks/purpur_pillar"); + + public static final LootTable BLOCKS_PURPUR_SLAB = getTable("blocks/purpur_slab"); + + public static final LootTable BLOCKS_PURPUR_STAIRS = getTable("blocks/purpur_stairs"); + + public static final LootTable BLOCKS_QUARTZ_BLOCK = getTable("blocks/quartz_block"); + + public static final LootTable BLOCKS_QUARTZ_BRICKS = getTable("blocks/quartz_bricks"); + + public static final LootTable BLOCKS_QUARTZ_PILLAR = getTable("blocks/quartz_pillar"); + + public static final LootTable BLOCKS_QUARTZ_SLAB = getTable("blocks/quartz_slab"); + + public static final LootTable BLOCKS_QUARTZ_STAIRS = getTable("blocks/quartz_stairs"); + + public static final LootTable BLOCKS_RAIL = getTable("blocks/rail"); + + public static final LootTable BLOCKS_RAW_COPPER_BLOCK = getTable("blocks/raw_copper_block"); + + public static final LootTable BLOCKS_RAW_GOLD_BLOCK = getTable("blocks/raw_gold_block"); + + public static final LootTable BLOCKS_RAW_IRON_BLOCK = getTable("blocks/raw_iron_block"); + + public static final LootTable BLOCKS_RED_BANNER = getTable("blocks/red_banner"); + + public static final LootTable BLOCKS_RED_BED = getTable("blocks/red_bed"); + + public static final LootTable BLOCKS_RED_CANDLE = getTable("blocks/red_candle"); + + public static final LootTable BLOCKS_RED_CANDLE_CAKE = getTable("blocks/red_candle_cake"); + + public static final LootTable BLOCKS_RED_CARPET = getTable("blocks/red_carpet"); + + public static final LootTable BLOCKS_RED_CONCRETE = getTable("blocks/red_concrete"); + + public static final LootTable BLOCKS_RED_CONCRETE_POWDER = getTable("blocks/red_concrete_powder"); + + public static final LootTable BLOCKS_RED_GLAZED_TERRACOTTA = getTable("blocks/red_glazed_terracotta"); + + public static final LootTable BLOCKS_RED_MUSHROOM = getTable("blocks/red_mushroom"); + + public static final LootTable BLOCKS_RED_MUSHROOM_BLOCK = getTable("blocks/red_mushroom_block"); + + public static final LootTable BLOCKS_RED_NETHER_BRICK_SLAB = getTable("blocks/red_nether_brick_slab"); + + public static final LootTable BLOCKS_RED_NETHER_BRICK_STAIRS = getTable("blocks/red_nether_brick_stairs"); + + public static final LootTable BLOCKS_RED_NETHER_BRICK_WALL = getTable("blocks/red_nether_brick_wall"); + + public static final LootTable BLOCKS_RED_NETHER_BRICKS = getTable("blocks/red_nether_bricks"); + + public static final LootTable BLOCKS_RED_SAND = getTable("blocks/red_sand"); + + public static final LootTable BLOCKS_RED_SANDSTONE = getTable("blocks/red_sandstone"); + + public static final LootTable BLOCKS_RED_SANDSTONE_SLAB = getTable("blocks/red_sandstone_slab"); + + public static final LootTable BLOCKS_RED_SANDSTONE_STAIRS = getTable("blocks/red_sandstone_stairs"); + + public static final LootTable BLOCKS_RED_SANDSTONE_WALL = getTable("blocks/red_sandstone_wall"); + + public static final LootTable BLOCKS_RED_SHULKER_BOX = getTable("blocks/red_shulker_box"); + + public static final LootTable BLOCKS_RED_STAINED_GLASS = getTable("blocks/red_stained_glass"); + + public static final LootTable BLOCKS_RED_STAINED_GLASS_PANE = getTable("blocks/red_stained_glass_pane"); + + public static final LootTable BLOCKS_RED_TERRACOTTA = getTable("blocks/red_terracotta"); + + public static final LootTable BLOCKS_RED_TULIP = getTable("blocks/red_tulip"); + + public static final LootTable BLOCKS_RED_WOOL = getTable("blocks/red_wool"); + + public static final LootTable BLOCKS_REDSTONE_BLOCK = getTable("blocks/redstone_block"); + + public static final LootTable BLOCKS_REDSTONE_LAMP = getTable("blocks/redstone_lamp"); + + public static final LootTable BLOCKS_REDSTONE_ORE = getTable("blocks/redstone_ore"); + + public static final LootTable BLOCKS_REDSTONE_TORCH = getTable("blocks/redstone_torch"); + + public static final LootTable BLOCKS_REDSTONE_WIRE = getTable("blocks/redstone_wire"); + + public static final LootTable BLOCKS_REINFORCED_DEEPSLATE = getTable("blocks/reinforced_deepslate"); + + public static final LootTable BLOCKS_REPEATER = getTable("blocks/repeater"); + + public static final LootTable BLOCKS_RESIN_BLOCK = getTable("blocks/resin_block"); + + public static final LootTable BLOCKS_RESIN_BRICK_SLAB = getTable("blocks/resin_brick_slab"); + + public static final LootTable BLOCKS_RESIN_BRICK_STAIRS = getTable("blocks/resin_brick_stairs"); + + public static final LootTable BLOCKS_RESIN_BRICK_WALL = getTable("blocks/resin_brick_wall"); + + public static final LootTable BLOCKS_RESIN_BRICKS = getTable("blocks/resin_bricks"); + + public static final LootTable BLOCKS_RESIN_CLUMP = getTable("blocks/resin_clump"); + + public static final LootTable BLOCKS_RESPAWN_ANCHOR = getTable("blocks/respawn_anchor"); + + public static final LootTable BLOCKS_ROOTED_DIRT = getTable("blocks/rooted_dirt"); + + public static final LootTable BLOCKS_ROSE_BUSH = getTable("blocks/rose_bush"); + + public static final LootTable BLOCKS_SAND = getTable("blocks/sand"); + + public static final LootTable BLOCKS_SANDSTONE = getTable("blocks/sandstone"); + + public static final LootTable BLOCKS_SANDSTONE_SLAB = getTable("blocks/sandstone_slab"); + + public static final LootTable BLOCKS_SANDSTONE_STAIRS = getTable("blocks/sandstone_stairs"); + + public static final LootTable BLOCKS_SANDSTONE_WALL = getTable("blocks/sandstone_wall"); + + public static final LootTable BLOCKS_SCAFFOLDING = getTable("blocks/scaffolding"); + + public static final LootTable BLOCKS_SCULK = getTable("blocks/sculk"); + + public static final LootTable BLOCKS_SCULK_CATALYST = getTable("blocks/sculk_catalyst"); + + public static final LootTable BLOCKS_SCULK_SENSOR = getTable("blocks/sculk_sensor"); + + public static final LootTable BLOCKS_SCULK_SHRIEKER = getTable("blocks/sculk_shrieker"); + + public static final LootTable BLOCKS_SCULK_VEIN = getTable("blocks/sculk_vein"); + + public static final LootTable BLOCKS_SEA_LANTERN = getTable("blocks/sea_lantern"); + + public static final LootTable BLOCKS_SEA_PICKLE = getTable("blocks/sea_pickle"); + + public static final LootTable BLOCKS_SEAGRASS = getTable("blocks/seagrass"); + + public static final LootTable BLOCKS_SHORT_DRY_GRASS = getTable("blocks/short_dry_grass"); + + public static final LootTable BLOCKS_SHORT_GRASS = getTable("blocks/short_grass"); + + public static final LootTable BLOCKS_SHROOMLIGHT = getTable("blocks/shroomlight"); + + public static final LootTable BLOCKS_SHULKER_BOX = getTable("blocks/shulker_box"); + + public static final LootTable BLOCKS_SKELETON_SKULL = getTable("blocks/skeleton_skull"); + + public static final LootTable BLOCKS_SLIME_BLOCK = getTable("blocks/slime_block"); + + public static final LootTable BLOCKS_SMALL_AMETHYST_BUD = getTable("blocks/small_amethyst_bud"); + + public static final LootTable BLOCKS_SMALL_DRIPLEAF = getTable("blocks/small_dripleaf"); + + public static final LootTable BLOCKS_SMITHING_TABLE = getTable("blocks/smithing_table"); + + public static final LootTable BLOCKS_SMOKER = getTable("blocks/smoker"); + + public static final LootTable BLOCKS_SMOOTH_BASALT = getTable("blocks/smooth_basalt"); + + public static final LootTable BLOCKS_SMOOTH_QUARTZ = getTable("blocks/smooth_quartz"); + + public static final LootTable BLOCKS_SMOOTH_QUARTZ_SLAB = getTable("blocks/smooth_quartz_slab"); + + public static final LootTable BLOCKS_SMOOTH_QUARTZ_STAIRS = getTable("blocks/smooth_quartz_stairs"); + + public static final LootTable BLOCKS_SMOOTH_RED_SANDSTONE = getTable("blocks/smooth_red_sandstone"); + + public static final LootTable BLOCKS_SMOOTH_RED_SANDSTONE_SLAB = getTable("blocks/smooth_red_sandstone_slab"); + + public static final LootTable BLOCKS_SMOOTH_RED_SANDSTONE_STAIRS = getTable("blocks/smooth_red_sandstone_stairs"); + + public static final LootTable BLOCKS_SMOOTH_SANDSTONE = getTable("blocks/smooth_sandstone"); + + public static final LootTable BLOCKS_SMOOTH_SANDSTONE_SLAB = getTable("blocks/smooth_sandstone_slab"); + + public static final LootTable BLOCKS_SMOOTH_SANDSTONE_STAIRS = getTable("blocks/smooth_sandstone_stairs"); + + public static final LootTable BLOCKS_SMOOTH_STONE = getTable("blocks/smooth_stone"); + + public static final LootTable BLOCKS_SMOOTH_STONE_SLAB = getTable("blocks/smooth_stone_slab"); + + public static final LootTable BLOCKS_SNIFFER_EGG = getTable("blocks/sniffer_egg"); + + public static final LootTable BLOCKS_SNOW = getTable("blocks/snow"); + + public static final LootTable BLOCKS_SNOW_BLOCK = getTable("blocks/snow_block"); + + public static final LootTable BLOCKS_SOUL_CAMPFIRE = getTable("blocks/soul_campfire"); + + public static final LootTable BLOCKS_SOUL_FIRE = getTable("blocks/soul_fire"); + + public static final LootTable BLOCKS_SOUL_LANTERN = getTable("blocks/soul_lantern"); + + public static final LootTable BLOCKS_SOUL_SAND = getTable("blocks/soul_sand"); + + public static final LootTable BLOCKS_SOUL_SOIL = getTable("blocks/soul_soil"); + + public static final LootTable BLOCKS_SOUL_TORCH = getTable("blocks/soul_torch"); + + public static final LootTable BLOCKS_SPAWNER = getTable("blocks/spawner"); + + public static final LootTable BLOCKS_SPONGE = getTable("blocks/sponge"); + + public static final LootTable BLOCKS_SPORE_BLOSSOM = getTable("blocks/spore_blossom"); + + public static final LootTable BLOCKS_SPRUCE_BUTTON = getTable("blocks/spruce_button"); + + public static final LootTable BLOCKS_SPRUCE_DOOR = getTable("blocks/spruce_door"); + + public static final LootTable BLOCKS_SPRUCE_FENCE = getTable("blocks/spruce_fence"); + + public static final LootTable BLOCKS_SPRUCE_FENCE_GATE = getTable("blocks/spruce_fence_gate"); + + public static final LootTable BLOCKS_SPRUCE_HANGING_SIGN = getTable("blocks/spruce_hanging_sign"); + + public static final LootTable BLOCKS_SPRUCE_LEAVES = getTable("blocks/spruce_leaves"); + + public static final LootTable BLOCKS_SPRUCE_LOG = getTable("blocks/spruce_log"); + + public static final LootTable BLOCKS_SPRUCE_PLANKS = getTable("blocks/spruce_planks"); + + public static final LootTable BLOCKS_SPRUCE_PRESSURE_PLATE = getTable("blocks/spruce_pressure_plate"); + + public static final LootTable BLOCKS_SPRUCE_SAPLING = getTable("blocks/spruce_sapling"); + + public static final LootTable BLOCKS_SPRUCE_SHELF = getTable("blocks/spruce_shelf"); + + public static final LootTable BLOCKS_SPRUCE_SIGN = getTable("blocks/spruce_sign"); + + public static final LootTable BLOCKS_SPRUCE_SLAB = getTable("blocks/spruce_slab"); + + public static final LootTable BLOCKS_SPRUCE_STAIRS = getTable("blocks/spruce_stairs"); + + public static final LootTable BLOCKS_SPRUCE_TRAPDOOR = getTable("blocks/spruce_trapdoor"); + + public static final LootTable BLOCKS_SPRUCE_WOOD = getTable("blocks/spruce_wood"); + + public static final LootTable BLOCKS_STICKY_PISTON = getTable("blocks/sticky_piston"); + + public static final LootTable BLOCKS_STONE = getTable("blocks/stone"); + + public static final LootTable BLOCKS_STONE_BRICK_SLAB = getTable("blocks/stone_brick_slab"); + + public static final LootTable BLOCKS_STONE_BRICK_STAIRS = getTable("blocks/stone_brick_stairs"); + + public static final LootTable BLOCKS_STONE_BRICK_WALL = getTable("blocks/stone_brick_wall"); + + public static final LootTable BLOCKS_STONE_BRICKS = getTable("blocks/stone_bricks"); + + public static final LootTable BLOCKS_STONE_BUTTON = getTable("blocks/stone_button"); + + public static final LootTable BLOCKS_STONE_PRESSURE_PLATE = getTable("blocks/stone_pressure_plate"); + + public static final LootTable BLOCKS_STONE_SLAB = getTable("blocks/stone_slab"); + + public static final LootTable BLOCKS_STONE_STAIRS = getTable("blocks/stone_stairs"); + + public static final LootTable BLOCKS_STONECUTTER = getTable("blocks/stonecutter"); + + public static final LootTable BLOCKS_STRIPPED_ACACIA_LOG = getTable("blocks/stripped_acacia_log"); + + public static final LootTable BLOCKS_STRIPPED_ACACIA_WOOD = getTable("blocks/stripped_acacia_wood"); + + public static final LootTable BLOCKS_STRIPPED_BAMBOO_BLOCK = getTable("blocks/stripped_bamboo_block"); + + public static final LootTable BLOCKS_STRIPPED_BIRCH_LOG = getTable("blocks/stripped_birch_log"); + + public static final LootTable BLOCKS_STRIPPED_BIRCH_WOOD = getTable("blocks/stripped_birch_wood"); + + public static final LootTable BLOCKS_STRIPPED_CHERRY_LOG = getTable("blocks/stripped_cherry_log"); + + public static final LootTable BLOCKS_STRIPPED_CHERRY_WOOD = getTable("blocks/stripped_cherry_wood"); + + public static final LootTable BLOCKS_STRIPPED_CRIMSON_HYPHAE = getTable("blocks/stripped_crimson_hyphae"); + + public static final LootTable BLOCKS_STRIPPED_CRIMSON_STEM = getTable("blocks/stripped_crimson_stem"); + + public static final LootTable BLOCKS_STRIPPED_DARK_OAK_LOG = getTable("blocks/stripped_dark_oak_log"); + + public static final LootTable BLOCKS_STRIPPED_DARK_OAK_WOOD = getTable("blocks/stripped_dark_oak_wood"); + + public static final LootTable BLOCKS_STRIPPED_JUNGLE_LOG = getTable("blocks/stripped_jungle_log"); + + public static final LootTable BLOCKS_STRIPPED_JUNGLE_WOOD = getTable("blocks/stripped_jungle_wood"); + + public static final LootTable BLOCKS_STRIPPED_MANGROVE_LOG = getTable("blocks/stripped_mangrove_log"); + + public static final LootTable BLOCKS_STRIPPED_MANGROVE_WOOD = getTable("blocks/stripped_mangrove_wood"); + + public static final LootTable BLOCKS_STRIPPED_OAK_LOG = getTable("blocks/stripped_oak_log"); + + public static final LootTable BLOCKS_STRIPPED_OAK_WOOD = getTable("blocks/stripped_oak_wood"); + + public static final LootTable BLOCKS_STRIPPED_PALE_OAK_LOG = getTable("blocks/stripped_pale_oak_log"); + + public static final LootTable BLOCKS_STRIPPED_PALE_OAK_WOOD = getTable("blocks/stripped_pale_oak_wood"); + + public static final LootTable BLOCKS_STRIPPED_SPRUCE_LOG = getTable("blocks/stripped_spruce_log"); + + public static final LootTable BLOCKS_STRIPPED_SPRUCE_WOOD = getTable("blocks/stripped_spruce_wood"); + + public static final LootTable BLOCKS_STRIPPED_WARPED_HYPHAE = getTable("blocks/stripped_warped_hyphae"); + + public static final LootTable BLOCKS_STRIPPED_WARPED_STEM = getTable("blocks/stripped_warped_stem"); + + public static final LootTable BLOCKS_SUGAR_CANE = getTable("blocks/sugar_cane"); + + public static final LootTable BLOCKS_SUNFLOWER = getTable("blocks/sunflower"); + + public static final LootTable BLOCKS_SUSPICIOUS_GRAVEL = getTable("blocks/suspicious_gravel"); + + public static final LootTable BLOCKS_SUSPICIOUS_SAND = getTable("blocks/suspicious_sand"); + + public static final LootTable BLOCKS_SWEET_BERRY_BUSH = getTable("blocks/sweet_berry_bush"); + + public static final LootTable BLOCKS_TALL_DRY_GRASS = getTable("blocks/tall_dry_grass"); + + public static final LootTable BLOCKS_TALL_GRASS = getTable("blocks/tall_grass"); + + public static final LootTable BLOCKS_TALL_SEAGRASS = getTable("blocks/tall_seagrass"); + + public static final LootTable BLOCKS_TARGET = getTable("blocks/target"); + + public static final LootTable BLOCKS_TERRACOTTA = getTable("blocks/terracotta"); + + public static final LootTable BLOCKS_TINTED_GLASS = getTable("blocks/tinted_glass"); + + public static final LootTable BLOCKS_TNT = getTable("blocks/tnt"); + + public static final LootTable BLOCKS_TORCH = getTable("blocks/torch"); + + public static final LootTable BLOCKS_TORCHFLOWER = getTable("blocks/torchflower"); + + public static final LootTable BLOCKS_TORCHFLOWER_CROP = getTable("blocks/torchflower_crop"); + + public static final LootTable BLOCKS_TRAPPED_CHEST = getTable("blocks/trapped_chest"); + + public static final LootTable BLOCKS_TRIAL_SPAWNER = getTable("blocks/trial_spawner"); + + public static final LootTable BLOCKS_TRIPWIRE = getTable("blocks/tripwire"); + + public static final LootTable BLOCKS_TRIPWIRE_HOOK = getTable("blocks/tripwire_hook"); + + public static final LootTable BLOCKS_TUBE_CORAL = getTable("blocks/tube_coral"); + + public static final LootTable BLOCKS_TUBE_CORAL_BLOCK = getTable("blocks/tube_coral_block"); + + public static final LootTable BLOCKS_TUBE_CORAL_FAN = getTable("blocks/tube_coral_fan"); + + public static final LootTable BLOCKS_TUFF = getTable("blocks/tuff"); + + public static final LootTable BLOCKS_TUFF_BRICK_SLAB = getTable("blocks/tuff_brick_slab"); + + public static final LootTable BLOCKS_TUFF_BRICK_STAIRS = getTable("blocks/tuff_brick_stairs"); + + public static final LootTable BLOCKS_TUFF_BRICK_WALL = getTable("blocks/tuff_brick_wall"); + + public static final LootTable BLOCKS_TUFF_BRICKS = getTable("blocks/tuff_bricks"); + + public static final LootTable BLOCKS_TUFF_SLAB = getTable("blocks/tuff_slab"); + + public static final LootTable BLOCKS_TUFF_STAIRS = getTable("blocks/tuff_stairs"); + + public static final LootTable BLOCKS_TUFF_WALL = getTable("blocks/tuff_wall"); + + public static final LootTable BLOCKS_TURTLE_EGG = getTable("blocks/turtle_egg"); + + public static final LootTable BLOCKS_TWISTING_VINES = getTable("blocks/twisting_vines"); + + public static final LootTable BLOCKS_TWISTING_VINES_PLANT = getTable("blocks/twisting_vines_plant"); + + public static final LootTable BLOCKS_VAULT = getTable("blocks/vault"); + + public static final LootTable BLOCKS_VERDANT_FROGLIGHT = getTable("blocks/verdant_froglight"); + + public static final LootTable BLOCKS_VINE = getTable("blocks/vine"); + + public static final LootTable BLOCKS_WARPED_BUTTON = getTable("blocks/warped_button"); + + public static final LootTable BLOCKS_WARPED_DOOR = getTable("blocks/warped_door"); + + public static final LootTable BLOCKS_WARPED_FENCE = getTable("blocks/warped_fence"); + + public static final LootTable BLOCKS_WARPED_FENCE_GATE = getTable("blocks/warped_fence_gate"); + + public static final LootTable BLOCKS_WARPED_FUNGUS = getTable("blocks/warped_fungus"); + + public static final LootTable BLOCKS_WARPED_HANGING_SIGN = getTable("blocks/warped_hanging_sign"); + + public static final LootTable BLOCKS_WARPED_HYPHAE = getTable("blocks/warped_hyphae"); + + public static final LootTable BLOCKS_WARPED_NYLIUM = getTable("blocks/warped_nylium"); + + public static final LootTable BLOCKS_WARPED_PLANKS = getTable("blocks/warped_planks"); + + public static final LootTable BLOCKS_WARPED_PRESSURE_PLATE = getTable("blocks/warped_pressure_plate"); + + public static final LootTable BLOCKS_WARPED_ROOTS = getTable("blocks/warped_roots"); + + public static final LootTable BLOCKS_WARPED_SHELF = getTable("blocks/warped_shelf"); + + public static final LootTable BLOCKS_WARPED_SIGN = getTable("blocks/warped_sign"); + + public static final LootTable BLOCKS_WARPED_SLAB = getTable("blocks/warped_slab"); + + public static final LootTable BLOCKS_WARPED_STAIRS = getTable("blocks/warped_stairs"); + + public static final LootTable BLOCKS_WARPED_STEM = getTable("blocks/warped_stem"); + + public static final LootTable BLOCKS_WARPED_TRAPDOOR = getTable("blocks/warped_trapdoor"); + + public static final LootTable BLOCKS_WARPED_WART_BLOCK = getTable("blocks/warped_wart_block"); + + public static final LootTable BLOCKS_WATER_CAULDRON = getTable("blocks/water_cauldron"); + + public static final LootTable BLOCKS_WAXED_CHISELED_COPPER = getTable("blocks/waxed_chiseled_copper"); + + public static final LootTable BLOCKS_WAXED_COPPER_BARS = getTable("blocks/waxed_copper_bars"); + + public static final LootTable BLOCKS_WAXED_COPPER_BLOCK = getTable("blocks/waxed_copper_block"); + + public static final LootTable BLOCKS_WAXED_COPPER_BULB = getTable("blocks/waxed_copper_bulb"); + + public static final LootTable BLOCKS_WAXED_COPPER_CHAIN = getTable("blocks/waxed_copper_chain"); + + public static final LootTable BLOCKS_WAXED_COPPER_CHEST = getTable("blocks/waxed_copper_chest"); + + public static final LootTable BLOCKS_WAXED_COPPER_DOOR = getTable("blocks/waxed_copper_door"); + + public static final LootTable BLOCKS_WAXED_COPPER_GOLEM_STATUE = getTable("blocks/waxed_copper_golem_statue"); + + public static final LootTable BLOCKS_WAXED_COPPER_GRATE = getTable("blocks/waxed_copper_grate"); + + public static final LootTable BLOCKS_WAXED_COPPER_LANTERN = getTable("blocks/waxed_copper_lantern"); + + public static final LootTable BLOCKS_WAXED_COPPER_TRAPDOOR = getTable("blocks/waxed_copper_trapdoor"); + + public static final LootTable BLOCKS_WAXED_CUT_COPPER = getTable("blocks/waxed_cut_copper"); + + public static final LootTable BLOCKS_WAXED_CUT_COPPER_SLAB = getTable("blocks/waxed_cut_copper_slab"); + + public static final LootTable BLOCKS_WAXED_CUT_COPPER_STAIRS = getTable("blocks/waxed_cut_copper_stairs"); + + public static final LootTable BLOCKS_WAXED_EXPOSED_CHISELED_COPPER = getTable("blocks/waxed_exposed_chiseled_copper"); + + public static final LootTable BLOCKS_WAXED_EXPOSED_COPPER = getTable("blocks/waxed_exposed_copper"); + + public static final LootTable BLOCKS_WAXED_EXPOSED_COPPER_BARS = getTable("blocks/waxed_exposed_copper_bars"); + + public static final LootTable BLOCKS_WAXED_EXPOSED_COPPER_BULB = getTable("blocks/waxed_exposed_copper_bulb"); + + public static final LootTable BLOCKS_WAXED_EXPOSED_COPPER_CHAIN = getTable("blocks/waxed_exposed_copper_chain"); + + public static final LootTable BLOCKS_WAXED_EXPOSED_COPPER_CHEST = getTable("blocks/waxed_exposed_copper_chest"); + + public static final LootTable BLOCKS_WAXED_EXPOSED_COPPER_DOOR = getTable("blocks/waxed_exposed_copper_door"); + + public static final LootTable BLOCKS_WAXED_EXPOSED_COPPER_GOLEM_STATUE = getTable("blocks/waxed_exposed_copper_golem_statue"); + + public static final LootTable BLOCKS_WAXED_EXPOSED_COPPER_GRATE = getTable("blocks/waxed_exposed_copper_grate"); + + public static final LootTable BLOCKS_WAXED_EXPOSED_COPPER_LANTERN = getTable("blocks/waxed_exposed_copper_lantern"); + + public static final LootTable BLOCKS_WAXED_EXPOSED_COPPER_TRAPDOOR = getTable("blocks/waxed_exposed_copper_trapdoor"); + + public static final LootTable BLOCKS_WAXED_EXPOSED_CUT_COPPER = getTable("blocks/waxed_exposed_cut_copper"); + + public static final LootTable BLOCKS_WAXED_EXPOSED_CUT_COPPER_SLAB = getTable("blocks/waxed_exposed_cut_copper_slab"); + + public static final LootTable BLOCKS_WAXED_EXPOSED_CUT_COPPER_STAIRS = getTable("blocks/waxed_exposed_cut_copper_stairs"); + + public static final LootTable BLOCKS_WAXED_EXPOSED_LIGHTNING_ROD = getTable("blocks/waxed_exposed_lightning_rod"); + + public static final LootTable BLOCKS_WAXED_LIGHTNING_ROD = getTable("blocks/waxed_lightning_rod"); + + public static final LootTable BLOCKS_WAXED_OXIDIZED_CHISELED_COPPER = getTable("blocks/waxed_oxidized_chiseled_copper"); + + public static final LootTable BLOCKS_WAXED_OXIDIZED_COPPER = getTable("blocks/waxed_oxidized_copper"); + + public static final LootTable BLOCKS_WAXED_OXIDIZED_COPPER_BARS = getTable("blocks/waxed_oxidized_copper_bars"); + + public static final LootTable BLOCKS_WAXED_OXIDIZED_COPPER_BULB = getTable("blocks/waxed_oxidized_copper_bulb"); + + public static final LootTable BLOCKS_WAXED_OXIDIZED_COPPER_CHAIN = getTable("blocks/waxed_oxidized_copper_chain"); + + public static final LootTable BLOCKS_WAXED_OXIDIZED_COPPER_CHEST = getTable("blocks/waxed_oxidized_copper_chest"); + + public static final LootTable BLOCKS_WAXED_OXIDIZED_COPPER_DOOR = getTable("blocks/waxed_oxidized_copper_door"); + + public static final LootTable BLOCKS_WAXED_OXIDIZED_COPPER_GOLEM_STATUE = getTable("blocks/waxed_oxidized_copper_golem_statue"); + + public static final LootTable BLOCKS_WAXED_OXIDIZED_COPPER_GRATE = getTable("blocks/waxed_oxidized_copper_grate"); + + public static final LootTable BLOCKS_WAXED_OXIDIZED_COPPER_LANTERN = getTable("blocks/waxed_oxidized_copper_lantern"); + + public static final LootTable BLOCKS_WAXED_OXIDIZED_COPPER_TRAPDOOR = getTable("blocks/waxed_oxidized_copper_trapdoor"); + + public static final LootTable BLOCKS_WAXED_OXIDIZED_CUT_COPPER = getTable("blocks/waxed_oxidized_cut_copper"); + + public static final LootTable BLOCKS_WAXED_OXIDIZED_CUT_COPPER_SLAB = getTable("blocks/waxed_oxidized_cut_copper_slab"); + + public static final LootTable BLOCKS_WAXED_OXIDIZED_CUT_COPPER_STAIRS = getTable("blocks/waxed_oxidized_cut_copper_stairs"); + + public static final LootTable BLOCKS_WAXED_OXIDIZED_LIGHTNING_ROD = getTable("blocks/waxed_oxidized_lightning_rod"); + + public static final LootTable BLOCKS_WAXED_WEATHERED_CHISELED_COPPER = getTable("blocks/waxed_weathered_chiseled_copper"); + + public static final LootTable BLOCKS_WAXED_WEATHERED_COPPER = getTable("blocks/waxed_weathered_copper"); + + public static final LootTable BLOCKS_WAXED_WEATHERED_COPPER_BARS = getTable("blocks/waxed_weathered_copper_bars"); + + public static final LootTable BLOCKS_WAXED_WEATHERED_COPPER_BULB = getTable("blocks/waxed_weathered_copper_bulb"); + + public static final LootTable BLOCKS_WAXED_WEATHERED_COPPER_CHAIN = getTable("blocks/waxed_weathered_copper_chain"); + + public static final LootTable BLOCKS_WAXED_WEATHERED_COPPER_CHEST = getTable("blocks/waxed_weathered_copper_chest"); + + public static final LootTable BLOCKS_WAXED_WEATHERED_COPPER_DOOR = getTable("blocks/waxed_weathered_copper_door"); + + public static final LootTable BLOCKS_WAXED_WEATHERED_COPPER_GOLEM_STATUE = getTable("blocks/waxed_weathered_copper_golem_statue"); + + public static final LootTable BLOCKS_WAXED_WEATHERED_COPPER_GRATE = getTable("blocks/waxed_weathered_copper_grate"); + + public static final LootTable BLOCKS_WAXED_WEATHERED_COPPER_LANTERN = getTable("blocks/waxed_weathered_copper_lantern"); + + public static final LootTable BLOCKS_WAXED_WEATHERED_COPPER_TRAPDOOR = getTable("blocks/waxed_weathered_copper_trapdoor"); + + public static final LootTable BLOCKS_WAXED_WEATHERED_CUT_COPPER = getTable("blocks/waxed_weathered_cut_copper"); + + public static final LootTable BLOCKS_WAXED_WEATHERED_CUT_COPPER_SLAB = getTable("blocks/waxed_weathered_cut_copper_slab"); + + public static final LootTable BLOCKS_WAXED_WEATHERED_CUT_COPPER_STAIRS = getTable("blocks/waxed_weathered_cut_copper_stairs"); + + public static final LootTable BLOCKS_WAXED_WEATHERED_LIGHTNING_ROD = getTable("blocks/waxed_weathered_lightning_rod"); + + public static final LootTable BLOCKS_WEATHERED_CHISELED_COPPER = getTable("blocks/weathered_chiseled_copper"); + + public static final LootTable BLOCKS_WEATHERED_COPPER = getTable("blocks/weathered_copper"); + + public static final LootTable BLOCKS_WEATHERED_COPPER_BARS = getTable("blocks/weathered_copper_bars"); + + public static final LootTable BLOCKS_WEATHERED_COPPER_BULB = getTable("blocks/weathered_copper_bulb"); + + public static final LootTable BLOCKS_WEATHERED_COPPER_CHAIN = getTable("blocks/weathered_copper_chain"); + + public static final LootTable BLOCKS_WEATHERED_COPPER_CHEST = getTable("blocks/weathered_copper_chest"); + + public static final LootTable BLOCKS_WEATHERED_COPPER_DOOR = getTable("blocks/weathered_copper_door"); + + public static final LootTable BLOCKS_WEATHERED_COPPER_GOLEM_STATUE = getTable("blocks/weathered_copper_golem_statue"); + + public static final LootTable BLOCKS_WEATHERED_COPPER_GRATE = getTable("blocks/weathered_copper_grate"); + + public static final LootTable BLOCKS_WEATHERED_COPPER_LANTERN = getTable("blocks/weathered_copper_lantern"); + + public static final LootTable BLOCKS_WEATHERED_COPPER_TRAPDOOR = getTable("blocks/weathered_copper_trapdoor"); + + public static final LootTable BLOCKS_WEATHERED_CUT_COPPER = getTable("blocks/weathered_cut_copper"); + + public static final LootTable BLOCKS_WEATHERED_CUT_COPPER_SLAB = getTable("blocks/weathered_cut_copper_slab"); + + public static final LootTable BLOCKS_WEATHERED_CUT_COPPER_STAIRS = getTable("blocks/weathered_cut_copper_stairs"); + + public static final LootTable BLOCKS_WEATHERED_LIGHTNING_ROD = getTable("blocks/weathered_lightning_rod"); + + public static final LootTable BLOCKS_WEEPING_VINES = getTable("blocks/weeping_vines"); + + public static final LootTable BLOCKS_WEEPING_VINES_PLANT = getTable("blocks/weeping_vines_plant"); + + public static final LootTable BLOCKS_WET_SPONGE = getTable("blocks/wet_sponge"); + + public static final LootTable BLOCKS_WHEAT = getTable("blocks/wheat"); + + public static final LootTable BLOCKS_WHITE_BANNER = getTable("blocks/white_banner"); + + public static final LootTable BLOCKS_WHITE_BED = getTable("blocks/white_bed"); + + public static final LootTable BLOCKS_WHITE_CANDLE = getTable("blocks/white_candle"); + + public static final LootTable BLOCKS_WHITE_CANDLE_CAKE = getTable("blocks/white_candle_cake"); + + public static final LootTable BLOCKS_WHITE_CARPET = getTable("blocks/white_carpet"); + + public static final LootTable BLOCKS_WHITE_CONCRETE = getTable("blocks/white_concrete"); + + public static final LootTable BLOCKS_WHITE_CONCRETE_POWDER = getTable("blocks/white_concrete_powder"); + + public static final LootTable BLOCKS_WHITE_GLAZED_TERRACOTTA = getTable("blocks/white_glazed_terracotta"); + + public static final LootTable BLOCKS_WHITE_SHULKER_BOX = getTable("blocks/white_shulker_box"); + + public static final LootTable BLOCKS_WHITE_STAINED_GLASS = getTable("blocks/white_stained_glass"); + + public static final LootTable BLOCKS_WHITE_STAINED_GLASS_PANE = getTable("blocks/white_stained_glass_pane"); + + public static final LootTable BLOCKS_WHITE_TERRACOTTA = getTable("blocks/white_terracotta"); + + public static final LootTable BLOCKS_WHITE_TULIP = getTable("blocks/white_tulip"); + + public static final LootTable BLOCKS_WHITE_WOOL = getTable("blocks/white_wool"); + + public static final LootTable BLOCKS_WILDFLOWERS = getTable("blocks/wildflowers"); + + public static final LootTable BLOCKS_WITHER_ROSE = getTable("blocks/wither_rose"); + + public static final LootTable BLOCKS_WITHER_SKELETON_SKULL = getTable("blocks/wither_skeleton_skull"); + + public static final LootTable BLOCKS_YELLOW_BANNER = getTable("blocks/yellow_banner"); + + public static final LootTable BLOCKS_YELLOW_BED = getTable("blocks/yellow_bed"); + + public static final LootTable BLOCKS_YELLOW_CANDLE = getTable("blocks/yellow_candle"); + + public static final LootTable BLOCKS_YELLOW_CANDLE_CAKE = getTable("blocks/yellow_candle_cake"); + + public static final LootTable BLOCKS_YELLOW_CARPET = getTable("blocks/yellow_carpet"); + + public static final LootTable BLOCKS_YELLOW_CONCRETE = getTable("blocks/yellow_concrete"); + + public static final LootTable BLOCKS_YELLOW_CONCRETE_POWDER = getTable("blocks/yellow_concrete_powder"); + + public static final LootTable BLOCKS_YELLOW_GLAZED_TERRACOTTA = getTable("blocks/yellow_glazed_terracotta"); + + public static final LootTable BLOCKS_YELLOW_SHULKER_BOX = getTable("blocks/yellow_shulker_box"); + + public static final LootTable BLOCKS_YELLOW_STAINED_GLASS = getTable("blocks/yellow_stained_glass"); + + public static final LootTable BLOCKS_YELLOW_STAINED_GLASS_PANE = getTable("blocks/yellow_stained_glass_pane"); + + public static final LootTable BLOCKS_YELLOW_TERRACOTTA = getTable("blocks/yellow_terracotta"); + + public static final LootTable BLOCKS_YELLOW_WOOL = getTable("blocks/yellow_wool"); + + public static final LootTable BLOCKS_ZOMBIE_HEAD = getTable("blocks/zombie_head"); + + public static final LootTable BRUSH_ARMADILLO = getTable("brush/armadillo"); + + public static final LootTable CARVE_PUMPKIN = getTable("carve/pumpkin"); + + public static final LootTable CHARGED_CREEPER_CREEPER = getTable("charged_creeper/creeper"); + + public static final LootTable CHARGED_CREEPER_PIGLIN = getTable("charged_creeper/piglin"); + + public static final LootTable CHARGED_CREEPER_ROOT = getTable("charged_creeper/root"); + + public static final LootTable CHARGED_CREEPER_SKELETON = getTable("charged_creeper/skeleton"); + + public static final LootTable CHARGED_CREEPER_WITHER_SKELETON = getTable("charged_creeper/wither_skeleton"); + + public static final LootTable CHARGED_CREEPER_ZOMBIE = getTable("charged_creeper/zombie"); + + public static final LootTable CHESTS_ABANDONED_MINESHAFT = getTable("chests/abandoned_mineshaft"); + + public static final LootTable CHESTS_ANCIENT_CITY = getTable("chests/ancient_city"); + + public static final LootTable CHESTS_ANCIENT_CITY_ICE_BOX = getTable("chests/ancient_city_ice_box"); + + public static final LootTable CHESTS_BASTION_BRIDGE = getTable("chests/bastion_bridge"); + + public static final LootTable CHESTS_BASTION_HOGLIN_STABLE = getTable("chests/bastion_hoglin_stable"); + + public static final LootTable CHESTS_BASTION_OTHER = getTable("chests/bastion_other"); + + public static final LootTable CHESTS_BASTION_TREASURE = getTable("chests/bastion_treasure"); + + public static final LootTable CHESTS_BURIED_TREASURE = getTable("chests/buried_treasure"); + + public static final LootTable CHESTS_DESERT_PYRAMID = getTable("chests/desert_pyramid"); + + public static final LootTable CHESTS_END_CITY_TREASURE = getTable("chests/end_city_treasure"); + + public static final LootTable CHESTS_IGLOO_CHEST = getTable("chests/igloo_chest"); + + public static final LootTable CHESTS_JUNGLE_TEMPLE = getTable("chests/jungle_temple"); + + public static final LootTable CHESTS_JUNGLE_TEMPLE_DISPENSER = getTable("chests/jungle_temple_dispenser"); + + public static final LootTable CHESTS_NETHER_BRIDGE = getTable("chests/nether_bridge"); + + public static final LootTable CHESTS_PILLAGER_OUTPOST = getTable("chests/pillager_outpost"); + + public static final LootTable CHESTS_RUINED_PORTAL = getTable("chests/ruined_portal"); + + public static final LootTable CHESTS_SHIPWRECK_MAP = getTable("chests/shipwreck_map"); + + public static final LootTable CHESTS_SHIPWRECK_SUPPLY = getTable("chests/shipwreck_supply"); + + public static final LootTable CHESTS_SHIPWRECK_TREASURE = getTable("chests/shipwreck_treasure"); + + public static final LootTable CHESTS_SIMPLE_DUNGEON = getTable("chests/simple_dungeon"); + + public static final LootTable CHESTS_SPAWN_BONUS_CHEST = getTable("chests/spawn_bonus_chest"); + + public static final LootTable CHESTS_STRONGHOLD_CORRIDOR = getTable("chests/stronghold_corridor"); + + public static final LootTable CHESTS_STRONGHOLD_CROSSING = getTable("chests/stronghold_crossing"); + + public static final LootTable CHESTS_STRONGHOLD_LIBRARY = getTable("chests/stronghold_library"); + + public static final LootTable CHESTS_TRIAL_CHAMBERS_CORRIDOR = getTable("chests/trial_chambers/corridor"); + + public static final LootTable CHESTS_TRIAL_CHAMBERS_ENTRANCE = getTable("chests/trial_chambers/entrance"); + + public static final LootTable CHESTS_TRIAL_CHAMBERS_INTERSECTION = getTable("chests/trial_chambers/intersection"); + + public static final LootTable CHESTS_TRIAL_CHAMBERS_INTERSECTION_BARREL = getTable("chests/trial_chambers/intersection_barrel"); + + public static final LootTable CHESTS_TRIAL_CHAMBERS_REWARD = getTable("chests/trial_chambers/reward"); + + public static final LootTable CHESTS_TRIAL_CHAMBERS_REWARD_COMMON = getTable("chests/trial_chambers/reward_common"); + + public static final LootTable CHESTS_TRIAL_CHAMBERS_REWARD_OMINOUS = getTable("chests/trial_chambers/reward_ominous"); + + public static final LootTable CHESTS_TRIAL_CHAMBERS_REWARD_OMINOUS_COMMON = getTable("chests/trial_chambers/reward_ominous_common"); + + public static final LootTable CHESTS_TRIAL_CHAMBERS_REWARD_OMINOUS_RARE = getTable("chests/trial_chambers/reward_ominous_rare"); + + public static final LootTable CHESTS_TRIAL_CHAMBERS_REWARD_OMINOUS_UNIQUE = getTable("chests/trial_chambers/reward_ominous_unique"); + + public static final LootTable CHESTS_TRIAL_CHAMBERS_REWARD_RARE = getTable("chests/trial_chambers/reward_rare"); + + public static final LootTable CHESTS_TRIAL_CHAMBERS_REWARD_UNIQUE = getTable("chests/trial_chambers/reward_unique"); + + public static final LootTable CHESTS_TRIAL_CHAMBERS_SUPPLY = getTable("chests/trial_chambers/supply"); + + public static final LootTable CHESTS_UNDERWATER_RUIN_BIG = getTable("chests/underwater_ruin_big"); + + public static final LootTable CHESTS_UNDERWATER_RUIN_SMALL = getTable("chests/underwater_ruin_small"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_ARMORER = getTable("chests/village/village_armorer"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_BUTCHER = getTable("chests/village/village_butcher"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_CARTOGRAPHER = getTable("chests/village/village_cartographer"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_DESERT_HOUSE = getTable("chests/village/village_desert_house"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_FISHER = getTable("chests/village/village_fisher"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_FLETCHER = getTable("chests/village/village_fletcher"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_MASON = getTable("chests/village/village_mason"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_PLAINS_HOUSE = getTable("chests/village/village_plains_house"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_SAVANNA_HOUSE = getTable("chests/village/village_savanna_house"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_SHEPHERD = getTable("chests/village/village_shepherd"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_SNOWY_HOUSE = getTable("chests/village/village_snowy_house"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_TAIGA_HOUSE = getTable("chests/village/village_taiga_house"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_TANNERY = getTable("chests/village/village_tannery"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_TEMPLE = getTable("chests/village/village_temple"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_TOOLSMITH = getTable("chests/village/village_toolsmith"); + + public static final LootTable CHESTS_VILLAGE_VILLAGE_WEAPONSMITH = getTable("chests/village/village_weaponsmith"); + + public static final LootTable CHESTS_WOODLAND_MANSION = getTable("chests/woodland_mansion"); + + public static final LootTable DISPENSERS_TRIAL_CHAMBERS_CHAMBER = getTable("dispensers/trial_chambers/chamber"); + + public static final LootTable DISPENSERS_TRIAL_CHAMBERS_CORRIDOR = getTable("dispensers/trial_chambers/corridor"); + + public static final LootTable DISPENSERS_TRIAL_CHAMBERS_WATER = getTable("dispensers/trial_chambers/water"); + + public static final LootTable ENTITIES_ALLAY = getTable("entities/allay"); + + public static final LootTable ENTITIES_ARMADILLO = getTable("entities/armadillo"); + + public static final LootTable ENTITIES_ARMOR_STAND = getTable("entities/armor_stand"); + + public static final LootTable ENTITIES_AXOLOTL = getTable("entities/axolotl"); + + public static final LootTable ENTITIES_BAT = getTable("entities/bat"); + + public static final LootTable ENTITIES_BEE = getTable("entities/bee"); + + public static final LootTable ENTITIES_BLAZE = getTable("entities/blaze"); + + public static final LootTable ENTITIES_BOGGED = getTable("entities/bogged"); + + public static final LootTable ENTITIES_BREEZE = getTable("entities/breeze"); + + public static final LootTable ENTITIES_CAMEL = getTable("entities/camel"); + + public static final LootTable ENTITIES_CAMEL_HUSK = getTable("entities/camel_husk"); + + public static final LootTable ENTITIES_CAT = getTable("entities/cat"); + + public static final LootTable ENTITIES_CAVE_SPIDER = getTable("entities/cave_spider"); + + public static final LootTable ENTITIES_CHICKEN = getTable("entities/chicken"); + + public static final LootTable ENTITIES_COD = getTable("entities/cod"); + + public static final LootTable ENTITIES_COPPER_GOLEM = getTable("entities/copper_golem"); + + public static final LootTable ENTITIES_COW = getTable("entities/cow"); + + public static final LootTable ENTITIES_CREAKING = getTable("entities/creaking"); + + public static final LootTable ENTITIES_CREEPER = getTable("entities/creeper"); + + public static final LootTable ENTITIES_DOLPHIN = getTable("entities/dolphin"); + + public static final LootTable ENTITIES_DONKEY = getTable("entities/donkey"); + + public static final LootTable ENTITIES_DROWNED = getTable("entities/drowned"); + + public static final LootTable ENTITIES_ELDER_GUARDIAN = getTable("entities/elder_guardian"); + + public static final LootTable ENTITIES_ENDER_DRAGON = getTable("entities/ender_dragon"); + + public static final LootTable ENTITIES_ENDERMAN = getTable("entities/enderman"); + + public static final LootTable ENTITIES_ENDERMITE = getTable("entities/endermite"); + + public static final LootTable ENTITIES_EVOKER = getTable("entities/evoker"); + + public static final LootTable ENTITIES_FOX = getTable("entities/fox"); + + public static final LootTable ENTITIES_FROG = getTable("entities/frog"); + + public static final LootTable ENTITIES_GHAST = getTable("entities/ghast"); + + public static final LootTable ENTITIES_GIANT = getTable("entities/giant"); + + public static final LootTable ENTITIES_GLOW_SQUID = getTable("entities/glow_squid"); + + public static final LootTable ENTITIES_GOAT = getTable("entities/goat"); + + public static final LootTable ENTITIES_GUARDIAN = getTable("entities/guardian"); + + public static final LootTable ENTITIES_HAPPY_GHAST = getTable("entities/happy_ghast"); + + public static final LootTable ENTITIES_HOGLIN = getTable("entities/hoglin"); + + public static final LootTable ENTITIES_HORSE = getTable("entities/horse"); + + public static final LootTable ENTITIES_HUSK = getTable("entities/husk"); + + public static final LootTable ENTITIES_ILLUSIONER = getTable("entities/illusioner"); + + public static final LootTable ENTITIES_IRON_GOLEM = getTable("entities/iron_golem"); + + public static final LootTable ENTITIES_LLAMA = getTable("entities/llama"); + + public static final LootTable ENTITIES_MAGMA_CUBE = getTable("entities/magma_cube"); + + public static final LootTable ENTITIES_MANNEQUIN = getTable("entities/mannequin"); + + public static final LootTable ENTITIES_MOOSHROOM = getTable("entities/mooshroom"); + + public static final LootTable ENTITIES_MULE = getTable("entities/mule"); + + public static final LootTable ENTITIES_NAUTILUS = getTable("entities/nautilus"); + + public static final LootTable ENTITIES_OCELOT = getTable("entities/ocelot"); + + public static final LootTable ENTITIES_PANDA = getTable("entities/panda"); + + public static final LootTable ENTITIES_PARCHED = getTable("entities/parched"); + + public static final LootTable ENTITIES_PARROT = getTable("entities/parrot"); + + public static final LootTable ENTITIES_PHANTOM = getTable("entities/phantom"); + + public static final LootTable ENTITIES_PIG = getTable("entities/pig"); + + public static final LootTable ENTITIES_PIGLIN = getTable("entities/piglin"); + + public static final LootTable ENTITIES_PIGLIN_BRUTE = getTable("entities/piglin_brute"); + + public static final LootTable ENTITIES_PILLAGER = getTable("entities/pillager"); + + public static final LootTable ENTITIES_PLAYER = getTable("entities/player"); + + public static final LootTable ENTITIES_POLAR_BEAR = getTable("entities/polar_bear"); + + public static final LootTable ENTITIES_PUFFERFISH = getTable("entities/pufferfish"); + + public static final LootTable ENTITIES_RABBIT = getTable("entities/rabbit"); + + public static final LootTable ENTITIES_RAVAGER = getTable("entities/ravager"); + + public static final LootTable ENTITIES_SALMON = getTable("entities/salmon"); + + public static final LootTable ENTITIES_SHEEP = getTable("entities/sheep"); + + public static final LootTable ENTITIES_SHEEP_BLACK = getTable("entities/sheep/black"); + + public static final LootTable ENTITIES_SHEEP_BLUE = getTable("entities/sheep/blue"); + + public static final LootTable ENTITIES_SHEEP_BROWN = getTable("entities/sheep/brown"); + + public static final LootTable ENTITIES_SHEEP_CYAN = getTable("entities/sheep/cyan"); + + public static final LootTable ENTITIES_SHEEP_GRAY = getTable("entities/sheep/gray"); + + public static final LootTable ENTITIES_SHEEP_GREEN = getTable("entities/sheep/green"); + + public static final LootTable ENTITIES_SHEEP_LIGHT_BLUE = getTable("entities/sheep/light_blue"); + + public static final LootTable ENTITIES_SHEEP_LIGHT_GRAY = getTable("entities/sheep/light_gray"); + + public static final LootTable ENTITIES_SHEEP_LIME = getTable("entities/sheep/lime"); + + public static final LootTable ENTITIES_SHEEP_MAGENTA = getTable("entities/sheep/magenta"); + + public static final LootTable ENTITIES_SHEEP_ORANGE = getTable("entities/sheep/orange"); + + public static final LootTable ENTITIES_SHEEP_PINK = getTable("entities/sheep/pink"); + + public static final LootTable ENTITIES_SHEEP_PURPLE = getTable("entities/sheep/purple"); + + public static final LootTable ENTITIES_SHEEP_RED = getTable("entities/sheep/red"); + + public static final LootTable ENTITIES_SHEEP_WHITE = getTable("entities/sheep/white"); + + public static final LootTable ENTITIES_SHEEP_YELLOW = getTable("entities/sheep/yellow"); + + public static final LootTable ENTITIES_SHULKER = getTable("entities/shulker"); + + public static final LootTable ENTITIES_SILVERFISH = getTable("entities/silverfish"); + + public static final LootTable ENTITIES_SKELETON = getTable("entities/skeleton"); + + public static final LootTable ENTITIES_SKELETON_HORSE = getTable("entities/skeleton_horse"); + + public static final LootTable ENTITIES_SLIME = getTable("entities/slime"); + + public static final LootTable ENTITIES_SNIFFER = getTable("entities/sniffer"); + + public static final LootTable ENTITIES_SNOW_GOLEM = getTable("entities/snow_golem"); + + public static final LootTable ENTITIES_SPIDER = getTable("entities/spider"); + + public static final LootTable ENTITIES_SQUID = getTable("entities/squid"); + + public static final LootTable ENTITIES_STRAY = getTable("entities/stray"); + + public static final LootTable ENTITIES_STRIDER = getTable("entities/strider"); + + public static final LootTable ENTITIES_TADPOLE = getTable("entities/tadpole"); + + public static final LootTable ENTITIES_TRADER_LLAMA = getTable("entities/trader_llama"); + + public static final LootTable ENTITIES_TROPICAL_FISH = getTable("entities/tropical_fish"); + + public static final LootTable ENTITIES_TURTLE = getTable("entities/turtle"); + + public static final LootTable ENTITIES_VEX = getTable("entities/vex"); + + public static final LootTable ENTITIES_VILLAGER = getTable("entities/villager"); + + public static final LootTable ENTITIES_VINDICATOR = getTable("entities/vindicator"); + + public static final LootTable ENTITIES_WANDERING_TRADER = getTable("entities/wandering_trader"); + + public static final LootTable ENTITIES_WARDEN = getTable("entities/warden"); + + public static final LootTable ENTITIES_WITCH = getTable("entities/witch"); + + public static final LootTable ENTITIES_WITHER = getTable("entities/wither"); + + public static final LootTable ENTITIES_WITHER_SKELETON = getTable("entities/wither_skeleton"); + + public static final LootTable ENTITIES_WOLF = getTable("entities/wolf"); + + public static final LootTable ENTITIES_ZOGLIN = getTable("entities/zoglin"); + + public static final LootTable ENTITIES_ZOMBIE = getTable("entities/zombie"); + + public static final LootTable ENTITIES_ZOMBIE_HORSE = getTable("entities/zombie_horse"); + + public static final LootTable ENTITIES_ZOMBIE_NAUTILUS = getTable("entities/zombie_nautilus"); + + public static final LootTable ENTITIES_ZOMBIE_VILLAGER = getTable("entities/zombie_villager"); + + public static final LootTable ENTITIES_ZOMBIFIED_PIGLIN = getTable("entities/zombified_piglin"); + + public static final LootTable EQUIPMENT_TRIAL_CHAMBER = getTable("equipment/trial_chamber"); + + public static final LootTable EQUIPMENT_TRIAL_CHAMBER_MELEE = getTable("equipment/trial_chamber_melee"); + + public static final LootTable EQUIPMENT_TRIAL_CHAMBER_RANGED = getTable("equipment/trial_chamber_ranged"); + + public static final LootTable GAMEPLAY_ARMADILLO_SHED = getTable("gameplay/armadillo_shed"); + + public static final LootTable GAMEPLAY_CAT_MORNING_GIFT = getTable("gameplay/cat_morning_gift"); + + public static final LootTable GAMEPLAY_CHICKEN_LAY = getTable("gameplay/chicken_lay"); + + public static final LootTable GAMEPLAY_FISHING = getTable("gameplay/fishing"); + + public static final LootTable GAMEPLAY_FISHING_FISH = getTable("gameplay/fishing/fish"); + + public static final LootTable GAMEPLAY_FISHING_JUNK = getTable("gameplay/fishing/junk"); + + public static final LootTable GAMEPLAY_FISHING_TREASURE = getTable("gameplay/fishing/treasure"); + + public static final LootTable GAMEPLAY_HERO_OF_THE_VILLAGE_ARMORER_GIFT = getTable("gameplay/hero_of_the_village/armorer_gift"); + + public static final LootTable GAMEPLAY_HERO_OF_THE_VILLAGE_BABY_GIFT = getTable("gameplay/hero_of_the_village/baby_gift"); + + public static final LootTable GAMEPLAY_HERO_OF_THE_VILLAGE_BUTCHER_GIFT = getTable("gameplay/hero_of_the_village/butcher_gift"); + + public static final LootTable GAMEPLAY_HERO_OF_THE_VILLAGE_CARTOGRAPHER_GIFT = getTable("gameplay/hero_of_the_village/cartographer_gift"); + + public static final LootTable GAMEPLAY_HERO_OF_THE_VILLAGE_CLERIC_GIFT = getTable("gameplay/hero_of_the_village/cleric_gift"); + + public static final LootTable GAMEPLAY_HERO_OF_THE_VILLAGE_FARMER_GIFT = getTable("gameplay/hero_of_the_village/farmer_gift"); + + public static final LootTable GAMEPLAY_HERO_OF_THE_VILLAGE_FISHERMAN_GIFT = getTable("gameplay/hero_of_the_village/fisherman_gift"); + + public static final LootTable GAMEPLAY_HERO_OF_THE_VILLAGE_FLETCHER_GIFT = getTable("gameplay/hero_of_the_village/fletcher_gift"); + + public static final LootTable GAMEPLAY_HERO_OF_THE_VILLAGE_LEATHERWORKER_GIFT = getTable("gameplay/hero_of_the_village/leatherworker_gift"); + + public static final LootTable GAMEPLAY_HERO_OF_THE_VILLAGE_LIBRARIAN_GIFT = getTable("gameplay/hero_of_the_village/librarian_gift"); + + public static final LootTable GAMEPLAY_HERO_OF_THE_VILLAGE_MASON_GIFT = getTable("gameplay/hero_of_the_village/mason_gift"); + + public static final LootTable GAMEPLAY_HERO_OF_THE_VILLAGE_SHEPHERD_GIFT = getTable("gameplay/hero_of_the_village/shepherd_gift"); + + public static final LootTable GAMEPLAY_HERO_OF_THE_VILLAGE_TOOLSMITH_GIFT = getTable("gameplay/hero_of_the_village/toolsmith_gift"); + + public static final LootTable GAMEPLAY_HERO_OF_THE_VILLAGE_UNEMPLOYED_GIFT = getTable("gameplay/hero_of_the_village/unemployed_gift"); + + public static final LootTable GAMEPLAY_HERO_OF_THE_VILLAGE_WEAPONSMITH_GIFT = getTable("gameplay/hero_of_the_village/weaponsmith_gift"); + + public static final LootTable GAMEPLAY_PANDA_SNEEZE = getTable("gameplay/panda_sneeze"); + + public static final LootTable GAMEPLAY_PIGLIN_BARTERING = getTable("gameplay/piglin_bartering"); + + public static final LootTable GAMEPLAY_SNIFFER_DIGGING = getTable("gameplay/sniffer_digging"); + + public static final LootTable GAMEPLAY_TURTLE_GROW = getTable("gameplay/turtle_grow"); + + public static final LootTable HARVEST_BEEHIVE = getTable("harvest/beehive"); + + public static final LootTable HARVEST_CAVE_VINE = getTable("harvest/cave_vine"); + + public static final LootTable HARVEST_SWEET_BERRY_BUSH = getTable("harvest/sweet_berry_bush"); + + public static final LootTable POTS_TRIAL_CHAMBERS_CORRIDOR = getTable("pots/trial_chambers/corridor"); + + public static final LootTable SHEARING_BOGGED = getTable("shearing/bogged"); + + public static final LootTable SHEARING_MOOSHROOM = getTable("shearing/mooshroom"); + + public static final LootTable SHEARING_MOOSHROOM_BROWN = getTable("shearing/mooshroom/brown"); + + public static final LootTable SHEARING_MOOSHROOM_RED = getTable("shearing/mooshroom/red"); + + public static final LootTable SHEARING_SHEEP = getTable("shearing/sheep"); + + public static final LootTable SHEARING_SHEEP_BLACK = getTable("shearing/sheep/black"); + + public static final LootTable SHEARING_SHEEP_BLUE = getTable("shearing/sheep/blue"); + + public static final LootTable SHEARING_SHEEP_BROWN = getTable("shearing/sheep/brown"); + + public static final LootTable SHEARING_SHEEP_CYAN = getTable("shearing/sheep/cyan"); + + public static final LootTable SHEARING_SHEEP_GRAY = getTable("shearing/sheep/gray"); + + public static final LootTable SHEARING_SHEEP_GREEN = getTable("shearing/sheep/green"); + + public static final LootTable SHEARING_SHEEP_LIGHT_BLUE = getTable("shearing/sheep/light_blue"); + + public static final LootTable SHEARING_SHEEP_LIGHT_GRAY = getTable("shearing/sheep/light_gray"); + + public static final LootTable SHEARING_SHEEP_LIME = getTable("shearing/sheep/lime"); + + public static final LootTable SHEARING_SHEEP_MAGENTA = getTable("shearing/sheep/magenta"); + + public static final LootTable SHEARING_SHEEP_ORANGE = getTable("shearing/sheep/orange"); + + public static final LootTable SHEARING_SHEEP_PINK = getTable("shearing/sheep/pink"); + + public static final LootTable SHEARING_SHEEP_PURPLE = getTable("shearing/sheep/purple"); + + public static final LootTable SHEARING_SHEEP_RED = getTable("shearing/sheep/red"); + + public static final LootTable SHEARING_SHEEP_WHITE = getTable("shearing/sheep/white"); + + public static final LootTable SHEARING_SHEEP_YELLOW = getTable("shearing/sheep/yellow"); + + public static final LootTable SHEARING_SNOW_GOLEM = getTable("shearing/snow_golem"); + + public static final LootTable SPAWNERS_OMINOUS_TRIAL_CHAMBER_CONSUMABLES = getTable("spawners/ominous/trial_chamber/consumables"); + + public static final LootTable SPAWNERS_OMINOUS_TRIAL_CHAMBER_KEY = getTable("spawners/ominous/trial_chamber/key"); + + public static final LootTable SPAWNERS_TRIAL_CHAMBER_CONSUMABLES = getTable("spawners/trial_chamber/consumables"); + + public static final LootTable SPAWNERS_TRIAL_CHAMBER_ITEMS_TO_DROP_WHEN_OMINOUS = getTable("spawners/trial_chamber/items_to_drop_when_ominous"); + + public static final LootTable SPAWNERS_TRIAL_CHAMBER_KEY = getTable("spawners/trial_chamber/key"); + // End generate - LootTables + + private static LootTable getTable(final @KeyPattern.Value String key) { + return RegistryAccess.registryAccess().getRegistry(RegistryKey.LOOT_TABLE).getOrThrow(Key.key(Key.MINECRAFT_NAMESPACE, key)); + } + + private LootTables() { + } +} diff --git a/paper-api/src/main/java/org/bukkit/Bukkit.java b/paper-api/src/main/java/org/bukkit/Bukkit.java index 14d81c7b138e..d52b42f1b5ba 100644 --- a/paper-api/src/main/java/org/bukkit/Bukkit.java +++ b/paper-api/src/main/java/org/bukkit/Bukkit.java @@ -15,6 +15,8 @@ import java.util.function.Consumer; import java.util.logging.Logger; import io.papermc.paper.configuration.ServerConfiguration; +import io.papermc.paper.registry.RegistryAccess; +import io.papermc.paper.registry.RegistryKey; import net.kyori.adventure.text.Component; import org.bukkit.Warning.WarningState; import org.bukkit.advancement.Advancement; @@ -2575,8 +2577,10 @@ public static Iterable> getTags(@NotNull String registr * * @param key the name of the LootTable * @return the LootTable, or null if no LootTable is found with that name + * @deprecated loot table is now a proper registry, use {@link RegistryAccess#getRegistry(RegistryKey)} with {@link RegistryKey#LOOT_TABLE} */ @Nullable + @Deprecated(since = "1.21.11") public static LootTable getLootTable(@NotNull NamespacedKey key) { return server.getLootTable(key); } diff --git a/paper-api/src/main/java/org/bukkit/Registry.java b/paper-api/src/main/java/org/bukkit/Registry.java index 0859653089ac..3b60a7d9bedd 100644 --- a/paper-api/src/main/java/org/bukkit/Registry.java +++ b/paper-api/src/main/java/org/bukkit/Registry.java @@ -183,7 +183,9 @@ public Iterator iterator() { * Default server loot tables. * * @see LootTables + * @deprecated use {@link RegistryAccess#getRegistry(RegistryKey)} with {@link RegistryKey#LOOT_TABLE} */ + @Deprecated(since = "1.21.11") Registry LOOT_TABLES = new SimpleRegistry<>(LootTables.class); /** * Server materials. diff --git a/paper-api/src/main/java/org/bukkit/Server.java b/paper-api/src/main/java/org/bukkit/Server.java index 0ec885b97d65..82b34fec3102 100644 --- a/paper-api/src/main/java/org/bukkit/Server.java +++ b/paper-api/src/main/java/org/bukkit/Server.java @@ -15,6 +15,8 @@ import java.util.function.Consumer; import java.util.logging.Logger; import io.papermc.paper.configuration.ServerConfiguration; +import io.papermc.paper.registry.RegistryAccess; +import io.papermc.paper.registry.RegistryKey; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; @@ -2304,8 +2306,10 @@ default int getAmbientSpawnLimit() { * * @param key the name of the LootTable * @return the LootTable, or null if no LootTable is found with that name + * @deprecated loot table is now a proper registry, use {@link RegistryAccess#getRegistry(RegistryKey)} with {@link RegistryKey#LOOT_TABLE} */ @Nullable + @Deprecated(since = "1.21.11") LootTable getLootTable(@NotNull NamespacedKey key); /** diff --git a/paper-api/src/main/java/org/bukkit/block/BlockType.java b/paper-api/src/main/java/org/bukkit/block/BlockType.java index dc2d24162deb..fded9a9c2c35 100644 --- a/paper-api/src/main/java/org/bukkit/block/BlockType.java +++ b/paper-api/src/main/java/org/bukkit/block/BlockType.java @@ -124,6 +124,7 @@ import org.bukkit.block.data.type.WallSign; import org.bukkit.block.data.type.WallSkull; import org.bukkit.inventory.ItemType; +import org.bukkit.loot.LootTable; import org.jetbrains.annotations.Unmodifiable; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @@ -2744,4 +2745,11 @@ private static B getBlockType(@KeyPattern.Value final Stri * @return false if this block never has collision, true if it might have collision */ boolean hasCollision(); + + /** + * Gets the associated loot table if defined + * + * @return the loot table associated + */ + @Nullable LootTable getLootTable(); } diff --git a/paper-api/src/main/java/org/bukkit/loot/LootTables.java b/paper-api/src/main/java/org/bukkit/loot/LootTables.java index 8c46b53ca1dc..a5ec74fd2a5d 100644 --- a/paper-api/src/main/java/org/bukkit/loot/LootTables.java +++ b/paper-api/src/main/java/org/bukkit/loot/LootTables.java @@ -12,7 +12,10 @@ * See the * * Minecraft Wiki for more information on loot tables. + * + * @deprecated loot table is now a proper registry, see {@link io.papermc.paper.world.LootTables} */ +@Deprecated(since = "1.21.11") public enum LootTables implements Keyed { // Chests/Dispensers - treasure chests diff --git a/paper-generator/build.gradle.kts b/paper-generator/build.gradle.kts index d305a18dc35e..54275535a15e 100644 --- a/paper-generator/build.gradle.kts +++ b/paper-generator/build.gradle.kts @@ -35,7 +35,6 @@ dependencies { val gameVersion = providers.gradleProperty("mcVersion") val rewriteApi = tasks.registerGenerationTask("rewriteApi", true, "api", { - bootstrapTags = true sourceSet = rootProject.layout.projectDirectory.dir("paper-api") }) { description = "Rewrite existing API classes" @@ -58,7 +57,6 @@ tasks.register("rewrite") { val generateApi = tasks.registerGenerationTask("generateApi", false, "api", { - bootstrapTags = true sourceSet = rootProject.layout.projectDirectory.dir("paper-api") }) { description = "Generate new API classes" @@ -126,10 +124,10 @@ abstract class GenerationArgumentProvider : CommandLineArgumentProvider { @get:Input @get:Optional - abstract val bootstrapTags: Property + abstract val bootstrapResources: Property init { - bootstrapTags.convention(false) + bootstrapResources.convention(true) } override fun asArguments(): Iterable { @@ -143,8 +141,8 @@ abstract class GenerationArgumentProvider : CommandLineArgumentProvider { args.add("--rewrite") } - if (bootstrapTags.get()) { - args.add("--bootstrap-tags") + if (bootstrapResources.get()) { + args.add("--bootstrap-resources") } return args.toList() } diff --git a/paper-generator/src/main/java/io/papermc/generator/Main.java b/paper-generator/src/main/java/io/papermc/generator/Main.java index 3a1ab1537111..1cf51f3b4671 100644 --- a/paper-generator/src/main/java/io/papermc/generator/Main.java +++ b/paper-generator/src/main/java/io/papermc/generator/Main.java @@ -4,6 +4,7 @@ import io.papermc.generator.rewriter.registration.PaperPatternSourceSetRewriter; import io.papermc.generator.rewriter.registration.PatternSourceSetRewriter; import io.papermc.generator.types.SourceGenerator; +import io.papermc.generator.utils.MergedRegistryProvider; import io.papermc.generator.utils.experimental.ExperimentalCollector; import java.io.IOException; import java.nio.file.Files; @@ -17,6 +18,7 @@ import java.util.function.Consumer; import java.util.stream.Stream; import net.minecraft.SharedConstants; +import net.minecraft.core.registries.Registries; import net.minecraft.util.Util; import net.minecraft.commands.Commands; import net.minecraft.core.HolderLookup; @@ -64,15 +66,15 @@ public class Main implements Callable { @CommandLine.Option(names = {"--side"}, required = true) String side; - @CommandLine.Option(names = {"--bootstrap-tags"}) - boolean tagBootstrap; + @CommandLine.Option(names = {"--bootstrap-resources"}) + boolean loadResources; private static final Logger LOGGER = LogUtils.getLogger(); - public static RegistryAccess.@MonotonicNonNull Frozen REGISTRY_ACCESS; + public static HolderLookup.Provider REGISTRIES; public static @MonotonicNonNull Map, String> EXPERIMENTAL_TAGS; - public static CompletableFuture bootStrap(boolean withTags) { + public static CompletableFuture bootStrap(boolean withResources) { SharedConstants.tryDetectVersion(); Bootstrap.bootStrap(); Bootstrap.validate(); @@ -90,8 +92,8 @@ public static CompletableFuture bootStrap(boolean withTags) { List> staticAndWorldgenLookups = Stream.concat(worldGenLayer.stream(), frozenWorldgenRegistries.listRegistries()).toList(); RegistryAccess.Frozen dimensionRegistries = RegistryDataLoader.load(resourceManager, staticAndWorldgenLookups, RegistryDataLoader.DIMENSION_REGISTRIES); layers = layers.replaceFrom(RegistryLayer.DIMENSIONS, dimensionRegistries); - REGISTRY_ACCESS = layers.compositeAccess().freeze(); - if (withTags) { + REGISTRIES = layers.compositeAccess().freeze(); + if (withResources) { return ReloadableServerResources.loadResources( resourceManager, layers, @@ -107,6 +109,7 @@ public static CompletableFuture bootStrap(boolean withTags) { } }).thenAccept(resources -> { resources.updateStaticRegistryTags(); + REGISTRIES = new MergedRegistryProvider(REGISTRIES, resources.fullRegistries().lookup(), Set.of(Registries.LOOT_TABLE)); EXPERIMENTAL_TAGS = ExperimentalCollector.collectTags(resourceManager); }); } else { @@ -117,7 +120,7 @@ public static CompletableFuture bootStrap(boolean withTags) { @Override public Integer call() { - bootStrap(this.tagBootstrap).join(); + bootStrap(this.loadResources).join(); try { if (this.isRewrite) { diff --git a/paper-generator/src/main/java/io/papermc/generator/Rewriters.java b/paper-generator/src/main/java/io/papermc/generator/Rewriters.java index 6a337d533bff..d5a1d49c0910 100644 --- a/paper-generator/src/main/java/io/papermc/generator/Rewriters.java +++ b/paper-generator/src/main/java/io/papermc/generator/Rewriters.java @@ -26,6 +26,7 @@ import io.papermc.paper.datacomponent.item.SwingAnimation; import io.papermc.paper.datacomponent.item.consumable.ItemUseAnimation; import io.papermc.paper.dialog.Dialog; +import io.papermc.paper.world.LootTables; import io.papermc.paper.world.WeatheringCopperState; import io.papermc.typewriter.preset.EnumCloneRewriter; import io.papermc.typewriter.preset.model.EnumValue; @@ -223,6 +224,7 @@ protected String rewriteFieldType(Holder.Reference(Registries.PIG_VARIANT, "getVariant")) .register("ZombieNautilusVariant", ZombieNautilus.Variant.class, new RegistryFieldRewriter<>(Registries.ZOMBIE_NAUTILUS_VARIANT, "getVariant")) .register("Dialog", Dialog.class, new RegistryFieldRewriter<>(Registries.DIALOG, "getDialog")) + .register("LootTables", LootTables.class, new RegistryFieldRewriter<>(Registries.LOOT_TABLE, "getTable")) .register("MemoryKey", MemoryKey.class, new MemoryKeyRewriter()) // .register("ItemType", org.bukkit.inventory.ItemType.class, new io.papermc.generator.rewriter.types.simple.ItemTypeRewriter()) - disable for now, lynx want the generic type .register("BlockType", BlockType.class, new BlockTypeRewriter()) diff --git a/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java b/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java index 0a9f1e9a68f7..ce1ddb48b645 100644 --- a/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java +++ b/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java @@ -68,6 +68,7 @@ import net.minecraft.world.level.levelgen.structure.BuiltinStructures; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.saveddata.maps.MapDecorationTypes; +import net.minecraft.world.level.storage.loot.BuiltInLootTables; import org.bukkit.Art; import org.bukkit.Fluid; import org.bukkit.GameEvent; @@ -99,6 +100,7 @@ import org.bukkit.inventory.MenuType; import org.bukkit.inventory.meta.trim.TrimMaterial; import org.bukkit.inventory.meta.trim.TrimPattern; +import org.bukkit.loot.LootTable; import org.bukkit.map.MapCursor; import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionType; @@ -192,7 +194,8 @@ private static RegistryEntry inconsistentEntry(ResourceKey> API_ONLY = List.of( diff --git a/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntry.java b/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntry.java index bc10758cbb3c..991d828e8e86 100644 --- a/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntry.java +++ b/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntry.java @@ -14,6 +14,7 @@ import java.util.function.Function; import javax.lang.model.SourceVersion; import net.minecraft.core.Holder; +import net.minecraft.core.HolderLookup; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; import org.bukkit.Keyed; @@ -59,8 +60,8 @@ public ResourceKey> registryKey() { return this.registryKey; } - public Registry registry() { - return Main.REGISTRY_ACCESS.lookupOrThrow(this.registryKey); + public HolderLookup.RegistryLookup registry() { + return Main.REGISTRIES.lookupOrThrow(this.registryKey); } public String registryKeyField() { @@ -180,7 +181,11 @@ public boolean allowCustomKeys() { } private Map, TO> getFields(Map, TO> map, Function transform) { - Registry registry = this.registry(); + HolderLookup.RegistryLookup lookup = this.registry(); + if (!(lookup instanceof Registry registry)) { + return map; + } + try { for (Field field : this.holderElementsClass.getDeclaredFields()) { if (!ResourceKey.class.isAssignableFrom(field.getType()) && !Holder.Reference.class.isAssignableFrom(field.getType()) && !this.elementClass.isAssignableFrom(field.getType())) { diff --git a/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/EnumRegistryRewriter.java b/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/EnumRegistryRewriter.java index 3b114d5f198a..c67e87c75557 100644 --- a/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/EnumRegistryRewriter.java +++ b/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/EnumRegistryRewriter.java @@ -11,6 +11,7 @@ import java.util.Map; import java.util.function.Supplier; import net.minecraft.core.Holder; +import net.minecraft.core.HolderLookup; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; import net.minecraft.world.flag.FeatureElement; @@ -25,7 +26,7 @@ @ApiStatus.Obsolete public class EnumRegistryRewriter extends EnumRewriter> { - private final Supplier> registry; + private final Supplier> registry; private final Supplier, SingleFlagHolder>> experimentalKeys; private final boolean isFilteredRegistry; private final boolean hasKeyArgument; @@ -35,7 +36,7 @@ public EnumRegistryRewriter(ResourceKey> registryKey) { } protected EnumRegistryRewriter(ResourceKey> registryKey, boolean hasKeyArgument) { - this.registry = Suppliers.memoize(() -> Main.REGISTRY_ACCESS.lookupOrThrow(registryKey)); + this.registry = Suppliers.memoize(() -> Main.REGISTRIES.lookupOrThrow(registryKey)); this.experimentalKeys = Suppliers.memoize(() -> ExperimentalCollector.collectDataDrivenElementIds(this.registry.get())); this.isFilteredRegistry = FeatureElement.FILTERED_REGISTRIES.contains(registryKey); this.hasKeyArgument = hasKeyArgument; diff --git a/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/RegistryFieldRewriter.java b/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/RegistryFieldRewriter.java index c258717d961e..90896875db1e 100644 --- a/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/RegistryFieldRewriter.java +++ b/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/RegistryFieldRewriter.java @@ -19,6 +19,7 @@ import java.util.Objects; import java.util.function.Supplier; import net.minecraft.core.Holder; +import net.minecraft.core.HolderLookup; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; import net.minecraft.world.flag.FeatureElement; @@ -71,7 +72,7 @@ public boolean registerFor(SourceFile file) { @Override protected void insert(SearchMetadata metadata, StringBuilder builder) { boolean isInterface = Objects.requireNonNull(this.fieldClass.knownClass()).isInterface(); - Registry registry = this.registryEntry.registry(); + HolderLookup.RegistryLookup registry = this.registryEntry.registry(); this.experimentalKeys = Suppliers.memoize(() -> ExperimentalCollector.collectDataDrivenElementIds(registry)); Iterator> referenceIterator = registry.listElements().filter(this::canPrintField).sorted(this.comparator()).iterator(); diff --git a/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/RegistryTagRewriter.java b/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/RegistryTagRewriter.java index 99c99efe80a7..86caa375cb1b 100644 --- a/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/RegistryTagRewriter.java +++ b/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/RegistryTagRewriter.java @@ -11,6 +11,7 @@ import io.papermc.typewriter.replace.SearchMetadata; import io.papermc.typewriter.replace.SearchReplaceRewriter; import java.util.Iterator; +import net.minecraft.core.HolderLookup; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; import net.minecraft.tags.TagKey; @@ -56,7 +57,7 @@ public boolean registerFor(SourceFile file) { @Override protected void insert(SearchMetadata metadata, StringBuilder builder) { - Registry registry = Main.REGISTRY_ACCESS.lookupOrThrow(this.registryKey); + HolderLookup.RegistryLookup registry = Main.REGISTRIES.lookupOrThrow(this.registryKey); Iterator> keyIterator = registry.listTagIds().sorted(Formatting.TAG_ORDER).iterator(); while (keyIterator.hasNext()) { diff --git a/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/TagRewriter.java b/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/TagRewriter.java index 6bfc438ac8e9..db33f92a2552 100644 --- a/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/TagRewriter.java +++ b/paper-generator/src/main/java/io/papermc/generator/rewriter/types/registry/TagRewriter.java @@ -8,6 +8,7 @@ import io.papermc.typewriter.replace.SearchReplaceRewriter; import java.util.Iterator; import java.util.Locale; +import net.minecraft.core.HolderLookup; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; @@ -46,7 +47,7 @@ protected void insert(SearchMetadata metadata, StringBuilder builder) { final TagRegistry tagRegistry = SUPPORTED_REGISTRIES[i]; final ResourceKey> registryKey = tagRegistry.registryKey(); - final Registry registry = Main.REGISTRY_ACCESS.lookupOrThrow(registryKey); + final HolderLookup.RegistryLookup registry = Main.REGISTRIES.lookupOrThrow(registryKey); final String fieldPrefix = Formatting.formatTagFieldPrefix(tagRegistry.legacyFolderName(), registryKey); final String registryFieldName = "REGISTRY_" + tagRegistry.legacyFolderName().toUpperCase(Locale.ENGLISH); diff --git a/paper-generator/src/main/java/io/papermc/generator/utils/MergedRegistryProvider.java b/paper-generator/src/main/java/io/papermc/generator/utils/MergedRegistryProvider.java new file mode 100644 index 000000000000..70ad5b9498d3 --- /dev/null +++ b/paper-generator/src/main/java/io/papermc/generator/utils/MergedRegistryProvider.java @@ -0,0 +1,25 @@ +package io.papermc.generator.utils; + +import java.util.Optional; +import java.util.Set; +import java.util.stream.Stream; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; + +public record MergedRegistryProvider( + HolderLookup.Provider registryAccess, + HolderLookup.Provider reloadableProvider, + Set>> reloadableRegistries +) implements HolderLookup.Provider { + + @Override + public Stream>> listRegistryKeys() { + return Stream.concat(this.registryAccess.listRegistryKeys(), this.reloadableRegistries.stream()); + } + + @Override + public Optional> lookup(ResourceKey> registryKey) { + return this.reloadableRegistries.contains(registryKey) ? this.reloadableProvider.lookup(registryKey) : this.registryAccess.lookup(registryKey); + } +} diff --git a/paper-generator/src/main/java/io/papermc/generator/utils/experimental/CollectingContext.java b/paper-generator/src/main/java/io/papermc/generator/utils/experimental/CollectingContext.java index c360dc6fafe2..a369f722d29b 100644 --- a/paper-generator/src/main/java/io/papermc/generator/utils/experimental/CollectingContext.java +++ b/paper-generator/src/main/java/io/papermc/generator/utils/experimental/CollectingContext.java @@ -5,6 +5,7 @@ import java.util.Set; import net.minecraft.core.Holder; import net.minecraft.core.HolderGetter; +import net.minecraft.core.HolderLookup; import net.minecraft.core.Registry; import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; @@ -12,7 +13,7 @@ @NullMarked public record CollectingContext(Set> registered, - Registry registry) implements BootstrapContext { + HolderLookup.RegistryLookup registry) implements BootstrapContext { @Override public Holder.Reference register(ResourceKey key, T value, Lifecycle lifecycle) { @@ -22,6 +23,6 @@ public Holder.Reference register(ResourceKey key, T value, Lifecycle lifec @Override public HolderGetter lookup(ResourceKey> key) { - return Main.REGISTRY_ACCESS.lookupOrThrow(key); + return Main.REGISTRIES.lookupOrThrow(key); } } diff --git a/paper-generator/src/main/java/io/papermc/generator/utils/experimental/ExperimentalCollector.java b/paper-generator/src/main/java/io/papermc/generator/utils/experimental/ExperimentalCollector.java index 9e17f6a16d0c..d268e7f37d71 100644 --- a/paper-generator/src/main/java/io/papermc/generator/utils/experimental/ExperimentalCollector.java +++ b/paper-generator/src/main/java/io/papermc/generator/utils/experimental/ExperimentalCollector.java @@ -3,7 +3,8 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.mojang.logging.LogUtils; -import io.papermc.generator.Main; +import io.papermc.generator.registry.RegistryEntries; +import io.papermc.generator.registry.RegistryEntry; import io.papermc.generator.utils.Formatting; import java.util.Collection; import java.util.Collections; @@ -12,8 +13,8 @@ import java.util.Set; import java.util.function.BiConsumer; import java.util.stream.Collectors; +import net.minecraft.core.HolderLookup; import net.minecraft.core.Registry; -import net.minecraft.core.RegistryAccess; import net.minecraft.core.RegistrySetBuilder; import net.minecraft.core.registries.Registries; import net.minecraft.data.registries.TradeRebalanceRegistries; @@ -52,7 +53,7 @@ public final class ExperimentalCollector { } @SuppressWarnings("unchecked") - public static Map, SingleFlagHolder> collectDataDrivenElementIds(Registry registry) { + public static Map, SingleFlagHolder> collectDataDrivenElementIds(HolderLookup.RegistryLookup registry) { Collection>> experimentalEntries = EXPERIMENTAL_REGISTRY_ENTRIES.get(registry.key()); if (experimentalEntries.isEmpty()) { return Collections.emptyMap(); @@ -88,7 +89,7 @@ public static Map, String> collectTags(ResourceManager resourceManager .filter(packResources -> packResources.packId().equals(BuiltInPackSource.VANILLA_ID)) .findFirst() .orElseThrow(); - collectTagsFromPack(vanillaPack, (entry, path) -> vanillaTags.put(entry.key(), path)); + collectTagsFromPack(vanillaPack, (entry, path) -> vanillaTags.put(entry.registryKey(), path)); // then distinct with other data-pack tags to know for sure newly created tags and so experimental one resourceManager.listPacks().forEach(pack -> { @@ -96,11 +97,11 @@ public static Map, String> collectTags(ResourceManager resourceManager if (packId.equals(BuiltInPackSource.VANILLA_ID)) return; collectTagsFromPack(pack, (entry, path) -> { - if (vanillaTags.get(entry.key()).contains(path)) { + if (vanillaTags.get(entry.registryKey()).contains(path)) { return; } - result.put(entry.value().listTagIds() + result.put(entry.registry().listTagIds() .filter(tagKey -> tagKey.location().getPath().equals(path)) .findFirst() .orElseThrow(), packId); @@ -109,15 +110,15 @@ public static Map, String> collectTags(ResourceManager resourceManager return Collections.unmodifiableMap(result); } - private static void collectTagsFromPack(PackResources pack, BiConsumer, String> output) { + private static void collectTagsFromPack(PackResources pack, BiConsumer, String> output) { Set namespaces = pack.getNamespaces(PackType.SERVER_DATA); for (String namespace : namespaces) { - Main.REGISTRY_ACCESS.registries().forEach(entry -> { + RegistryEntries.BY_REGISTRY_KEY.values().forEach(entry -> { // this is probably expensive but can't find another way around and data-pack loader has similar logic // the issue is that registry key can have parent/key but tag key can also have parent/key so parsing become a mess // without having at least one of the two values - String tagDir = Registries.tagsDirPath(entry.key()); + String tagDir = Registries.tagsDirPath(entry.registryKey()); pack.listResources(PackType.SERVER_DATA, namespace, tagDir, (id, supplier) -> { Formatting.formatTagKey(tagDir, id.getPath()).ifPresentOrElse(path -> output.accept(entry, path), () -> { LOGGER.warn("Unable to parse the path: {}/{}/{}.json in the data-pack {} into a tag key", namespace, tagDir, id.getPath(), pack.packId()); diff --git a/paper-server/patches/sources/net/minecraft/world/level/block/entity/JukeboxBlockEntity.java.patch b/paper-server/patches/sources/net/minecraft/world/level/block/entity/JukeboxBlockEntity.java.patch index 004ae297513a..686e3ce84123 100644 --- a/paper-server/patches/sources/net/minecraft/world/level/block/entity/JukeboxBlockEntity.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/level/block/entity/JukeboxBlockEntity.java.patch @@ -65,7 +65,7 @@ - .ifPresent(holder -> this.jukeboxSongPlayer.setSongWithoutPlaying((Holder)holder, 0L)); - this.level.updateNeighborsAt(this.getBlockPos(), this.getBlockState().getBlock()); + this.jukeboxSongPlayer.song = null; // CraftBukkit - reset -+ JukeboxSong.fromStack(this.level != null ? this.level.registryAccess() : org.bukkit.craftbukkit.CraftRegistry.getMinecraftRegistry(), stack) // Paper - fallback to other RegistryAccess if no level ++ JukeboxSong.fromStack(this.level != null ? this.level.registryAccess() : org.bukkit.craftbukkit.CraftRegistry.getRegistryAccess(), stack) // Paper - fallback to other RegistryAccess if no level + .ifPresent(holder -> this.jukeboxSongPlayer.setSongWithoutPlaying((Holder)holder, ticksSinceSongStarted)); // CraftBukkit - passed ticks since song started + // CraftBukkit start - add null check for level + if (this.level != null) { diff --git a/paper-server/patches/sources/net/minecraft/world/level/levelgen/structure/StructurePiece.java.patch b/paper-server/patches/sources/net/minecraft/world/level/levelgen/structure/StructurePiece.java.patch index 7921171a285f..735b79ecd762 100644 --- a/paper-server/patches/sources/net/minecraft/world/level/levelgen/structure/StructurePiece.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/level/levelgen/structure/StructurePiece.java.patch @@ -77,7 +77,7 @@ + // ((ChestBlockEntity)blockEntity).setLootTable(lootTable, random.nextLong()); + // } + org.bukkit.craftbukkit.block.CraftChest chestState = (org.bukkit.craftbukkit.block.CraftChest) org.bukkit.craftbukkit.block.CraftBlockStates.getBlockState(level, pos, state, null); -+ chestState.setLootTable(org.bukkit.craftbukkit.CraftLootTable.minecraftToBukkit(lootTable)); ++ chestState.setLootTable(org.bukkit.craftbukkit.CraftLootTable.minecraftKeyToBukkit(lootTable)); + chestState.setSeed(random.nextLong()); + this.placeCraftBlockEntity(level, pos, chestState, Block.UPDATE_CLIENTS); + // CraftBukkit end @@ -111,7 +111,7 @@ + } + + org.bukkit.craftbukkit.block.CraftDispenser dispenserState = (org.bukkit.craftbukkit.block.CraftDispenser) org.bukkit.craftbukkit.block.CraftBlockStates.getBlockState(level, worldPos, dispenserBlockState, null); -+ dispenserState.setLootTable(org.bukkit.craftbukkit.CraftLootTable.minecraftToBukkit(lootTable)); ++ dispenserState.setLootTable(org.bukkit.craftbukkit.CraftLootTable.minecraftKeyToBukkit(lootTable)); + dispenserState.setSeed(random.nextLong()); + this.placeCraftBlockEntity(level, worldPos, dispenserState, Block.UPDATE_CLIENTS); + // CraftBukkit end diff --git a/paper-server/patches/sources/net/minecraft/world/level/levelgen/structure/structures/DesertPyramidStructure.java.patch b/paper-server/patches/sources/net/minecraft/world/level/levelgen/structure/structures/DesertPyramidStructure.java.patch index 0d479c6f5e11..cf812922a355 100644 --- a/paper-server/patches/sources/net/minecraft/world/level/levelgen/structure/structures/DesertPyramidStructure.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/level/levelgen/structure/structures/DesertPyramidStructure.java.patch @@ -8,7 +8,7 @@ + if (worldGenLevel instanceof org.bukkit.craftbukkit.util.TransformerGeneratorAccess transformerAccess && transformerAccess.canTransformBlocks()) { + // todo never called cause it's called in afterPlace after the whole capture logic + org.bukkit.craftbukkit.block.CraftBrushableBlock brushableState = (org.bukkit.craftbukkit.block.CraftBrushableBlock) org.bukkit.craftbukkit.block.CraftBlockStates.getBlockState(worldGenLevel, pos, Blocks.SUSPICIOUS_SAND.defaultBlockState(), null); -+ brushableState.setLootTable(org.bukkit.craftbukkit.CraftLootTable.minecraftToBukkit(BuiltInLootTables.DESERT_PYRAMID_ARCHAEOLOGY)); ++ brushableState.setLootTable(org.bukkit.craftbukkit.CraftLootTable.minecraftKeyToBukkit(BuiltInLootTables.DESERT_PYRAMID_ARCHAEOLOGY)); + brushableState.setSeed(pos.asLong()); + transformerAccess.setCraftBlock(pos, brushableState, Block.UPDATE_CLIENTS); + return; diff --git a/paper-server/patches/sources/net/minecraft/world/level/levelgen/structure/structures/OceanRuinPieces.java.patch b/paper-server/patches/sources/net/minecraft/world/level/levelgen/structure/structures/OceanRuinPieces.java.patch index 75dc3003e1a4..add609fa41f3 100644 --- a/paper-server/patches/sources/net/minecraft/world/level/levelgen/structure/structures/OceanRuinPieces.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/level/levelgen/structure/structures/OceanRuinPieces.java.patch @@ -23,7 +23,7 @@ + // } + org.bukkit.craftbukkit.block.CraftChest craftChest = (org.bukkit.craftbukkit.block.CraftChest) org.bukkit.craftbukkit.block.CraftBlockStates.getBlockState(level, pos, Blocks.CHEST.defaultBlockState().setValue(ChestBlock.WATERLOGGED, level.getFluidState(pos).is(FluidTags.WATER)), null); + craftChest.setSeed(random.nextLong()); -+ craftChest.setLootTable(org.bukkit.craftbukkit.CraftLootTable.minecraftToBukkit(this.isLarge ? BuiltInLootTables.UNDERWATER_RUIN_BIG : BuiltInLootTables.UNDERWATER_RUIN_SMALL)); ++ craftChest.setLootTable(org.bukkit.craftbukkit.CraftLootTable.minecraftKeyToBukkit(this.isLarge ? BuiltInLootTables.UNDERWATER_RUIN_BIG : BuiltInLootTables.UNDERWATER_RUIN_SMALL)); + this.placeCraftBlockEntity(level, pos, craftChest, Block.UPDATE_CLIENTS); + // CraftBukkit end } else if ("drowned".equals(name)) { diff --git a/paper-server/patches/sources/net/minecraft/world/level/storage/loot/LootDataType.java.patch b/paper-server/patches/sources/net/minecraft/world/level/storage/loot/LootDataType.java.patch deleted file mode 100644 index 0b8df8cc19cd..000000000000 --- a/paper-server/patches/sources/net/minecraft/world/level/storage/loot/LootDataType.java.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/net/minecraft/world/level/storage/loot/LootDataType.java -+++ b/net/minecraft/world/level/storage/loot/LootDataType.java -@@ -32,9 +_,14 @@ - } - - private static LootDataType.Validator createLootTableValidator() { -- return (context, key, value) -> value.validate( -- context.setContextKeySet(value.getParamSet()).enterElement(new ProblemReporter.RootElementPathElement(key), key) -- ); -+ // CraftBukkit start -+ return (context, key, value) -> { -+ value.validate( -+ context.setContextKeySet(value.getParamSet()).enterElement(new ProblemReporter.RootElementPathElement(key), key) -+ ); -+ value.craftLootTable = new org.bukkit.craftbukkit.CraftLootTable(org.bukkit.craftbukkit.util.CraftNamespacedKey.fromMinecraft(key.identifier()), value); -+ // CraftBukkit end -+ }; - } - - @FunctionalInterface diff --git a/paper-server/patches/sources/net/minecraft/world/level/storage/loot/LootTable.java.patch b/paper-server/patches/sources/net/minecraft/world/level/storage/loot/LootTable.java.patch index 3e2647744fbb..5437a4bf971a 100644 --- a/paper-server/patches/sources/net/minecraft/world/level/storage/loot/LootTable.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/level/storage/loot/LootTable.java.patch @@ -1,13 +1,5 @@ --- a/net/minecraft/world/level/storage/loot/LootTable.java +++ b/net/minecraft/world/level/storage/loot/LootTable.java -@@ -53,6 +_,7 @@ - private final List pools; - private final List functions; - private final BiFunction compositeFunction; -+ public org.bukkit.craftbukkit.CraftLootTable craftLootTable; // CraftBukkit - - LootTable(ContextKeySet paramSet, Optional randomSequence, List pools, List functions) { - this.paramSet = paramSet; @@ -63,9 +_,10 @@ } diff --git a/paper-server/src/main/java/com/destroystokyo/paper/loottable/PaperLootableBlock.java b/paper-server/src/main/java/com/destroystokyo/paper/loottable/PaperLootableBlock.java index 9e9ea1323470..7d037808da63 100644 --- a/paper-server/src/main/java/com/destroystokyo/paper/loottable/PaperLootableBlock.java +++ b/paper-server/src/main/java/com/destroystokyo/paper/loottable/PaperLootableBlock.java @@ -12,12 +12,12 @@ public interface PaperLootableBlock extends PaperLootable { /* Lootable */ @Override default @Nullable LootTable getLootTable() { - return CraftLootTable.minecraftToBukkit(this.getRandomizableContainer().getLootTable()); + return CraftLootTable.minecraftKeyToBukkit(this.getRandomizableContainer().getLootTable()); } @Override default void setLootTable(final @Nullable LootTable table, final long seed) { - this.getRandomizableContainer().setLootTable(CraftLootTable.bukkitToMinecraft(table), seed); + this.getRandomizableContainer().setLootTable(CraftLootTable.bukkitToMinecraftKey(table), seed); } @Override diff --git a/paper-server/src/main/java/com/destroystokyo/paper/loottable/PaperLootableEntity.java b/paper-server/src/main/java/com/destroystokyo/paper/loottable/PaperLootableEntity.java index d933054535c8..24057198d869 100644 --- a/paper-server/src/main/java/com/destroystokyo/paper/loottable/PaperLootableEntity.java +++ b/paper-server/src/main/java/com/destroystokyo/paper/loottable/PaperLootableEntity.java @@ -13,12 +13,12 @@ public interface PaperLootableEntity extends Lootable { /* Lootable */ @Override default @Nullable LootTable getLootTable() { - return CraftLootTable.minecraftToBukkit(this.getHandle().getContainerLootTable()); + return CraftLootTable.minecraftKeyToBukkit(this.getHandle().getContainerLootTable()); } @Override default void setLootTable(final @Nullable LootTable table, final long seed) { - this.getHandle().setContainerLootTable(CraftLootTable.bukkitToMinecraft(table)); + this.getHandle().setContainerLootTable(CraftLootTable.bukkitToMinecraftKey(table)); this.getHandle().setContainerLootTableSeed(seed); } diff --git a/paper-server/src/main/java/io/papermc/paper/adventure/PaperAdventure.java b/paper-server/src/main/java/io/papermc/paper/adventure/PaperAdventure.java index 8cd1ea370dd4..5033da060930 100644 --- a/paper-server/src/main/java/io/papermc/paper/adventure/PaperAdventure.java +++ b/paper-server/src/main/java/io/papermc/paper/adventure/PaperAdventure.java @@ -134,7 +134,7 @@ public final class PaperAdventure { return decoded.toString(); } }; - public static final ComponentSerializer WRAPPER_AWARE_SERIALIZER = new WrapperAwareSerializer(() -> CraftRegistry.getMinecraftRegistry().createSerializationContext(JavaOps.INSTANCE)); + public static final ComponentSerializer WRAPPER_AWARE_SERIALIZER = new WrapperAwareSerializer(() -> CraftRegistry.getRegistryAccess().createSerializationContext(JavaOps.INSTANCE)); private PaperAdventure() { } @@ -423,7 +423,7 @@ public record DataComponentValueImpl(com.mojang.serialization.Codec codec, @Override public @NotNull BinaryTagHolder asBinaryTag() { - return BinaryTagHolder.encode(this.codec.encodeStart(CraftRegistry.getMinecraftRegistry().createSerializationContext(NbtOps.INSTANCE), this.value).getOrThrow(IllegalArgumentException::new), NBT_CODEC); + return BinaryTagHolder.encode(this.codec.encodeStart(CraftRegistry.getRegistryAccess().createSerializationContext(NbtOps.INSTANCE), this.value).getOrThrow(IllegalArgumentException::new), NBT_CODEC); } } @@ -451,7 +451,7 @@ public record DataComponentValueImpl(com.mojang.serialization.Codec codec, // Style public static net.minecraft.network.chat.Style asVanilla(final Style style) { - final RegistryOps ops = CraftRegistry.getMinecraftRegistry().createSerializationContext(JavaOps.INSTANCE); + final RegistryOps ops = CraftRegistry.getRegistryAccess().createSerializationContext(JavaOps.INSTANCE); final Object encoded = AdventureCodecs.STYLE_MAP_CODEC.codec() .encodeStart(ops, style).getOrThrow(IllegalStateException::new); @@ -460,7 +460,7 @@ public static net.minecraft.network.chat.Style asVanilla(final Style style) { } public static Style asAdventure(final net.minecraft.network.chat.Style style) { - final RegistryOps ops = CraftRegistry.getMinecraftRegistry().createSerializationContext(JavaOps.INSTANCE); + final RegistryOps ops = CraftRegistry.getRegistryAccess().createSerializationContext(JavaOps.INSTANCE); final Object encoded = net.minecraft.network.chat.Style.Serializer.CODEC .encodeStart(ops, style).getOrThrow(IllegalStateException::new); diff --git a/paper-server/src/main/java/io/papermc/paper/adventure/providers/DataComponentValueConverterProviderImpl.java b/paper-server/src/main/java/io/papermc/paper/adventure/providers/DataComponentValueConverterProviderImpl.java index cfd146de4213..0cdf359cb3ef 100644 --- a/paper-server/src/main/java/io/papermc/paper/adventure/providers/DataComponentValueConverterProviderImpl.java +++ b/paper-server/src/main/java/io/papermc/paper/adventure/providers/DataComponentValueConverterProviderImpl.java @@ -34,7 +34,7 @@ public Key id() { } private static RegistryOps createOps(final DynamicOps delegate) { - return CraftRegistry.getMinecraftRegistry().createSerializationContext(delegate); + return CraftRegistry.getRegistryAccess().createSerializationContext(delegate); } @SuppressWarnings({"unchecked", "rawtypes"}) diff --git a/paper-server/src/main/java/io/papermc/paper/command/brigadier/argument/VanillaArgumentProviderImpl.java b/paper-server/src/main/java/io/papermc/paper/command/brigadier/argument/VanillaArgumentProviderImpl.java index bff395667f69..9699ff814ec0 100644 --- a/paper-server/src/main/java/io/papermc/paper/command/brigadier/argument/VanillaArgumentProviderImpl.java +++ b/paper-server/src/main/java/io/papermc/paper/command/brigadier/argument/VanillaArgumentProviderImpl.java @@ -259,7 +259,7 @@ protected Set delegate() { @Override public ArgumentType blockState() { return this.wrap(BlockStateArgument.block(PaperCommands.INSTANCE.getBuildContext()), (result) -> { - final BlockState snapshot = CraftBlockStates.getBlockState(CraftRegistry.getMinecraftRegistry(), BlockPos.ZERO, result.getState(), null); + final BlockState snapshot = CraftBlockStates.getBlockState(CraftRegistry.getRegistryAccess(), BlockPos.ZERO, result.getState(), null); if (result.tag != null && snapshot instanceof final CraftBlockEntityState blockEntitySnapshot) { blockEntitySnapshot.loadData(result.tag); } diff --git a/paper-server/src/main/java/io/papermc/paper/datacomponent/DataComponentAdapter.java b/paper-server/src/main/java/io/papermc/paper/datacomponent/DataComponentAdapter.java index 15a96abb2ac7..20d4aaae9766 100644 --- a/paper-server/src/main/java/io/papermc/paper/datacomponent/DataComponentAdapter.java +++ b/paper-server/src/main/java/io/papermc/paper/datacomponent/DataComponentAdapter.java @@ -29,7 +29,7 @@ public boolean isUnimplemented() { public NMS toVanilla(final API value, final Holder> type) { final NMS nms = this.apiToVanilla.apply(value); if (this.codecValidation && !type.value().isTransient()) { - type.value().codecOrThrow().encodeStart(CraftRegistry.getMinecraftRegistry().createSerializationContext(NullOps.INSTANCE), nms).ifError(error -> { + type.value().codecOrThrow().encodeStart(CraftRegistry.getRegistryAccess().createSerializationContext(NullOps.INSTANCE), nms).ifError(error -> { throw new IllegalArgumentException("Failed to encode data component %s (%s)".formatted(type.unwrapKey().orElseThrow(), error.message())); }); } diff --git a/paper-server/src/main/java/io/papermc/paper/datacomponent/DataComponentAdapters.java b/paper-server/src/main/java/io/papermc/paper/datacomponent/DataComponentAdapters.java index f6783d5f9279..a408907e41cc 100644 --- a/paper-server/src/main/java/io/papermc/paper/datacomponent/DataComponentAdapters.java +++ b/paper-server/src/main/java/io/papermc/paper/datacomponent/DataComponentAdapters.java @@ -109,7 +109,7 @@ public static void bootstrap() { registerIdentity(DataComponents.POTION_DURATION_SCALE); register(DataComponents.CUSTOM_NAME, PaperAdventure::asAdventure, PaperAdventure::asVanilla); registerIdentity(DataComponents.MINIMUM_ATTACK_CHARGE); - register(DataComponents.DAMAGE_TYPE, nms -> CraftDamageType.minecraftHolderToBukkit(nms.unwrap(CraftRegistry.getMinecraftRegistry()).orElseThrow()), api -> new EitherHolder<>(CraftDamageType.bukkitToMinecraftHolder(api))); + register(DataComponents.DAMAGE_TYPE, nms -> CraftDamageType.minecraftHolderToBukkit(nms.unwrap(CraftRegistry.getRegistryAccess()).orElseThrow()), api -> new EitherHolder<>(CraftDamageType.bukkitToMinecraftHolder(api))); register(DataComponents.ITEM_NAME, PaperAdventure::asAdventure, PaperAdventure::asVanilla); register(DataComponents.ITEM_MODEL, PaperAdventure::asAdventure, PaperAdventure::asVanilla); register(DataComponents.LORE, PaperItemLore::new); @@ -152,8 +152,8 @@ public static void bootstrap() { // entity data // bucket entity data // block entity data - register(DataComponents.INSTRUMENT, nms -> CraftMusicInstrument.minecraftHolderToBukkit(nms.instrument().unwrap(CraftRegistry.getMinecraftRegistry()).orElseThrow()), api -> new InstrumentComponent(CraftMusicInstrument.bukkitToMinecraftHolder(api))); - register(DataComponents.PROVIDES_TRIM_MATERIAL, nms -> CraftTrimMaterial.minecraftHolderToBukkit(nms.material().unwrap(CraftRegistry.getMinecraftRegistry()).orElseThrow()), api -> new ProvidesTrimMaterial(CraftTrimMaterial.bukkitToMinecraftHolder(api))); + register(DataComponents.INSTRUMENT, nms -> CraftMusicInstrument.minecraftHolderToBukkit(nms.instrument().unwrap(CraftRegistry.getRegistryAccess()).orElseThrow()), api -> new InstrumentComponent(CraftMusicInstrument.bukkitToMinecraftHolder(api))); + register(DataComponents.PROVIDES_TRIM_MATERIAL, nms -> CraftTrimMaterial.minecraftHolderToBukkit(nms.material().unwrap(CraftRegistry.getRegistryAccess()).orElseThrow()), api -> new ProvidesTrimMaterial(CraftTrimMaterial.bukkitToMinecraftHolder(api))); register(DataComponents.OMINOUS_BOTTLE_AMPLIFIER, PaperOminousBottleAmplifier::new); register(DataComponents.JUKEBOX_PLAYABLE, PaperJukeboxPlayable::new); register(DataComponents.PROVIDES_BANNER_PATTERNS, PaperRegistries::fromNms, PaperRegistries::toNms); @@ -197,9 +197,9 @@ public static void bootstrap() { register(DataComponents.RABBIT_VARIANT, nms -> Rabbit.Type.values()[nms.ordinal()], api -> net.minecraft.world.entity.animal.rabbit.Rabbit.Variant.byId(api.ordinal())); register(DataComponents.PIG_VARIANT, CraftPig.CraftVariant::minecraftHolderToBukkit, CraftPig.CraftVariant::bukkitToMinecraftHolder); register(DataComponents.COW_VARIANT, CraftCow.CraftVariant::minecraftHolderToBukkit, CraftCow.CraftVariant::bukkitToMinecraftHolder); - register(DataComponents.CHICKEN_VARIANT, nms -> CraftChicken.CraftVariant.minecraftHolderToBukkit(nms.unwrap(CraftRegistry.getMinecraftRegistry()).orElseThrow()), api -> new EitherHolder<>(CraftChicken.CraftVariant.bukkitToMinecraftHolder(api))); + register(DataComponents.CHICKEN_VARIANT, nms -> CraftChicken.CraftVariant.minecraftHolderToBukkit(nms.unwrap(CraftRegistry.getRegistryAccess()).orElseThrow()), api -> new EitherHolder<>(CraftChicken.CraftVariant.bukkitToMinecraftHolder(api))); register(DataComponents.FROG_VARIANT, CraftFrog.CraftVariant::minecraftHolderToBukkit, CraftFrog.CraftVariant::bukkitToMinecraftHolder); - register(DataComponents.ZOMBIE_NAUTILUS_VARIANT, nms -> CraftZombieNautilus.CraftVariant.minecraftHolderToBukkit(nms.unwrap(CraftRegistry.getMinecraftRegistry()).orElseThrow()), api -> new EitherHolder<>(CraftZombieNautilus.CraftVariant.bukkitToMinecraftHolder(api))); + register(DataComponents.ZOMBIE_NAUTILUS_VARIANT, nms -> CraftZombieNautilus.CraftVariant.minecraftHolderToBukkit(nms.unwrap(CraftRegistry.getRegistryAccess()).orElseThrow()), api -> new EitherHolder<>(CraftZombieNautilus.CraftVariant.bukkitToMinecraftHolder(api))); register(DataComponents.HORSE_VARIANT, nms -> Horse.Color.values()[nms.ordinal()], api -> net.minecraft.world.entity.animal.equine.Variant.byId(api.ordinal())); register(DataComponents.PAINTING_VARIANT, CraftArt::minecraftHolderToBukkit, CraftArt::bukkitToMinecraftHolder); register(DataComponents.LLAMA_VARIANT, nms -> Llama.Color.values()[nms.ordinal()], api -> net.minecraft.world.entity.animal.equine.Llama.Variant.byId(api.ordinal())); diff --git a/paper-server/src/main/java/io/papermc/paper/datacomponent/item/PaperJukeboxPlayable.java b/paper-server/src/main/java/io/papermc/paper/datacomponent/item/PaperJukeboxPlayable.java index b80f1420703e..ab856f334ec5 100644 --- a/paper-server/src/main/java/io/papermc/paper/datacomponent/item/PaperJukeboxPlayable.java +++ b/paper-server/src/main/java/io/papermc/paper/datacomponent/item/PaperJukeboxPlayable.java @@ -18,7 +18,7 @@ public net.minecraft.world.item.JukeboxPlayable getHandle() { @Override public JukeboxSong jukeboxSong() { return this.impl.song() - .unwrap(CraftRegistry.getMinecraftRegistry()) + .unwrap(CraftRegistry.getRegistryAccess()) .map(CraftJukeboxSong::minecraftHolderToBukkit) .orElseThrow(); } diff --git a/paper-server/src/main/java/io/papermc/paper/registry/PaperRegistries.java b/paper-server/src/main/java/io/papermc/paper/registry/PaperRegistries.java index 121babcfdda5..f91e140211fe 100644 --- a/paper-server/src/main/java/io/papermc/paper/registry/PaperRegistries.java +++ b/paper-server/src/main/java/io/papermc/paper/registry/PaperRegistries.java @@ -50,6 +50,7 @@ import org.bukkit.craftbukkit.CraftGameEvent; import org.bukkit.craftbukkit.CraftGameRule; import org.bukkit.craftbukkit.CraftJukeboxSong; +import org.bukkit.craftbukkit.CraftLootTable; import org.bukkit.craftbukkit.CraftMusicInstrument; import org.bukkit.craftbukkit.CraftSound; import org.bukkit.craftbukkit.attribute.CraftAttribute; @@ -92,6 +93,7 @@ import org.bukkit.inventory.MenuType; import org.bukkit.inventory.meta.trim.TrimMaterial; import org.bukkit.inventory.meta.trim.TrimPattern; +import org.bukkit.loot.LootTable; import org.bukkit.map.MapCursor; import org.bukkit.potion.PotionEffectType; import org.jspecify.annotations.Nullable; @@ -142,6 +144,7 @@ public final class PaperRegistries { start(Registries.PIG_VARIANT, RegistryKey.PIG_VARIANT).craft(Pig.Variant.class, CraftPig.CraftVariant::new).writable(PaperPigVariantRegistryEntry.PaperBuilder::new), start(Registries.ZOMBIE_NAUTILUS_VARIANT, RegistryKey.ZOMBIE_NAUTILUS_VARIANT).craft(ZombieNautilus.Variant.class, CraftZombieNautilus.CraftVariant::new).writable(PaperZombieNautilusVariantRegistryEntry.PaperBuilder::new), start(Registries.DIALOG, RegistryKey.DIALOG).craft(Dialog.class, PaperDialog::new, true).writable(PaperDialogRegistryEntry.PaperBuilder::new), + start(Registries.LOOT_TABLE, RegistryKey.LOOT_TABLE).craft(LootTable.class, CraftLootTable::new).build(), // api-only start(Registries.ENTITY_TYPE, RegistryKey.ENTITY_TYPE).apiOnly(PaperSimpleRegistry::entityType), diff --git a/paper-server/src/main/java/io/papermc/paper/registry/data/util/Conversions.java b/paper-server/src/main/java/io/papermc/paper/registry/data/util/Conversions.java index e4124cc4bc06..cfe92ee692fb 100644 --- a/paper-server/src/main/java/io/papermc/paper/registry/data/util/Conversions.java +++ b/paper-server/src/main/java/io/papermc/paper/registry/data/util/Conversions.java @@ -30,7 +30,7 @@ public class Conversions { private static @Nullable Conversions globalInstance; public static Conversions global() { if (globalInstance == null) { - final RegistryAccess globalAccess = CraftRegistry.getMinecraftRegistry(); + final RegistryAccess globalAccess = CraftRegistry.getRegistryAccess(); Preconditions.checkState(globalAccess != null, "Global registry access is not available"); globalInstance = new Conversions(new RegistryOps.HolderLookupAdapter(globalAccess)); } diff --git a/paper-server/src/main/java/io/papermc/paper/util/Holderable.java b/paper-server/src/main/java/io/papermc/paper/util/Holderable.java index a1927b6bcea6..c47030472f2f 100644 --- a/paper-server/src/main/java/io/papermc/paper/util/Holderable.java +++ b/paper-server/src/main/java/io/papermc/paper/util/Holderable.java @@ -41,7 +41,7 @@ case JsonObjectWrapper(final JsonObject element) -> { if (!(registry instanceof final CraftRegistry craftRegistry) || !craftRegistry.supportsDirectHolders()) { throw new IllegalArgumentException("Cannot deserialize direct holders for " + registry); } - final RegistryOps ops = CraftRegistry.getMinecraftRegistry().createSerializationContext(JsonOps.INSTANCE); + final RegistryOps ops = CraftRegistry.getRegistryAccess().createSerializationContext(JsonOps.INSTANCE); final M holder = directCodec.decode(ops, element).getOrThrow().getFirst(); yield ((CraftRegistry) registry).createBukkit(Holder.direct(holder)); } @@ -52,7 +52,7 @@ case JsonObjectWrapper(final JsonObject element) -> { default Object toBukkitSerializationObject(final Codec directCodec) { return switch (this.getHolder()) { case final Holder.Direct direct -> { - final RegistryOps ops = CraftRegistry.getMinecraftRegistry().createSerializationContext(JsonOps.INSTANCE); + final RegistryOps ops = CraftRegistry.getRegistryAccess().createSerializationContext(JsonOps.INSTANCE); yield new JsonObjectWrapper(directCodec.encodeStart(ops, direct.value()).getOrThrow().getAsJsonObject()); } case final Holder.Reference reference -> reference.key().identifier().toString(); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftArt.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftArt.java index 95995694fbb5..16eaeab5b0af 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftArt.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftArt.java @@ -51,6 +51,6 @@ public net.kyori.adventure.key.Key assetId() { @Override public int getId() { - return CraftRegistry.getMinecraftRegistry(Registries.PAINTING_VARIANT).getId(this.getHandle()); + return CraftRegistry.getRegistry(Registries.PAINTING_VARIANT).getId(this.getHandle()); } } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftLootTable.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftLootTable.java index f1a616432ea7..983032ea7aad 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftLootTable.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftLootTable.java @@ -1,13 +1,17 @@ package org.bukkit.craftbukkit; import com.google.common.base.Preconditions; +import io.papermc.paper.adventure.PaperAdventure; +import io.papermc.paper.registry.HolderableBase; +import io.papermc.paper.registry.RegistryAccess; +import io.papermc.paper.registry.RegistryKey; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Random; +import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.context.ContextKey; import net.minecraft.util.context.ContextKeySet; @@ -18,59 +22,53 @@ import net.minecraft.world.level.storage.loot.LootTable; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.Vec3; -import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.NamespacedKey; import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.entity.CraftHumanEntity; import org.bukkit.craftbukkit.inventory.CraftInventory; import org.bukkit.craftbukkit.inventory.CraftItemStack; import org.bukkit.craftbukkit.util.CraftLocation; -import org.bukkit.craftbukkit.util.CraftNamespacedKey; import org.bukkit.craftbukkit.util.RandomSourceWrapper; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.loot.LootContext; +import org.jspecify.annotations.Nullable; -public class CraftLootTable implements org.bukkit.loot.LootTable { +public class CraftLootTable extends HolderableBase implements org.bukkit.loot.LootTable { - public static org.bukkit.loot.LootTable minecraftToBukkit(Identifier minecraft) { - return (minecraft == null) ? null : Bukkit.getLootTable(CraftNamespacedKey.fromMinecraft(minecraft)); - } - - public static org.bukkit.loot.LootTable minecraftToBukkit(ResourceKey minecraft) { - return (minecraft == null) ? null : Bukkit.getLootTable(CraftLootTable.minecraftToBukkitKey(minecraft)); - } + private static final org.bukkit.loot.LootTable EMPTY = new CraftLootTable(Holder.direct(LootTable.EMPTY)); // todo expose? - public static NamespacedKey minecraftToBukkitKey(ResourceKey minecraft) { - return (minecraft == null) ? null : CraftNamespacedKey.fromMinecraft(minecraft.identifier()); + public CraftLootTable(final Holder holder) { + super(holder); } - public static ResourceKey bukkitToMinecraft(org.bukkit.loot.LootTable table) { - return (table == null) ? null : CraftLootTable.bukkitKeyToMinecraft(table.getKey()); + public static org.bukkit.loot.LootTable minecraftKeyToBukkit(@Nullable ResourceKey minecraft) { + return (minecraft == null) ? null : RegistryAccess.registryAccess().getRegistry(RegistryKey.LOOT_TABLE).get(PaperAdventure.asAdventureKey(minecraft)); } - public static ResourceKey bukkitKeyToMinecraft(NamespacedKey key) { - return (key == null) ? null : ResourceKey.create(Registries.LOOT_TABLE, CraftNamespacedKey.toMinecraft(key)); + public static ResourceKey bukkitToMinecraftKey(org.bukkit.loot.LootTable bukkit) { + return (bukkit == null || bukkit == EMPTY) ? null : PaperAdventure.asVanilla(Registries.LOOT_TABLE, bukkit.getKey()); } - private final LootTable handle; - private final NamespacedKey key; - - public CraftLootTable(NamespacedKey key, LootTable handle) { - this.handle = handle; - this.key = key; + public static org.bukkit.loot.LootTable minecraftToBukkit(@Nullable LootTable minecraft) { + if (minecraft == LootTable.EMPTY) { + return EMPTY; + } + return CraftRegistry.minecraftToBukkit(minecraft, Registries.LOOT_TABLE); } - public LootTable getHandle() { - return this.handle; + public static LootTable bukkitToMinecraft(org.bukkit.loot.LootTable bukkit) { + if (bukkit == EMPTY) { + return LootTable.EMPTY; + } + return CraftRegistry.bukkitToMinecraft(bukkit); } @Override public Collection populateLoot(Random random, LootContext context) { Preconditions.checkArgument(context != null, "LootContext cannot be null"); LootParams nmsContext = this.convertContext(context); - List nmsItems = this.handle.getRandomItems(nmsContext, random == null ? null : new RandomSourceWrapper(random)); + List nmsItems = this.getHandle().getRandomItems(nmsContext, random == null ? null : new RandomSourceWrapper(random)); Collection bukkit = new ArrayList<>(nmsItems.size()); for (net.minecraft.world.item.ItemStack item : nmsItems) { @@ -95,11 +93,6 @@ public void fillInventory(Inventory inventory, Random random, LootContext contex this.getHandle().fill(handle, nmsContext, random == null ? null : new RandomSourceWrapper(random), true); } - @Override - public NamespacedKey getKey() { - return this.key; - } - private LootParams convertContext(LootContext context) { Preconditions.checkArgument(context != null, "LootContext cannot be null"); Location loc = context.getLocation(); @@ -170,24 +163,4 @@ public static LootContext convertContext(net.minecraft.world.level.storage.loot. contextBuilder.luck(info.getLuck()); return contextBuilder.build(); } - - @Override - public String toString() { - return this.key.toString(); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof org.bukkit.loot.LootTable)) { - return false; - } - - org.bukkit.loot.LootTable table = (org.bukkit.loot.LootTable) obj; - return table.getKey().equals(this.key); - } - - @Override - public int hashCode() { - return this.key.hashCode(); - } } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftParticle.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftParticle.java index 3f940a89a336..18937de3b816 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftParticle.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftParticle.java @@ -42,12 +42,12 @@ public abstract class CraftParticle implements Keyed { - private static final Registry> CRAFT_PARTICLE_REGISTRY = new CraftParticleRegistry(CraftRegistry.getMinecraftRegistry(Registries.PARTICLE_TYPE)); + private static final Registry> CRAFT_PARTICLE_REGISTRY = new CraftParticleRegistry(CraftRegistry.getRegistry(Registries.PARTICLE_TYPE)); public static Particle minecraftToBukkit(net.minecraft.core.particles.ParticleType minecraft) { Preconditions.checkArgument(minecraft != null); - net.minecraft.core.Registry> registry = CraftRegistry.getMinecraftRegistry(Registries.PARTICLE_TYPE); + net.minecraft.core.Registry> registry = CraftRegistry.getRegistry(Registries.PARTICLE_TYPE); Particle bukkit = Registry.PARTICLE_TYPE.get(CraftNamespacedKey.fromMinecraft(registry.getResourceKey(minecraft).orElseThrow().identifier())); Preconditions.checkArgument(bukkit != null); @@ -58,7 +58,7 @@ public static Particle minecraftToBukkit(net.minecraft.core.particles.ParticleTy public static net.minecraft.core.particles.ParticleType bukkitToMinecraft(Particle bukkit) { Preconditions.checkArgument(bukkit != null); - return CraftRegistry.getMinecraftRegistry(Registries.PARTICLE_TYPE) + return CraftRegistry.getRegistry(Registries.PARTICLE_TYPE) .getOptional(CraftNamespacedKey.toMinecraft(bukkit.getKey())).orElseThrow(); } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java index 0d343556fbb6..86e15eac5ab2 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java @@ -8,7 +8,6 @@ import io.papermc.paper.registry.set.NamedRegistryKeySetImpl; import io.papermc.paper.registry.tag.Tag; import io.papermc.paper.util.Holderable; -import io.papermc.paper.util.MCUtil; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; @@ -18,7 +17,9 @@ import java.util.stream.Stream; import net.minecraft.core.Holder; import net.minecraft.core.HolderOwner; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; +import net.minecraft.server.ReloadableServerRegistries; import org.bukkit.Keyed; import org.bukkit.NamespacedKey; import org.bukkit.Particle; @@ -32,19 +33,28 @@ public class CraftRegistry implements Registry { - private static net.minecraft.core.RegistryAccess registry; + private static net.minecraft.core.RegistryAccess registries; + private static ReloadableServerRegistries.Holder reloadableRegistries; - public static void setMinecraftRegistry(final net.minecraft.core.RegistryAccess registry) { - Preconditions.checkState(CraftRegistry.registry == null, "Registry already set"); - CraftRegistry.registry = registry; + public static void setRegistryAccess(final net.minecraft.core.RegistryAccess registries) { + Preconditions.checkState(CraftRegistry.registries == null, "Registry already set"); + CraftRegistry.registries = registries; } - public static net.minecraft.core.RegistryAccess getMinecraftRegistry() { - return CraftRegistry.registry; + public static void setReloadableRegistries(final ReloadableServerRegistries.Holder registries) { + Preconditions.checkState(CraftRegistry.reloadableRegistries == null, "Registry already set"); + CraftRegistry.reloadableRegistries = registries; } - public static net.minecraft.core.Registry getMinecraftRegistry(ResourceKey> key) { - return CraftRegistry.getMinecraftRegistry().lookupOrThrow(key); + public static net.minecraft.core.RegistryAccess getRegistryAccess() { + return CraftRegistry.registries; + } + + public static net.minecraft.core.Registry getRegistry(ResourceKey> registryKey) { + if (registryKey.equals(Registries.LOOT_TABLE)) { + return (net.minecraft.core.Registry) CraftRegistry.reloadableRegistries.lookup().lookupOrThrow(registryKey); + } + return CraftRegistry.getRegistryAccess().lookupOrThrow(registryKey); } /** @@ -58,7 +68,7 @@ public static net.minecraft.core.Registry getMinecraftRegistry(ResourceKe public static B minecraftToBukkit(M minecraft, ResourceKey> registryKey) { Preconditions.checkArgument(minecraft != null); - net.minecraft.core.Registry registry = CraftRegistry.getMinecraftRegistry(registryKey); + net.minecraft.core.Registry registry = CraftRegistry.getRegistry(registryKey); final Registry bukkitRegistry = RegistryAccess.registryAccess().getRegistry(PaperRegistries.registryFromNms(registryKey)); final java.util.Optional> resourceKey = registry.getResourceKey(minecraft); if (resourceKey.isEmpty() && bukkitRegistry instanceof final CraftRegistry craftRegistry && craftRegistry.supportsDirectHolders()) { diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java index da49c8005592..5a9375ee4a8e 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -15,6 +15,7 @@ import io.papermc.paper.configuration.GlobalConfiguration; import io.papermc.paper.configuration.PaperServerConfiguration; import io.papermc.paper.configuration.ServerConfiguration; +import io.papermc.paper.registry.RegistryKey; import io.papermc.paper.world.PaperWorldLoader; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import java.awt.image.BufferedImage; @@ -56,7 +57,6 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.resources.Identifier; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.ReloadableServerRegistries; import net.minecraft.server.WorldLoader; import net.minecraft.server.bossevents.CustomBossEvent; import net.minecraft.server.commands.ReloadCommand; @@ -418,7 +418,8 @@ public CraftPlayer apply(ServerPlayer player) { this.pluginManager.paperPluginManager = this.paperPluginManager; // Paper end - CraftRegistry.setMinecraftRegistry(console.registryAccess()); + CraftRegistry.setRegistryAccess(console.registryAccess()); + CraftRegistry.setReloadableRegistries(console.reloadableRegistries()); if (!Main.useConsole) { this.getLogger().info("Console input is disabled due to --noconsole command argument"); @@ -2590,7 +2591,7 @@ public org.bukkit.Tag getTag(String registry, NamespacedKey case org.bukkit.tag.DamageTypeTags.REGISTRY_DAMAGE_TYPES -> { Preconditions.checkArgument(clazz == org.bukkit.damage.DamageType.class, "Damage type namespace (%s) must have damage type", clazz.getName()); TagKey damageTagKey = TagKey.create(Registries.DAMAGE_TYPE, key); - net.minecraft.core.Registry damageRegistry = CraftRegistry.getMinecraftRegistry(Registries.DAMAGE_TYPE); + net.minecraft.core.Registry damageRegistry = CraftRegistry.getRegistry(Registries.DAMAGE_TYPE); if (damageRegistry.get(damageTagKey).isPresent()) { return (org.bukkit.Tag) new CraftDamageTag(damageRegistry, damageTagKey); } @@ -2636,7 +2637,7 @@ public Iterable> getTags(String registry, Cl } case org.bukkit.tag.DamageTypeTags.REGISTRY_DAMAGE_TYPES -> { Preconditions.checkArgument(clazz == org.bukkit.damage.DamageType.class, "Damage type namespace (%s) must have damage type", clazz.getName()); - net.minecraft.core.Registry damageTags = CraftRegistry.getMinecraftRegistry(Registries.DAMAGE_TYPE); + net.minecraft.core.Registry damageTags = CraftRegistry.getRegistry(Registries.DAMAGE_TYPE); return damageTags.getTags().map(pair -> (org.bukkit.Tag) new CraftDamageTag(damageTags, pair.key())).collect(ImmutableList.toImmutableList()); } case org.bukkit.Tag.REGISTRY_GAME_EVENTS -> { @@ -2651,12 +2652,7 @@ public Iterable> getTags(String registry, Cl @Override public LootTable getLootTable(NamespacedKey key) { Preconditions.checkArgument(key != null, "NamespacedKey key cannot be null"); - - ReloadableServerRegistries.Holder registry = this.getServer().reloadableRegistries(); - return registry.lookup().lookup(Registries.LOOT_TABLE) - .flatMap((lookup) -> lookup.get(CraftLootTable.bukkitKeyToMinecraft(key))) - .map((holder) -> new CraftLootTable(key, holder.value())) - .orElse(null); + return io.papermc.paper.registry.RegistryAccess.registryAccess().getRegistry(RegistryKey.LOOT_TABLE).get(key); } @Override diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index ebc65e3338c6..72e32a063ade 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -1935,7 +1935,7 @@ public Collection getStructures(int x, int z) { public Collection getStructures(int x, int z, Structure structure) { Preconditions.checkArgument(structure != null, "Structure cannot be null"); - net.minecraft.core.Registry registry = CraftRegistry.getMinecraftRegistry(Registries.STRUCTURE); + net.minecraft.core.Registry registry = CraftRegistry.getRegistry(Registries.STRUCTURE); Identifier key = registry.getKey(CraftStructure.bukkitToMinecraft(structure)); return this.getStructures(x, z, struct -> registry.getKey(struct).equals(key)); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java index 26feb76c5263..b9fc28a6f878 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java @@ -76,7 +76,7 @@ protected CraftBlockEntityState(CraftBlockEntityState state, Location locatio public RegistryAccess getRegistryAccess() { LevelAccessor worldHandle = this.getWorldHandle(); - return (worldHandle != null) ? worldHandle.registryAccess() : CraftRegistry.getMinecraftRegistry(); + return (worldHandle != null) ? worldHandle.registryAccess() : CraftRegistry.getRegistryAccess(); } private T createSnapshot(T from) { diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java index bcd73c788768..aec3671feab9 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java @@ -209,7 +209,7 @@ public static BlockState getBlockState(Block block, boolean useSnapshot) { @Deprecated public static BlockState getBlockState(BlockPos pos, Material material, @Nullable CompoundTag blockEntityTag) { - return CraftBlockStates.getBlockState(CraftRegistry.getMinecraftRegistry(), pos, material, blockEntityTag); + return CraftBlockStates.getBlockState(CraftRegistry.getRegistryAccess(), pos, material, blockEntityTag); } public static BlockState getBlockState(LevelReader world, BlockPos pos, Material material, @Nullable CompoundTag blockEntityTag) { @@ -224,7 +224,7 @@ public static BlockState getBlockState(RegistryAccess registry, BlockPos pos, Ma @Deprecated public static BlockState getBlockState(net.minecraft.world.level.block.state.BlockState state, @Nullable CompoundTag blockEntityTag) { - return CraftBlockStates.getBlockState(CraftRegistry.getMinecraftRegistry(), BlockPos.ZERO, state, blockEntityTag); + return CraftBlockStates.getBlockState(CraftRegistry.getRegistryAccess(), BlockPos.ZERO, state, blockEntityTag); } public static BlockState getBlockState(LevelReader level, BlockPos blockPosition, net.minecraft.world.level.block.state.BlockState state, @Nullable CompoundTag blockEntityTag) { diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockType.java b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockType.java index ace48e7b45e1..fbcdbd29183b 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockType.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockType.java @@ -29,12 +29,14 @@ import org.bukkit.World; import org.bukkit.block.BlockType; import org.bukkit.block.data.BlockData; +import org.bukkit.craftbukkit.CraftLootTable; import org.bukkit.craftbukkit.CraftRegistry; import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.block.data.CraftBlockData; import org.bukkit.craftbukkit.inventory.CraftItemType; import org.bukkit.craftbukkit.util.CraftMagicNumbers; import org.bukkit.inventory.ItemType; +import org.bukkit.loot.LootTable; import org.jspecify.annotations.NonNull; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @@ -251,4 +253,9 @@ public boolean hasCollision() { return this.getHandle().hasCollision; } // Paper end - hasCollision API + + @Override + public @Nullable LootTable getLootTable() { + return this.getHandle().getLootTable().map(CraftLootTable::minecraftKeyToBukkit).orElse(null); + } } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBrushableBlock.java b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBrushableBlock.java index 6e3933aa0d6d..14a064a432b4 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBrushableBlock.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBrushableBlock.java @@ -40,7 +40,7 @@ public void applyTo(BrushableBlockEntity blockEntity) { @Override public LootTable getLootTable() { - return CraftLootTable.minecraftToBukkit(this.getSnapshot().lootTable); + return CraftLootTable.minecraftKeyToBukkit(this.getSnapshot().lootTable); } @Override @@ -60,7 +60,7 @@ public void setSeed(long seed) { @Override // Paper - this is now an override public void setLootTable(LootTable table, long seed) { // Paper - make public since it overrides a public method - this.getSnapshot().setLootTable(CraftLootTable.bukkitToMinecraft(table), seed); + this.getSnapshot().setLootTable(CraftLootTable.bukkitToMinecraftKey(table), seed); } @Override diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java index b824e8527bac..900b803e0039 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java @@ -289,14 +289,14 @@ public static Optional getEquipment(SpawnerEntry.Equipment bukki } return Optional.of(new EquipmentTable( - CraftLootTable.bukkitToMinecraft(bukkit.getEquipmentLootTable()), + CraftLootTable.bukkitToMinecraftKey(bukkit.getEquipmentLootTable()), bukkit.getDropChances().entrySet().stream().collect(Collectors.toMap((entry) -> CraftEquipmentSlot.getNMS(entry.getKey()), Map.Entry::getValue))) ); } public static SpawnerEntry.Equipment getEquipment(Optional optional) { return optional.map((nms) -> new SpawnerEntry.Equipment( - CraftLootTable.minecraftToBukkit(nms.lootTable()), + CraftLootTable.minecraftKeyToBukkit(nms.lootTable()), new HashMap<>(nms.slotDropChances().entrySet().stream().collect(Collectors.toMap((entry) -> CraftEquipmentSlot.getSlot(entry.getKey()), Map.Entry::getValue))) )).orElse(null); } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftDecoratedPot.java b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftDecoratedPot.java index fee250c6b398..5bd2a57d2a35 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftDecoratedPot.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftDecoratedPot.java @@ -52,12 +52,12 @@ public void setLootTable(final org.bukkit.loot.LootTable table) { @Override public void setLootTable(org.bukkit.loot.LootTable table, long seed) { - this.getSnapshot().setLootTable(org.bukkit.craftbukkit.CraftLootTable.bukkitToMinecraft(table), seed); + this.getSnapshot().setLootTable(org.bukkit.craftbukkit.CraftLootTable.bukkitToMinecraftKey(table), seed); } @Override public org.bukkit.loot.LootTable getLootTable() { - return org.bukkit.craftbukkit.CraftLootTable.minecraftToBukkit(this.getSnapshot().getLootTable()); + return org.bukkit.craftbukkit.CraftLootTable.minecraftKeyToBukkit(this.getSnapshot().getLootTable()); } @Override diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftTrialSpawnerConfiguration.java b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftTrialSpawnerConfiguration.java index 358c65f5b344..bb7c17ff3f8f 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftTrialSpawnerConfiguration.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftTrialSpawnerConfiguration.java @@ -20,7 +20,6 @@ import net.minecraft.world.level.block.entity.trialspawner.TrialSpawnerConfig; import net.minecraft.world.level.block.entity.trialspawner.TrialSpawnerStateData; import net.minecraft.world.level.storage.TagValueInput; -import net.minecraft.world.level.storage.TagValueOutput; import org.bukkit.block.spawner.SpawnRule; import org.bukkit.block.spawner.SpawnerEntry; import org.bukkit.craftbukkit.CraftLootTable; @@ -249,7 +248,7 @@ public Map getPossibleRewards() { Map tables = new HashMap<>(); for (Weighted> entry : this.lootTablesToEject.unwrap()) { - LootTable table = CraftLootTable.minecraftToBukkit(entry.value()); + LootTable table = CraftLootTable.minecraftKeyToBukkit(entry.value()); if (table != null) { tables.put(table, entry.weight()); } @@ -265,7 +264,7 @@ public void addPossibleReward(LootTable table, int weight) { WeightedList.Builder> builder = WeightedList.builder(); this.lootTablesToEject.unwrap().forEach(entry -> builder.add(entry.value(), entry.weight())); - builder.add(CraftLootTable.bukkitToMinecraft(table), weight); + builder.add(CraftLootTable.bukkitToMinecraftKey(table), weight); this.lootTablesToEject = builder.build(); } @@ -273,7 +272,7 @@ public void addPossibleReward(LootTable table, int weight) { public void removePossibleReward(LootTable table) { Preconditions.checkArgument(table != null, "Key cannot be null"); - ResourceKey minecraftKey = CraftLootTable.bukkitToMinecraft(table); + ResourceKey minecraftKey = CraftLootTable.bukkitToMinecraftKey(table); WeightedList.Builder> builder = WeightedList.builder(); for (Weighted> entry : this.lootTablesToEject.unwrap()) { @@ -296,7 +295,7 @@ public void setPossibleRewards(Map rewards) { Preconditions.checkArgument(table != null, "Table cannot be null"); Preconditions.checkArgument(weight >= 1, "Weight must be at least 1"); - builder.add(CraftLootTable.bukkitToMinecraft(table), weight); + builder.add(CraftLootTable.bukkitToMinecraftKey(table), weight); }); this.lootTablesToEject = builder.build(); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftVault.java b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftVault.java index b468d9105fad..e96d8a37f97a 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftVault.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftVault.java @@ -84,12 +84,12 @@ public void setKeyItem(final ItemStack key) { @Override public LootTable getLootTable() { - return CraftLootTable.minecraftToBukkit(this.getSnapshot().getConfig().lootTable()); + return CraftLootTable.minecraftKeyToBukkit(this.getSnapshot().getConfig().lootTable()); } @Override public void setLootTable(final LootTable lootTable) { - final ResourceKey lootTableKey = CraftLootTable.bukkitToMinecraft(lootTable); + final ResourceKey lootTableKey = CraftLootTable.bukkitToMinecraftKey(lootTable); Preconditions.checkArgument(lootTableKey != null, "lootTable must not be null"); final VaultConfig config = this.getSnapshot().getConfig(); @@ -98,14 +98,14 @@ public void setLootTable(final LootTable lootTable) { @Override public @Nullable LootTable getDisplayedLootTable() { - return this.getSnapshot().getConfig().overrideLootTableToDisplay().map(CraftLootTable::minecraftToBukkit).orElse(null); + return this.getSnapshot().getConfig().overrideLootTableToDisplay().map(CraftLootTable::minecraftKeyToBukkit).orElse(null); } @Override public void setDisplayedLootTable(final @Nullable LootTable lootTable) { final VaultConfig config = this.getSnapshot().getConfig(); - this.getSnapshot().setConfig(new VaultConfig(config.lootTable(), config.activationRange(), config.deactivationRange(), config.keyItem(), Optional.ofNullable(CraftLootTable.bukkitToMinecraft(lootTable)))); + this.getSnapshot().setConfig(new VaultConfig(config.lootTable(), config.activationRange(), config.deactivationRange(), config.keyItem(), Optional.ofNullable(CraftLootTable.bukkitToMinecraftKey(lootTable)))); } @Override diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/paper-server/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java index 68bb1b852273..77934ce414cd 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java @@ -603,7 +603,7 @@ private static CraftBlockData createNewData(BlockType blockType, String data) { } StringReader reader = new StringReader(data); - BlockStateParser.BlockResult arg = BlockStateParser.parseForBlock(CraftRegistry.getMinecraftRegistry(Registries.BLOCK), reader, false); + BlockStateParser.BlockResult arg = BlockStateParser.parseForBlock(CraftRegistry.getRegistry(Registries.BLOCK), reader, false); Preconditions.checkArgument(!reader.canRead(), "Spurious trailing data: " + data); blockData = arg.blockState(); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/configuration/ConfigSerializationUtil.java b/paper-server/src/main/java/org/bukkit/craftbukkit/configuration/ConfigSerializationUtil.java index 38b07b508205..570d3537b58c 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/configuration/ConfigSerializationUtil.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/configuration/ConfigSerializationUtil.java @@ -51,7 +51,7 @@ public static void setHolderSet(Map result, String key, HolderSe } public static HolderSet getHolderSet(Object from, ResourceKey> registryKey) { - Registry registry = CraftRegistry.getMinecraftRegistry(registryKey); + Registry registry = CraftRegistry.getRegistry(registryKey); if (from instanceof String parseString && parseString.startsWith("#")) { // Tag parseString = parseString.substring(1); Identifier key = Identifier.tryParse(parseString); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntitySnapshot.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntitySnapshot.java index 3df77f98529a..9ff096ada65b 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntitySnapshot.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntitySnapshot.java @@ -1,7 +1,6 @@ package org.bukkit.craftbukkit.entity; import com.google.common.base.Preconditions; -import java.util.function.Function; import com.mojang.logging.LogUtils; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.ProblemReporter; @@ -84,7 +83,7 @@ public static CraftEntitySnapshot create(CraftEntity entity) { )) { final TagValueOutput output = TagValueOutput.createWithContext( problemReporter, - CraftRegistry.getMinecraftRegistry() + CraftRegistry.getRegistryAccess() ); if (!entity.getHandle().saveAsPassenger(output, false, false, false)) { return null; diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityType.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityType.java index d842c2c21570..4bc5084ce379 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityType.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityType.java @@ -18,7 +18,7 @@ public class CraftEntityType { public static EntityType minecraftToBukkit(net.minecraft.world.entity.EntityType minecraft) { Preconditions.checkArgument(minecraft != null); - net.minecraft.core.Registry> registry = CraftRegistry.getMinecraftRegistry(Registries.ENTITY_TYPE); + net.minecraft.core.Registry> registry = CraftRegistry.getRegistry(Registries.ENTITY_TYPE); EntityType bukkit = Registry.ENTITY_TYPE.get(CraftNamespacedKey.fromMinecraft(registry.getResourceKey(minecraft).orElseThrow().identifier())); Preconditions.checkArgument(bukkit != null); @@ -29,14 +29,14 @@ public static EntityType minecraftToBukkit(net.minecraft.world.entity.EntityType private static final java.util.Map>> KEY_CACHE = java.util.Collections.synchronizedMap(new java.util.EnumMap<>(EntityType.class)); // Paper public static net.minecraft.world.entity.EntityType bukkitToMinecraft(EntityType bukkit) { Preconditions.checkArgument(bukkit != null); - return CraftRegistry.getMinecraftRegistry(Registries.ENTITY_TYPE) + return CraftRegistry.getRegistry(Registries.ENTITY_TYPE) .getOptional(KEY_CACHE.computeIfAbsent(bukkit, type -> net.minecraft.resources.ResourceKey.create(Registries.ENTITY_TYPE, CraftNamespacedKey.toMinecraft(type.getKey())))).orElseThrow(); } public static Holder> bukkitToMinecraftHolder(EntityType bukkit) { Preconditions.checkArgument(bukkit != null); - net.minecraft.core.Registry> registry = CraftRegistry.getMinecraftRegistry(Registries.ENTITY_TYPE); + net.minecraft.core.Registry> registry = CraftRegistry.getRegistry(Registries.ENTITY_TYPE); if (registry.wrapAsHolder(CraftEntityType.bukkitToMinecraft(bukkit)) instanceof Holder.Reference> holder) { return holder; diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java index 959fea246014..d22fe87adccb 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java @@ -90,12 +90,12 @@ public Sound getAmbientSound() { @Override public void setLootTable(LootTable table) { - this.getHandle().lootTable = Optional.ofNullable(CraftLootTable.bukkitToMinecraft(table)); + this.getHandle().lootTable = Optional.ofNullable(CraftLootTable.bukkitToMinecraftKey(table)); } @Override public LootTable getLootTable() { - return CraftLootTable.minecraftToBukkit(this.getHandle().getLootTable().orElse(null)); + return CraftLootTable.minecraftKeyToBukkit(this.getHandle().getLootTable().orElse(null)); } @Override diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/memory/CraftMemoryKey.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/memory/CraftMemoryKey.java index 558921d7caa4..6235002c6122 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/memory/CraftMemoryKey.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/memory/CraftMemoryKey.java @@ -16,7 +16,7 @@ public static MemoryKey minecraftToBukkit(MemoryModuleType minecraf return null; } - net.minecraft.core.Registry> registry = CraftRegistry.getMinecraftRegistry(Registries.MEMORY_MODULE_TYPE); + net.minecraft.core.Registry> registry = CraftRegistry.getRegistry(Registries.MEMORY_MODULE_TYPE); MemoryKey bukkit = (MemoryKey) Registry.MEMORY_MODULE_TYPE.get(CraftNamespacedKey.fromMinecraft(registry.getResourceKey(minecraft).orElseThrow().identifier())); return bukkit; @@ -27,7 +27,7 @@ public static MemoryModuleType bukkitToMinecraft(MemoryKey bukkit) return null; } - return (MemoryModuleType) CraftRegistry.getMinecraftRegistry(Registries.MEMORY_MODULE_TYPE) + return (MemoryModuleType) CraftRegistry.getRegistry(Registries.MEMORY_MODULE_TYPE) .getOptional(CraftNamespacedKey.toMinecraft(bukkit.getKey())).orElseThrow(); } } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index cd83ca2ace1d..3821ff1ca685 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -1825,7 +1825,7 @@ public static TrialSpawnerSpawnEvent callTrialSpawnerSpawnEvent(Entity spawnee, public static BlockDispenseLootEvent callBlockDispenseLootEvent(ServerLevel level, BlockPos pos, net.minecraft.world.entity.player.Player player, List rewardLoot, LootTable lootTable) { List craftItemStacks = rewardLoot.stream().map(CraftItemStack::asBukkitCopy).collect(Collectors.toList()); - BlockDispenseLootEvent event = new BlockDispenseLootEvent((player == null) ? null : (Player) player.getBukkitEntity(), CraftBlock.at(level, pos), craftItemStacks, lootTable.craftLootTable); + BlockDispenseLootEvent event = new BlockDispenseLootEvent((player == null) ? null : (Player) player.getBukkitEntity(), CraftBlock.at(level, pos), craftItemStacks, CraftLootTable.minecraftToBukkit(lootTable)); Bukkit.getPluginManager().callEvent(event); return event; } @@ -1992,7 +1992,7 @@ public static LootGenerateEvent callLootGenerateEvent(Container inventory, LootT Entity entity = lootInfo.getOptionalParameter(LootContextParams.THIS_ENTITY); List bukkitLoot = loot.stream().map(CraftItemStack::asCraftMirror).collect(Collectors.toCollection(ArrayList::new)); - LootGenerateEvent event = new LootGenerateEvent(world, (entity != null ? entity.getBukkitEntity() : null), inventory.getOwner(), lootTable.craftLootTable, CraftLootTable.convertContext(lootInfo), bukkitLoot, plugin); + LootGenerateEvent event = new LootGenerateEvent(world, (entity != null ? entity.getBukkitEntity() : null), inventory.getOwner(), CraftLootTable.minecraftToBukkit(lootTable), CraftLootTable.convertContext(lootInfo), bukkitLoot, plugin); Bukkit.getPluginManager().callEvent(event); return event; } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java index 4abee7b6d922..cb1220d7a2c4 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java @@ -154,7 +154,7 @@ public Color getDefaultLeatherColor() { public ItemStack createItemStack(String input) throws IllegalArgumentException { try { StringReader reader = new StringReader(input); - ItemParser.ItemResult arg = new ItemParser(CraftRegistry.getMinecraftRegistry()).parse(reader); + ItemParser.ItemResult arg = new ItemParser(CraftRegistry.getRegistryAccess()).parse(reader); Preconditions.checkArgument(!reader.canRead(), "Trailing input found when parsing ItemStack: %s", input); Item item = arg.item().value(); @@ -210,7 +210,7 @@ private static ItemStack enchantItem(RandomSource source, ItemStack itemStack, i Preconditions.checkArgument(!itemStack.getType().isAir(), "ItemStack must not be air"); itemStack = CraftItemStack.asCraftCopy(itemStack); CraftItemStack craft = (CraftItemStack) itemStack; - RegistryAccess registry = CraftRegistry.getMinecraftRegistry(); + RegistryAccess registry = CraftRegistry.getRegistryAccess(); Optional> optional = (allowTreasures) ? Optional.empty() : registry.lookupOrThrow(Registries.ENCHANTMENT).get(EnchantmentTags.IN_ENCHANTING_TABLE); return CraftItemStack.asCraftMirror(EnchantmentHelper.enchantItem(source, craft.handle, level, registry, optional)); } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java index 4a8fbba451af..c78e3f0b672a 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java @@ -151,7 +151,7 @@ private void updateBlockState(final DataComponentPatch tag) { try (final ProblemReporter.ScopedCollector problemReporter = new ProblemReporter.ScopedCollector( () -> "blockEntityTag", LOGGER )) { - final TagValueOutput output = TagValueOutput.createWrappingWithContext(problemReporter, CraftRegistry.getMinecraftRegistry(), blockEntityTag); + final TagValueOutput output = TagValueOutput.createWrappingWithContext(problemReporter, CraftRegistry.getRegistryAccess(), blockEntityTag); if (blockEntityTag.isEmpty()) { BlockEntity.addEntityType(output, java.util.Objects.requireNonNull(CraftBlockStates.getBlockEntityType(this.materialForBlockEntityType()))); } @@ -177,7 +177,7 @@ void applyToItem(CraftMetaItem.Applicator tag) { () -> "CraftMetaBlockState#apply", LOGGER )) { BlockEntity.addEntityType( - TagValueOutput.createWrappingWithContext(problemReporter, CraftRegistry.getMinecraftRegistry(), nbt), + TagValueOutput.createWrappingWithContext(problemReporter, CraftRegistry.getRegistryAccess(), nbt), java.util.Objects.requireNonNull(CraftBlockStates.getBlockEntityType(this.materialForBlockEntityType())) ); } @@ -207,7 +207,7 @@ void deserializeInternal(CompoundTag tag, Object context) { this.blockEntityTag = blockEntityCustomTag.copy(); }); tag.getCompound(CraftMetaBlockState.BLOCK_ENTITY_COMPONENTS.NBT).ifPresent(components -> { - this.components = DataComponentMap.CODEC.parse(CraftRegistry.getMinecraftRegistry().createSerializationContext(NbtOps.INSTANCE), components).getOrThrow(); + this.components = DataComponentMap.CODEC.parse(CraftRegistry.getRegistryAccess().createSerializationContext(NbtOps.INSTANCE), components).getOrThrow(); }); // Paper end - new serialization format } @@ -219,7 +219,7 @@ void serializeInternal(final Map internalTags) { internalTags.put(CraftMetaBlockState.BLOCK_ENTITY_TAG_CUSTOM_DATA.NBT, this.blockEntityTag); // unsafe because it's serialized right away } if (!this.components.isEmpty()) { - final Tag componentsTag = DataComponentMap.CODEC.encodeStart(CraftRegistry.getMinecraftRegistry().createSerializationContext(NbtOps.INSTANCE), this.components).getOrThrow(); + final Tag componentsTag = DataComponentMap.CODEC.encodeStart(CraftRegistry.getRegistryAccess().createSerializationContext(NbtOps.INSTANCE), this.components).getOrThrow(); internalTags.put(CraftMetaBlockState.BLOCK_ENTITY_COMPONENTS.NBT, componentsTag); } // Paper end - new serialization format @@ -304,7 +304,7 @@ public CraftBlockEntityState getBlockState() { final net.minecraft.world.level.block.state.BlockState nmsBlockState = ((org.bukkit.craftbukkit.block.data.CraftBlockData) this.getBlockData(stateMaterial)).getState(); final net.minecraft.world.level.block.entity.BlockEntity blockEntity = java.util.Objects.requireNonNull(type.create(pos, nmsBlockState)); if (!this.blockEntityTag.isEmpty()) { - TypedEntityData.decodeBlockEntity(this.blockEntityTag).loadInto(blockEntity, CraftRegistry.getMinecraftRegistry()); + TypedEntityData.decodeBlockEntity(this.blockEntityTag).loadInto(blockEntity, CraftRegistry.getRegistryAccess()); } final PatchedDataComponentMap patchedMap = new PatchedDataComponentMap(nmsBlockState.getBlock().asItem().components()); patchedMap.setAll(this.components); @@ -334,7 +334,7 @@ private static CraftBlockEntityState getBlockState(Material material, Compoun } // This is expected to always return a CraftBlockEntityState for the passed material: - return (CraftBlockEntityState) CraftBlockStates.getBlockState(CraftRegistry.getMinecraftRegistry(), pos, stateMaterial, blockEntityTag); + return (CraftBlockEntityState) CraftBlockStates.getBlockState(CraftRegistry.getRegistryAccess(), pos, stateMaterial, blockEntityTag); } @Override diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java index 3825cd713a42..4896bfef5f56 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -35,7 +35,6 @@ import java.util.Map.Entry; import java.util.Objects; import java.util.Optional; -import java.util.SequencedSet; import java.util.Set; import java.util.StringJoiner; import it.unimi.dsi.fastutil.objects.ReferenceLinkedOpenHashSet; @@ -762,7 +761,7 @@ static Multimap buildModifiers(ItemAttributeModifi ByteArrayInputStream buf = new ByteArrayInputStream(Base64.getDecoder().decode(unhandled)); try { CompoundTag unhandledTag = NbtIo.readCompressed(buf, NbtAccounter.unlimitedHeap()); - DataComponentPatch unhandledPatch = DataComponentPatch.CODEC.parse(CraftRegistry.getMinecraftRegistry().createSerializationContext(NbtOps.INSTANCE), unhandledTag).result().get(); + DataComponentPatch unhandledPatch = DataComponentPatch.CODEC.parse(CraftRegistry.getRegistryAccess().createSerializationContext(NbtOps.INSTANCE), unhandledTag).result().get(); CraftMetaItem.getOrEmpty(unhandledPatch, CraftMetaItem.CAN_PLACE_ON).ifPresent(data -> { this.canPlaceOnPredicates = List.copyOf(data.predicates); @@ -788,7 +787,7 @@ static Multimap buildModifiers(ItemAttributeModifi Iterable removed = SerializableMeta.getObject(Iterable.class, map, "removed", true); if (removed != null) { - RegistryAccess registryAccess = CraftRegistry.getMinecraftRegistry(); + RegistryAccess registryAccess = CraftRegistry.getRegistryAccess(); Registry> componentTypeRegistry = registryAccess.lookupOrThrow(Registries.DATA_COMPONENT_TYPE); for (Object removedObject : removed) { @@ -1823,7 +1822,7 @@ public String getAsString() { CraftMetaItem.Applicator tag = new CraftMetaItem.Applicator() {}; // Paper - support updating profile after resolving it this.applyToItem(tag); DataComponentPatch patch = tag.build(); - net.minecraft.nbt.Tag nbt = DataComponentPatch.CODEC.encodeStart(CraftRegistry.getMinecraftRegistry().createSerializationContext(NbtOps.INSTANCE), patch).getOrThrow(); + net.minecraft.nbt.Tag nbt = DataComponentPatch.CODEC.encodeStart(CraftRegistry.getRegistryAccess().createSerializationContext(NbtOps.INSTANCE), patch).getOrThrow(); return nbt.toString(); } @@ -1833,7 +1832,7 @@ public String getAsComponentString() { this.applyToItem(tag); DataComponentPatch patch = tag.build(); - RegistryAccess registryAccess = CraftRegistry.getMinecraftRegistry(); + RegistryAccess registryAccess = CraftRegistry.getRegistryAccess(); DynamicOps ops = registryAccess.createSerializationContext(NbtOps.INSTANCE); Registry> componentTypeRegistry = registryAccess.lookupOrThrow(Registries.DATA_COMPONENT_TYPE); @@ -2255,7 +2254,7 @@ ImmutableMap.Builder serialize(ImmutableMap.Builder serialize(ImmutableMap.Builder> componentTypeRegistry = registryAccess.lookupOrThrow(Registries.DATA_COMPONENT_TYPE); List removedTags = new ArrayList<>(); @@ -2520,7 +2519,7 @@ public void setCanPlaceOn(final Set canPlaceOn) { } private static List convertFromLegacyMaterial(final Collection materials) { - final net.minecraft.core.Registry blockRegistry = CraftRegistry.getMinecraftRegistry().lookupOrThrow(net.minecraft.core.registries.Registries.BLOCK); + final net.minecraft.core.Registry blockRegistry = CraftRegistry.getRegistryAccess().lookupOrThrow(net.minecraft.core.registries.Registries.BLOCK); return materials.stream().map(m -> { return net.minecraft.advancements.criterion.BlockPredicate.Builder.block().of(blockRegistry, CraftBlockType.bukkitToMinecraft(m)).build(); }).toList(); @@ -2559,7 +2558,7 @@ public void setPlaceableKeys(final Collection convertFromLegacyNamespaced(final Collection namespaceds) { final List predicates = new ArrayList<>(); - final net.minecraft.core.Registry blockRegistry = CraftRegistry.getMinecraftRegistry().lookupOrThrow(net.minecraft.core.registries.Registries.BLOCK); + final net.minecraft.core.Registry blockRegistry = CraftRegistry.getRegistryAccess().lookupOrThrow(net.minecraft.core.registries.Registries.BLOCK); for (final com.destroystokyo.paper.Namespaced namespaced : namespaceds) { if (namespaced instanceof final org.bukkit.NamespacedKey key) { predicates.add(net.minecraft.advancements.criterion.BlockPredicate.Builder.block().of(blockRegistry, CraftBlockType.bukkitToMinecraft(Objects.requireNonNull(org.bukkit.Registry.MATERIAL.get(key)))).build()); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMusicInstrument.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMusicInstrument.java index 26f9278ef747..c66dacf8408d 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMusicInstrument.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMusicInstrument.java @@ -29,7 +29,7 @@ public class CraftMetaMusicInstrument extends CraftMetaItem implements MusicInst super(tag, extraHandledDcts); // Paper getOrEmpty(tag, CraftMetaMusicInstrument.GOAT_HORN_INSTRUMENT).ifPresent((en) -> { - en.instrument().unwrap(CraftRegistry.getMinecraftRegistry()) + en.instrument().unwrap(CraftRegistry.getRegistryAccess()) .ifPresent(instrument -> this.instrument = CraftMusicInstrument.minecraftHolderToBukkit(instrument)); }); } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java index 4a67cdd33777..80ab9b85b537 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java @@ -250,7 +250,7 @@ public void clearBlockState() { private static Banner getBlockState(DyeColor color) { Material stateMaterial = CraftMetaShield.shieldToBannerHack(color); - return (Banner) CraftBlockStates.getBlockState(CraftRegistry.getMinecraftRegistry(), BlockPos.ZERO, stateMaterial, null); + return (Banner) CraftBlockStates.getBlockState(CraftRegistry.getRegistryAccess(), BlockPos.ZERO, stateMaterial, null); } @Override diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/components/CraftJukeboxComponent.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/components/CraftJukeboxComponent.java index 616d409a8753..5f30d4397d12 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/components/CraftJukeboxComponent.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/components/CraftJukeboxComponent.java @@ -51,7 +51,7 @@ public JukeboxPlayable getHandle() { @Override public JukeboxSong getSong() { - Optional> song = this.handle.song().unwrap(CraftRegistry.getMinecraftRegistry()); + Optional> song = this.handle.song().unwrap(CraftRegistry.getRegistryAccess()); return song.map(CraftJukeboxSong::minecraftHolderToBukkit).orElse(null); } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftEnchantmentView.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftEnchantmentView.java index 1fb3059ee0ee..08d6cc827e81 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftEnchantmentView.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftEnchantmentView.java @@ -34,7 +34,7 @@ public void setEnchantmentSeed(int seed) { @NotNull @Override public EnchantmentOffer[] getOffers() { - IdMap> registry = CraftRegistry.getMinecraftRegistry().lookupOrThrow(Registries.ENCHANTMENT).asHolderIdMap(); + IdMap> registry = CraftRegistry.getRegistryAccess().lookupOrThrow(Registries.ENCHANTMENT).asHolderIdMap(); EnchantmentOffer[] offers = new EnchantmentOffer[3]; for (int i = 0; i < 3; i++) { org.bukkit.enchantments.Enchantment enchantment = (this.container.enchantClue[i] >= 0) ? CraftEnchantment.minecraftHolderToBukkit(registry.byId(this.container.enchantClue[i])) : null; @@ -46,7 +46,7 @@ public EnchantmentOffer[] getOffers() { @Override public void setOffers(@NotNull final EnchantmentOffer[] offers) { Preconditions.checkArgument(offers.length == 3, "There must be 3 offers given"); - IdMap> registry = CraftRegistry.getMinecraftRegistry().lookupOrThrow(Registries.ENCHANTMENT).asHolderIdMap(); + IdMap> registry = CraftRegistry.getRegistryAccess().lookupOrThrow(Registries.ENCHANTMENT).asHolderIdMap(); for (int i = 0; i < offers.length; i++) { final EnchantmentOffer offer = offers[i]; if (offer == null) { diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/map/CraftMapCursor.java b/paper-server/src/main/java/org/bukkit/craftbukkit/map/CraftMapCursor.java index f8313826f604..28782ca7d6b9 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/map/CraftMapCursor.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/map/CraftMapCursor.java @@ -27,7 +27,7 @@ public CraftType(final Holder holder) { @Override public byte getValue() { - return (byte) CraftRegistry.getMinecraftRegistry(Registries.MAP_DECORATION_TYPE).getId(this.getHandle()); + return (byte) CraftRegistry.getRegistry(Registries.MAP_DECORATION_TYPE).getId(this.getHandle()); } } } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionEffectType.java b/paper-server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionEffectType.java index 4881e366c8d4..05ffe8701eb2 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionEffectType.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionEffectType.java @@ -46,7 +46,7 @@ public static Holder bukkitToMinecraftHolder(PotionEffectType bukkit) public CraftPotionEffectType(final Holder holder) { this.holder = holder; - this.id = Suppliers.memoize(() -> CraftRegistry.getMinecraftRegistry(Registries.MOB_EFFECT).getId(this.getHandle()) + 1); + this.id = Suppliers.memoize(() -> CraftRegistry.getRegistry(Registries.MOB_EFFECT).getId(this.getHandle()) + 1); } @Override diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionType.java b/paper-server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionType.java index a304fafd78f6..5d2de5fc6dc6 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionType.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionType.java @@ -28,7 +28,7 @@ public static PotionType minecraftHolderToBukkit(Holder minecraft) { public static PotionType minecraftToBukkit(Potion minecraft) { Preconditions.checkArgument(minecraft != null); - net.minecraft.core.Registry registry = CraftRegistry.getMinecraftRegistry(Registries.POTION); + net.minecraft.core.Registry registry = CraftRegistry.getRegistry(Registries.POTION); PotionType bukkit = Registry.POTION.get(CraftNamespacedKey.fromMinecraft(registry.getResourceKey(minecraft).orElseThrow().identifier())); Preconditions.checkArgument(bukkit != null); @@ -39,14 +39,14 @@ public static PotionType minecraftToBukkit(Potion minecraft) { public static Potion bukkitToMinecraft(PotionType bukkit) { Preconditions.checkArgument(bukkit != null); - return CraftRegistry.getMinecraftRegistry(Registries.POTION) + return CraftRegistry.getRegistry(Registries.POTION) .getOptional(CraftNamespacedKey.toMinecraft(bukkit.getKey())).orElseThrow(); } public static Holder bukkitToMinecraftHolder(PotionType bukkit) { Preconditions.checkArgument(bukkit != null); - net.minecraft.core.Registry registry = CraftRegistry.getMinecraftRegistry(Registries.POTION); + net.minecraft.core.Registry registry = CraftRegistry.getRegistry(Registries.POTION); if (registry.wrapAsHolder(CraftPotionType.bukkitToMinecraft(bukkit)) instanceof Holder.Reference holder) { return holder; diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java b/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java index 3f115c561f34..aeee229e9a81 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java @@ -6,7 +6,6 @@ import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonParseException; -import java.net.URI; import java.util.ArrayList; import java.util.List; import java.util.Locale; @@ -231,7 +230,7 @@ public static Component[] fromString(String message, boolean keepNewlines, boole public static String toJSON(Component component) { return GSON.toJson( ComponentSerialization.CODEC - .encodeStart(CraftRegistry.getMinecraftRegistry().createSerializationContext(JsonOps.INSTANCE), component) + .encodeStart(CraftRegistry.getRegistryAccess().createSerializationContext(JsonOps.INSTANCE), component) .getOrThrow(JsonParseException::new) ); } @@ -246,7 +245,7 @@ public static Component fromJSON(String jsonMessage) throws JsonParseException { // Note: An empty message (empty, or only consisting of whitespace) results in null rather than a parse exception. final JsonElement jsonElement = GSON.fromJson(jsonMessage, JsonElement.class); return jsonElement == null ? null : ComponentSerialization.CODEC.parse( - CraftRegistry.getMinecraftRegistry().createSerializationContext(JsonOps.INSTANCE), jsonElement + CraftRegistry.getRegistryAccess().createSerializationContext(JsonOps.INSTANCE), jsonElement ).getOrThrow(JsonParseException::new); } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java index cfa4c67e80a5..90a93fdadc75 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -14,7 +14,6 @@ import com.mojang.serialization.JavaOps; import com.mojang.serialization.JsonOps; import io.papermc.paper.adventure.AdventureCodecs; -import io.papermc.paper.adventure.PaperAdventure; import io.papermc.paper.registry.RegistryKey; import java.io.File; import java.io.IOException; @@ -61,7 +60,6 @@ import org.bukkit.Keyed; import org.bukkit.Material; import org.bukkit.NamespacedKey; -import org.bukkit.Registry; import org.bukkit.UnsafeValues; import org.bukkit.World; import org.bukkit.advancement.Advancement; @@ -290,7 +288,7 @@ public ItemStack modifyItemStack(ItemStack stack, String arguments) { net.minecraft.world.item.ItemStack nmsStack = CraftItemStack.asNMSCopy(stack); try { - nmsStack.applyComponents(new ItemParser(Commands.createValidationContext(CraftRegistry.getMinecraftRegistry())).parse(new StringReader(arguments)).components()); + nmsStack.applyComponents(new ItemParser(Commands.createValidationContext(CraftRegistry.getRegistryAccess())).parse(new StringReader(arguments)).components()); } catch (CommandSyntaxException ex) { com.mojang.logging.LogUtils.getClassLogger().error("Exception modifying ItemStack", new Throwable(ex)); // Paper - show stack trace } @@ -310,7 +308,7 @@ public Advancement loadAdvancement(NamespacedKey key, String advancement) { Identifier resourceKey = CraftNamespacedKey.toMinecraft(key); JsonElement jsonelement = JsonParser.parseString(advancement); - final net.minecraft.resources.RegistryOps ops = CraftRegistry.getMinecraftRegistry().createSerializationContext(JsonOps.INSTANCE); // Paper - use RegistryOps + final net.minecraft.resources.RegistryOps ops = CraftRegistry.getRegistryAccess().createSerializationContext(JsonOps.INSTANCE); // Paper - use RegistryOps final net.minecraft.advancements.Advancement nms = net.minecraft.advancements.Advancement.CODEC.parse(ops, jsonelement).getOrThrow(JsonParseException::new); // Paper - use RegistryOps if (nms != null) { final com.google.common.collect.ImmutableMap.Builder mapBuilder = com.google.common.collect.ImmutableMap.builder(); @@ -459,7 +457,7 @@ public String getTranslationKey(final Attribute attribute) { @Override public PotionType.InternalPotionData getInternalPotionData(NamespacedKey namespacedKey) { - Potion potionRegistry = CraftRegistry.getMinecraftRegistry(Registries.POTION) + Potion potionRegistry = CraftRegistry.getRegistry(Registries.POTION) .getOptional(CraftNamespacedKey.toMinecraft(namespacedKey)).orElseThrow(); return new CraftPotionType(namespacedKey, potionRegistry); @@ -519,7 +517,7 @@ private ItemStack deserializeItem(CompoundTag compound) { return CraftItemStack.asCraftMirror(net.minecraft.world.item.ItemStack.EMPTY); } return CraftItemStack.asCraftMirror(net.minecraft.world.item.ItemStack.CODEC.parse( - CraftRegistry.getMinecraftRegistry().createSerializationContext(NbtOps.INSTANCE), compound + CraftRegistry.getRegistryAccess().createSerializationContext(NbtOps.INSTANCE), compound ).getOrThrow()); } @@ -529,7 +527,7 @@ private ItemStack deserializeItem(CompoundTag compound) { return Map.of("id", "minecraft:air", SharedConstants.DATA_VERSION_TAG, this.getDataVersion(), "schema_version", 1); } final CompoundTag tag = (CompoundTag) net.minecraft.world.item.ItemStack.CODEC.encodeStart( - CraftRegistry.getMinecraftRegistry().createSerializationContext(NbtOps.INSTANCE), + CraftRegistry.getRegistryAccess().createSerializationContext(NbtOps.INSTANCE), CraftItemStack.asNMSCopy(itemStack) ).getOrThrow(); NbtUtils.addCurrentDataVersion(tag); @@ -841,7 +839,7 @@ public List computeTooltipLines(final ItemSt flag = flag.asCreative(); } final List lines = CraftItemStack.asNMSCopy(itemStack).getTooltipLines( - net.minecraft.world.item.Item.TooltipContext.of(player == null ? CraftRegistry.getMinecraftRegistry() : ((org.bukkit.craftbukkit.entity.CraftPlayer) player).getHandle().level().registryAccess()), + net.minecraft.world.item.Item.TooltipContext.of(player == null ? CraftRegistry.getRegistryAccess() : ((org.bukkit.craftbukkit.entity.CraftPlayer) player).getHandle().level().registryAccess()), player == null ? null : ((org.bukkit.craftbukkit.entity.CraftPlayer) player).getHandle(), flag); return lines.stream().map(io.papermc.paper.adventure.PaperAdventure::asAdventure).toList(); } @@ -869,7 +867,7 @@ public org.bukkit.inventory.ItemStack createEmptyStack() { @Override public ItemStack deserializeItemHover(final HoverEvent.ShowItem itemHover) { - final RegistryOps ops = CraftRegistry.getMinecraftRegistry().createSerializationContext(JavaOps.INSTANCE); + final RegistryOps ops = CraftRegistry.getRegistryAccess().createSerializationContext(JavaOps.INSTANCE); final Object encoded = AdventureCodecs.SHOW_ITEM_CODEC.codec() .encodeStart(ops, HoverEvent.showItem(itemHover)).getOrThrow(IllegalStateException::new); diff --git a/paper-server/src/test/java/io/papermc/paper/registry/RegistryKeyTest.java b/paper-server/src/test/java/io/papermc/paper/registry/RegistryKeyTest.java index cd26f63f6c89..4dc106413ded 100644 --- a/paper-server/src/test/java/io/papermc/paper/registry/RegistryKeyTest.java +++ b/paper-server/src/test/java/io/papermc/paper/registry/RegistryKeyTest.java @@ -3,9 +3,7 @@ import io.papermc.paper.registry.entry.RegistryEntry; import java.util.Optional; import java.util.stream.Stream; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.Identifier; +import net.minecraft.core.HolderLookup; import org.bukkit.support.RegistryHelper; import org.bukkit.support.environment.AllFeatures; import org.checkerframework.checker.nullness.qual.Nullable; @@ -17,7 +15,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; @AllFeatures -class RegistryKeyTest { +class RegistryKeyTest { // todo fetch from RegistriesArgumentTest once api registries are gone @BeforeAll static void before() throws ClassNotFoundException { @@ -28,17 +26,21 @@ static Stream> data() { return RegistryKeyImpl.REGISTRY_KEYS.stream(); } + private static HolderLookup.Provider registryLookup(final RegistryKey registryKey) { + return registryKey == RegistryKey.LOOT_TABLE ? RegistryHelper.context().datapack().fullRegistries().lookup() : RegistryHelper.registryAccess(); + } + @ParameterizedTest @MethodSource("data") - void testApiRegistryKeysExist(final RegistryKey key) { - final Optional> registry = RegistryHelper.registryAccess().lookup(ResourceKey.createRegistryKey(Identifier.parse(key.key().asString()))); - assertTrue(registry.isPresent(), "Missing vanilla registry for " + key.key().asString()); + void testApiRegistryKeysExist(final RegistryKey registryKey) { + final Optional> registry = registryLookup(registryKey).lookup(PaperRegistries.registryToNms(registryKey)); + assertTrue(registry.isPresent(), "Missing vanilla registry for " + registryKey.key().asString()); } @ParameterizedTest @MethodSource("data") - void testRegistryEntryExists(final RegistryKey key) { - final @Nullable RegistryEntry entry = PaperRegistries.getEntry(key); - assertNotNull(entry, "Missing PaperRegistries entry for " + key); + void testRegistryEntryExists(final RegistryKey registryKey) { + final @Nullable RegistryEntry entry = PaperRegistries.getEntry(registryKey); + assertNotNull(entry, "Missing PaperRegistries entry for " + registryKey); } } diff --git a/paper-server/src/test/java/org/bukkit/LootTablesTest.java b/paper-server/src/test/java/org/bukkit/LootTablesTest.java index 5e3cce6e723a..97cd002e4223 100644 --- a/paper-server/src/test/java/org/bukkit/LootTablesTest.java +++ b/paper-server/src/test/java/org/bukkit/LootTablesTest.java @@ -1,22 +1,29 @@ package org.bukkit; -import static org.junit.jupiter.api.Assertions.*; +import io.papermc.paper.registry.RegistryAccess; +import io.papermc.paper.registry.RegistryKey; import net.minecraft.resources.ResourceKey; import org.bukkit.craftbukkit.CraftLootTable; +import org.bukkit.craftbukkit.util.CraftNamespacedKey; import org.bukkit.loot.LootTable; import org.bukkit.loot.LootTables; import org.bukkit.support.environment.AllFeatures; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + @AllFeatures +@Deprecated public class LootTablesTest { @Test public void testLootTablesEnumExists() { + Registry registry = RegistryAccess.registryAccess().getRegistry(RegistryKey.LOOT_TABLE); LootTables[] tables = LootTables.values(); for (LootTables table : tables) { - LootTable lootTable = Bukkit.getLootTable(table.getKey()); + LootTable lootTable = registry.get(table.getKey()); assertNotNull(lootTable, "Unknown LootTable " + table.getKey()); assertEquals(lootTable.getKey(), table.getKey()); @@ -26,7 +33,7 @@ public void testLootTablesEnumExists() { @Test public void testNMS() { for (ResourceKey key : net.minecraft.world.level.storage.loot.BuiltInLootTables.all()) { - NamespacedKey bukkitKey = CraftLootTable.minecraftToBukkitKey(key); + NamespacedKey bukkitKey = CraftNamespacedKey.fromMinecraft(key.identifier()); LootTables lootTable = Registry.LOOT_TABLES.get(bukkitKey); assertNotNull(lootTable, "Unknown LootTable " + key); diff --git a/paper-server/src/test/java/org/bukkit/ParticleTest.java b/paper-server/src/test/java/org/bukkit/ParticleTest.java index 414586df882d..80275d12f1cd 100644 --- a/paper-server/src/test/java/org/bukkit/ParticleTest.java +++ b/paper-server/src/test/java/org/bukkit/ParticleTest.java @@ -47,7 +47,7 @@ public class ParticleTest { public static Stream data() { - return CraftRegistry.getMinecraftRegistry(Registries.PARTICLE_TYPE).keySet().stream().map(Arguments::of); + return CraftRegistry.getRegistry(Registries.PARTICLE_TYPE).keySet().stream().map(Arguments::of); } @ParameterizedTest diff --git a/paper-server/src/test/java/org/bukkit/craftbukkit/generator/ChunkDataTest.java b/paper-server/src/test/java/org/bukkit/craftbukkit/generator/ChunkDataTest.java index d484d1de01bc..b067ec43e821 100644 --- a/paper-server/src/test/java/org/bukkit/craftbukkit/generator/ChunkDataTest.java +++ b/paper-server/src/test/java/org/bukkit/craftbukkit/generator/ChunkDataTest.java @@ -1,12 +1,14 @@ package org.bukkit.craftbukkit.generator; -import static org.junit.jupiter.api.Assertions.*; +import net.minecraft.world.level.chunk.PalettedContainerFactory; import org.bukkit.Material; import org.bukkit.block.data.BlockData; import org.bukkit.support.RegistryHelper; import org.bukkit.support.environment.Legacy; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertTrue; + @Legacy public class ChunkDataTest { @@ -34,23 +36,30 @@ private void testSetRegion(OldCraftChunkData data, int minx, int miny, int minz, } } + private static PalettedContainerFactory palettedContainerFactory() { + final class Holder { + public static final PalettedContainerFactory FACTORY = PalettedContainerFactory.create(RegistryHelper.registryAccess()); + } + return Holder.FACTORY; + } + @Test public void testMinHeight() { - OldCraftChunkData data = new OldCraftChunkData(-128, 128, RegistryHelper.context().palettedContainerFactory().get()); + OldCraftChunkData data = new OldCraftChunkData(-128, 128, palettedContainerFactory()); assertTrue(this.testSetBlock(data, 0, -256, 0, ChunkDataTest.RED_WOOL, ChunkDataTest.AIR), "Could not set block below min height"); assertTrue(this.testSetBlock(data, 0, -64, 0, ChunkDataTest.RED_WOOL, ChunkDataTest.RED_WOOL), "Could set block above min height"); } @Test public void testMaxHeight() { - OldCraftChunkData data = new OldCraftChunkData(0, 128, RegistryHelper.context().palettedContainerFactory().get()); + OldCraftChunkData data = new OldCraftChunkData(0, 128, palettedContainerFactory()); assertTrue(this.testSetBlock(data, 0, 128, 0, ChunkDataTest.RED_WOOL, ChunkDataTest.AIR), "Could not set block above max height"); assertTrue(this.testSetBlock(data, 0, 127, 0, ChunkDataTest.RED_WOOL, ChunkDataTest.RED_WOOL), "Could set block below max height"); } @Test public void testBoundsCheckingSingle() { - OldCraftChunkData data = new OldCraftChunkData(0, 256, RegistryHelper.context().palettedContainerFactory().get()); + OldCraftChunkData data = new OldCraftChunkData(0, 256, palettedContainerFactory()); assertTrue(this.testSetBlock(data, 0, 0, 0, ChunkDataTest.RED_WOOL, ChunkDataTest.RED_WOOL), "Can set block inside chunk bounds"); assertTrue(this.testSetBlock(data, 15, 255, 15, ChunkDataTest.RED_WOOL, ChunkDataTest.RED_WOOL), "Can set block inside chunk bounds"); assertTrue(this.testSetBlock(data, -1, 0, 0, ChunkDataTest.RED_WOOL, ChunkDataTest.AIR), "Can no set block outside chunk bounds"); @@ -63,7 +72,7 @@ public void testBoundsCheckingSingle() { @Test public void testSetRegion() { - OldCraftChunkData data = new OldCraftChunkData(0, 256, RegistryHelper.context().palettedContainerFactory().get()); + OldCraftChunkData data = new OldCraftChunkData(0, 256, palettedContainerFactory()); this.testSetRegion(data, -100, 0, -100, 0, 256, 0, ChunkDataTest.RED_WOOL); // exclusively outside this.testSetRegion(data, 16, 256, 16, 0, 0, 0, ChunkDataTest.RED_WOOL); // minimum >= maximum this.testSetRegion(data, 0, 0, 0, 0, 0, 0, ChunkDataTest.RED_WOOL); // minimum == maximum diff --git a/paper-server/src/test/java/org/bukkit/registry/RegistryConstantsTest.java b/paper-server/src/test/java/org/bukkit/registry/RegistryConstantsTest.java index 2718c82e0b6b..010b9e541d40 100644 --- a/paper-server/src/test/java/org/bukkit/registry/RegistryConstantsTest.java +++ b/paper-server/src/test/java/org/bukkit/registry/RegistryConstantsTest.java @@ -16,6 +16,7 @@ import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; import org.bukkit.Keyed; +import org.bukkit.craftbukkit.CraftRegistry; import org.bukkit.craftbukkit.util.CraftNamespacedKey; import org.bukkit.support.RegistryHelper; import org.bukkit.support.environment.AllFeatures; @@ -69,7 +70,7 @@ public static Stream registries() { @ParameterizedTest public void testConstants(Class api, Class apiHolder, ResourceKey> registryKey) throws IllegalAccessException { final Set keys = new ObjectOpenHashSet<>( - RegistryHelper.registryAccess().lookupOrThrow(registryKey).keySet() + CraftRegistry.getRegistry(registryKey).keySet() ); for (final Field field : apiHolder.getDeclaredFields()) { diff --git a/paper-server/src/test/java/org/bukkit/support/DummyServerHelper.java b/paper-server/src/test/java/org/bukkit/support/DummyServerHelper.java index c6e49a553c30..ae18f1778934 100644 --- a/paper-server/src/test/java/org/bukkit/support/DummyServerHelper.java +++ b/paper-server/src/test/java/org/bukkit/support/DummyServerHelper.java @@ -1,17 +1,14 @@ package org.bukkit.support; -import static org.mockito.Mockito.*; import com.google.common.base.Preconditions; import java.util.logging.Logger; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceKey; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import org.bukkit.Material; import org.bukkit.Server; -import org.bukkit.craftbukkit.CraftLootTable; import org.bukkit.craftbukkit.block.data.CraftBlockData; import org.bukkit.craftbukkit.inventory.CraftItemFactory; import org.bukkit.craftbukkit.tag.CraftBlockTag; @@ -23,6 +20,11 @@ import org.bukkit.craftbukkit.util.CraftNamespacedKey; import org.bukkit.craftbukkit.util.Versioning; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.mockito.Mockito.withSettings; + public final class DummyServerHelper { public static Server setup() { @@ -42,9 +44,6 @@ public static Server setup() { when(instance.createBlockData(any(Material.class))).then(mock -> CraftBlockData.newData(((Material) mock.getArgument(0)).asBlockType(), null)); - when(instance.getLootTable(any())).then(mock -> new CraftLootTable(mock.getArgument(0), - RegistryHelper.context().datapack().fullRegistries().getLootTable(ResourceKey.create(Registries.LOOT_TABLE, CraftNamespacedKey.toMinecraft(mock.getArgument(0)))))); - when(instance.getTag(any(), any(), any())).then(mock -> { String registry = mock.getArgument(0); Class clazz = mock.getArgument(2); diff --git a/paper-server/src/test/java/org/bukkit/support/extension/AllFeaturesExtension.java b/paper-server/src/test/java/org/bukkit/support/extension/AllFeaturesExtension.java index 990b496716ee..6d5c60a8ea54 100644 --- a/paper-server/src/test/java/org/bukkit/support/extension/AllFeaturesExtension.java +++ b/paper-server/src/test/java/org/bukkit/support/extension/AllFeaturesExtension.java @@ -37,7 +37,8 @@ public void init(ExtensionContext extensionContext) { // Paper - Add RegistryAccess for managing registries - replaced with registry access - CraftRegistry.setMinecraftRegistry(RegistryHelper.registryAccess()); + CraftRegistry.setRegistryAccess(RegistryHelper.registryAccess()); + CraftRegistry.setReloadableRegistries(RegistryHelper.context().datapack().fullRegistries()); } @Override diff --git a/paper-server/src/test/java/org/bukkit/support/extension/LegacyExtension.java b/paper-server/src/test/java/org/bukkit/support/extension/LegacyExtension.java index ee39652e1500..57b22f0f2fed 100644 --- a/paper-server/src/test/java/org/bukkit/support/extension/LegacyExtension.java +++ b/paper-server/src/test/java/org/bukkit/support/extension/LegacyExtension.java @@ -23,7 +23,8 @@ public void init(ExtensionContext extensionContext) { // Paper - Add RegistryAccess for managing registries - replaced with registry access - CraftRegistry.setMinecraftRegistry(RegistryHelper.registryAccess()); + CraftRegistry.setRegistryAccess(RegistryHelper.registryAccess()); + CraftRegistry.setReloadableRegistries(RegistryHelper.context().datapack().fullRegistries()); } @Override diff --git a/paper-server/src/test/java/org/bukkit/support/extension/NormalExtension.java b/paper-server/src/test/java/org/bukkit/support/extension/NormalExtension.java index 0d35cb4e8f3a..850b339a5a20 100644 --- a/paper-server/src/test/java/org/bukkit/support/extension/NormalExtension.java +++ b/paper-server/src/test/java/org/bukkit/support/extension/NormalExtension.java @@ -51,7 +51,8 @@ public void init(ExtensionContext extensionContext) { }); RegistryAccess registry = mock(withSettings().stubOnly().defaultAnswer(NormalExtension.DEFAULT_ANSWER)); - CraftRegistry.setMinecraftRegistry(registry); + CraftRegistry.setRegistryAccess(registry); + CraftRegistry.setReloadableRegistries(RegistryHelper.context().datapack().fullRegistries()); } @Override diff --git a/paper-server/src/test/java/org/bukkit/support/extension/SlowExtension.java b/paper-server/src/test/java/org/bukkit/support/extension/SlowExtension.java index 44a64e8635df..1937daa193e5 100644 --- a/paper-server/src/test/java/org/bukkit/support/extension/SlowExtension.java +++ b/paper-server/src/test/java/org/bukkit/support/extension/SlowExtension.java @@ -23,7 +23,8 @@ public void init(ExtensionContext extensionContext) { // Paper - Add RegistryAccess for managing registries - replaced with registry access - CraftRegistry.setMinecraftRegistry(RegistryHelper.registryAccess()); + CraftRegistry.setRegistryAccess(RegistryHelper.registryAccess()); + CraftRegistry.setReloadableRegistries(RegistryHelper.context().datapack().fullRegistries()); } @Override diff --git a/paper-server/src/test/java/org/bukkit/support/extension/VanillaFeatureExtension.java b/paper-server/src/test/java/org/bukkit/support/extension/VanillaFeatureExtension.java index aabd9e5e4176..f7eccb890f52 100644 --- a/paper-server/src/test/java/org/bukkit/support/extension/VanillaFeatureExtension.java +++ b/paper-server/src/test/java/org/bukkit/support/extension/VanillaFeatureExtension.java @@ -23,7 +23,8 @@ public void init(ExtensionContext extensionContext) { // Paper - Add RegistryAccess for managing registries - replaced with registry access - CraftRegistry.setMinecraftRegistry(RegistryHelper.registryAccess()); + CraftRegistry.setRegistryAccess(RegistryHelper.registryAccess()); + CraftRegistry.setReloadableRegistries(RegistryHelper.context().datapack().fullRegistries()); } @Override diff --git a/paper-server/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java b/paper-server/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java index 00b949fc0982..8097c77d7af9 100644 --- a/paper-server/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java +++ b/paper-server/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java @@ -8,6 +8,7 @@ import io.papermc.paper.registry.RegistryKey; import java.util.List; import java.util.stream.Stream; +import io.papermc.paper.world.LootTables; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; @@ -45,6 +46,7 @@ import org.bukkit.craftbukkit.CraftGameEvent; import org.bukkit.craftbukkit.CraftGameRule; import org.bukkit.craftbukkit.CraftJukeboxSong; +import org.bukkit.craftbukkit.CraftLootTable; import org.bukkit.craftbukkit.CraftMusicInstrument; import org.bukkit.craftbukkit.CraftSound; import org.bukkit.craftbukkit.attribute.CraftAttribute; @@ -85,6 +87,7 @@ import org.bukkit.inventory.MenuType; import org.bukkit.inventory.meta.trim.TrimMaterial; import org.bukkit.inventory.meta.trim.TrimPattern; +import org.bukkit.loot.LootTable; import org.bukkit.map.MapCursor; import org.bukkit.potion.PotionEffectType; import org.jspecify.annotations.NullMarked; @@ -149,6 +152,7 @@ public Object[] get() { register(Registries.ZOMBIE_NAUTILUS_VARIANT, ZombieNautilus.Variant.class, CraftZombieNautilus.CraftVariant.class, ZombieNautilusVariant.class); register(Registries.DIALOG, Dialog.class, PaperDialog.class, net.minecraft.server.dialog.Dialog.class); register(Registries.GAME_RULE, GameRule.class, GameRules.class, CraftGameRule.class, net.minecraft.world.level.gamerules.GameRule.class); + register(Registries.LOOT_TABLE, LootTable.class, LootTables.class, CraftLootTable.class, net.minecraft.world.level.storage.loot.LootTable.class); } private static void register(ResourceKey> registryKey, Class api, Class impl, Class internal) { From 8c6e3798a14377d636e71c940802540f36857d6c Mon Sep 17 00:00:00 2001 From: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> Date: Fri, 27 Feb 2026 17:02:54 +0100 Subject: [PATCH 2/4] support inlined loot table and lock references for reloadable registries --- .../main/java/org/bukkit/loot/LootTable.java | 22 ++++++++++++++++++- .../generator/registry/RegistryEntries.java | 9 ++++---- .../ReloadableServerRegistries.java.patch | 3 ++- .../paper/registry/PaperRegistries.java | 3 ++- .../bukkit/craftbukkit/CraftLootTable.java | 8 +++---- 5 files changed, 34 insertions(+), 11 deletions(-) diff --git a/paper-api/src/main/java/org/bukkit/loot/LootTable.java b/paper-api/src/main/java/org/bukkit/loot/LootTable.java index ee5bd79f951c..c5ca8f32b5ee 100644 --- a/paper-api/src/main/java/org/bukkit/loot/LootTable.java +++ b/paper-api/src/main/java/org/bukkit/loot/LootTable.java @@ -2,14 +2,16 @@ import java.util.Collection; import java.util.Random; +import net.kyori.adventure.key.Key; import org.bukkit.Keyed; +import org.bukkit.NamespacedKey; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** - * LootTables are technical files that represent what items should be in + * Loot tables are technical files that represent what items should be in * naturally generated containers, what items should be dropped when killing a * mob, or what items can be fished. *
@@ -18,6 +20,24 @@ */ public interface LootTable extends Keyed { + /** + * @deprecated use {@link org.bukkit.Registry#getKey(Keyed)}, {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)}, + * and {@link io.papermc.paper.registry.RegistryKey#LOOT_TABLE}. Loot tables can exist without a key. + */ + @Deprecated(since = "1.21.11", forRemoval = true) + @Override + NamespacedKey getKey(); + + /** + * @deprecated use {@link org.bukkit.Registry#getKey(Keyed)}, {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)}, + * and {@link io.papermc.paper.registry.RegistryKey#LOOT_TABLE}. Loot tables can exist without a key. + */ + @Deprecated(since = "1.21.11", forRemoval = true) + @Override + default Key key() { + return Keyed.super.key(); + } + /** * Returns a mutable list of loot generated by this LootTable. * diff --git a/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java b/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java index ce1ddb48b645..a5ddc9401876 100644 --- a/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java +++ b/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java @@ -20,6 +20,7 @@ import io.papermc.paper.registry.data.WolfVariantRegistryEntry; import io.papermc.paper.registry.data.ZombieNautilusVariantRegistryEntry; import io.papermc.paper.registry.data.dialog.DialogRegistryEntry; +import io.papermc.paper.world.LootTables; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.lang.reflect.Type; @@ -43,12 +44,12 @@ import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.ai.memory.MemoryModuleType; -import net.minecraft.world.entity.animal.feline.CatVariants; import net.minecraft.world.entity.animal.chicken.ChickenVariants; import net.minecraft.world.entity.animal.cow.CowVariants; -import net.minecraft.world.entity.animal.pig.PigVariants; -import net.minecraft.world.entity.animal.nautilus.ZombieNautilusVariants; +import net.minecraft.world.entity.animal.feline.CatVariants; import net.minecraft.world.entity.animal.frog.FrogVariants; +import net.minecraft.world.entity.animal.nautilus.ZombieNautilusVariants; +import net.minecraft.world.entity.animal.pig.PigVariants; import net.minecraft.world.entity.animal.wolf.WolfSoundVariants; import net.minecraft.world.entity.animal.wolf.WolfVariants; import net.minecraft.world.entity.decoration.painting.PaintingVariants; @@ -195,7 +196,7 @@ private static RegistryEntry inconsistentEntry(ResourceKey> API_ONLY = List.of( diff --git a/paper-server/patches/sources/net/minecraft/server/ReloadableServerRegistries.java.patch b/paper-server/patches/sources/net/minecraft/server/ReloadableServerRegistries.java.patch index 17d2976357a1..b240891ec783 100644 --- a/paper-server/patches/sources/net/minecraft/server/ReloadableServerRegistries.java.patch +++ b/paper-server/patches/sources/net/minecraft/server/ReloadableServerRegistries.java.patch @@ -11,7 +11,7 @@ .toList(); CompletableFuture>> completableFuture = Util.sequence(list1); return completableFuture.thenApplyAsync( -@@ -56,19 +_,20 @@ +@@ -56,19 +_,21 @@ } private static CompletableFuture> scheduleRegistryLoad( @@ -32,6 +32,7 @@ ) ); - TagLoader.loadTagsForRegistry(resourceManager, writableRegistry); ++ io.papermc.paper.registry.PaperRegistryAccess.instance().lockReferenceHolders(lootDataType.registryKey()); // Paper - lock reference holders + TagLoader.loadTagsForRegistry(resourceManager, writableRegistry, io.papermc.paper.plugin.lifecycle.event.registrar.ReloadableRegistrarEvent.Cause.RELOAD); // Paper - tag life cycle - reload return writableRegistry; }, diff --git a/paper-server/src/main/java/io/papermc/paper/registry/PaperRegistries.java b/paper-server/src/main/java/io/papermc/paper/registry/PaperRegistries.java index f91e140211fe..f88dbf9e7c51 100644 --- a/paper-server/src/main/java/io/papermc/paper/registry/PaperRegistries.java +++ b/paper-server/src/main/java/io/papermc/paper/registry/PaperRegistries.java @@ -25,6 +25,7 @@ import io.papermc.paper.registry.entry.RegistryEntry; import io.papermc.paper.registry.entry.RegistryEntryMeta; import io.papermc.paper.registry.tag.TagKey; +import io.papermc.paper.world.LootTables; import java.util.Collections; import java.util.IdentityHashMap; import java.util.List; @@ -144,7 +145,7 @@ public final class PaperRegistries { start(Registries.PIG_VARIANT, RegistryKey.PIG_VARIANT).craft(Pig.Variant.class, CraftPig.CraftVariant::new).writable(PaperPigVariantRegistryEntry.PaperBuilder::new), start(Registries.ZOMBIE_NAUTILUS_VARIANT, RegistryKey.ZOMBIE_NAUTILUS_VARIANT).craft(ZombieNautilus.Variant.class, CraftZombieNautilus.CraftVariant::new).writable(PaperZombieNautilusVariantRegistryEntry.PaperBuilder::new), start(Registries.DIALOG, RegistryKey.DIALOG).craft(Dialog.class, PaperDialog::new, true).writable(PaperDialogRegistryEntry.PaperBuilder::new), - start(Registries.LOOT_TABLE, RegistryKey.LOOT_TABLE).craft(LootTable.class, CraftLootTable::new).build(), + start(Registries.LOOT_TABLE, RegistryKey.LOOT_TABLE).craft(LootTables.class, CraftLootTable::new, true).build(), // api-only start(Registries.ENTITY_TYPE, RegistryKey.ENTITY_TYPE).apiOnly(PaperSimpleRegistry::entityType), diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftLootTable.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftLootTable.java index 983032ea7aad..a77987096901 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftLootTable.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftLootTable.java @@ -46,11 +46,11 @@ public static org.bukkit.loot.LootTable minecraftKeyToBukkit(@Nullable ResourceK return (minecraft == null) ? null : RegistryAccess.registryAccess().getRegistry(RegistryKey.LOOT_TABLE).get(PaperAdventure.asAdventureKey(minecraft)); } - public static ResourceKey bukkitToMinecraftKey(org.bukkit.loot.LootTable bukkit) { + public static ResourceKey bukkitToMinecraftKey(org.bukkit.loot.@Nullable LootTable bukkit) { return (bukkit == null || bukkit == EMPTY) ? null : PaperAdventure.asVanilla(Registries.LOOT_TABLE, bukkit.getKey()); } - public static org.bukkit.loot.LootTable minecraftToBukkit(@Nullable LootTable minecraft) { + public static org.bukkit.loot.LootTable minecraftToBukkit(LootTable minecraft) { if (minecraft == LootTable.EMPTY) { return EMPTY; } @@ -65,7 +65,7 @@ public static LootTable bukkitToMinecraft(org.bukkit.loot.LootTable bukkit) { } @Override - public Collection populateLoot(Random random, LootContext context) { + public Collection populateLoot(@Nullable Random random, LootContext context) { Preconditions.checkArgument(context != null, "LootContext cannot be null"); LootParams nmsContext = this.convertContext(context); List nmsItems = this.getHandle().getRandomItems(nmsContext, random == null ? null : new RandomSourceWrapper(random)); @@ -82,7 +82,7 @@ public Collection populateLoot(Random random, LootContext context) { } @Override - public void fillInventory(Inventory inventory, Random random, LootContext context) { + public void fillInventory(Inventory inventory, @Nullable Random random, LootContext context) { Preconditions.checkArgument(inventory != null, "Inventory cannot be null"); Preconditions.checkArgument(context != null, "LootContext cannot be null"); LootParams nmsContext = this.convertContext(context); From 236bb99ba4a0c1cdd9d23e6a17f1df54dea924e5 Mon Sep 17 00:00:00 2001 From: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> Date: Sat, 28 Feb 2026 13:45:15 +0100 Subject: [PATCH 3/4] move to loot package makes it consistent with the upcoming loot context api --- .../main/java/io/papermc/paper/{world => loot}/LootTables.java | 2 +- paper-api/src/main/java/org/bukkit/loot/LootTables.java | 2 +- .../src/main/java/io/papermc/generator/Rewriters.java | 2 +- .../java/io/papermc/generator/registry/RegistryEntries.java | 2 +- .../main/java/io/papermc/paper/registry/PaperRegistries.java | 3 +-- .../bukkit/support/provider/RegistriesArgumentProvider.java | 2 +- 6 files changed, 6 insertions(+), 7 deletions(-) rename paper-api/src/main/java/io/papermc/paper/{world => loot}/LootTables.java (99%) diff --git a/paper-api/src/main/java/io/papermc/paper/world/LootTables.java b/paper-api/src/main/java/io/papermc/paper/loot/LootTables.java similarity index 99% rename from paper-api/src/main/java/io/papermc/paper/world/LootTables.java rename to paper-api/src/main/java/io/papermc/paper/loot/LootTables.java index 4aa38d784ec3..8cdc1bdbc020 100644 --- a/paper-api/src/main/java/io/papermc/paper/world/LootTables.java +++ b/paper-api/src/main/java/io/papermc/paper/loot/LootTables.java @@ -1,4 +1,4 @@ -package io.papermc.paper.world; +package io.papermc.paper.loot; import io.papermc.paper.registry.RegistryAccess; import io.papermc.paper.registry.RegistryKey; diff --git a/paper-api/src/main/java/org/bukkit/loot/LootTables.java b/paper-api/src/main/java/org/bukkit/loot/LootTables.java index a5ec74fd2a5d..cdb5d31a02d5 100644 --- a/paper-api/src/main/java/org/bukkit/loot/LootTables.java +++ b/paper-api/src/main/java/org/bukkit/loot/LootTables.java @@ -13,7 +13,7 @@ * * Minecraft Wiki for more information on loot tables. * - * @deprecated loot table is now a proper registry, see {@link io.papermc.paper.world.LootTables} + * @deprecated loot table is now a proper registry, see {@link io.papermc.paper.loot.LootTables} */ @Deprecated(since = "1.21.11") public enum LootTables implements Keyed { diff --git a/paper-generator/src/main/java/io/papermc/generator/Rewriters.java b/paper-generator/src/main/java/io/papermc/generator/Rewriters.java index d5a1d49c0910..0b4578e3e031 100644 --- a/paper-generator/src/main/java/io/papermc/generator/Rewriters.java +++ b/paper-generator/src/main/java/io/papermc/generator/Rewriters.java @@ -26,7 +26,7 @@ import io.papermc.paper.datacomponent.item.SwingAnimation; import io.papermc.paper.datacomponent.item.consumable.ItemUseAnimation; import io.papermc.paper.dialog.Dialog; -import io.papermc.paper.world.LootTables; +import io.papermc.paper.loot.LootTables; import io.papermc.paper.world.WeatheringCopperState; import io.papermc.typewriter.preset.EnumCloneRewriter; import io.papermc.typewriter.preset.model.EnumValue; diff --git a/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java b/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java index a5ddc9401876..4850dbd62ec0 100644 --- a/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java +++ b/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java @@ -20,7 +20,7 @@ import io.papermc.paper.registry.data.WolfVariantRegistryEntry; import io.papermc.paper.registry.data.ZombieNautilusVariantRegistryEntry; import io.papermc.paper.registry.data.dialog.DialogRegistryEntry; -import io.papermc.paper.world.LootTables; +import io.papermc.paper.loot.LootTables; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.lang.reflect.Type; diff --git a/paper-server/src/main/java/io/papermc/paper/registry/PaperRegistries.java b/paper-server/src/main/java/io/papermc/paper/registry/PaperRegistries.java index f88dbf9e7c51..ef290f87c543 100644 --- a/paper-server/src/main/java/io/papermc/paper/registry/PaperRegistries.java +++ b/paper-server/src/main/java/io/papermc/paper/registry/PaperRegistries.java @@ -25,7 +25,7 @@ import io.papermc.paper.registry.entry.RegistryEntry; import io.papermc.paper.registry.entry.RegistryEntryMeta; import io.papermc.paper.registry.tag.TagKey; -import io.papermc.paper.world.LootTables; +import io.papermc.paper.loot.LootTables; import java.util.Collections; import java.util.IdentityHashMap; import java.util.List; @@ -94,7 +94,6 @@ import org.bukkit.inventory.MenuType; import org.bukkit.inventory.meta.trim.TrimMaterial; import org.bukkit.inventory.meta.trim.TrimPattern; -import org.bukkit.loot.LootTable; import org.bukkit.map.MapCursor; import org.bukkit.potion.PotionEffectType; import org.jspecify.annotations.Nullable; diff --git a/paper-server/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java b/paper-server/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java index 8097c77d7af9..b72689a8ecb4 100644 --- a/paper-server/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java +++ b/paper-server/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java @@ -8,7 +8,7 @@ import io.papermc.paper.registry.RegistryKey; import java.util.List; import java.util.stream.Stream; -import io.papermc.paper.world.LootTables; +import io.papermc.paper.loot.LootTables; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; From 7e43d554a2595f4731f63b555bdcc7e0af14e773 Mon Sep 17 00:00:00 2001 From: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> Date: Tue, 3 Mar 2026 16:24:49 +0100 Subject: [PATCH 4/4] improve registry lookup --- .../src/main/java/org/bukkit/Registry.java | 2 +- .../main/java/io/papermc/generator/Main.java | 18 +++++++++---- .../generator/registry/RegistryEntries.java | 16 +++++++++++- .../utils/MergedRegistryProvider.java | 25 ------------------- .../org/bukkit/craftbukkit/CraftRegistry.java | 7 ++++-- .../inventory/view/CraftEnchantmentView.java | 4 +-- 6 files changed, 36 insertions(+), 36 deletions(-) delete mode 100644 paper-generator/src/main/java/io/papermc/generator/utils/MergedRegistryProvider.java diff --git a/paper-api/src/main/java/org/bukkit/Registry.java b/paper-api/src/main/java/org/bukkit/Registry.java index 3b60a7d9bedd..09877e9be730 100644 --- a/paper-api/src/main/java/org/bukkit/Registry.java +++ b/paper-api/src/main/java/org/bukkit/Registry.java @@ -185,7 +185,7 @@ public Iterator iterator() { * @see LootTables * @deprecated use {@link RegistryAccess#getRegistry(RegistryKey)} with {@link RegistryKey#LOOT_TABLE} */ - @Deprecated(since = "1.21.11") + @Deprecated(since = "1.21.11", forRemoval = true) Registry LOOT_TABLES = new SimpleRegistry<>(LootTables.class); /** * Server materials. diff --git a/paper-generator/src/main/java/io/papermc/generator/Main.java b/paper-generator/src/main/java/io/papermc/generator/Main.java index 1cf51f3b4671..adb166a57e53 100644 --- a/paper-generator/src/main/java/io/papermc/generator/Main.java +++ b/paper-generator/src/main/java/io/papermc/generator/Main.java @@ -1,10 +1,10 @@ package io.papermc.generator; import com.mojang.logging.LogUtils; +import io.papermc.generator.registry.RegistryEntries; import io.papermc.generator.rewriter.registration.PaperPatternSourceSetRewriter; import io.papermc.generator.rewriter.registration.PatternSourceSetRewriter; import io.papermc.generator.types.SourceGenerator; -import io.papermc.generator.utils.MergedRegistryProvider; import io.papermc.generator.utils.experimental.ExperimentalCollector; import java.io.IOException; import java.nio.file.Files; @@ -16,17 +16,17 @@ import java.util.concurrent.Callable; import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; +import java.util.stream.Collectors; import java.util.stream.Stream; import net.minecraft.SharedConstants; -import net.minecraft.core.registries.Registries; -import net.minecraft.util.Util; import net.minecraft.commands.Commands; import net.minecraft.core.HolderLookup; import net.minecraft.core.LayeredRegistryAccess; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; -import net.minecraft.resources.RegistryDataLoader; import net.minecraft.resources.Identifier; +import net.minecraft.resources.RegistryDataLoader; +import net.minecraft.resources.ResourceKey; import net.minecraft.server.Bootstrap; import net.minecraft.server.MinecraftServer; import net.minecraft.server.RegistryLayer; @@ -39,10 +39,12 @@ import net.minecraft.server.permissions.LevelBasedPermissionSet; import net.minecraft.tags.TagKey; import net.minecraft.tags.TagLoader; +import net.minecraft.util.Util; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.flag.FeatureFlags; import net.minecraft.world.level.DataPackConfig; import net.minecraft.world.level.WorldDataConfiguration; +import net.minecraft.world.level.storage.loot.LootDataType; import org.apache.commons.io.file.PathUtils; import org.checkerframework.checker.nullness.qual.MonotonicNonNull; import org.slf4j.Logger; @@ -109,7 +111,13 @@ public static CompletableFuture bootStrap(boolean withResources) { } }).thenAccept(resources -> { resources.updateStaticRegistryTags(); - REGISTRIES = new MergedRegistryProvider(REGISTRIES, resources.fullRegistries().lookup(), Set.of(Registries.LOOT_TABLE)); + Set>> reloadableRegistries = LootDataType.values().map(LootDataType::registryKey).collect(Collectors.toSet()); + /*REGISTRIES = HolderLookup.Provider.create(RegistryEntries.stream().map(entry -> { + return (reloadableRegistries.contains(entry.registryKey()) ? resources.fullRegistries().lookup() : REGISTRIES).lookupOrThrow(entry.registryKey()); + }));*/ + REGISTRIES = HolderLookup.Provider.create(RegistryEntries.streamLegacy().map(key -> { + return (reloadableRegistries.contains(key) ? resources.fullRegistries().lookup() : REGISTRIES).lookupOrThrow(key); + })); EXPERIMENTAL_TAGS = ExperimentalCollector.collectTags(resourceManager); }); } else { diff --git a/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java b/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java index 4850dbd62ec0..1f42e732a67f 100644 --- a/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java +++ b/paper-generator/src/main/java/io/papermc/generator/registry/RegistryEntries.java @@ -4,6 +4,7 @@ import io.papermc.paper.datacomponent.DataComponentType; import io.papermc.paper.datacomponent.DataComponentTypes; import io.papermc.paper.dialog.Dialog; +import io.papermc.paper.loot.LootTables; import io.papermc.paper.registry.data.BannerPatternRegistryEntry; import io.papermc.paper.registry.data.CatTypeRegistryEntry; import io.papermc.paper.registry.data.ChickenVariantRegistryEntry; @@ -20,7 +21,6 @@ import io.papermc.paper.registry.data.WolfVariantRegistryEntry; import io.papermc.paper.registry.data.ZombieNautilusVariantRegistryEntry; import io.papermc.paper.registry.data.dialog.DialogRegistryEntry; -import io.papermc.paper.loot.LootTables; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.lang.reflect.Type; @@ -33,6 +33,7 @@ import java.util.Set; import java.util.function.Consumer; import java.util.stream.Collectors; +import java.util.stream.Stream; import net.minecraft.core.Registry; import net.minecraft.core.component.DataComponents; import net.minecraft.core.particles.ParticleTypes; @@ -221,6 +222,19 @@ public static RegistryEntry byRegistryKey(ResourceKey> stream() { + return Stream.concat(RegistryEntries.BUILT_IN.stream(), RegistryEntries.DATA_DRIVEN.stream()); + } + + @Deprecated(forRemoval = true) + public static Stream>> streamLegacy() { // todo remove once all the api only registry are migrated + Stream>> injectedKeys = Stream.of( // todo remove once stats is a proper registry + Registries.STAT_TYPE, + Registries.CUSTOM_STAT + ); + return Stream.concat(Stream.concat(stream(), RegistryEntries.API_ONLY.stream()).map(RegistryEntry::registryKey), injectedKeys); + } + public static void forEach(Consumer> callback) { forEach(callback, RegistryEntries.BUILT_IN, RegistryEntries.DATA_DRIVEN); } diff --git a/paper-generator/src/main/java/io/papermc/generator/utils/MergedRegistryProvider.java b/paper-generator/src/main/java/io/papermc/generator/utils/MergedRegistryProvider.java deleted file mode 100644 index 70ad5b9498d3..000000000000 --- a/paper-generator/src/main/java/io/papermc/generator/utils/MergedRegistryProvider.java +++ /dev/null @@ -1,25 +0,0 @@ -package io.papermc.generator.utils; - -import java.util.Optional; -import java.util.Set; -import java.util.stream.Stream; -import net.minecraft.core.HolderLookup; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceKey; - -public record MergedRegistryProvider( - HolderLookup.Provider registryAccess, - HolderLookup.Provider reloadableProvider, - Set>> reloadableRegistries -) implements HolderLookup.Provider { - - @Override - public Stream>> listRegistryKeys() { - return Stream.concat(this.registryAccess.listRegistryKeys(), this.reloadableRegistries.stream()); - } - - @Override - public Optional> lookup(ResourceKey> registryKey) { - return this.reloadableRegistries.contains(registryKey) ? this.reloadableProvider.lookup(registryKey) : this.registryAccess.lookup(registryKey); - } -} diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java index 86e15eac5ab2..d7973f602f6f 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java @@ -13,13 +13,15 @@ import java.util.Iterator; import java.util.Map; import java.util.Optional; +import java.util.Set; import java.util.function.BiFunction; +import java.util.stream.Collectors; import java.util.stream.Stream; import net.minecraft.core.Holder; import net.minecraft.core.HolderOwner; -import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.server.ReloadableServerRegistries; +import net.minecraft.world.level.storage.loot.LootDataType; import org.bukkit.Keyed; import org.bukkit.NamespacedKey; import org.bukkit.Particle; @@ -33,6 +35,7 @@ public class CraftRegistry implements Registry { + private static final Set>> RELOADABLE_REGISTRY_KEYS = LootDataType.values().map(LootDataType::registryKey).collect(Collectors.toSet()); private static net.minecraft.core.RegistryAccess registries; private static ReloadableServerRegistries.Holder reloadableRegistries; @@ -51,7 +54,7 @@ public static net.minecraft.core.RegistryAccess getRegistryAccess() { } public static net.minecraft.core.Registry getRegistry(ResourceKey> registryKey) { - if (registryKey.equals(Registries.LOOT_TABLE)) { + if (RELOADABLE_REGISTRY_KEYS.contains(registryKey)) { return (net.minecraft.core.Registry) CraftRegistry.reloadableRegistries.lookup().lookupOrThrow(registryKey); } return CraftRegistry.getRegistryAccess().lookupOrThrow(registryKey); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftEnchantmentView.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftEnchantmentView.java index 08d6cc827e81..3b89a1edfe76 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftEnchantmentView.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftEnchantmentView.java @@ -34,7 +34,7 @@ public void setEnchantmentSeed(int seed) { @NotNull @Override public EnchantmentOffer[] getOffers() { - IdMap> registry = CraftRegistry.getRegistryAccess().lookupOrThrow(Registries.ENCHANTMENT).asHolderIdMap(); + IdMap> registry = CraftRegistry.getRegistry(Registries.ENCHANTMENT).asHolderIdMap(); EnchantmentOffer[] offers = new EnchantmentOffer[3]; for (int i = 0; i < 3; i++) { org.bukkit.enchantments.Enchantment enchantment = (this.container.enchantClue[i] >= 0) ? CraftEnchantment.minecraftHolderToBukkit(registry.byId(this.container.enchantClue[i])) : null; @@ -46,7 +46,7 @@ public EnchantmentOffer[] getOffers() { @Override public void setOffers(@NotNull final EnchantmentOffer[] offers) { Preconditions.checkArgument(offers.length == 3, "There must be 3 offers given"); - IdMap> registry = CraftRegistry.getRegistryAccess().lookupOrThrow(Registries.ENCHANTMENT).asHolderIdMap(); + IdMap> registry = CraftRegistry.getRegistry(Registries.ENCHANTMENT).asHolderIdMap(); for (int i = 0; i < offers.length; i++) { final EnchantmentOffer offer = offers[i]; if (offer == null) {