aboutsummaryrefslogtreecommitdiffhomepage
path: root/paper-api-generator
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2024-05-04 11:22:35 -0700
committerGitHub <[email protected]>2024-05-04 11:22:35 -0700
commit5632210f10e520ce70a647b2b2bd45efde4d039b (patch)
tree1581f21c73e1129dda4ac14d96c0e6dc2a460ab2 /paper-api-generator
parent156675c773bf09679ed7b163b6c9b46f0ccb8070 (diff)
downloadPaper-5632210f10e520ce70a647b2b2bd45efde4d039b.tar.gz
Paper-5632210f10e520ce70a647b2b2bd45efde4d039b.zip
add RegistryAccess for managing registries (#10154)
* add RegistryAccess for managing registries * add missing types to key data generator * fix some stuff * Add RegistryKeys for all other non-server-backed registries * fix tests * remove Experimental annotations
Diffstat (limited to 'paper-api-generator')
-rw-r--r--paper-api-generator/generated/io/papermc/paper/registry/keys/DamageTypeKeys.java367
-rw-r--r--paper-api-generator/generated/io/papermc/paper/registry/keys/EnchantmentKeys.java336
-rw-r--r--paper-api-generator/generated/io/papermc/paper/registry/keys/GameEventKeys.java9
-rw-r--r--paper-api-generator/generated/io/papermc/paper/registry/keys/InstrumentKeys.java91
-rw-r--r--paper-api-generator/generated/io/papermc/paper/registry/keys/MobEffectKeys.java321
-rw-r--r--paper-api-generator/generated/io/papermc/paper/registry/keys/WolfVariantKeys.java105
-rw-r--r--paper-api-generator/src/main/java/io/papermc/generator/Generators.java12
-rw-r--r--paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedKeyType.java20
8 files changed, 1251 insertions, 10 deletions
diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/DamageTypeKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/DamageTypeKeys.java
new file mode 100644
index 0000000000..ed52d2393e
--- /dev/null
+++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/DamageTypeKeys.java
@@ -0,0 +1,367 @@
+package io.papermc.paper.registry.keys;
+
+import static net.kyori.adventure.key.Key.key;
+
+import io.papermc.paper.generated.GeneratedFrom;
+import io.papermc.paper.registry.RegistryKey;
+import io.papermc.paper.registry.TypedKey;
+import net.kyori.adventure.key.Key;
+import org.bukkit.MinecraftExperimental;
+import org.bukkit.damage.DamageType;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Vanilla keys for {@link RegistryKey#DAMAGE_TYPE}.
+ *
+ * @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"
+})
+@GeneratedFrom("1.20.6")
+public final class DamageTypeKeys {
+ /**
+ * {@code minecraft:arrow}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> ARROW = create(key("arrow"));
+
+ /**
+ * {@code minecraft:bad_respawn_point}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> BAD_RESPAWN_POINT = create(key("bad_respawn_point"));
+
+ /**
+ * {@code minecraft:cactus}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> CACTUS = create(key("cactus"));
+
+ /**
+ * {@code minecraft:cramming}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> CRAMMING = create(key("cramming"));
+
+ /**
+ * {@code minecraft:dragon_breath}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> DRAGON_BREATH = create(key("dragon_breath"));
+
+ /**
+ * {@code minecraft:drown}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> DROWN = create(key("drown"));
+
+ /**
+ * {@code minecraft:dry_out}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> DRY_OUT = create(key("dry_out"));
+
+ /**
+ * {@code minecraft:explosion}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> EXPLOSION = create(key("explosion"));
+
+ /**
+ * {@code minecraft:fall}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> FALL = create(key("fall"));
+
+ /**
+ * {@code minecraft:falling_anvil}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> FALLING_ANVIL = create(key("falling_anvil"));
+
+ /**
+ * {@code minecraft:falling_block}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> FALLING_BLOCK = create(key("falling_block"));
+
+ /**
+ * {@code minecraft:falling_stalactite}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> FALLING_STALACTITE = create(key("falling_stalactite"));
+
+ /**
+ * {@code minecraft:fireball}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> FIREBALL = create(key("fireball"));
+
+ /**
+ * {@code minecraft:fireworks}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> FIREWORKS = create(key("fireworks"));
+
+ /**
+ * {@code minecraft:fly_into_wall}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> FLY_INTO_WALL = create(key("fly_into_wall"));
+
+ /**
+ * {@code minecraft:freeze}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> FREEZE = create(key("freeze"));
+
+ /**
+ * {@code minecraft:generic}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> GENERIC = create(key("generic"));
+
+ /**
+ * {@code minecraft:generic_kill}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> GENERIC_KILL = create(key("generic_kill"));
+
+ /**
+ * {@code minecraft:hot_floor}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> HOT_FLOOR = create(key("hot_floor"));
+
+ /**
+ * {@code minecraft:in_fire}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> IN_FIRE = create(key("in_fire"));
+
+ /**
+ * {@code minecraft:in_wall}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> IN_WALL = create(key("in_wall"));
+
+ /**
+ * {@code minecraft:indirect_magic}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> INDIRECT_MAGIC = create(key("indirect_magic"));
+
+ /**
+ * {@code minecraft:lava}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> LAVA = create(key("lava"));
+
+ /**
+ * {@code minecraft:lightning_bolt}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> LIGHTNING_BOLT = create(key("lightning_bolt"));
+
+ /**
+ * {@code minecraft:magic}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> MAGIC = create(key("magic"));
+
+ /**
+ * {@code minecraft:mob_attack}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> MOB_ATTACK = create(key("mob_attack"));
+
+ /**
+ * {@code minecraft:mob_attack_no_aggro}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> MOB_ATTACK_NO_AGGRO = create(key("mob_attack_no_aggro"));
+
+ /**
+ * {@code minecraft:mob_projectile}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> MOB_PROJECTILE = create(key("mob_projectile"));
+
+ /**
+ * {@code minecraft:on_fire}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> ON_FIRE = create(key("on_fire"));
+
+ /**
+ * {@code minecraft:out_of_world}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> OUT_OF_WORLD = create(key("out_of_world"));
+
+ /**
+ * {@code minecraft:outside_border}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> OUTSIDE_BORDER = create(key("outside_border"));
+
+ /**
+ * {@code minecraft:player_attack}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> PLAYER_ATTACK = create(key("player_attack"));
+
+ /**
+ * {@code minecraft:player_explosion}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> PLAYER_EXPLOSION = create(key("player_explosion"));
+
+ /**
+ * {@code minecraft:sonic_boom}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> SONIC_BOOM = create(key("sonic_boom"));
+
+ /**
+ * {@code minecraft:spit}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> SPIT = create(key("spit"));
+
+ /**
+ * {@code minecraft:stalagmite}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> STALAGMITE = create(key("stalagmite"));
+
+ /**
+ * {@code minecraft:starve}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> STARVE = create(key("starve"));
+
+ /**
+ * {@code minecraft:sting}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> STING = create(key("sting"));
+
+ /**
+ * {@code minecraft:sweet_berry_bush}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> SWEET_BERRY_BUSH = create(key("sweet_berry_bush"));
+
+ /**
+ * {@code minecraft:thorns}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> THORNS = create(key("thorns"));
+
+ /**
+ * {@code minecraft:thrown}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> THROWN = create(key("thrown"));
+
+ /**
+ * {@code minecraft:trident}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> TRIDENT = create(key("trident"));
+
+ /**
+ * {@code minecraft:unattributed_fireball}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> UNATTRIBUTED_FIREBALL = create(key("unattributed_fireball"));
+
+ /**
+ * {@code minecraft:wind_charge}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ @ApiStatus.Experimental
+ @MinecraftExperimental(MinecraftExperimental.Requires.UPDATE_1_21)
+ public static final TypedKey<DamageType> WIND_CHARGE = create(key("wind_charge"));
+
+ /**
+ * {@code minecraft:wither}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> WITHER = create(key("wither"));
+
+ /**
+ * {@code minecraft:wither_skull}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<DamageType> WITHER_SKULL = create(key("wither_skull"));
+
+ private DamageTypeKeys() {
+ }
+
+ /**
+ * Creates a key for {@link DamageType} in a registry.
+ *
+ * @param key the value's key in the registry
+ * @return a new typed key
+ */
+ @ApiStatus.Experimental
+ public static @NotNull TypedKey<DamageType> create(final @NotNull Key key) {
+ return TypedKey.create(RegistryKey.DAMAGE_TYPE, key);
+ }
+}
diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/EnchantmentKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/EnchantmentKeys.java
new file mode 100644
index 0000000000..3c64bc0790
--- /dev/null
+++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/EnchantmentKeys.java
@@ -0,0 +1,336 @@
+package io.papermc.paper.registry.keys;
+
+import static net.kyori.adventure.key.Key.key;
+
+import io.papermc.paper.generated.GeneratedFrom;
+import io.papermc.paper.registry.RegistryKey;
+import io.papermc.paper.registry.TypedKey;
+import net.kyori.adventure.key.Key;
+import org.bukkit.MinecraftExperimental;
+import org.bukkit.enchantments.Enchantment;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Vanilla keys for {@link RegistryKey#ENCHANTMENT}.
+ *
+ * @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"
+})
+@GeneratedFrom("1.20.6")
+public final class EnchantmentKeys {
+ /**
+ * {@code minecraft:aqua_affinity}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> AQUA_AFFINITY = create(key("aqua_affinity"));
+
+ /**
+ * {@code minecraft:bane_of_arthropods}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> BANE_OF_ARTHROPODS = create(key("bane_of_arthropods"));
+
+ /**
+ * {@code minecraft:binding_curse}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> BINDING_CURSE = create(key("binding_curse"));
+
+ /**
+ * {@code minecraft:blast_protection}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> BLAST_PROTECTION = create(key("blast_protection"));
+
+ /**
+ * {@code minecraft:breach}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ @ApiStatus.Experimental
+ @MinecraftExperimental(MinecraftExperimental.Requires.UPDATE_1_21)
+ public static final TypedKey<Enchantment> BREACH = create(key("breach"));
+
+ /**
+ * {@code minecraft:channeling}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> CHANNELING = create(key("channeling"));
+
+ /**
+ * {@code minecraft:density}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ @ApiStatus.Experimental
+ @MinecraftExperimental(MinecraftExperimental.Requires.UPDATE_1_21)
+ public static final TypedKey<Enchantment> DENSITY = create(key("density"));
+
+ /**
+ * {@code minecraft:depth_strider}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> DEPTH_STRIDER = create(key("depth_strider"));
+
+ /**
+ * {@code minecraft:efficiency}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> EFFICIENCY = create(key("efficiency"));
+
+ /**
+ * {@code minecraft:feather_falling}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> FEATHER_FALLING = create(key("feather_falling"));
+
+ /**
+ * {@code minecraft:fire_aspect}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> FIRE_ASPECT = create(key("fire_aspect"));
+
+ /**
+ * {@code minecraft:fire_protection}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> FIRE_PROTECTION = create(key("fire_protection"));
+
+ /**
+ * {@code minecraft:flame}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> FLAME = create(key("flame"));
+
+ /**
+ * {@code minecraft:fortune}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> FORTUNE = create(key("fortune"));
+
+ /**
+ * {@code minecraft:frost_walker}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> FROST_WALKER = create(key("frost_walker"));
+
+ /**
+ * {@code minecraft:impaling}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> IMPALING = create(key("impaling"));
+
+ /**
+ * {@code minecraft:infinity}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> INFINITY = create(key("infinity"));
+
+ /**
+ * {@code minecraft:knockback}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> KNOCKBACK = create(key("knockback"));
+
+ /**
+ * {@code minecraft:looting}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> LOOTING = create(key("looting"));
+
+ /**
+ * {@code minecraft:loyalty}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> LOYALTY = create(key("loyalty"));
+
+ /**
+ * {@code minecraft:luck_of_the_sea}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> LUCK_OF_THE_SEA = create(key("luck_of_the_sea"));
+
+ /**
+ * {@code minecraft:lure}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> LURE = create(key("lure"));
+
+ /**
+ * {@code minecraft:mending}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> MENDING = create(key("mending"));
+
+ /**
+ * {@code minecraft:multishot}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> MULTISHOT = create(key("multishot"));
+
+ /**
+ * {@code minecraft:piercing}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> PIERCING = create(key("piercing"));
+
+ /**
+ * {@code minecraft:power}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> POWER = create(key("power"));
+
+ /**
+ * {@code minecraft:projectile_protection}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> PROJECTILE_PROTECTION = create(key("projectile_protection"));
+
+ /**
+ * {@code minecraft:protection}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> PROTECTION = create(key("protection"));
+
+ /**
+ * {@code minecraft:punch}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> PUNCH = create(key("punch"));
+
+ /**
+ * {@code minecraft:quick_charge}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> QUICK_CHARGE = create(key("quick_charge"));
+
+ /**
+ * {@code minecraft:respiration}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> RESPIRATION = create(key("respiration"));
+
+ /**
+ * {@code minecraft:riptide}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> RIPTIDE = create(key("riptide"));
+
+ /**
+ * {@code minecraft:sharpness}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> SHARPNESS = create(key("sharpness"));
+
+ /**
+ * {@code minecraft:silk_touch}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> SILK_TOUCH = create(key("silk_touch"));
+
+ /**
+ * {@code minecraft:smite}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> SMITE = create(key("smite"));
+
+ /**
+ * {@code minecraft:soul_speed}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> SOUL_SPEED = create(key("soul_speed"));
+
+ /**
+ * {@code minecraft:sweeping_edge}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> SWEEPING_EDGE = create(key("sweeping_edge"));
+
+ /**
+ * {@code minecraft:swift_sneak}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> SWIFT_SNEAK = create(key("swift_sneak"));
+
+ /**
+ * {@code minecraft:thorns}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> THORNS = create(key("thorns"));
+
+ /**
+ * {@code minecraft:unbreaking}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> UNBREAKING = create(key("unbreaking"));
+
+ /**
+ * {@code minecraft:vanishing_curse}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Enchantment> VANISHING_CURSE = create(key("vanishing_curse"));
+
+ /**
+ * {@code minecraft:wind_burst}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ @ApiStatus.Experimental
+ @MinecraftExperimental(MinecraftExperimental.Requires.UPDATE_1_21)
+ public static final TypedKey<Enchantment> WIND_BURST = create(key("wind_burst"));
+
+ private EnchantmentKeys() {
+ }
+
+ private static @NotNull TypedKey<Enchantment> create(final @NotNull Key key) {
+ return TypedKey.create(RegistryKey.ENCHANTMENT, key);
+ }
+}
diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/GameEventKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/GameEventKeys.java
index f220c63b8a..6d228f2f02 100644
--- a/paper-api-generator/generated/io/papermc/paper/registry/keys/GameEventKeys.java
+++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/GameEventKeys.java
@@ -449,14 +449,7 @@ public final class GameEventKeys {
private GameEventKeys() {
}
- /**
- * Creates a key for {@link GameEvent} in a registry.
- *
- * @param key the value's key in the registry
- * @return a new typed key
- */
- @ApiStatus.Experimental
- public static @NotNull TypedKey<GameEvent> create(final @NotNull Key key) {
+ private static @NotNull TypedKey<GameEvent> create(final @NotNull Key key) {
return TypedKey.create(RegistryKey.GAME_EVENT, key);
}
}
diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/InstrumentKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/InstrumentKeys.java
new file mode 100644
index 0000000000..0cddaa1936
--- /dev/null
+++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/InstrumentKeys.java
@@ -0,0 +1,91 @@
+package io.papermc.paper.registry.keys;
+
+import static net.kyori.adventure.key.Key.key;
+
+import io.papermc.paper.generated.GeneratedFrom;
+import io.papermc.paper.registry.RegistryKey;
+import io.papermc.paper.registry.TypedKey;
+import net.kyori.adventure.key.Key;
+import org.bukkit.MusicInstrument;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Vanilla keys for {@link RegistryKey#INSTRUMENT}.
+ *
+ * @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"
+})
+@GeneratedFrom("1.20.6")
+public final class InstrumentKeys {
+ /**
+ * {@code minecraft:admire_goat_horn}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<MusicInstrument> ADMIRE_GOAT_HORN = create(key("admire_goat_horn"));
+
+ /**
+ * {@code minecraft:call_goat_horn}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<MusicInstrument> CALL_GOAT_HORN = create(key("call_goat_horn"));
+
+ /**
+ * {@code minecraft:dream_goat_horn}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<MusicInstrument> DREAM_GOAT_HORN = create(key("dream_goat_horn"));
+
+ /**
+ * {@code minecraft:feel_goat_horn}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<MusicInstrument> FEEL_GOAT_HORN = create(key("feel_goat_horn"));
+
+ /**
+ * {@code minecraft:ponder_goat_horn}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<MusicInstrument> PONDER_GOAT_HORN = create(key("ponder_goat_horn"));
+
+ /**
+ * {@code minecraft:seek_goat_horn}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<MusicInstrument> SEEK_GOAT_HORN = create(key("seek_goat_horn"));
+
+ /**
+ * {@code minecraft:sing_goat_horn}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<MusicInstrument> SING_GOAT_HORN = create(key("sing_goat_horn"));
+
+ /**
+ * {@code minecraft:yearn_goat_horn}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<MusicInstrument> YEARN_GOAT_HORN = create(key("yearn_goat_horn"));
+
+ private InstrumentKeys() {
+ }
+
+ private static @NotNull TypedKey<MusicInstrument> create(final @NotNull Key key) {
+ return TypedKey.create(RegistryKey.INSTRUMENT, key);
+ }
+}
diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/MobEffectKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/MobEffectKeys.java
new file mode 100644
index 0000000000..83835bd7ff
--- /dev/null
+++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/MobEffectKeys.java
@@ -0,0 +1,321 @@
+package io.papermc.paper.registry.keys;
+
+import static net.kyori.adventure.key.Key.key;
+
+import io.papermc.paper.generated.GeneratedFrom;
+import io.papermc.paper.registry.RegistryKey;
+import io.papermc.paper.registry.TypedKey;
+import net.kyori.adventure.key.Key;
+import org.bukkit.MinecraftExperimental;
+import org.bukkit.potion.PotionEffectType;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Vanilla keys for {@link RegistryKey#MOB_EFFECT}.
+ *
+ * @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"
+})
+@GeneratedFrom("1.20.6")
+public final class MobEffectKeys {
+ /**
+ * {@code minecraft:absorption}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> ABSORPTION = create(key("absorption"));
+
+ /**
+ * {@code minecraft:bad_omen}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> BAD_OMEN = create(key("bad_omen"));
+
+ /**
+ * {@code minecraft:blindness}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> BLINDNESS = create(key("blindness"));
+
+ /**
+ * {@code minecraft:conduit_power}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> CONDUIT_POWER = create(key("conduit_power"));
+
+ /**
+ * {@code minecraft:darkness}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> DARKNESS = create(key("darkness"));
+
+ /**
+ * {@code minecraft:dolphins_grace}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> DOLPHINS_GRACE = create(key("dolphins_grace"));
+
+ /**
+ * {@code minecraft:fire_resistance}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> FIRE_RESISTANCE = create(key("fire_resistance"));
+
+ /**
+ * {@code minecraft:glowing}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> GLOWING = create(key("glowing"));
+
+ /**
+ * {@code minecraft:haste}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> HASTE = create(key("haste"));
+
+ /**
+ * {@code minecraft:health_boost}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> HEALTH_BOOST = create(key("health_boost"));
+
+ /**
+ * {@code minecraft:hero_of_the_village}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> HERO_OF_THE_VILLAGE = create(key("hero_of_the_village"));
+
+ /**
+ * {@code minecraft:hunger}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> HUNGER = create(key("hunger"));
+
+ /**
+ * {@code minecraft:infested}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ @ApiStatus.Experimental
+ @MinecraftExperimental(MinecraftExperimental.Requires.UPDATE_1_21)
+ public static final TypedKey<PotionEffectType> INFESTED = create(key("infested"));
+
+ /**
+ * {@code minecraft:instant_damage}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> INSTANT_DAMAGE = create(key("instant_damage"));
+
+ /**
+ * {@code minecraft:instant_health}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> INSTANT_HEALTH = create(key("instant_health"));
+
+ /**
+ * {@code minecraft:invisibility}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> INVISIBILITY = create(key("invisibility"));
+
+ /**
+ * {@code minecraft:jump_boost}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> JUMP_BOOST = create(key("jump_boost"));
+
+ /**
+ * {@code minecraft:levitation}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> LEVITATION = create(key("levitation"));
+
+ /**
+ * {@code minecraft:luck}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> LUCK = create(key("luck"));
+
+ /**
+ * {@code minecraft:mining_fatigue}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> MINING_FATIGUE = create(key("mining_fatigue"));
+
+ /**
+ * {@code minecraft:nausea}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> NAUSEA = create(key("nausea"));
+
+ /**
+ * {@code minecraft:night_vision}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> NIGHT_VISION = create(key("night_vision"));
+
+ /**
+ * {@code minecraft:oozing}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ @ApiStatus.Experimental
+ @MinecraftExperimental(MinecraftExperimental.Requires.UPDATE_1_21)
+ public static final TypedKey<PotionEffectType> OOZING = create(key("oozing"));
+
+ /**
+ * {@code minecraft:poison}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> POISON = create(key("poison"));
+
+ /**
+ * {@code minecraft:raid_omen}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ @ApiStatus.Experimental
+ @MinecraftExperimental(MinecraftExperimental.Requires.UPDATE_1_21)
+ public static final TypedKey<PotionEffectType> RAID_OMEN = create(key("raid_omen"));
+
+ /**
+ * {@code minecraft:regeneration}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> REGENERATION = create(key("regeneration"));
+
+ /**
+ * {@code minecraft:resistance}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> RESISTANCE = create(key("resistance"));
+
+ /**
+ * {@code minecraft:saturation}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> SATURATION = create(key("saturation"));
+
+ /**
+ * {@code minecraft:slow_falling}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> SLOW_FALLING = create(key("slow_falling"));
+
+ /**
+ * {@code minecraft:slowness}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> SLOWNESS = create(key("slowness"));
+
+ /**
+ * {@code minecraft:speed}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> SPEED = create(key("speed"));
+
+ /**
+ * {@code minecraft:strength}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> STRENGTH = create(key("strength"));
+
+ /**
+ * {@code minecraft:trial_omen}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ @ApiStatus.Experimental
+ @MinecraftExperimental(MinecraftExperimental.Requires.UPDATE_1_21)
+ public static final TypedKey<PotionEffectType> TRIAL_OMEN = create(key("trial_omen"));
+
+ /**
+ * {@code minecraft:unluck}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> UNLUCK = create(key("unluck"));
+
+ /**
+ * {@code minecraft:water_breathing}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> WATER_BREATHING = create(key("water_breathing"));
+
+ /**
+ * {@code minecraft:weakness}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> WEAKNESS = create(key("weakness"));
+
+ /**
+ * {@code minecraft:weaving}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ @ApiStatus.Experimental
+ @MinecraftExperimental(MinecraftExperimental.Requires.UPDATE_1_21)
+ public static final TypedKey<PotionEffectType> WEAVING = create(key("weaving"));
+
+ /**
+ * {@code minecraft:wind_charged}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ @ApiStatus.Experimental
+ @MinecraftExperimental(MinecraftExperimental.Requires.UPDATE_1_21)
+ public static final TypedKey<PotionEffectType> WIND_CHARGED = create(key("wind_charged"));
+
+ /**
+ * {@code minecraft:wither}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<PotionEffectType> WITHER = create(key("wither"));
+
+ private MobEffectKeys() {
+ }
+
+ private static @NotNull TypedKey<PotionEffectType> create(final @NotNull Key key) {
+ return TypedKey.create(RegistryKey.MOB_EFFECT, key);
+ }
+}
diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/WolfVariantKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/WolfVariantKeys.java
new file mode 100644
index 0000000000..5ae854aba8
--- /dev/null
+++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/WolfVariantKeys.java
@@ -0,0 +1,105 @@
+package io.papermc.paper.registry.keys;
+
+import static net.kyori.adventure.key.Key.key;
+
+import io.papermc.paper.generated.GeneratedFrom;
+import io.papermc.paper.registry.RegistryKey;
+import io.papermc.paper.registry.TypedKey;
+import net.kyori.adventure.key.Key;
+import org.bukkit.entity.Wolf;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Vanilla keys for {@link RegistryKey#WOLF_VARIANT}.
+ *
+ * @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"
+})
+@GeneratedFrom("1.20.6")
+public final class WolfVariantKeys {
+ /**
+ * {@code minecraft:ashen}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Wolf.Variant> ASHEN = create(key("ashen"));
+
+ /**
+ * {@code minecraft:black}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Wolf.Variant> BLACK = create(key("black"));
+
+ /**
+ * {@code minecraft:chestnut}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Wolf.Variant> CHESTNUT = create(key("chestnut"));
+
+ /**
+ * {@code minecraft:pale}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Wolf.Variant> PALE = create(key("pale"));
+
+ /**
+ * {@code minecraft:rusty}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Wolf.Variant> RUSTY = create(key("rusty"));
+
+ /**
+ * {@code minecraft:snowy}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Wolf.Variant> SNOWY = create(key("snowy"));
+
+ /**
+ * {@code minecraft:spotted}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Wolf.Variant> SPOTTED = create(key("spotted"));
+
+ /**
+ * {@code minecraft:striped}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Wolf.Variant> STRIPED = create(key("striped"));
+
+ /**
+ * {@code minecraft:woods}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey<Wolf.Variant> WOODS = create(key("woods"));
+
+ private WolfVariantKeys() {
+ }
+
+ /**
+ * Creates a key for {@link Wolf.Variant} in a registry.
+ *
+ * @param key the value's key in the registry
+ * @return a new typed key
+ */
+ @ApiStatus.Experimental
+ public static @NotNull TypedKey<Wolf.Variant> create(final @NotNull Key key) {
+ return TypedKey.create(RegistryKey.WOLF_VARIANT, key);
+ }
+}
diff --git a/paper-api-generator/src/main/java/io/papermc/generator/Generators.java b/paper-api-generator/src/main/java/io/papermc/generator/Generators.java
index ac62e26e93..4afed26dd5 100644
--- a/paper-api-generator/src/main/java/io/papermc/generator/Generators.java
+++ b/paper-api-generator/src/main/java/io/papermc/generator/Generators.java
@@ -8,21 +8,31 @@ import net.minecraft.core.Registry;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey;
import org.bukkit.GameEvent;
+import org.bukkit.MusicInstrument;
import org.bukkit.block.Biome;
+import org.bukkit.damage.DamageType;
+import org.bukkit.enchantments.Enchantment;
+import org.bukkit.entity.Wolf;
import org.bukkit.generator.structure.Structure;
import org.bukkit.generator.structure.StructureType;
import org.bukkit.inventory.meta.trim.TrimMaterial;
import org.bukkit.inventory.meta.trim.TrimPattern;
+import org.bukkit.potion.PotionEffectType;
public interface Generators {
SourceGenerator[] API = {
- simpleKey("GameEventKeys", GameEvent.class, Registries.GAME_EVENT, RegistryKey.GAME_EVENT, true),
+ simpleKey("GameEventKeys", GameEvent.class, Registries.GAME_EVENT, RegistryKey.GAME_EVENT, false),
simpleKey("BiomeKeys", Biome.class, Registries.BIOME, RegistryKey.BIOME, true),
simpleKey("TrimMaterialKeys", TrimMaterial.class, Registries.TRIM_MATERIAL, RegistryKey.TRIM_MATERIAL, true),
simpleKey("TrimPatternKeys", TrimPattern.class, Registries.TRIM_PATTERN, RegistryKey.TRIM_PATTERN, true),
simpleKey("StructureKeys", Structure.class, Registries.STRUCTURE, RegistryKey.STRUCTURE, true),
simpleKey("StructureTypeKeys", StructureType.class, Registries.STRUCTURE_TYPE, RegistryKey.STRUCTURE_TYPE, false),
+ simpleKey("InstrumentKeys", MusicInstrument.class, Registries.INSTRUMENT, RegistryKey.INSTRUMENT, false),
+ simpleKey("EnchantmentKeys", Enchantment.class, Registries.ENCHANTMENT, RegistryKey.ENCHANTMENT, false),
+ simpleKey("MobEffectKeys", PotionEffectType.class, Registries.MOB_EFFECT, RegistryKey.MOB_EFFECT, false),
+ simpleKey("DamageTypeKeys", DamageType.class, Registries.DAMAGE_TYPE, RegistryKey.DAMAGE_TYPE, true),
+ simpleKey("WolfVariantKeys", Wolf.Variant.class, Registries.WOLF_VARIANT, RegistryKey.WOLF_VARIANT, true),
new MobGoalGenerator("VanillaGoal", "com.destroystokyo.paper.entity.ai")
};
diff --git a/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedKeyType.java b/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedKeyType.java
index 66c4a4b14f..8307fcad4c 100644
--- a/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedKeyType.java
+++ b/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedKeyType.java
@@ -25,11 +25,14 @@ import java.util.Set;
import java.util.stream.Collectors;
import net.kyori.adventure.key.Key;
import net.minecraft.core.Holder;
+import net.minecraft.core.HolderLookup;
import net.minecraft.core.Registry;
import net.minecraft.core.RegistrySetBuilder;
import net.minecraft.data.registries.UpdateOneTwentyOneRegistries;
import net.minecraft.data.registries.VanillaRegistries;
import net.minecraft.resources.ResourceKey;
+import net.minecraft.world.flag.FeatureElement;
+import net.minecraft.world.flag.FeatureFlags;
import org.bukkit.MinecraftExperimental;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
@@ -151,8 +154,23 @@ public class GeneratedKeyType<T, A> extends SimpleGenerator {
return typeBuilder.addMethod(createMethod.build()).build();
}
- @SuppressWarnings("unchecked")
private Set<ResourceKey<T>> collectExperimentalKeys(final Registry<T> registry) {
+ if (FeatureElement.FILTERED_REGISTRIES.contains(registry.key())) {
+ return this.collectExperimentalKeysBuiltIn(registry);
+ } else {
+ return this.collectExperimentalKeysDataDriven(registry);
+ }
+ }
+
+ private Set<ResourceKey<T>> collectExperimentalKeysBuiltIn(final Registry<T> registry) {
+ final HolderLookup.RegistryLookup<T> filteredLookup = registry.asLookup().filterElements(v -> {
+ return ((FeatureElement) v).requiredFeatures().contains(FeatureFlags.UPDATE_1_21);
+ });
+ return filteredLookup.listElementIds().collect(Collectors.toUnmodifiableSet());
+ }
+
+ @SuppressWarnings("unchecked")
+ private Set<ResourceKey<T>> collectExperimentalKeysDataDriven(final Registry<T> registry) {
final RegistrySetBuilder.@Nullable RegistryBootstrap<T> experimentalBootstrap = (RegistrySetBuilder.RegistryBootstrap<T>) EXPERIMENTAL_REGISTRY_ENTRIES.get(this.registryKey);
if (experimentalBootstrap == null) {
return Collections.emptySet();