diff --git a/.editorconfig b/.editorconfig
index 76c44f0655..600eac0fb9 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,3 +1,5 @@
+root = true
+
[*]
charset = utf-8
end_of_line = lf
@@ -40,5 +42,5 @@ ij_java_use_fq_class_names = true
[paper-server/src/minecraft/resources/data/**/*.json]
indent_size = 2
-[paper-api/src/generated/java/**/*.java]
+[paper-{server,api}/src/generated/java/**/*.java]
ij_java_imports_layout = $*, |, *
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 6449e1ba23..a7df53267c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -35,6 +35,10 @@ jobs:
steps:
- if: ${{ github.event_name == 'push' }}
uses: actions/checkout@v4
+ with:
+ # todo remove me again after the update
+ ref: ${{ github.ref_name }}
+ fetch-depth: 0
- if: ${{ github.event_name == 'pull_request' }}
uses: actions/checkout@v4
with:
diff --git a/.gitignore b/.gitignore
index 53a798d16e..e46ae58b18 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,7 +45,7 @@ logs/
!gradle/wrapper/gradle-wrapper.jar
test-plugin.settings.gradle.kts
-paper-api-generator.settings.gradle.kts
+paper-generator.settings.gradle.kts
# Don't track patched vanilla submodules
paper-server/src/minecraft/
diff --git a/README.md b/README.md
index 3223166baa..d06d31464a 100644
--- a/README.md
+++ b/README.md
@@ -40,7 +40,7 @@ How To (Plugin Developers)
io.papermc.paper
paper-api
- 1.21.4-R0.1-SNAPSHOT
+ 1.21.5-R0.1-SNAPSHOT
provided
```
@@ -53,7 +53,7 @@ repositories {
}
dependencies {
- compileOnly("io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT")
+ compileOnly("io.papermc.paper:paper-api:1.21.5-R0.1-SNAPSHOT")
}
java {
diff --git a/build-data/paper.at b/build-data/paper.at
index e5c60c62d4..78f05d7942 100644
--- a/build-data/paper.at
+++ b/build-data/paper.at
@@ -15,7 +15,8 @@ public net.minecraft.commands.CommandSourceStack source
public net.minecraft.commands.arguments.DimensionArgument ERROR_INVALID_VALUE
public net.minecraft.commands.arguments.blocks.BlockInput tag
public net.minecraft.core.MappedRegistry validateWrite(Lnet/minecraft/resources/ResourceKey;)V
-public net.minecraft.nbt.ListTag (Ljava/util/List;B)V
+public net.minecraft.nbt.ListTag (Ljava/util/List;)V
+public net.minecraft.nbt.ListTag identifyRawElementType()B
public net.minecraft.nbt.TagParser readArrayTag()Lnet/minecraft/nbt/Tag;
public net.minecraft.nbt.TagParser type(Ljava/lang/String;)Lnet/minecraft/nbt/Tag;
public net.minecraft.network.Connection address
@@ -37,9 +38,10 @@ public net.minecraft.network.protocol.game.ServerboundMovePlayerPacket xRot
public net.minecraft.network.protocol.game.ServerboundMovePlayerPacket y
public net.minecraft.network.protocol.game.ServerboundMovePlayerPacket yRot
public net.minecraft.network.protocol.game.ServerboundMovePlayerPacket z
+public net.minecraft.network.syncher.SynchedEntityData getItem(Lnet/minecraft/network/syncher/EntityDataAccessor;)Lnet/minecraft/network/syncher/SynchedEntityData$DataItem;
public net.minecraft.resources.RegistryOps lookupProvider
public net.minecraft.resources.RegistryOps$HolderLookupAdapter
-public net.minecraft.server.Main forceUpgrade(Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;Lcom/mojang/datafixers/DataFixer;ZLjava/util/function/BooleanSupplier;Lnet/minecraft/core/RegistryAccess;Z)V
+public net.minecraft.server.Main forceUpgrade(Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;Lnet/minecraft/world/level/storage/WorldData;Lcom/mojang/datafixers/DataFixer;ZLjava/util/function/BooleanSupplier;Lnet/minecraft/core/RegistryAccess;Z)V
public net.minecraft.server.MinecraftServer LOGGER
public net.minecraft.server.MinecraftServer doRunTask(Lnet/minecraft/server/TickTask;)V
public net.minecraft.server.MinecraftServer executor
@@ -53,6 +55,7 @@ public net.minecraft.server.MinecraftServer$ReloadableResources
public net.minecraft.server.RegistryLayer STATIC_ACCESS
public net.minecraft.server.ReloadableServerResources
public net.minecraft.server.ServerAdvancementManager advancements
+public net.minecraft.server.Services USERID_CACHE_FILE
public net.minecraft.server.dedicated.DedicatedServerProperties$WorldDimensionData
public net.minecraft.server.dedicated.Settings getStringRaw(Ljava/lang/String;)Ljava/lang/String;
public net.minecraft.server.dedicated.Settings properties
@@ -72,15 +75,17 @@ public net.minecraft.server.level.ChunkMap setServerViewDistance(I)V
public net.minecraft.server.level.ChunkMap toDrop
public net.minecraft.server.level.ChunkMap updatingChunkMap
public net.minecraft.server.level.ChunkMap visibleChunkMap
+public net.minecraft.server.level.ChunkMap$DistanceManager
public net.minecraft.server.level.ChunkMap$TrackedEntity
public net.minecraft.server.level.ChunkMap$TrackedEntity seenBy
public net.minecraft.server.level.ChunkMap$TrackedEntity serverEntity
public net.minecraft.server.level.DistanceManager simulationDistance
-public net.minecraft.server.level.DistanceManager tickets
+public net.minecraft.server.level.DistanceManager ticketStorage
public net.minecraft.server.level.ServerBossEvent broadcast(Ljava/util/function/Function;)V
public net.minecraft.server.level.ServerBossEvent visible
public net.minecraft.server.level.ServerChunkCache mainThread
public net.minecraft.server.level.ServerChunkCache mainThreadProcessor
+public net.minecraft.server.level.ServerChunkCache runDistanceManagerUpdates()Z
public net.minecraft.server.level.ServerChunkCache spawnEnemies
public net.minecraft.server.level.ServerChunkCache spawnFriendlies
public net.minecraft.server.level.ServerChunkCache$MainThreadExecutor
@@ -91,7 +96,7 @@ public net.minecraft.server.level.ServerLevel getEntities()Lnet/minecraft/world/
public net.minecraft.server.level.ServerLevel serverLevelData
public net.minecraft.server.level.ServerPlayer completeUsingItem()V
public net.minecraft.server.level.ServerPlayer containerSynchronizer
-public net.minecraft.server.level.ServerPlayer findRespawnAndUseSpawnBlock(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;FZZ)Ljava/util/Optional;
+public net.minecraft.server.level.ServerPlayer findRespawnAndUseSpawnBlock(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/server/level/ServerPlayer$RespawnConfig;Z)Ljava/util/Optional;
public net.minecraft.server.level.ServerPlayer initMenu(Lnet/minecraft/world/inventory/AbstractContainerMenu;)V
public net.minecraft.server.level.ServerPlayer isChangingDimension
public net.minecraft.server.level.ServerPlayer language
@@ -104,6 +109,7 @@ public net.minecraft.server.level.ServerPlayer wardenSpawnTracker
public net.minecraft.server.level.ServerPlayer$RespawnPosAngle
public net.minecraft.server.level.ServerPlayerGameMode level
public net.minecraft.server.level.Ticket key
+public net.minecraft.server.level.TicketType register(Ljava/lang/String;JZLnet/minecraft/server/level/TicketType$TicketUse;)Lnet/minecraft/server/level/TicketType;
public net.minecraft.server.network.ServerGamePacketListenerImpl isChatMessageIllegal(Ljava/lang/String;)Z
public net.minecraft.server.network.ServerLoginPacketListenerImpl authenticatedProfile
public net.minecraft.server.network.ServerLoginPacketListenerImpl connection
@@ -116,12 +122,14 @@ public net.minecraft.server.packs.repository.Pack resources
public net.minecraft.server.players.PlayerList playerIo
public net.minecraft.server.players.PlayerList players
public net.minecraft.server.players.PlayerList updateEntireScoreboard(Lnet/minecraft/server/ServerScoreboard;Lnet/minecraft/server/level/ServerPlayer;)V
+public net.minecraft.server.players.PlayerList verifyChatTrusted(Lnet/minecraft/network/chat/PlayerChatMessage;)Z
public net.minecraft.server.players.StoredUserEntry getUser()Ljava/lang/Object;
public net.minecraft.stats.ServerRecipeBook known
public net.minecraft.tags.TagEntry id
public net.minecraft.tags.TagEntry required
public net.minecraft.tags.TagEntry tag
-public net.minecraft.util.datafix.fixes.BlockStateData register(ILjava/lang/String;[Ljava/lang/String;)V
+public net.minecraft.util.datafix.fixes.BlockStateData register(ILcom/mojang/serialization/Dynamic;[Lcom/mojang/serialization/Dynamic;)V
+public net.minecraft.util.datafix.fixes.EntityCustomNameToComponentFix fixCustomName(Lcom/mojang/serialization/DynamicOps;Ljava/lang/String;Ljava/lang/String;)Lcom/mojang/serialization/Dynamic;
public net.minecraft.util.datafix.fixes.ItemIdFix ITEM_NAMES
public net.minecraft.util.datafix.fixes.ItemSpawnEggFix ID_TO_ENTITY
public net.minecraft.world.BossEvent color
@@ -185,6 +193,9 @@ public net.minecraft.world.entity.Entity FLAG_INVISIBLE
public net.minecraft.world.entity.Entity getEncodeId()Ljava/lang/String;
public net.minecraft.world.entity.Entity getFireImmuneTicks()I
public net.minecraft.world.entity.Entity getSharedFlag(I)Z
+public net.minecraft.world.entity.Entity getSwimHighSpeedSplashSound()Lnet/minecraft/sounds/SoundEvent;
+public net.minecraft.world.entity.Entity getSwimSound()Lnet/minecraft/sounds/SoundEvent;
+public net.minecraft.world.entity.Entity getSwimSplashSound()Lnet/minecraft/sounds/SoundEvent;
public net.minecraft.world.entity.Entity hasVisualFire
public net.minecraft.world.entity.Entity isAffectedByBlocks()Z
public net.minecraft.world.entity.Entity isInBubbleColumn()Z
@@ -201,6 +212,7 @@ public net.minecraft.world.entity.Entity teleportPassengers()V
public net.minecraft.world.entity.Entity unsetRemoved()V
public net.minecraft.world.entity.Entity wasTouchingWater
public net.minecraft.world.entity.ExperienceOrb count
+public net.minecraft.world.entity.ExperienceOrb setValue(I)V
public net.minecraft.world.entity.ExperienceOrb value
public net.minecraft.world.entity.GlowSquid setDarkTicks(I)V
public net.minecraft.world.entity.Interaction attack
@@ -227,16 +239,21 @@ public net.minecraft.world.entity.LivingEntity detectEquipmentUpdates()V
public net.minecraft.world.entity.LivingEntity effectsDirty
public net.minecraft.world.entity.LivingEntity entityEventForEquipmentBreak(Lnet/minecraft/world/entity/EquipmentSlot;)B
public net.minecraft.world.entity.LivingEntity getDeathSound()Lnet/minecraft/sounds/SoundEvent;
+public net.minecraft.world.entity.LivingEntity getFallDamageSound(I)Lnet/minecraft/sounds/SoundEvent;
+public net.minecraft.world.entity.LivingEntity getHurtSound(Lnet/minecraft/world/damagesource/DamageSource;)Lnet/minecraft/sounds/SoundEvent;
public net.minecraft.world.entity.LivingEntity getSoundVolume()F
public net.minecraft.world.entity.LivingEntity jumping
public net.minecraft.world.entity.LivingEntity lastHurt
public net.minecraft.world.entity.LivingEntity lastHurtByMob
public net.minecraft.world.entity.LivingEntity lastHurtByMobTimestamp
public net.minecraft.world.entity.LivingEntity lastHurtByPlayer
+public net.minecraft.world.entity.LivingEntity lastHurtByPlayerMemoryTime
public net.minecraft.world.entity.LivingEntity lastHurtByPlayerTime
+public net.minecraft.world.entity.LivingEntity playSecondaryHurtSound(Lnet/minecraft/world/damagesource/DamageSource;)V
public net.minecraft.world.entity.LivingEntity setLivingEntityFlag(IZ)V
public net.minecraft.world.entity.LivingEntity useItemRemaining
public net.minecraft.world.entity.Mob armorDropChances
+public net.minecraft.world.entity.Mob getAmbientSound()Lnet/minecraft/sounds/SoundEvent;
public net.minecraft.world.entity.Mob getEquipmentDropChance(Lnet/minecraft/world/entity/EquipmentSlot;)F
public net.minecraft.world.entity.Mob handDropChances
public net.minecraft.world.entity.Mob isSunBurnTick()Z
@@ -266,47 +283,60 @@ public net.minecraft.world.entity.animal.Bee ticksWithoutNectarSinceExitingHive
public net.minecraft.world.entity.animal.Cat isRelaxStateOne()Z
public net.minecraft.world.entity.animal.Cat setCollarColor(Lnet/minecraft/world/item/DyeColor;)V
public net.minecraft.world.entity.animal.Cat setRelaxStateOne(Z)V
+public net.minecraft.world.entity.animal.Cat setVariant(Lnet/minecraft/core/Holder;)V
+public net.minecraft.world.entity.animal.Dolphin treasurePos
public net.minecraft.world.entity.animal.Fox DATA_TRUSTED_ID_0
public net.minecraft.world.entity.animal.Fox DATA_TRUSTED_ID_1
public net.minecraft.world.entity.animal.Fox isDefending()Z
public net.minecraft.world.entity.animal.Fox setDefending(Z)V
public net.minecraft.world.entity.animal.Fox setFaceplanted(Z)V
public net.minecraft.world.entity.animal.Fox setSleeping(Z)V
+public net.minecraft.world.entity.animal.Fox setVariant(Lnet/minecraft/world/entity/animal/Fox$Variant;)V
+public net.minecraft.world.entity.animal.MushroomCow setVariant(Lnet/minecraft/world/entity/animal/MushroomCow$Variant;)V
public net.minecraft.world.entity.animal.MushroomCow stewEffects
public net.minecraft.world.entity.animal.Ocelot isTrusting()Z
public net.minecraft.world.entity.animal.Ocelot setTrusting(Z)V
public net.minecraft.world.entity.animal.Panda getEatCounter()I
public net.minecraft.world.entity.animal.Panda setEatCounter(I)V
+public net.minecraft.world.entity.animal.Parrot setVariant(Lnet/minecraft/world/entity/animal/Parrot$Variant;)V
+public net.minecraft.world.entity.animal.Pig setVariant(Lnet/minecraft/core/Holder;)V
public net.minecraft.world.entity.animal.Pig steering
public net.minecraft.world.entity.animal.Rabbit moreCarrotTicks
public net.minecraft.world.entity.animal.Rabbit registerGoals()V
+public net.minecraft.world.entity.animal.Rabbit setVariant(Lnet/minecraft/world/entity/animal/Rabbit$Variant;)V
+public net.minecraft.world.entity.animal.Salmon setVariant(Lnet/minecraft/world/entity/animal/Salmon$Variant;)V
public net.minecraft.world.entity.animal.TropicalFish getPackedVariant()I
public net.minecraft.world.entity.animal.TropicalFish setPackedVariant(I)V
-public net.minecraft.world.entity.animal.Turtle getHomePos()Lnet/minecraft/core/BlockPos;
-public net.minecraft.world.entity.animal.Turtle isGoingHome()Z
-public net.minecraft.world.entity.animal.Turtle isTravelling()Z
-public net.minecraft.world.entity.animal.Turtle setGoingHome(Z)V
+public net.minecraft.world.entity.animal.Turtle goingHome
+public net.minecraft.world.entity.animal.Turtle homePos
public net.minecraft.world.entity.animal.Turtle setHasEgg(Z)V
-public net.minecraft.world.entity.animal.Turtle setTravelling(Z)V
-public net.minecraft.world.entity.animal.Wolf isWet
-public net.minecraft.world.entity.animal.Wolf setCollarColor(Lnet/minecraft/world/item/DyeColor;)V
public net.minecraft.world.entity.animal.allay.Allay canDuplicate()Z
public net.minecraft.world.entity.animal.allay.Allay duplicateAllay()V
public net.minecraft.world.entity.animal.allay.Allay duplicationCooldown
public net.minecraft.world.entity.animal.allay.Allay jukeboxPos
public net.minecraft.world.entity.animal.allay.Allay resetDuplicationCooldown()V
+public net.minecraft.world.entity.animal.axolotl.Axolotl setVariant(Lnet/minecraft/world/entity/animal/axolotl/Axolotl$Variant;)V
+public net.minecraft.world.entity.animal.frog.Frog setVariant(Lnet/minecraft/core/Holder;)V
public net.minecraft.world.entity.animal.frog.Tadpole age
public net.minecraft.world.entity.animal.goat.Goat DATA_HAS_LEFT_HORN
public net.minecraft.world.entity.animal.goat.Goat DATA_HAS_RIGHT_HORN
public net.minecraft.world.entity.animal.horse.AbstractHorse createInventory()V
public net.minecraft.world.entity.animal.horse.AbstractHorse inventory
+public net.minecraft.world.entity.animal.horse.AbstractHorse owner
public net.minecraft.world.entity.animal.horse.Horse setVariantAndMarkings(Lnet/minecraft/world/entity/animal/horse/Variant;Lnet/minecraft/world/entity/animal/horse/Markings;)V
+public net.minecraft.world.entity.animal.horse.Llama setVariant(Lnet/minecraft/world/entity/animal/horse/Llama$Variant;)V
public net.minecraft.world.entity.animal.horse.SkeletonHorse trapTime
public net.minecraft.world.entity.animal.sniffer.Sniffer calculateDigPosition()Ljava/util/Optional;
public net.minecraft.world.entity.animal.sniffer.Sniffer canDig()Z
public net.minecraft.world.entity.animal.sniffer.Sniffer getExploredPositions()Ljava/util/stream/Stream;
public net.minecraft.world.entity.animal.sniffer.Sniffer getState()Lnet/minecraft/world/entity/animal/sniffer/Sniffer$State;
public net.minecraft.world.entity.animal.sniffer.Sniffer storeExploredPosition(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/entity/animal/sniffer/Sniffer;
+public net.minecraft.world.entity.animal.wolf.Wolf getSoundVariant()Lnet/minecraft/core/Holder;
+public net.minecraft.world.entity.animal.wolf.Wolf getVariant()Lnet/minecraft/core/Holder;
+public net.minecraft.world.entity.animal.wolf.Wolf isWet
+public net.minecraft.world.entity.animal.wolf.Wolf setCollarColor(Lnet/minecraft/world/item/DyeColor;)V
+public net.minecraft.world.entity.animal.wolf.Wolf setSoundVariant(Lnet/minecraft/core/Holder;)V
+public net.minecraft.world.entity.animal.wolf.Wolf setVariant(Lnet/minecraft/core/Holder;)V
public net.minecraft.world.entity.boss.enderdragon.EnderDragon subEntities
public net.minecraft.world.entity.boss.wither.WitherBoss bossEvent
public net.minecraft.world.entity.decoration.ArmorStand bodyPose
@@ -325,6 +355,7 @@ public net.minecraft.world.entity.decoration.ItemFrame DATA_ROTATION
public net.minecraft.world.entity.decoration.ItemFrame dropChance
public net.minecraft.world.entity.decoration.ItemFrame fixed
public net.minecraft.world.entity.decoration.ItemFrame setDirection(Lnet/minecraft/core/Direction;)V
+public net.minecraft.world.entity.decoration.Painting setVariant(Lnet/minecraft/core/Holder;)V
public net.minecraft.world.entity.item.FallingBlockEntity (Lnet/minecraft/world/level/Level;DDDLnet/minecraft/world/level/block/state/BlockState;)V
public net.minecraft.world.entity.item.FallingBlockEntity blockState
public net.minecraft.world.entity.item.FallingBlockEntity cancelDrop
@@ -347,8 +378,8 @@ public net.minecraft.world.entity.monster.Drowned waterNavigation
public net.minecraft.world.entity.monster.EnderMan teleport()Z
public net.minecraft.world.entity.monster.EnderMan teleportTowards(Lnet/minecraft/world/entity/Entity;)Z
public net.minecraft.world.entity.monster.Endermite life
-public net.minecraft.world.entity.monster.Evoker getWololoTarget()Lnet/minecraft/world/entity/animal/Sheep;
-public net.minecraft.world.entity.monster.Evoker setWololoTarget(Lnet/minecraft/world/entity/animal/Sheep;)V
+public net.minecraft.world.entity.monster.Evoker getWololoTarget()Lnet/minecraft/world/entity/animal/sheep/Sheep;
+public net.minecraft.world.entity.monster.Evoker setWololoTarget(Lnet/minecraft/world/entity/animal/sheep/Sheep;)V
public net.minecraft.world.entity.monster.Guardian randomStrollGoal
public net.minecraft.world.entity.monster.Guardian setActiveAttackTarget(I)V
public net.minecraft.world.entity.monster.Guardian$GuardianAttackGoal
@@ -401,14 +432,25 @@ public net.minecraft.world.entity.npc.WanderingTrader getWanderTarget()Lnet/mine
public net.minecraft.world.entity.player.Abilities flyingSpeed
public net.minecraft.world.entity.player.Abilities walkingSpeed
public net.minecraft.world.entity.player.Inventory compartments
+public net.minecraft.world.entity.player.Inventory equipment
public net.minecraft.world.entity.player.Player DATA_PLAYER_MODE_CUSTOMISATION
public net.minecraft.world.entity.player.Player closeContainer()V
public net.minecraft.world.entity.player.Player enchantmentSeed
public net.minecraft.world.entity.player.Player getFireImmuneTicks()I
+public net.minecraft.world.entity.player.Player hurtDir
public net.minecraft.world.entity.player.Player removeEntitiesOnShoulder()V
public net.minecraft.world.entity.player.Player setShoulderEntityLeft(Lnet/minecraft/nbt/CompoundTag;)V
public net.minecraft.world.entity.player.Player setShoulderEntityRight(Lnet/minecraft/nbt/CompoundTag;)V
public net.minecraft.world.entity.player.Player sleepCounter
+public net.minecraft.world.entity.projectile.AbstractArrow baseDamage
+public net.minecraft.world.entity.projectile.AbstractArrow firedFromWeapon
+public net.minecraft.world.entity.projectile.AbstractArrow getHitGroundSoundEvent()Lnet/minecraft/sounds/SoundEvent;
+public net.minecraft.world.entity.projectile.AbstractArrow getPickupItem()Lnet/minecraft/world/item/ItemStack;
+public net.minecraft.world.entity.projectile.AbstractArrow isInGround()Z
+public net.minecraft.world.entity.projectile.AbstractArrow life
+public net.minecraft.world.entity.projectile.AbstractArrow pickupItemStack
+public net.minecraft.world.entity.projectile.AbstractArrow setPickupItemStack(Lnet/minecraft/world/item/ItemStack;)V
+public net.minecraft.world.entity.projectile.AbstractArrow setPierceLevel(B)V
public net.minecraft.world.entity.projectile.AbstractHurtingProjectile assignDirectionalMovement(Lnet/minecraft/world/phys/Vec3;D)V
public net.minecraft.world.entity.projectile.Arrow NO_EFFECT_COLOR
public net.minecraft.world.entity.projectile.Arrow getPotionContents()Lnet/minecraft/world/item/alchemy/PotionContents;
@@ -449,6 +491,7 @@ public net.minecraft.world.entity.projectile.ShulkerBullet targetDeltaX
public net.minecraft.world.entity.projectile.ShulkerBullet targetDeltaY
public net.minecraft.world.entity.projectile.ShulkerBullet targetDeltaZ
public net.minecraft.world.entity.projectile.SpectralArrow duration
+public net.minecraft.world.entity.projectile.ThrowableItemProjectile getDefaultItem()Lnet/minecraft/world/item/Item;
public net.minecraft.world.entity.projectile.ThrownPotion isLingering()Z
public net.minecraft.world.entity.projectile.ThrownTrident dealtDamage
public net.minecraft.world.entity.projectile.windcharge.AbstractWindCharge explode(Lnet/minecraft/world/phys/Vec3;)V
@@ -462,7 +505,6 @@ public net.minecraft.world.entity.raid.Raid ticksActive
public net.minecraft.world.entity.raid.Raid totalHealth
public net.minecraft.world.entity.raid.Raider$HoldGroundAttackGoal
public net.minecraft.world.entity.raid.Raids raidMap
-public net.minecraft.world.entity.vehicle.AbstractBoat getDropItem()Lnet/minecraft/world/item/Item;
public net.minecraft.world.entity.vehicle.AbstractBoat getStatus()Lnet/minecraft/world/entity/vehicle/AbstractBoat$Status;
public net.minecraft.world.entity.vehicle.AbstractBoat status
public net.minecraft.world.entity.vehicle.AbstractMinecartContainer lootTable
@@ -473,6 +515,7 @@ public net.minecraft.world.entity.vehicle.MinecartTNT explode(D)V
public net.minecraft.world.entity.vehicle.MinecartTNT explosionPowerBase
public net.minecraft.world.entity.vehicle.MinecartTNT explosionSpeedFactor
public net.minecraft.world.entity.vehicle.MinecartTNT fuse
+public net.minecraft.world.entity.vehicle.VehicleEntity getDropItem()Lnet/minecraft/world/item/Item;
public net.minecraft.world.flag.FeatureFlag mask
public net.minecraft.world.flag.FeatureFlag universe
public net.minecraft.world.flag.FeatureFlagRegistry names
@@ -492,6 +535,8 @@ public net.minecraft.world.inventory.BrewingStandMenu brewingStandData
public net.minecraft.world.inventory.CraftingMenu access
public net.minecraft.world.inventory.DispenserMenu dispenser
public net.minecraft.world.inventory.HorseInventoryMenu SLOT_BODY_ARMOR
+public net.minecraft.world.inventory.HorseInventoryMenu SLOT_HORSE_INVENTORY_START
+public net.minecraft.world.inventory.HorseInventoryMenu SLOT_SADDLE
public net.minecraft.world.inventory.HorseInventoryMenu horse
public net.minecraft.world.inventory.MerchantContainer selectionHint
public net.minecraft.world.inventory.Slot slot
@@ -504,7 +549,7 @@ public net.minecraft.world.item.ItemCooldowns tickCount
public net.minecraft.world.item.ItemCooldowns$CooldownInstance
public net.minecraft.world.item.ItemStackLinkedSet TYPE_AND_TAG
public net.minecraft.world.item.JukeboxSongPlayer song
-public net.minecraft.world.item.MapItem createNewSavedData(Lnet/minecraft/world/level/Level;IIIZZLnet/minecraft/resources/ResourceKey;)Lnet/minecraft/world/level/saveddata/maps/MapId;
+public net.minecraft.world.item.MapItem createNewSavedData(Lnet/minecraft/server/level/ServerLevel;IIIZZLnet/minecraft/resources/ResourceKey;)Lnet/minecraft/world/level/saveddata/maps/MapId;
public net.minecraft.world.item.StandingAndWallBlockItem wallBlock
public net.minecraft.world.item.component.BundleContents$Mutable getMaxAmountToAdd(Lnet/minecraft/world/item/ItemStack;)I
public net.minecraft.world.item.component.ItemContainerContents MAX_SIZE
@@ -530,7 +575,9 @@ public net.minecraft.world.level.BaseSpawner spawnCount
public net.minecraft.world.level.BaseSpawner spawnDelay
public net.minecraft.world.level.BaseSpawner spawnPotentials
public net.minecraft.world.level.BaseSpawner spawnRange
+public net.minecraft.world.level.GameRules$Value deserialize(Ljava/lang/String;)V
public net.minecraft.world.level.GameRules$Value onChanged(Lnet/minecraft/server/MinecraftServer;)V
+public net.minecraft.world.level.Level blockEntityTickers
public net.minecraft.world.level.Level getEntities()Lnet/minecraft/world/level/entity/LevelEntityGetter;
public net.minecraft.world.level.Level levelData
public net.minecraft.world.level.Level rainLevel
@@ -538,6 +585,7 @@ public net.minecraft.world.level.Level thread
public net.minecraft.world.level.Level thunderLevel
public net.minecraft.world.level.NaturalSpawner SPAWNING_CATEGORIES
public net.minecraft.world.level.StructureManager level
+public net.minecraft.world.level.TicketStorage tickets
public net.minecraft.world.level.biome.Biome climateSettings
public net.minecraft.world.level.biome.Biome getTemperature(Lnet/minecraft/core/BlockPos;I)F
public net.minecraft.world.level.biome.Biome$ClimateSettings
@@ -562,6 +610,7 @@ public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity cooking
public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity getTotalCookTime(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity;)I
public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity litTimeRemaining
public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity recipesUsed
+public net.minecraft.world.level.block.entity.BannerBlockEntity name
public net.minecraft.world.level.block.entity.BarrelBlockEntity openersCounter
public net.minecraft.world.level.block.entity.BarrelBlockEntity playSound(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/sounds/SoundEvent;)V
public net.minecraft.world.level.block.entity.BarrelBlockEntity updateBlockState(Lnet/minecraft/world/level/block/state/BlockState;Z)V
@@ -650,6 +699,7 @@ public net.minecraft.world.level.chunk.LevelChunk level
public net.minecraft.world.level.chunk.LevelChunk loaded
public net.minecraft.world.level.chunk.LevelChunkSection states
public net.minecraft.world.level.chunk.PalettedContainer registry
+public net.minecraft.world.level.chunk.status.ChunkStatusTasks postLoadProtoChunk(Lnet/minecraft/server/level/ServerLevel;Ljava/util/List;)V
public net.minecraft.world.level.chunk.storage.EntityStorage entityDeserializerQueue
public net.minecraft.world.level.chunk.storage.EntityStorage level
public net.minecraft.world.level.chunk.storage.RegionFileStorage regionCache
@@ -682,6 +732,7 @@ public net.minecraft.world.level.levelgen.SurfaceRules$LazyCondition
public net.minecraft.world.level.levelgen.SurfaceRules$LazyYCondition
public net.minecraft.world.level.levelgen.SurfaceRules$SurfaceRule
public net.minecraft.world.level.levelgen.SurfaceRules$VerticalGradientConditionSource
+public net.minecraft.world.level.levelgen.structure.StructurePiece SHAPE_CHECK_BLOCKS
public net.minecraft.world.level.levelgen.structure.placement.StructurePlacement exclusionZone
public net.minecraft.world.level.levelgen.structure.placement.StructurePlacement frequency
public net.minecraft.world.level.levelgen.structure.placement.StructurePlacement frequencyReductionMethod
@@ -713,7 +764,6 @@ public-f net.minecraft.server.ReloadableServerResources commands
public-f net.minecraft.server.dedicated.DedicatedServer serverLinks
public-f net.minecraft.server.dedicated.DedicatedServer settings
public-f net.minecraft.server.dedicated.DedicatedServerProperties pauseWhenEmptySeconds
-public-f net.minecraft.server.level.TicketType timeout
public-f net.minecraft.server.players.PlayerList maxPlayers
public-f net.minecraft.world.entity.LivingEntity combatTracker
public-f net.minecraft.world.entity.LivingEntity invulnerableDuration
diff --git a/build.gradle.kts b/build.gradle.kts
index fad7f39257..25783b207e 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -12,7 +12,7 @@ import java.nio.file.Path
import kotlin.random.Random
plugins {
- id("io.papermc.paperweight.core") version "2.0.0-beta.14" apply false
+ id("io.papermc.paperweight.core") version "2.0.0-beta.16" apply false
}
subprojects {
diff --git a/gradle.properties b/gradle.properties
index 27969fea17..01662126e4 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,9 +1,9 @@
group=io.papermc.paper
-version=1.21.4-R0.1-SNAPSHOT
-mcVersion=1.21.4
+version=1.21.5-R0.1-SNAPSHOT
+mcVersion=1.21.5
# Set to true while updating Minecraft version
-updatingMinecraft=false
+updatingMinecraft=true
updateTaskListIssue=https://github.com/PaperMC/Paper/issues/11736
org.gradle.configuration-cache=true
diff --git a/paper-api-generator/build.gradle.kts b/paper-api-generator/build.gradle.kts
deleted file mode 100644
index 0eab98b0fe..0000000000
--- a/paper-api-generator/build.gradle.kts
+++ /dev/null
@@ -1,37 +0,0 @@
-import io.papermc.paperweight.util.defaultJavaLauncher
-
-plugins {
- java
- id("io.papermc.paperweight.source-generator")
-}
-
-paperweight {
- atFile.set(layout.projectDirectory.file("wideners.at"))
-}
-
-dependencies {
- minecraftJar(project(":paper-server", "mappedJarOutgoing"))
- implementation(project(":paper-server", "macheMinecraftLibraries"))
-
- implementation("com.squareup:javapoet:1.13.0")
- implementation(project(":paper-api"))
- implementation("io.github.classgraph:classgraph:4.8.47")
- implementation("org.jetbrains:annotations:26.0.1")
- testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
- testRuntimeOnly("org.junit.platform:junit-platform-launcher")
-}
-
-tasks.register("generate") {
- dependsOn(tasks.check)
- mainClass.set("io.papermc.generator.Main")
- classpath(sourceSets.main.map { it.runtimeClasspath })
- args(rootProject.layout.projectDirectory.dir("paper-api/src/generated/java").asFile.absolutePath)
- javaLauncher = javaToolchains.defaultJavaLauncher(project)
-}
-
-tasks.test {
- useJUnitPlatform()
-}
-
-group = "io.papermc.paper"
-version = "1.0-SNAPSHOT"
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
deleted file mode 100644
index 677a1d449e..0000000000
--- a/paper-api-generator/src/main/java/io/papermc/generator/Generators.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package io.papermc.generator;
-
-import io.papermc.generator.types.GeneratedKeyType;
-import io.papermc.generator.types.GeneratedTagKeyType;
-import io.papermc.generator.types.SourceGenerator;
-import io.papermc.generator.types.goal.MobGoalGenerator;
-import io.papermc.paper.registry.RegistryKey;
-import net.minecraft.core.Registry;
-import net.minecraft.core.registries.Registries;
-import net.minecraft.resources.ResourceKey;
-import org.bukkit.Art;
-import org.bukkit.Fluid;
-import org.bukkit.GameEvent;
-import org.bukkit.JukeboxSong;
-import org.bukkit.MusicInstrument;
-import org.bukkit.Sound;
-import org.bukkit.attribute.Attribute;
-import org.bukkit.block.Biome;
-import org.bukkit.block.BlockType;
-import org.bukkit.block.banner.PatternType;
-import org.bukkit.damage.DamageType;
-import org.bukkit.enchantments.Enchantment;
-import org.bukkit.entity.Cat;
-import org.bukkit.entity.EntityType;
-import org.bukkit.entity.Frog;
-import org.bukkit.entity.Villager;
-import org.bukkit.entity.Wolf;
-import org.bukkit.generator.structure.Structure;
-import org.bukkit.generator.structure.StructureType;
-import org.bukkit.inventory.ItemType;
-import org.bukkit.inventory.MenuType;
-import org.bukkit.inventory.meta.trim.TrimMaterial;
-import org.bukkit.inventory.meta.trim.TrimPattern;
-import org.bukkit.map.MapCursor;
-import org.bukkit.potion.PotionEffectType;
-
-public interface Generators {
-
- SourceGenerator[] API = {
- // built-ins
- simpleKey("GameEventKeys", GameEvent.class, Registries.GAME_EVENT, RegistryKey.GAME_EVENT, true),
- simpleKey("StructureTypeKeys", StructureType.class, Registries.STRUCTURE_TYPE, RegistryKey.STRUCTURE_TYPE, false),
- simpleKey("MobEffectKeys", PotionEffectType.class, Registries.MOB_EFFECT, RegistryKey.MOB_EFFECT, false),
- simpleKey("BlockTypeKeys", BlockType.class, Registries.BLOCK, RegistryKey.BLOCK, false),
- simpleKey("ItemTypeKeys", ItemType.class, Registries.ITEM, RegistryKey.ITEM, false),
- simpleKey("CatVariantKeys", Cat.Type.class, Registries.CAT_VARIANT, RegistryKey.CAT_VARIANT, false),
- simpleKey("FrogVariantKeys", Frog.Variant.class, Registries.FROG_VARIANT, RegistryKey.FROG_VARIANT, false),
- simpleKey("VillagerProfessionKeys", Villager.Profession.class, Registries.VILLAGER_PROFESSION, RegistryKey.VILLAGER_PROFESSION, false),
- simpleKey("VillagerTypeKeys", Villager.Type.class, Registries.VILLAGER_TYPE, RegistryKey.VILLAGER_TYPE, false),
- simpleKey("MapDecorationTypeKeys", MapCursor.Type.class, Registries.MAP_DECORATION_TYPE, RegistryKey.MAP_DECORATION_TYPE, false),
- simpleKey("MenuTypeKeys", MenuType.class, Registries.MENU, RegistryKey.MENU, false),
- simpleKey("AttributeKeys", Attribute.class, Registries.ATTRIBUTE, RegistryKey.ATTRIBUTE, false),
- simpleKey("FluidKeys", Fluid.class, Registries.FLUID, RegistryKey.FLUID, false),
- simpleKey("SoundEventKeys", Sound.class, Registries.SOUND_EVENT, RegistryKey.SOUND_EVENT, false),
-
- // data-driven
- simpleKey("BiomeKeys", Biome.class, Registries.BIOME, RegistryKey.BIOME, true),
- simpleKey("StructureKeys", Structure.class, Registries.STRUCTURE, RegistryKey.STRUCTURE, true),
- simpleKey("TrimMaterialKeys", TrimMaterial.class, Registries.TRIM_MATERIAL, RegistryKey.TRIM_MATERIAL, true),
- simpleKey("TrimPatternKeys", TrimPattern.class, Registries.TRIM_PATTERN, RegistryKey.TRIM_PATTERN, true),
- simpleKey("DamageTypeKeys", DamageType.class, Registries.DAMAGE_TYPE, RegistryKey.DAMAGE_TYPE, true),
- simpleKey("WolfVariantKeys", Wolf.Variant.class, Registries.WOLF_VARIANT, RegistryKey.WOLF_VARIANT, true),
- simpleKey("EnchantmentKeys", Enchantment.class, Registries.ENCHANTMENT, RegistryKey.ENCHANTMENT, true),
- simpleKey("JukeboxSongKeys", JukeboxSong.class, Registries.JUKEBOX_SONG, RegistryKey.JUKEBOX_SONG, true),
- simpleKey("BannerPatternKeys", PatternType.class, Registries.BANNER_PATTERN, RegistryKey.BANNER_PATTERN, true),
- simpleKey("PaintingVariantKeys", Art.class, Registries.PAINTING_VARIANT, RegistryKey.PAINTING_VARIANT, true),
- simpleKey("InstrumentKeys", MusicInstrument.class, Registries.INSTRUMENT, RegistryKey.INSTRUMENT, true),
-
- // tags
- simpleTagKey("GameEventTagKeys", GameEvent.class, Registries.GAME_EVENT, RegistryKey.GAME_EVENT),
- simpleTagKey("BlockTypeTagKeys", BlockType.class, Registries.BLOCK, RegistryKey.BLOCK),
- simpleTagKey("ItemTypeTagKeys", ItemType.class, Registries.ITEM, RegistryKey.ITEM),
- simpleTagKey("CatVariantTagKeys", Cat.Type.class, Registries.CAT_VARIANT, RegistryKey.CAT_VARIANT),
- simpleTagKey("FluidTagKeys", Fluid.class, Registries.FLUID, RegistryKey.FLUID),
-
- simpleTagKey("BiomeTagKeys", Biome.class, Registries.BIOME, RegistryKey.BIOME),
- simpleTagKey("StructureTagKeys", Structure.class, Registries.STRUCTURE, RegistryKey.STRUCTURE),
- simpleTagKey("DamageTypeTagKeys", DamageType.class, Registries.DAMAGE_TYPE, RegistryKey.DAMAGE_TYPE),
- simpleTagKey("EnchantmentTagKeys", Enchantment.class, Registries.ENCHANTMENT, RegistryKey.ENCHANTMENT),
- simpleTagKey("BannerPatternTagKeys", PatternType.class, Registries.BANNER_PATTERN, RegistryKey.BANNER_PATTERN),
- simpleTagKey("PaintingVariantTagKeys", Art.class, Registries.PAINTING_VARIANT, RegistryKey.PAINTING_VARIANT),
- simpleTagKey("InstrumentTagKeys", MusicInstrument.class, Registries.INSTRUMENT, RegistryKey.INSTRUMENT),
-
- // api only
- simpleTagKey("EntityTypeTagKeys", EntityType.class, Registries.ENTITY_TYPE, RegistryKey.ENTITY_TYPE),
- new MobGoalGenerator("VanillaGoal", "com.destroystokyo.paper.entity.ai")
- };
-
- private static SourceGenerator simpleKey(final String className, final Class apiType, final ResourceKey extends Registry> registryKey, final RegistryKey apiRegistryKey, final boolean publicCreateKeyMethod) {
- return new GeneratedKeyType<>(className, apiType, "io.papermc.paper.registry.keys", registryKey, apiRegistryKey, publicCreateKeyMethod);
- }
-
- private static SourceGenerator simpleTagKey(final String className, final Class apiType, final ResourceKey extends Registry> registryKey, final RegistryKey apiRegistryKey) {
- return new GeneratedTagKeyType<>(className, apiType, "io.papermc.paper.registry.keys.tags", registryKey, apiRegistryKey, true);
- }
-}
diff --git a/paper-api-generator/src/main/java/io/papermc/generator/Main.java b/paper-api-generator/src/main/java/io/papermc/generator/Main.java
deleted file mode 100644
index 129009f519..0000000000
--- a/paper-api-generator/src/main/java/io/papermc/generator/Main.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package io.papermc.generator;
-
-import com.google.common.util.concurrent.MoreExecutors;
-import com.mojang.logging.LogUtils;
-import io.papermc.generator.types.SourceGenerator;
-import io.papermc.generator.utils.TagCollector;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.List;
-import java.util.Map;
-import net.minecraft.SharedConstants;
-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.server.Bootstrap;
-import net.minecraft.server.RegistryLayer;
-import net.minecraft.server.ReloadableServerResources;
-import net.minecraft.server.packs.PackType;
-import net.minecraft.server.packs.repository.Pack;
-import net.minecraft.server.packs.repository.PackRepository;
-import net.minecraft.server.packs.repository.ServerPacksSource;
-import net.minecraft.server.packs.resources.MultiPackResourceManager;
-import net.minecraft.tags.TagKey;
-import net.minecraft.tags.TagLoader;
-import net.minecraft.world.flag.FeatureFlags;
-import org.apache.commons.io.file.PathUtils;
-import org.slf4j.Logger;
-
-public final class Main {
-
- private static final Logger LOGGER = LogUtils.getLogger();
- public static final RegistryAccess.Frozen REGISTRY_ACCESS;
- public static final Map, String> EXPERIMENTAL_TAGS;
-
- static {
- SharedConstants.tryDetectVersion();
- Bootstrap.bootStrap();
- Bootstrap.validate();
-
- final PackRepository resourceRepository = ServerPacksSource.createVanillaTrustedRepository();
- resourceRepository.reload();
- final MultiPackResourceManager resourceManager = new MultiPackResourceManager(PackType.SERVER_DATA, resourceRepository.getAvailablePacks().stream().map(Pack::open).toList());
- LayeredRegistryAccess layers = RegistryLayer.createRegistryAccess();
- final List> pendingTags = TagLoader.loadTagsForExistingRegistries(resourceManager, layers.getLayer(RegistryLayer.STATIC));
- final List> worldGenLayer = TagLoader.buildUpdatedLookups(layers.getAccessForLoading(RegistryLayer.WORLDGEN), pendingTags);
- final RegistryAccess.Frozen frozenWorldgenRegistries = RegistryDataLoader.load(resourceManager, worldGenLayer, RegistryDataLoader.WORLDGEN_REGISTRIES);
- layers = layers.replaceFrom(RegistryLayer.WORLDGEN, frozenWorldgenRegistries);
- REGISTRY_ACCESS = layers.compositeAccess().freeze();
- final ReloadableServerResources reloadableServerResources = ReloadableServerResources.loadResources(
- resourceManager,
- layers,
- pendingTags,
- FeatureFlags.VANILLA_SET,
- Commands.CommandSelection.DEDICATED,
- 0,
- MoreExecutors.directExecutor(),
- MoreExecutors.directExecutor()
- ).join();
- reloadableServerResources.updateStaticRegistryTags();
- EXPERIMENTAL_TAGS = TagCollector.grabExperimental(resourceManager);
- }
-
- private Main() {
- }
-
- public static void main(final String[] args) {
- LOGGER.info("Running API generators...");
- generate(Paths.get(args[0]), Generators.API);
- // LOGGER.info("Running Server generators...");
- // generate(Paths.get(args[1]), Generators.SERVER);
- }
-
- private static void generate(Path output, SourceGenerator[] generators) {
- try {
- if (Files.exists(output)) {
- PathUtils.deleteDirectory(output);
- }
- Files.createDirectories(output);
-
- for (final SourceGenerator generator : generators) {
- generator.writeToFile(output);
- }
-
- LOGGER.info("Files written to {}", output.toAbsolutePath());
- } catch (final Exception ex) {
- throw new RuntimeException(ex);
- }
- }
-}
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
deleted file mode 100644
index a0a214920b..0000000000
--- a/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedKeyType.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package io.papermc.generator.types;
-
-import com.google.common.collect.Sets;
-import com.squareup.javapoet.FieldSpec;
-import com.squareup.javapoet.JavaFile;
-import com.squareup.javapoet.MethodSpec;
-import com.squareup.javapoet.ParameterSpec;
-import com.squareup.javapoet.ParameterizedTypeName;
-import com.squareup.javapoet.TypeName;
-import com.squareup.javapoet.TypeSpec;
-import io.papermc.generator.Main;
-import io.papermc.generator.utils.Annotations;
-import io.papermc.generator.utils.CollectingContext;
-import io.papermc.generator.utils.Formatting;
-import io.papermc.generator.utils.Javadocs;
-import io.papermc.paper.registry.RegistryKey;
-import io.papermc.paper.registry.TypedKey;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.IdentityHashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-import javax.lang.model.SourceVersion;
-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.core.registries.Registries;
-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;
-import org.checkerframework.framework.qual.DefaultQualifier;
-
-import static com.squareup.javapoet.TypeSpec.classBuilder;
-import static io.papermc.generator.utils.Annotations.EXPERIMENTAL_API_ANNOTATION;
-import static io.papermc.generator.utils.Annotations.experimentalAnnotations;
-import static java.util.Objects.requireNonNull;
-import static javax.lang.model.element.Modifier.FINAL;
-import static javax.lang.model.element.Modifier.PRIVATE;
-import static javax.lang.model.element.Modifier.PUBLIC;
-import static javax.lang.model.element.Modifier.STATIC;
-
-@DefaultQualifier(NonNull.class)
-public class GeneratedKeyType extends SimpleGenerator {
-
- private static final Map>, RegistrySetBuilder.RegistryBootstrap>> VANILLA_REGISTRY_ENTRIES = VanillaRegistries.BUILDER.entries.stream()
- .collect(Collectors.toMap(RegistrySetBuilder.RegistryStub::key, RegistrySetBuilder.RegistryStub::bootstrap));
-
- private static final Map>, RegistrySetBuilder.RegistryBootstrap>> EXPERIMENTAL_REGISTRY_ENTRIES = Map.of(); // Update for Experimental API
- private static final Map, String> REGISTRY_KEY_FIELD_NAMES;
- static {
- final Map, String> map = new HashMap<>();
- try {
- for (final Field field : RegistryKey.class.getFields()) {
- if (!Modifier.isStatic(field.getModifiers()) || !Modifier.isFinal(field.getModifiers()) || field.getType() != RegistryKey.class) {
- continue;
- }
- map.put((RegistryKey>) field.get(null), field.getName());
- }
- REGISTRY_KEY_FIELD_NAMES = Map.copyOf(map);
- } catch (final ReflectiveOperationException ex) {
- throw new RuntimeException(ex);
- }
- }
-
- private static final String CREATE_JAVADOC = """
- Creates a key for {@link $T} in the registry {@code $L}.
-
- @param key the value's key in the registry
- @return a new typed key
- """;
-
- private final Class apiType;
- private final ResourceKey extends Registry> registryKey;
- private final RegistryKey apiRegistryKey;
- private final boolean publicCreateKeyMethod;
-
- public GeneratedKeyType(final String keysClassName, final Class apiType, final String pkg, final ResourceKey extends Registry> registryKey, final RegistryKey apiRegistryKey, final boolean publicCreateKeyMethod) {
- super(keysClassName, pkg);
- this.apiType = apiType;
- this.registryKey = registryKey;
- this.apiRegistryKey = apiRegistryKey;
- this.publicCreateKeyMethod = publicCreateKeyMethod;
- }
-
- private MethodSpec.Builder createMethod(final TypeName returnType) {
- final TypeName keyType = TypeName.get(Key.class);
-
- final ParameterSpec keyParam = ParameterSpec.builder(keyType, "key", FINAL).build();
- final MethodSpec.Builder create = MethodSpec.methodBuilder("create")
- .addModifiers(this.publicCreateKeyMethod ? PUBLIC : PRIVATE, STATIC)
- .addParameter(keyParam)
- .addCode("return $T.create($T.$L, $N);", TypedKey.class, RegistryKey.class, requireNonNull(REGISTRY_KEY_FIELD_NAMES.get(this.apiRegistryKey), "Missing field for " + this.apiRegistryKey), keyParam)
- .returns(returnType);
- if (this.publicCreateKeyMethod) {
- create.addJavadoc(CREATE_JAVADOC, this.apiType, this.registryKey.location().toString());
- }
- return create;
- }
-
- private TypeSpec.Builder keyHolderType() {
- return classBuilder(this.className)
- .addModifiers(PUBLIC, FINAL)
- .addJavadoc(Javadocs.getVersionDependentClassHeader("{@link $T#$L}"), RegistryKey.class, REGISTRY_KEY_FIELD_NAMES.get(this.apiRegistryKey))
- .addAnnotations(Annotations.CLASS_HEADER)
- .addMethod(MethodSpec.constructorBuilder()
- .addModifiers(PRIVATE)
- .build()
- );
- }
-
- @Deprecated
- private static final Map JUKEBOX_SONG_NAMES = Map.of(
- "5", "FIVE",
- "11", "ELEVEN",
- "13", "THIRTEEN"
- );
-
- @Override
- protected TypeSpec getTypeSpec() {
- final TypeName typedKey = ParameterizedTypeName.get(TypedKey.class, this.apiType);
-
- final TypeSpec.Builder typeBuilder = this.keyHolderType();
- final MethodSpec.Builder createMethod = this.createMethod(typedKey);
-
- final Registry registry = Main.REGISTRY_ACCESS.lookupOrThrow(this.registryKey);
- final Set> experimental = this.collectExperimentalKeys(registry);
-
- boolean allExperimental = true;
- for (final Holder.Reference reference : registry.listElements().sorted(Formatting.alphabeticKeyOrder(reference -> reference.key().location().getPath())).toList()) {
- final ResourceKey key = reference.key();
- final String keyPath = key.location().getPath();
- String fieldName = Formatting.formatKeyAsField(keyPath);
- if (!SourceVersion.isIdentifier(fieldName) && this.registryKey.equals(Registries.JUKEBOX_SONG) && JUKEBOX_SONG_NAMES.containsKey(fieldName)) {
- fieldName = JUKEBOX_SONG_NAMES.get(fieldName);
- }
-
- final FieldSpec.Builder fieldBuilder = FieldSpec.builder(typedKey, fieldName, PUBLIC, STATIC, FINAL)
- .initializer("$N(key($S))", createMethod.build(), keyPath)
- .addJavadoc(Javadocs.getVersionDependentField("{@code $L}"), key.location().toString());
- if (experimental.contains(key)) {
- fieldBuilder.addAnnotations(experimentalAnnotations(null)); // Update for Experimental API
- } else {
- allExperimental = false;
- }
- typeBuilder.addField(fieldBuilder.build());
- }
- if (allExperimental) {
- typeBuilder.addAnnotations(experimentalAnnotations(null)); // Update for Experimental API
- createMethod.addAnnotations(experimentalAnnotations(null)); // Update for Experimental API
- }
- return typeBuilder.addMethod(createMethod.build()).build();
- }
-
- // todo at some point this should be per feature data pack not all merged
- private Set> collectExperimentalKeys(final Registry registry) {
- if (FeatureElement.FILTERED_REGISTRIES.contains(registry.key())) {
- return this.collectExperimentalKeysBuiltIn(registry);
- } else {
- return this.collectExperimentalKeysDataDriven(registry);
- }
- }
-
- private Set> collectExperimentalKeysBuiltIn(final Registry registry) {
- final HolderLookup.RegistryLookup filteredLookup = registry.filterElements(v -> {
- return v instanceof final FeatureElement featureElement && FeatureFlags.isExperimental(featureElement.requiredFeatures()); // Update for Experimental API
- });
- return filteredLookup.listElementIds().collect(Collectors.toUnmodifiableSet());
- }
-
- @SuppressWarnings("unchecked")
- private Set> collectExperimentalKeysDataDriven(final Registry registry) {
- final RegistrySetBuilder.@Nullable RegistryBootstrap experimentalBootstrap = (RegistrySetBuilder.RegistryBootstrap) EXPERIMENTAL_REGISTRY_ENTRIES.get(this.registryKey);
- if (experimentalBootstrap == null) {
- return Collections.emptySet();
- }
- final Set> experimental = Collections.newSetFromMap(new IdentityHashMap<>());
- final CollectingContext experimentalCollector = new CollectingContext<>(experimental, registry);
- experimentalBootstrap.run(experimentalCollector);
-
- final RegistrySetBuilder.@Nullable RegistryBootstrap vanillaBootstrap = (RegistrySetBuilder.RegistryBootstrap) VANILLA_REGISTRY_ENTRIES.get(this.registryKey);
- if (vanillaBootstrap != null) {
- final Set> vanilla = Collections.newSetFromMap(new IdentityHashMap<>());
- final CollectingContext vanillaCollector = new CollectingContext<>(vanilla, registry);
- vanillaBootstrap.run(vanillaCollector);
- return Sets.difference(experimental, vanilla);
- }
- return experimental;
- }
-
- @Override
- protected JavaFile.Builder file(final JavaFile.Builder builder) {
- return builder
- .addStaticImport(Key.class, "key");
- }
-}
diff --git a/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedTagKeyType.java b/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedTagKeyType.java
deleted file mode 100644
index 60e15ea64a..0000000000
--- a/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedTagKeyType.java
+++ /dev/null
@@ -1,138 +0,0 @@
-package io.papermc.generator.types;
-
-import com.squareup.javapoet.FieldSpec;
-import com.squareup.javapoet.JavaFile;
-import com.squareup.javapoet.MethodSpec;
-import com.squareup.javapoet.ParameterSpec;
-import com.squareup.javapoet.ParameterizedTypeName;
-import com.squareup.javapoet.TypeName;
-import com.squareup.javapoet.TypeSpec;
-import io.papermc.generator.Main;
-import io.papermc.generator.utils.Annotations;
-import io.papermc.generator.utils.Formatting;
-import io.papermc.generator.utils.Javadocs;
-import io.papermc.paper.registry.RegistryKey;
-import io.papermc.paper.registry.tag.TagKey;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
-import net.kyori.adventure.key.Key;
-import net.minecraft.core.Registry;
-import net.minecraft.resources.ResourceKey;
-import org.bukkit.MinecraftExperimental;
-
-import static com.squareup.javapoet.TypeSpec.classBuilder;
-import static io.papermc.generator.utils.Annotations.EXPERIMENTAL_API_ANNOTATION;
-import static io.papermc.generator.utils.Annotations.experimentalAnnotations;
-import static java.util.Objects.requireNonNull;
-import static javax.lang.model.element.Modifier.FINAL;
-import static javax.lang.model.element.Modifier.PRIVATE;
-import static javax.lang.model.element.Modifier.PUBLIC;
-import static javax.lang.model.element.Modifier.STATIC;
-
-public class GeneratedTagKeyType extends SimpleGenerator {
-
- private static final Map, String> REGISTRY_KEY_FIELD_NAMES;
- static {
- final Map, String> map = new HashMap<>();
- try {
- for (final Field field : RegistryKey.class.getFields()) {
- if (!Modifier.isStatic(field.getModifiers()) || !Modifier.isFinal(field.getModifiers()) || field.getType() != RegistryKey.class) {
- continue;
- }
- map.put((RegistryKey>) field.get(null), field.getName());
- }
- REGISTRY_KEY_FIELD_NAMES = Map.copyOf(map);
- } catch (final ReflectiveOperationException ex) {
- throw new RuntimeException(ex);
- }
- }
-
- private static final String CREATE_JAVADOC = """
- Creates a tag key for {@link $T} in the registry {@code $L}.
-
- @param key the tag key's key
- @return a new tag key
- """;
-
- private final Class apiType;
- private final ResourceKey extends Registry> registryKey;
- private final RegistryKey apiRegistryKey;
- private final boolean publicCreateKeyMethod;
-
- public GeneratedTagKeyType(final String keysClassName, final Class apiType, final String pkg, final ResourceKey extends Registry> registryKey, final RegistryKey apiRegistryKey, final boolean publicCreateKeyMethod) {
- super(keysClassName, pkg);
- this.apiType = apiType;
- this.registryKey = registryKey;
- this.apiRegistryKey = apiRegistryKey;
- this.publicCreateKeyMethod = publicCreateKeyMethod;
- }
-
- private MethodSpec.Builder createMethod(final TypeName returnType) {
- final TypeName keyType = TypeName.get(Key.class);
-
- final ParameterSpec keyParam = ParameterSpec.builder(keyType, "key", FINAL).build();
- final MethodSpec.Builder create = MethodSpec.methodBuilder("create")
- .addModifiers(this.publicCreateKeyMethod ? PUBLIC : PRIVATE, STATIC)
- .addParameter(keyParam)
- .addCode("return $T.create($T.$L, $N);", TagKey.class, RegistryKey.class, requireNonNull(REGISTRY_KEY_FIELD_NAMES.get(this.apiRegistryKey), "Missing field for " + this.apiRegistryKey), keyParam)
- .returns(returnType);
- if (this.publicCreateKeyMethod) {
- create.addAnnotation(EXPERIMENTAL_API_ANNOTATION); // TODO remove once not experimental
- create.addJavadoc(CREATE_JAVADOC, this.apiType, this.registryKey.location().toString());
- }
- return create;
- }
-
- private TypeSpec.Builder keyHolderType() {
- return classBuilder(this.className)
- .addModifiers(PUBLIC, FINAL)
- .addJavadoc(Javadocs.getVersionDependentClassHeader("{@link $T#$L}"), RegistryKey.class, REGISTRY_KEY_FIELD_NAMES.get(this.apiRegistryKey))
- .addAnnotations(Annotations.CLASS_HEADER)
- .addMethod(MethodSpec.constructorBuilder()
- .addModifiers(PRIVATE)
- .build()
- );
- }
-
- @Override
- protected TypeSpec getTypeSpec() {
- final TypeName tagKey = ParameterizedTypeName.get(TagKey.class, this.apiType);
-
- final TypeSpec.Builder typeBuilder = this.keyHolderType();
- final MethodSpec.Builder createMethod = this.createMethod(tagKey);
-
- final Registry registry = Main.REGISTRY_ACCESS.lookupOrThrow(this.registryKey);
-
- final AtomicBoolean allExperimental = new AtomicBoolean(true);
- registry.listTagIds().sorted(Formatting.alphabeticKeyOrder(nmsTagKey -> nmsTagKey.location().getPath())).forEach(nmsTagKey -> {
- final String fieldName = Formatting.formatKeyAsField(nmsTagKey.location().getPath());
- final FieldSpec.Builder fieldBuilder = FieldSpec.builder(tagKey, fieldName, PUBLIC, STATIC, FINAL)
- .initializer("$N(key($S))", createMethod.build(), nmsTagKey.location().getPath())
- .addJavadoc(Javadocs.getVersionDependentField("{@code $L}"), "#" + nmsTagKey.location());
- final String featureFlagName = Main.EXPERIMENTAL_TAGS.get(nmsTagKey);
- if (featureFlagName != null) {
- fieldBuilder.addAnnotations(experimentalAnnotations(MinecraftExperimental.Requires.valueOf(featureFlagName.toUpperCase(Locale.ENGLISH)))); // Update for Experimental API
- } else {
- allExperimental.set(false);
- }
- typeBuilder.addField(fieldBuilder.build());
- });
- if (allExperimental.get()) {
- typeBuilder.addAnnotations(experimentalAnnotations(null)); // Update for Experimental API
- createMethod.addAnnotations(experimentalAnnotations(null)); // Update for Experimental API
- } else {
- typeBuilder.addAnnotation(EXPERIMENTAL_API_ANNOTATION); // TODO experimental API
- }
- return typeBuilder.addMethod(createMethod.build()).build();
- }
-
- @Override
- protected JavaFile.Builder file(final JavaFile.Builder builder) {
- return builder
- .addStaticImport(Key.class, "key");
- }
-}
diff --git a/paper-api-generator/src/main/java/io/papermc/generator/utils/Annotations.java b/paper-api-generator/src/main/java/io/papermc/generator/utils/Annotations.java
deleted file mode 100644
index 977e4a1334..0000000000
--- a/paper-api-generator/src/main/java/io/papermc/generator/utils/Annotations.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package io.papermc.generator.utils;
-
-import com.squareup.javapoet.AnnotationSpec;
-import java.util.ArrayList;
-import java.util.List;
-
-import io.papermc.paper.generated.GeneratedFrom;
-import net.minecraft.SharedConstants;
-import org.bukkit.MinecraftExperimental;
-import org.jetbrains.annotations.ApiStatus;
-import org.jetbrains.annotations.Nullable;
-import org.jspecify.annotations.NullMarked;
-
-public final class Annotations {
-
- public static List experimentalAnnotations(final MinecraftExperimental.@Nullable Requires requiredFeatureFlag) {
- final List annotationSpecs = new ArrayList<>();
- annotationSpecs.add(AnnotationSpec.builder(ApiStatus.Experimental.class).build());
- if (requiredFeatureFlag != null) {
- annotationSpecs.add(AnnotationSpec.builder(MinecraftExperimental.class)
- .addMember("value", "$T.$L", MinecraftExperimental.Requires.class, requiredFeatureFlag.name())
- .build());
- } else {
- annotationSpecs.add(AnnotationSpec.builder(MinecraftExperimental.class).build());
- }
- return annotationSpecs;
- }
-
- public static AnnotationSpec deprecatedVersioned(final @Nullable String version, final boolean forRemoval) {
- final AnnotationSpec.Builder annotationSpec = AnnotationSpec.builder(Deprecated.class);
- if (forRemoval) {
- annotationSpec.addMember("forRemoval", "$L", true);
- }
- if (version != null) {
- annotationSpec.addMember("since", "$S", version);
- }
-
- return annotationSpec.build();
- }
-
- public static AnnotationSpec scheduledRemoval(final @Nullable String version) {
- return AnnotationSpec.builder(ApiStatus.ScheduledForRemoval.class)
- .addMember("inVersion", "$S", version)
- .build();
- }
-
- @ApiStatus.Experimental
- public static final AnnotationSpec EXPERIMENTAL_API_ANNOTATION = AnnotationSpec.builder(ApiStatus.Experimental.class).build();
- public static final AnnotationSpec NULL_MARKED = AnnotationSpec.builder(NullMarked.class).build();
- private static final AnnotationSpec SUPPRESS_WARNINGS = AnnotationSpec.builder(SuppressWarnings.class)
- .addMember("value", "$S", "unused")
- .addMember("value", "$S", "SpellCheckingInspection")
- .build();
- private static final AnnotationSpec GENERATED_FROM = AnnotationSpec.builder(GeneratedFrom.class)
- .addMember("value", "$S", SharedConstants.getCurrentVersion().getName())
- .build();
- public static final Iterable CLASS_HEADER = List.of(
- SUPPRESS_WARNINGS,
- GENERATED_FROM,
- NULL_MARKED
- );
-
- private Annotations() {
- }
-}
diff --git a/paper-api-generator/src/main/java/io/papermc/generator/utils/Javadocs.java b/paper-api-generator/src/main/java/io/papermc/generator/utils/Javadocs.java
deleted file mode 100644
index 33536c8311..0000000000
--- a/paper-api-generator/src/main/java/io/papermc/generator/utils/Javadocs.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package io.papermc.generator.utils;
-
-public final class Javadocs {
-
- public static String getVersionDependentClassHeader(String headerIdentifier) {
- return """
- Vanilla keys for %s.
-
- @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.
- """.formatted(headerIdentifier);
- }
-
- public static String getVersionDependentField(String headerIdentifier) {
- return """
- %s
-
- @apiNote This field is version-dependant and may be removed in future Minecraft versions
- """.formatted(headerIdentifier);
- }
-
- private Javadocs() {
- }
-}
diff --git a/paper-api-generator/src/main/java/io/papermc/generator/utils/TagCollector.java b/paper-api-generator/src/main/java/io/papermc/generator/utils/TagCollector.java
deleted file mode 100644
index 546e136b4a..0000000000
--- a/paper-api-generator/src/main/java/io/papermc/generator/utils/TagCollector.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package io.papermc.generator.utils;
-
-import com.google.common.collect.HashMultimap;
-import com.google.common.collect.Multimap;
-import com.mojang.logging.LogUtils;
-import io.papermc.generator.Main;
-import java.util.Collections;
-import java.util.IdentityHashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.function.BiConsumer;
-import net.minecraft.core.Registry;
-import net.minecraft.core.RegistryAccess;
-import net.minecraft.core.registries.Registries;
-import net.minecraft.resources.ResourceKey;
-import net.minecraft.server.packs.PackResources;
-import net.minecraft.server.packs.PackType;
-import net.minecraft.server.packs.repository.BuiltInPackSource;
-import net.minecraft.server.packs.resources.MultiPackResourceManager;
-import net.minecraft.tags.TagKey;
-import org.slf4j.Logger;
-
-// collect all the tags by grabbing the json from the data-packs
-// another (probably) way is to hook into the data generator like the typed keys generator
-public final class TagCollector {
-
- private static final Logger LOGGER = LogUtils.getLogger();
-
- public static Map, String> grabExperimental(final MultiPackResourceManager resourceManager) {
- Map, String> result = new IdentityHashMap<>();
-
- // collect all vanilla tags
- Multimap>, String> vanillaTags = HashMultimap.create();
- PackResources vanillaPack = resourceManager.listPacks()
- .filter(packResources -> packResources.packId().equals(BuiltInPackSource.VANILLA_ID))
- .findFirst()
- .orElseThrow();
- collectFromPack(vanillaPack, (entry, path) -> vanillaTags.put(entry.key(), path));
-
- // then distinct with other data-pack tags to know for sure newly created tags and so experimental one
- resourceManager.listPacks().forEach(pack -> {
- String packId = pack.packId();
- if (packId.equals(BuiltInPackSource.VANILLA_ID)) return;
-
- collectFromPack(pack, (entry, path) -> {
- if (vanillaTags.get(entry.key()).contains(path)) {
- return;
- }
-
- result.put(entry.value().listTagIds()
- .filter(tagKey -> tagKey.location().getPath().equals(path))
- .findFirst()
- .orElseThrow(), packId);
- });
- });
- return Collections.unmodifiableMap(result);
- }
-
- private static void collectFromPack(PackResources pack, BiConsumer, String> output) {
- Set namespaces = pack.getNamespaces(PackType.SERVER_DATA);
-
- for (String namespace : namespaces) {
- Main.REGISTRY_ACCESS.registries().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 (and custom folder too) 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());
- 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());
- });
- });
- });
- }
- }
-
- private TagCollector() {
- }
-}
diff --git a/paper-api/build.gradle.kts b/paper-api/build.gradle.kts
index f6ca099256..461e8b87c5 100644
--- a/paper-api/build.gradle.kts
+++ b/paper-api/build.gradle.kts
@@ -10,8 +10,10 @@ java {
}
val annotationsVersion = "26.0.1"
-val bungeeCordChatVersion = "1.20-R0.2"
-val adventureVersion = "4.20.0"
+// Keep in sync with paper-server adventure-text-serializer-ansi dep
+val adventureVersion = "4.21.0-mc1215-SNAPSHOT" // FIXME move to release asap
+val adventureJavadocVersion = "4.20.0" // Fixme remove me
+val bungeeCordChatVersion = "1.21-R0.2-deprecated+build.21"
val slf4jVersion = "2.0.9"
val log4jVersion = "2.17.1"
@@ -56,17 +58,19 @@ dependencies {
api("com.mojang:brigadier:1.3.10")
// Deprecate bungeecord-chat in favor of adventure
- api("net.md-5:bungeecord-chat:$bungeeCordChatVersion-deprecated+build.19") {
+ api("net.md-5:bungeecord-chat:$bungeeCordChatVersion") {
exclude("com.google.guava", "guava")
}
- apiAndDocs(platform("net.kyori:adventure-bom:$adventureVersion"))
- apiAndDocs("net.kyori:adventure-api")
- apiAndDocs("net.kyori:adventure-text-minimessage")
- apiAndDocs("net.kyori:adventure-text-serializer-gson")
- apiAndDocs("net.kyori:adventure-text-serializer-legacy")
- apiAndDocs("net.kyori:adventure-text-serializer-plain")
- apiAndDocs("net.kyori:adventure-text-logger-slf4j")
+ // FIXME remove me when we are using a release again
+ val adventureGroup = "io.papermc.adventure"
+ apiAndDocs(platform("$adventureGroup:adventure-bom:$adventureVersion"))
+ apiAndDocs("$adventureGroup:adventure-api")
+ apiAndDocs("$adventureGroup:adventure-text-minimessage")
+ apiAndDocs("$adventureGroup:adventure-text-serializer-gson")
+ apiAndDocs("$adventureGroup:adventure-text-serializer-legacy")
+ apiAndDocs("$adventureGroup:adventure-text-serializer-plain")
+ apiAndDocs("$adventureGroup:adventure-text-logger-slf4j")
api("org.apache.maven:maven-resolver-provider:3.9.6") // make API dependency for Paper Plugins
compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18")
@@ -93,16 +97,16 @@ dependencies {
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
-val generatedApiPath: java.nio.file.Path = layout.projectDirectory.dir("src/generated/java").asFile.toPath()
+val generatedDir: java.nio.file.Path = layout.projectDirectory.dir("src/generated/java").asFile.toPath()
idea {
module {
- generatedSourceDirs.add(generatedApiPath.toFile())
+ generatedSourceDirs.add(generatedDir.toFile())
}
}
sourceSets {
main {
java {
- srcDir(generatedApiPath)
+ srcDir(generatedDir)
}
}
}
@@ -179,13 +183,13 @@ tasks.withType {
"https://javadoc.io/doc/org.joml/joml/1.10.8/",
"https://www.javadoc.io/doc/com.google.code.gson/gson/2.11.0",
"https://jspecify.dev/docs/api/",
- "https://jd.advntr.dev/api/$adventureVersion/",
- "https://jd.advntr.dev/key/$adventureVersion/",
- "https://jd.advntr.dev/text-minimessage/$adventureVersion/",
- "https://jd.advntr.dev/text-serializer-gson/$adventureVersion/",
- "https://jd.advntr.dev/text-serializer-legacy/$adventureVersion/",
- "https://jd.advntr.dev/text-serializer-plain/$adventureVersion/",
- "https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/",
+ "https://jd.advntr.dev/api/$adventureJavadocVersion/",
+ "https://jd.advntr.dev/key/$adventureJavadocVersion/",
+ "https://jd.advntr.dev/text-minimessage/$adventureJavadocVersion/",
+ "https://jd.advntr.dev/text-serializer-gson/$adventureJavadocVersion/",
+ "https://jd.advntr.dev/text-serializer-legacy/$adventureJavadocVersion/",
+ "https://jd.advntr.dev/text-serializer-plain/$adventureJavadocVersion/",
+ "https://jd.advntr.dev/text-logger-slf4j/$adventureJavadocVersion/",
"https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/",
"https://javadoc.io/doc/org.apache.logging.log4j/log4j-api/$log4jVersion/",
"https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3",
@@ -228,21 +232,23 @@ tasks.compileTestJava {
options.compilerArgs.add("-parameters")
}
-val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks.ScanJarForBadCalls::class) {
+val scanJarForBadCalls by tasks.registering(io.papermc.paperweight.tasks.ScanJarForBadCalls::class) {
badAnnotations.add("Lio/papermc/paper/annotation/DoNotUse;")
jarToScan.set(tasks.jar.flatMap { it.archiveFile })
classpath.from(configurations.compileClasspath)
}
tasks.check {
- dependsOn(scanJar)
+ dependsOn(scanJarForBadCalls)
}
-val scanJarForOldGeneratedCode = tasks.register("scanJarForOldGeneratedCode", io.papermc.paperweight.tasks.ScanJarForOldGeneratedCode::class) {
- mcVersion.set(providers.gradleProperty("mcVersion"))
- annotation.set("Lio/papermc/paper/generated/GeneratedFrom;")
- jarToScan.set(tasks.jar.flatMap { it.archiveFile })
- classpath.from(configurations.compileClasspath)
-}
-tasks.check {
- dependsOn(scanJarForOldGeneratedCode)
+if (providers.gradleProperty("updatingMinecraft").getOrElse("false").toBoolean()) {
+ val scanJarForOldGeneratedCode by tasks.registering(io.papermc.paperweight.tasks.ScanJarForOldGeneratedCode::class) {
+ mcVersion.set(providers.gradleProperty("mcVersion"))
+ annotation.set("Lio/papermc/paper/generated/GeneratedFrom;")
+ jarToScan.set(tasks.jar.flatMap { it.archiveFile })
+ classpath.from(configurations.compileClasspath)
+ }
+ tasks.check {
+ dependsOn(scanJarForOldGeneratedCode)
+ }
}
diff --git a/paper-api/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/paper-api/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java
index f15a7b4471..12207256ae 100644
--- a/paper-api/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java
+++ b/paper-api/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java
@@ -66,8 +66,8 @@ import org.jspecify.annotations.NullMarked;
"unused",
"SpellCheckingInspection"
})
-@GeneratedFrom("1.21.4")
@NullMarked
+@GeneratedFrom("1.21.5")
public interface VanillaGoal extends Goal {
GoalKey RANDOM_STAND = create("random_stand", AbstractHorse.class);
diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/AttributeKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/AttributeKeys.java
index 3eef52b64f..07e690dd93 100644
--- a/paper-api/src/generated/java/io/papermc/paper/registry/keys/AttributeKeys.java
+++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/AttributeKeys.java
@@ -22,8 +22,8 @@ import org.jspecify.annotations.NullMarked;
"unused",
"SpellCheckingInspection"
})
-@GeneratedFrom("1.21.4")
@NullMarked
+@GeneratedFrom("1.21.5")
public final class AttributeKeys {
/**
* {@code minecraft:armor}
diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/BannerPatternKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/BannerPatternKeys.java
index bc1f64a8bb..a06d5f5f54 100644
--- a/paper-api/src/generated/java/io/papermc/paper/registry/keys/BannerPatternKeys.java
+++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/BannerPatternKeys.java
@@ -22,8 +22,8 @@ import org.jspecify.annotations.NullMarked;
"unused",
"SpellCheckingInspection"
})
-@GeneratedFrom("1.21.4")
@NullMarked
+@GeneratedFrom("1.21.5")
public final class BannerPatternKeys {
/**
* {@code minecraft:base}
@@ -330,7 +330,7 @@ public final class BannerPatternKeys {
}
/**
- * Creates a key for {@link PatternType} in the registry {@code minecraft:banner_pattern}.
+ * Creates a typed key for {@link PatternType} in the registry {@code minecraft:banner_pattern}.
*
* @param key the value's key in the registry
* @return a new typed key
diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/BiomeKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/BiomeKeys.java
index e87e00879f..1cdf88b0d0 100644
--- a/paper-api/src/generated/java/io/papermc/paper/registry/keys/BiomeKeys.java
+++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/BiomeKeys.java
@@ -22,8 +22,8 @@ import org.jspecify.annotations.NullMarked;
"unused",
"SpellCheckingInspection"
})
-@GeneratedFrom("1.21.4")
@NullMarked
+@GeneratedFrom("1.21.5")
public final class BiomeKeys {
/**
* {@code minecraft:badlands}
@@ -484,7 +484,7 @@ public final class BiomeKeys {
}
/**
- * Creates a key for {@link Biome} in the registry {@code minecraft:worldgen/biome}.
+ * Creates a typed key for {@link Biome} in the registry {@code minecraft:worldgen/biome}.
*
* @param key the value's key in the registry
* @return a new typed key
diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/BlockTypeKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/BlockTypeKeys.java
index f0504b1526..df46efb8f3 100644
--- a/paper-api/src/generated/java/io/papermc/paper/registry/keys/BlockTypeKeys.java
+++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/BlockTypeKeys.java
@@ -22,8 +22,8 @@ import org.jspecify.annotations.NullMarked;
"unused",
"SpellCheckingInspection"
})
-@GeneratedFrom("1.21.4")
@NullMarked
+@GeneratedFrom("1.21.5")
public final class BlockTypeKeys {
/**
* {@code minecraft:acacia_button}
@@ -1061,6 +1061,13 @@ public final class BlockTypeKeys {
*/
public static final TypedKey BUDDING_AMETHYST = create(key("budding_amethyst"));
+ /**
+ * {@code minecraft:bush}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey BUSH = create(key("bush"));
+
/**
* {@code minecraft:cactus}
*
@@ -1068,6 +1075,13 @@ public final class BlockTypeKeys {
*/
public static final TypedKey CACTUS = create(key("cactus"));
+ /**
+ * {@code minecraft:cactus_flower}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey CACTUS_FLOWER = create(key("cactus_flower"));
+
/**
* {@code minecraft:cake}
*
@@ -2685,6 +2699,13 @@ public final class BlockTypeKeys {
*/
public static final TypedKey FIRE_CORAL_WALL_FAN = create(key("fire_coral_wall_fan"));
+ /**
+ * {@code minecraft:firefly_bush}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey FIREFLY_BUSH = create(key("firefly_bush"));
+
/**
* {@code minecraft:fletching_table}
*
@@ -3406,6 +3427,13 @@ public final class BlockTypeKeys {
*/
public static final TypedKey LAVA_CAULDRON = create(key("lava_cauldron"));
+ /**
+ * {@code minecraft:leaf_litter}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey LEAF_LITTER = create(key("leaf_litter"));
+
/**
* {@code minecraft:lectern}
*
@@ -6080,6 +6108,13 @@ public final class BlockTypeKeys {
*/
public static final TypedKey SEAGRASS = create(key("seagrass"));
+ /**
+ * {@code minecraft:short_dry_grass}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey SHORT_DRY_GRASS = create(key("short_dry_grass"));
+
/**
* {@code minecraft:short_grass}
*
@@ -6731,6 +6766,13 @@ public final class BlockTypeKeys {
*/
public static final TypedKey SWEET_BERRY_BUSH = create(key("sweet_berry_bush"));
+ /**
+ * {@code minecraft:tall_dry_grass}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey TALL_DRY_GRASS = create(key("tall_dry_grass"));
+
/**
* {@code minecraft:tall_grass}
*
@@ -6759,6 +6801,20 @@ public final class BlockTypeKeys {
*/
public static final TypedKey TERRACOTTA = create(key("terracotta"));
+ /**
+ * {@code minecraft:test_block}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey TEST_BLOCK = create(key("test_block"));
+
+ /**
+ * {@code minecraft:test_instance_block}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey TEST_INSTANCE_BLOCK = create(key("test_instance_block"));
+
/**
* {@code minecraft:tinted_glass}
*
@@ -7557,6 +7613,13 @@ public final class BlockTypeKeys {
*/
public static final TypedKey WHITE_WOOL = create(key("white_wool"));
+ /**
+ * {@code minecraft:wildflowers}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey WILDFLOWERS = create(key("wildflowers"));
+
/**
* {@code minecraft:wither_rose}
*
diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/CatVariantKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/CatVariantKeys.java
index 607aa1aee1..4e82c1a5da 100644
--- a/paper-api/src/generated/java/io/papermc/paper/registry/keys/CatVariantKeys.java
+++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/CatVariantKeys.java
@@ -22,8 +22,8 @@ import org.jspecify.annotations.NullMarked;
"unused",
"SpellCheckingInspection"
})
-@GeneratedFrom("1.21.4")
@NullMarked
+@GeneratedFrom("1.21.5")
public final class CatVariantKeys {
/**
* {@code minecraft:all_black}
@@ -105,7 +105,13 @@ public final class CatVariantKeys {
private CatVariantKeys() {
}
- private static TypedKey create(final Key key) {
+ /**
+ * Creates a typed key for {@link Cat.Type} in the registry {@code minecraft:cat_variant}.
+ *
+ * @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.CAT_VARIANT, key);
}
}
diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/ChickenVariantKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/ChickenVariantKeys.java
new file mode 100644
index 0000000000..580b3dd8fe
--- /dev/null
+++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/ChickenVariantKeys.java
@@ -0,0 +1,61 @@
+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.Chicken;
+import org.jspecify.annotations.NullMarked;
+
+/**
+ * Vanilla keys for {@link RegistryKey#CHICKEN_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"
+})
+@NullMarked
+@GeneratedFrom("1.21.5")
+public final class ChickenVariantKeys {
+ /**
+ * {@code minecraft:cold}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey COLD = create(key("cold"));
+
+ /**
+ * {@code minecraft:temperate}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey TEMPERATE = create(key("temperate"));
+
+ /**
+ * {@code minecraft:warm}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey WARM = create(key("warm"));
+
+ private ChickenVariantKeys() {
+ }
+
+ /**
+ * Creates a typed key for {@link Chicken.Variant} in the registry {@code minecraft:chicken_variant}.
+ *
+ * @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.CHICKEN_VARIANT, key);
+ }
+}
diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/CowVariantKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/CowVariantKeys.java
new file mode 100644
index 0000000000..2dddd4dc86
--- /dev/null
+++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/CowVariantKeys.java
@@ -0,0 +1,61 @@
+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.Cow;
+import org.jspecify.annotations.NullMarked;
+
+/**
+ * Vanilla keys for {@link RegistryKey#COW_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"
+})
+@NullMarked
+@GeneratedFrom("1.21.5")
+public final class CowVariantKeys {
+ /**
+ * {@code minecraft:cold}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey COLD = create(key("cold"));
+
+ /**
+ * {@code minecraft:temperate}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey TEMPERATE = create(key("temperate"));
+
+ /**
+ * {@code minecraft:warm}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey WARM = create(key("warm"));
+
+ private CowVariantKeys() {
+ }
+
+ /**
+ * Creates a typed key for {@link Cow.Variant} in the registry {@code minecraft:cow_variant}.
+ *
+ * @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.COW_VARIANT, key);
+ }
+}
diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/DamageTypeKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/DamageTypeKeys.java
index 47e9afe540..0a04639771 100644
--- a/paper-api/src/generated/java/io/papermc/paper/registry/keys/DamageTypeKeys.java
+++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/DamageTypeKeys.java
@@ -22,8 +22,8 @@ import org.jspecify.annotations.NullMarked;
"unused",
"SpellCheckingInspection"
})
-@GeneratedFrom("1.21.4")
@NullMarked
+@GeneratedFrom("1.21.5")
public final class DamageTypeKeys {
/**
* {@code minecraft:arrow}
@@ -372,7 +372,7 @@ public final class DamageTypeKeys {
}
/**
- * Creates a key for {@link DamageType} in the registry {@code minecraft:damage_type}.
+ * Creates a typed key for {@link DamageType} in the registry {@code minecraft:damage_type}.
*
* @param key the value's key in the registry
* @return a new typed key
diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/DataComponentTypeKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/DataComponentTypeKeys.java
new file mode 100644
index 0000000000..768e6b30e5
--- /dev/null
+++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/DataComponentTypeKeys.java
@@ -0,0 +1,706 @@
+package io.papermc.paper.registry.keys;
+
+import static net.kyori.adventure.key.Key.key;
+
+import io.papermc.paper.datacomponent.DataComponentType;
+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.jspecify.annotations.NullMarked;
+
+/**
+ * Vanilla keys for {@link RegistryKey#DATA_COMPONENT_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"
+})
+@NullMarked
+@GeneratedFrom("1.21.5")
+public final class DataComponentTypeKeys {
+ /**
+ * {@code minecraft:attribute_modifiers}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey ATTRIBUTE_MODIFIERS = create(key("attribute_modifiers"));
+
+ /**
+ * {@code minecraft:axolotl/variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey AXOLOTL_VARIANT = create(key("axolotl/variant"));
+
+ /**
+ * {@code minecraft:banner_patterns}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey BANNER_PATTERNS = create(key("banner_patterns"));
+
+ /**
+ * {@code minecraft:base_color}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey BASE_COLOR = create(key("base_color"));
+
+ /**
+ * {@code minecraft:bees}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey BEES = create(key("bees"));
+
+ /**
+ * {@code minecraft:block_entity_data}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey BLOCK_ENTITY_DATA = create(key("block_entity_data"));
+
+ /**
+ * {@code minecraft:block_state}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey BLOCK_STATE = create(key("block_state"));
+
+ /**
+ * {@code minecraft:blocks_attacks}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey BLOCKS_ATTACKS = create(key("blocks_attacks"));
+
+ /**
+ * {@code minecraft:break_sound}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey BREAK_SOUND = create(key("break_sound"));
+
+ /**
+ * {@code minecraft:bucket_entity_data}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey BUCKET_ENTITY_DATA = create(key("bucket_entity_data"));
+
+ /**
+ * {@code minecraft:bundle_contents}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey BUNDLE_CONTENTS = create(key("bundle_contents"));
+
+ /**
+ * {@code minecraft:can_break}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey CAN_BREAK = create(key("can_break"));
+
+ /**
+ * {@code minecraft:can_place_on}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey CAN_PLACE_ON = create(key("can_place_on"));
+
+ /**
+ * {@code minecraft:cat/collar}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey CAT_COLLAR = create(key("cat/collar"));
+
+ /**
+ * {@code minecraft:cat/variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey CAT_VARIANT = create(key("cat/variant"));
+
+ /**
+ * {@code minecraft:charged_projectiles}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey CHARGED_PROJECTILES = create(key("charged_projectiles"));
+
+ /**
+ * {@code minecraft:chicken/variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey CHICKEN_VARIANT = create(key("chicken/variant"));
+
+ /**
+ * {@code minecraft:consumable}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey CONSUMABLE = create(key("consumable"));
+
+ /**
+ * {@code minecraft:container}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey CONTAINER = create(key("container"));
+
+ /**
+ * {@code minecraft:container_loot}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey CONTAINER_LOOT = create(key("container_loot"));
+
+ /**
+ * {@code minecraft:cow/variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey COW_VARIANT = create(key("cow/variant"));
+
+ /**
+ * {@code minecraft:creative_slot_lock}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey CREATIVE_SLOT_LOCK = create(key("creative_slot_lock"));
+
+ /**
+ * {@code minecraft:custom_data}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey CUSTOM_DATA = create(key("custom_data"));
+
+ /**
+ * {@code minecraft:custom_model_data}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey CUSTOM_MODEL_DATA = create(key("custom_model_data"));
+
+ /**
+ * {@code minecraft:custom_name}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey CUSTOM_NAME = create(key("custom_name"));
+
+ /**
+ * {@code minecraft:damage}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey DAMAGE = create(key("damage"));
+
+ /**
+ * {@code minecraft:damage_resistant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey DAMAGE_RESISTANT = create(key("damage_resistant"));
+
+ /**
+ * {@code minecraft:death_protection}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey DEATH_PROTECTION = create(key("death_protection"));
+
+ /**
+ * {@code minecraft:debug_stick_state}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey DEBUG_STICK_STATE = create(key("debug_stick_state"));
+
+ /**
+ * {@code minecraft:dyed_color}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey DYED_COLOR = create(key("dyed_color"));
+
+ /**
+ * {@code minecraft:enchantable}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey ENCHANTABLE = create(key("enchantable"));
+
+ /**
+ * {@code minecraft:enchantment_glint_override}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey ENCHANTMENT_GLINT_OVERRIDE = create(key("enchantment_glint_override"));
+
+ /**
+ * {@code minecraft:enchantments}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey ENCHANTMENTS = create(key("enchantments"));
+
+ /**
+ * {@code minecraft:entity_data}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey ENTITY_DATA = create(key("entity_data"));
+
+ /**
+ * {@code minecraft:equippable}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey EQUIPPABLE = create(key("equippable"));
+
+ /**
+ * {@code minecraft:firework_explosion}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey FIREWORK_EXPLOSION = create(key("firework_explosion"));
+
+ /**
+ * {@code minecraft:fireworks}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey FIREWORKS = create(key("fireworks"));
+
+ /**
+ * {@code minecraft:food}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey FOOD = create(key("food"));
+
+ /**
+ * {@code minecraft:fox/variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey FOX_VARIANT = create(key("fox/variant"));
+
+ /**
+ * {@code minecraft:frog/variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey FROG_VARIANT = create(key("frog/variant"));
+
+ /**
+ * {@code minecraft:glider}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey GLIDER = create(key("glider"));
+
+ /**
+ * {@code minecraft:horse/variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey HORSE_VARIANT = create(key("horse/variant"));
+
+ /**
+ * {@code minecraft:instrument}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey INSTRUMENT = create(key("instrument"));
+
+ /**
+ * {@code minecraft:intangible_projectile}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey INTANGIBLE_PROJECTILE = create(key("intangible_projectile"));
+
+ /**
+ * {@code minecraft:item_model}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey ITEM_MODEL = create(key("item_model"));
+
+ /**
+ * {@code minecraft:item_name}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey ITEM_NAME = create(key("item_name"));
+
+ /**
+ * {@code minecraft:jukebox_playable}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey JUKEBOX_PLAYABLE = create(key("jukebox_playable"));
+
+ /**
+ * {@code minecraft:llama/variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey LLAMA_VARIANT = create(key("llama/variant"));
+
+ /**
+ * {@code minecraft:lock}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey LOCK = create(key("lock"));
+
+ /**
+ * {@code minecraft:lodestone_tracker}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey LODESTONE_TRACKER = create(key("lodestone_tracker"));
+
+ /**
+ * {@code minecraft:lore}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey LORE = create(key("lore"));
+
+ /**
+ * {@code minecraft:map_color}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey MAP_COLOR = create(key("map_color"));
+
+ /**
+ * {@code minecraft:map_decorations}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey MAP_DECORATIONS = create(key("map_decorations"));
+
+ /**
+ * {@code minecraft:map_id}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey MAP_ID = create(key("map_id"));
+
+ /**
+ * {@code minecraft:map_post_processing}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey MAP_POST_PROCESSING = create(key("map_post_processing"));
+
+ /**
+ * {@code minecraft:max_damage}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey MAX_DAMAGE = create(key("max_damage"));
+
+ /**
+ * {@code minecraft:max_stack_size}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey MAX_STACK_SIZE = create(key("max_stack_size"));
+
+ /**
+ * {@code minecraft:mooshroom/variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey MOOSHROOM_VARIANT = create(key("mooshroom/variant"));
+
+ /**
+ * {@code minecraft:note_block_sound}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey NOTE_BLOCK_SOUND = create(key("note_block_sound"));
+
+ /**
+ * {@code minecraft:ominous_bottle_amplifier}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey OMINOUS_BOTTLE_AMPLIFIER = create(key("ominous_bottle_amplifier"));
+
+ /**
+ * {@code minecraft:painting/variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey PAINTING_VARIANT = create(key("painting/variant"));
+
+ /**
+ * {@code minecraft:parrot/variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey PARROT_VARIANT = create(key("parrot/variant"));
+
+ /**
+ * {@code minecraft:pig/variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey PIG_VARIANT = create(key("pig/variant"));
+
+ /**
+ * {@code minecraft:pot_decorations}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey POT_DECORATIONS = create(key("pot_decorations"));
+
+ /**
+ * {@code minecraft:potion_contents}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey POTION_CONTENTS = create(key("potion_contents"));
+
+ /**
+ * {@code minecraft:potion_duration_scale}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey POTION_DURATION_SCALE = create(key("potion_duration_scale"));
+
+ /**
+ * {@code minecraft:profile}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey PROFILE = create(key("profile"));
+
+ /**
+ * {@code minecraft:provides_banner_patterns}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey PROVIDES_BANNER_PATTERNS = create(key("provides_banner_patterns"));
+
+ /**
+ * {@code minecraft:provides_trim_material}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey PROVIDES_TRIM_MATERIAL = create(key("provides_trim_material"));
+
+ /**
+ * {@code minecraft:rabbit/variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey RABBIT_VARIANT = create(key("rabbit/variant"));
+
+ /**
+ * {@code minecraft:rarity}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey RARITY = create(key("rarity"));
+
+ /**
+ * {@code minecraft:recipes}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey RECIPES = create(key("recipes"));
+
+ /**
+ * {@code minecraft:repair_cost}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey REPAIR_COST = create(key("repair_cost"));
+
+ /**
+ * {@code minecraft:repairable}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey REPAIRABLE = create(key("repairable"));
+
+ /**
+ * {@code minecraft:salmon/size}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey SALMON_SIZE = create(key("salmon/size"));
+
+ /**
+ * {@code minecraft:sheep/color}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey SHEEP_COLOR = create(key("sheep/color"));
+
+ /**
+ * {@code minecraft:shulker/color}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey SHULKER_COLOR = create(key("shulker/color"));
+
+ /**
+ * {@code minecraft:stored_enchantments}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey STORED_ENCHANTMENTS = create(key("stored_enchantments"));
+
+ /**
+ * {@code minecraft:suspicious_stew_effects}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey SUSPICIOUS_STEW_EFFECTS = create(key("suspicious_stew_effects"));
+
+ /**
+ * {@code minecraft:tool}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey TOOL = create(key("tool"));
+
+ /**
+ * {@code minecraft:tooltip_display}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey TOOLTIP_DISPLAY = create(key("tooltip_display"));
+
+ /**
+ * {@code minecraft:tooltip_style}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey TOOLTIP_STYLE = create(key("tooltip_style"));
+
+ /**
+ * {@code minecraft:trim}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey TRIM = create(key("trim"));
+
+ /**
+ * {@code minecraft:tropical_fish/base_color}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey TROPICAL_FISH_BASE_COLOR = create(key("tropical_fish/base_color"));
+
+ /**
+ * {@code minecraft:tropical_fish/pattern}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey TROPICAL_FISH_PATTERN = create(key("tropical_fish/pattern"));
+
+ /**
+ * {@code minecraft:tropical_fish/pattern_color}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey TROPICAL_FISH_PATTERN_COLOR = create(key("tropical_fish/pattern_color"));
+
+ /**
+ * {@code minecraft:unbreakable}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey UNBREAKABLE = create(key("unbreakable"));
+
+ /**
+ * {@code minecraft:use_cooldown}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey USE_COOLDOWN = create(key("use_cooldown"));
+
+ /**
+ * {@code minecraft:use_remainder}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey USE_REMAINDER = create(key("use_remainder"));
+
+ /**
+ * {@code minecraft:villager/variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey VILLAGER_VARIANT = create(key("villager/variant"));
+
+ /**
+ * {@code minecraft:weapon}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey WEAPON = create(key("weapon"));
+
+ /**
+ * {@code minecraft:wolf/collar}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey WOLF_COLLAR = create(key("wolf/collar"));
+
+ /**
+ * {@code minecraft:wolf/sound_variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey WOLF_SOUND_VARIANT = create(key("wolf/sound_variant"));
+
+ /**
+ * {@code minecraft:wolf/variant}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey WOLF_VARIANT = create(key("wolf/variant"));
+
+ /**
+ * {@code minecraft:writable_book_content}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey WRITABLE_BOOK_CONTENT = create(key("writable_book_content"));
+
+ /**
+ * {@code minecraft:written_book_content}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey WRITTEN_BOOK_CONTENT = create(key("written_book_content"));
+
+ private DataComponentTypeKeys() {
+ }
+
+ private static TypedKey create(final Key key) {
+ return TypedKey.create(RegistryKey.DATA_COMPONENT_TYPE, key);
+ }
+}
diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/EnchantmentKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/EnchantmentKeys.java
index ec7837c8ec..7ee0bc9af8 100644
--- a/paper-api/src/generated/java/io/papermc/paper/registry/keys/EnchantmentKeys.java
+++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/EnchantmentKeys.java
@@ -22,8 +22,8 @@ import org.jspecify.annotations.NullMarked;
"unused",
"SpellCheckingInspection"
})
-@GeneratedFrom("1.21.4")
@NullMarked
+@GeneratedFrom("1.21.5")
public final class EnchantmentKeys {
/**
* {@code minecraft:aqua_affinity}
@@ -323,7 +323,7 @@ public final class EnchantmentKeys {
}
/**
- * Creates a key for {@link Enchantment} in the registry {@code minecraft:enchantment}.
+ * Creates a typed key for {@link Enchantment} in the registry {@code minecraft:enchantment}.
*
* @param key the value's key in the registry
* @return a new typed key
diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/FluidKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/FluidKeys.java
index faf98ef6d6..a8ae49dddd 100644
--- a/paper-api/src/generated/java/io/papermc/paper/registry/keys/FluidKeys.java
+++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/FluidKeys.java
@@ -22,8 +22,8 @@ import org.jspecify.annotations.NullMarked;
"unused",
"SpellCheckingInspection"
})
-@GeneratedFrom("1.21.4")
@NullMarked
+@GeneratedFrom("1.21.5")
public final class FluidKeys {
/**
* {@code minecraft:empty}
diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/FrogVariantKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/FrogVariantKeys.java
index b70f508ebc..b3025b4077 100644
--- a/paper-api/src/generated/java/io/papermc/paper/registry/keys/FrogVariantKeys.java
+++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/FrogVariantKeys.java
@@ -22,8 +22,8 @@ import org.jspecify.annotations.NullMarked;
"unused",
"SpellCheckingInspection"
})
-@GeneratedFrom("1.21.4")
@NullMarked
+@GeneratedFrom("1.21.5")
public final class FrogVariantKeys {
/**
* {@code minecraft:cold}
@@ -49,7 +49,13 @@ public final class FrogVariantKeys {
private FrogVariantKeys() {
}
- private static TypedKey create(final Key key) {
+ /**
+ * Creates a typed key for {@link Frog.Variant} in the registry {@code minecraft:frog_variant}.
+ *
+ * @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.FROG_VARIANT, key);
}
}
diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/GameEventKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/GameEventKeys.java
index 3477ccb14c..c4116b607e 100644
--- a/paper-api/src/generated/java/io/papermc/paper/registry/keys/GameEventKeys.java
+++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/GameEventKeys.java
@@ -22,8 +22,8 @@ import org.jspecify.annotations.NullMarked;
"unused",
"SpellCheckingInspection"
})
-@GeneratedFrom("1.21.4")
@NullMarked
+@GeneratedFrom("1.21.5")
public final class GameEventKeys {
/**
* {@code minecraft:block_activate}
@@ -449,7 +449,7 @@ public final class GameEventKeys {
}
/**
- * Creates a key for {@link GameEvent} in the registry {@code minecraft:game_event}.
+ * Creates a typed key for {@link GameEvent} in the registry {@code minecraft:game_event}.
*
* @param key the value's key in the registry
* @return a new typed key
diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/InstrumentKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/InstrumentKeys.java
index 391d9b059f..d5c9c9448c 100644
--- a/paper-api/src/generated/java/io/papermc/paper/registry/keys/InstrumentKeys.java
+++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/InstrumentKeys.java
@@ -22,8 +22,8 @@ import org.jspecify.annotations.NullMarked;
"unused",
"SpellCheckingInspection"
})
-@GeneratedFrom("1.21.4")
@NullMarked
+@GeneratedFrom("1.21.5")
public final class InstrumentKeys {
/**
* {@code minecraft:admire_goat_horn}
@@ -85,7 +85,7 @@ public final class InstrumentKeys {
}
/**
- * Creates a key for {@link MusicInstrument} in the registry {@code minecraft:instrument}.
+ * Creates a typed key for {@link MusicInstrument} in the registry {@code minecraft:instrument}.
*
* @param key the value's key in the registry
* @return a new typed key
diff --git a/paper-api/src/generated/java/io/papermc/paper/registry/keys/ItemTypeKeys.java b/paper-api/src/generated/java/io/papermc/paper/registry/keys/ItemTypeKeys.java
index 75f9a1cc63..eb25a7ee06 100644
--- a/paper-api/src/generated/java/io/papermc/paper/registry/keys/ItemTypeKeys.java
+++ b/paper-api/src/generated/java/io/papermc/paper/registry/keys/ItemTypeKeys.java
@@ -22,8 +22,8 @@ import org.jspecify.annotations.NullMarked;
"unused",
"SpellCheckingInspection"
})
-@GeneratedFrom("1.21.4")
@NullMarked
+@GeneratedFrom("1.21.5")
public final class ItemTypeKeys {
/**
* {@code minecraft:acacia_boat}
@@ -900,6 +900,13 @@ public final class ItemTypeKeys {
*/
public static final TypedKey BLUE_DYE = create(key("blue_dye"));
+ /**
+ * {@code minecraft:blue_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey BLUE_EGG = create(key("blue_egg"));
+
/**
* {@code minecraft:blue_glazed_terracotta}
*
@@ -1173,6 +1180,13 @@ public final class ItemTypeKeys {
*/
public static final TypedKey BROWN_DYE = create(key("brown_dye"));
+ /**
+ * {@code minecraft:brown_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey BROWN_EGG = create(key("brown_egg"));
+
/**
* {@code minecraft:brown_glazed_terracotta}
*
@@ -1285,6 +1299,13 @@ public final class ItemTypeKeys {
*/
public static final TypedKey BURN_POTTERY_SHERD = create(key("burn_pottery_sherd"));
+ /**
+ * {@code minecraft:bush}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey BUSH = create(key("bush"));
+
/**
* {@code minecraft:cactus}
*
@@ -1292,6 +1313,13 @@ public final class ItemTypeKeys {
*/
public static final TypedKey CACTUS = create(key("cactus"));
+ /**
+ * {@code minecraft:cactus_flower}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey CACTUS_FLOWER = create(key("cactus_flower"));
+
/**
* {@code minecraft:cake}
*
@@ -2917,18 +2945,130 @@ public final class ItemTypeKeys {
public static final TypedKey DIRT_PATH = create(key("dirt_path"));
/**
- * {@code minecraft:field_masoned_banner_pattern}
+ * {@code minecraft:dolphin_spawn_egg}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
- public static final TypedKey FIELD_MASONED_BANNER_PATTERN = create(key("field_masoned_banner_pattern"));
+ public static final TypedKey DOLPHIN_SPAWN_EGG = create(key("dolphin_spawn_egg"));
/**
- * {@code minecraft:fletching_table}
+ * {@code minecraft:donkey_spawn_egg}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
- public static final TypedKey FLETCHING_TABLE = create(key("fletching_table"));
+ public static final TypedKey DONKEY_SPAWN_EGG = create(key("donkey_spawn_egg"));
+
+ /**
+ * {@code minecraft:dragon_breath}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey DRAGON_BREATH = create(key("dragon_breath"));
+
+ /**
+ * {@code minecraft:dragon_head}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey DRAGON_HEAD = create(key("dragon_head"));
+
+ /**
+ * {@code minecraft:drowned_spawn_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey DROWNED_SPAWN_EGG = create(key("drowned_spawn_egg"));
+
+ /**
+ * {@code minecraft:elder_guardian_spawn_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey ELDER_GUARDIAN_SPAWN_EGG = create(key("elder_guardian_spawn_egg"));
+
+ /**
+ * {@code minecraft:enchanted_book}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey ENCHANTED_BOOK = create(key("enchanted_book"));
+
+ /**
+ * {@code minecraft:end_crystal}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey END_CRYSTAL = create(key("end_crystal"));
+
+ /**
+ * {@code minecraft:ender_dragon_spawn_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey ENDER_DRAGON_SPAWN_EGG = create(key("ender_dragon_spawn_egg"));
+
+ /**
+ * {@code minecraft:ender_eye}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey ENDER_EYE = create(key("ender_eye"));
+
+ /**
+ * {@code minecraft:enderman_spawn_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey ENDERMAN_SPAWN_EGG = create(key("enderman_spawn_egg"));
+
+ /**
+ * {@code minecraft:endermite_spawn_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey ENDERMITE_SPAWN_EGG = create(key("endermite_spawn_egg"));
+
+ /**
+ * {@code minecraft:evoker_spawn_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey EVOKER_SPAWN_EGG = create(key("evoker_spawn_egg"));
+
+ /**
+ * {@code minecraft:experience_bottle}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey EXPERIENCE_BOTTLE = create(key("experience_bottle"));
+
+ /**
+ * {@code minecraft:fermented_spider_eye}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey FERMENTED_SPIDER_EYE = create(key("fermented_spider_eye"));
+
+ /**
+ * {@code minecraft:fire_charge}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey FIRE_CHARGE = create(key("fire_charge"));
+
+ /**
+ * {@code minecraft:firework_rocket}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey FIREWORK_ROCKET = create(key("firework_rocket"));
+
+ /**
+ * {@code minecraft:firework_star}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey FIREWORK_STAR = create(key("firework_star"));
/**
* {@code minecraft:flow_banner_pattern}
@@ -2945,39 +3085,242 @@ public final class ItemTypeKeys {
public static final TypedKey FLOWER_BANNER_PATTERN = create(key("flower_banner_pattern"));
/**
- * {@code minecraft:glow_berries}
+ * {@code minecraft:flower_pot}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
- public static final TypedKey GLOW_BERRIES = create(key("glow_berries"));
+ public static final TypedKey FLOWER_POT = create(key("flower_pot"));
/**
- * {@code minecraft:goat_horn}
+ * {@code minecraft:fox_spawn_egg}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
- public static final TypedKey GOAT_HORN = create(key("goat_horn"));
+ public static final TypedKey FOX_SPAWN_EGG = create(key("fox_spawn_egg"));
/**
- * {@code minecraft:grindstone}
+ * {@code minecraft:frog_spawn_egg}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
- public static final TypedKey GRINDSTONE = create(key("grindstone"));
+ public static final TypedKey FROG_SPAWN_EGG = create(key("frog_spawn_egg"));
/**
- * {@code minecraft:honeycomb}
+ * {@code minecraft:ghast_spawn_egg}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
- public static final TypedKey HONEYCOMB = create(key("honeycomb"));
+ public static final TypedKey GHAST_SPAWN_EGG = create(key("ghast_spawn_egg"));
/**
- * {@code minecraft:lantern}
+ * {@code minecraft:glass_bottle}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
- public static final TypedKey LANTERN = create(key("lantern"));
+ public static final TypedKey GLASS_BOTTLE = create(key("glass_bottle"));
+
+ /**
+ * {@code minecraft:glistering_melon_slice}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey GLISTERING_MELON_SLICE = create(key("glistering_melon_slice"));
+
+ /**
+ * {@code minecraft:glow_item_frame}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey GLOW_ITEM_FRAME = create(key("glow_item_frame"));
+
+ /**
+ * {@code minecraft:glow_squid_spawn_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey GLOW_SQUID_SPAWN_EGG = create(key("glow_squid_spawn_egg"));
+
+ /**
+ * {@code minecraft:goat_spawn_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey GOAT_SPAWN_EGG = create(key("goat_spawn_egg"));
+
+ /**
+ * {@code minecraft:gold_nugget}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey GOLD_NUGGET = create(key("gold_nugget"));
+
+ /**
+ * {@code minecraft:golden_carrot}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey GOLDEN_CARROT = create(key("golden_carrot"));
+
+ /**
+ * {@code minecraft:golden_horse_armor}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey GOLDEN_HORSE_ARMOR = create(key("golden_horse_armor"));
+
+ /**
+ * {@code minecraft:gray_banner}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey GRAY_BANNER = create(key("gray_banner"));
+
+ /**
+ * {@code minecraft:green_banner}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey GREEN_BANNER = create(key("green_banner"));
+
+ /**
+ * {@code minecraft:guardian_spawn_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey GUARDIAN_SPAWN_EGG = create(key("guardian_spawn_egg"));
+
+ /**
+ * {@code minecraft:hoglin_spawn_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey HOGLIN_SPAWN_EGG = create(key("hoglin_spawn_egg"));
+
+ /**
+ * {@code minecraft:horse_spawn_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey HORSE_SPAWN_EGG = create(key("horse_spawn_egg"));
+
+ /**
+ * {@code minecraft:husk_spawn_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey HUSK_SPAWN_EGG = create(key("husk_spawn_egg"));
+
+ /**
+ * {@code minecraft:iron_golem_spawn_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey IRON_GOLEM_SPAWN_EGG = create(key("iron_golem_spawn_egg"));
+
+ /**
+ * {@code minecraft:iron_horse_armor}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey IRON_HORSE_ARMOR = create(key("iron_horse_armor"));
+
+ /**
+ * {@code minecraft:item_frame}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey ITEM_FRAME = create(key("item_frame"));
+
+ /**
+ * {@code minecraft:lead}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey LEAD = create(key("lead"));
+
+ /**
+ * {@code minecraft:leather_horse_armor}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey LEATHER_HORSE_ARMOR = create(key("leather_horse_armor"));
+
+ /**
+ * {@code minecraft:light_blue_banner}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey LIGHT_BLUE_BANNER = create(key("light_blue_banner"));
+
+ /**
+ * {@code minecraft:light_gray_banner}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey LIGHT_GRAY_BANNER = create(key("light_gray_banner"));
+
+ /**
+ * {@code minecraft:lime_banner}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey LIME_BANNER = create(key("lime_banner"));
+
+ /**
+ * {@code minecraft:llama_spawn_egg}
+ *
+ * @apiNote This field is version-dependant and may be removed in future Minecraft versions
+ */
+ public static final TypedKey