API Changes in 1.21.1
All API Changes
All API Additions
OfflinePlayer#getPersistentDataContainer() PlayerInsertLecternBookEvent extends PlayerEvent implements Cancellable org.jspecify` annotations are now included in the api BrewingStand#setRecipeBrewTime(int recipeBrewTime) BrewingStand#getRecipeBrewTime(): int BrewingStartEvent#getRecipeBrewTime(): int BrewingStartEvent#setRecipeBrewTime(int recipeBrewTime) BrewingStartEvent#getBrewingTime(): int BrewingStartEvent#setBrewingTime(int brewingTime) BrewingStandView#getRecipeBrewTime(): int BrewingStandView#setRecipeBrewTime(int recipeBrewTime) EntityEffect.TAMING_FAILED EntityEffect.TAMING_SUCCEEDED EntityEffect.ARMADILLO_PEEK EntityEffect.BODY_BREAK Entity#broadcastHurtAnimation(Collection<Player> players) Player#sendEntityEffect(EntityEffect effect, Entity target) ItemFactory#enchantWithLevels(ItemStack itemStack, int levels, RegistryKeySet<Enchantment> keySet, Random random): ItemStack ItemStack#enchantWithLevels(int levels, RegistryKeySet<Enchantment> keySet, Random random): ItemStack Datapack#getTitle(): Component Datapack#getDescription(): Component Datapack#isRequired(): boolean Datapack#getRequiredFeatures(): Set<FeatureFlag> Datapack#getSource(): DatapackSource Datapack#computeDisplayName(): Component DatapackManager#refreshPacks() DatapackManager#getPack(String name): Datapack DatapackSource ItemStack.serializeItemsAsBytes(Collection<ItemStack> items): byte[] ItemStack.serializeItemsAsBytes(ItemStack[] items): byte[] ItemStack#deserializeItemsFromBytes(byte[] bytes): ItemStack[] <T extends Projectile> ProjectileSource#launchProjective(Class<? extends T> projectile, Vector velocity, Consumer<? super T> function): T TileStateInventoryHolder extends TileState, BlockInventoryHolder Bed#setOccupied(boolean occupied) DecoratedPot#isCracked(): boolean DecoratedPot#setCracked(boolean cracked) UnsafeValues#serializeItemAsJson(ItemStack itemStack): JsonObject UnsafeValues#deserializeItemFromJson(JsonObject data): ItemStack TagEventTypeProvider PreFlattenTagRegistrar<T> extends Registrar PostFlattenTagRegistrar<T> extends Registrar TagEntry<T> extends Keyed LifecycleEvents.TAGS: TagEventTypeProvider FeatureDependant FeatureFlagSetHolder FeatureFlag.ALL_FLAGS: Index<Key, FeatureFlag> EnchantmentView#setEnchantmentSeed(int seed) CompassMeta#isLodestoneCompass(): boolean CompassMeta#clearLodestone() Bukkit.getWorld(Key worldKey): World Server#getWorld(Key worldKey): World Sign#getAllowedEditorUniqueId(): UUID Sign#setAllowedEditorUniqueId(UUID uuid) Leashable Enchantment#description: Component Enchantment#getSupportedItems(): RegistryKeySet<ItemType> Enchantment#getPrimaryItems(): RegistryKeySet<ItemType> Enchantment#getWeight(): int Enchantment#getExclusiveWith(): RegistryKeySet<Enchantment> FireworkMeta#hasPower(): boolean All API Deprecations
BrewingStartEvent#getTotalBrewTime(): int BrewingStartEvent#setTotalBrewTime(int brewTime) EntityEffect.WORLD_SMOKE EntityEffect.WOLF_HEARTS EntityEffect.THORNS_HURT EntityEffect.HURT_DROWN EntityEffect.HURT_EXPLOSION EntityEffect.PLAYER_BAD_OMEN_RAID EntityEffect.HURT_BERRY_BUSH Block#isValidTool(ItemStack itemStack): boolean BukkitObjectInputStream BukkitObjectOutputStream BlockType#isInteractable(): boolean BlockType#isEnabledByFeature(World world): boolean ItemType#isEnabledByFeature(World world): boolean InventoryView#getOriginalTitle(): String InventoryView:setTitle(String title) All Class Inheritance Changes
OfflinePlayer now extends PersistentDataViewHolderMenuType now extends FeatureDependantChiseledBookshelf no longer extends TileState & BlockInventoryHolder and now extends TileStateInventoryHolderContainer no longer extends BlockInventoryHolder and now extends TileStateInventoryHolderDecoratedPot no longer extends TileState & BlockInventoryHolder and now extends TileStateInventoryHolderJukebox no longer extends TileState & BlockInventoryHolder and now extends TileStateInventoryHolderLectern no longer extends TileState & BlockInventoryHolder and now extends TileStateInventoryHolderEnchantment no longer extends FeatureDependantRegionAccessor now extends FeatureFlagSetHolderWorldInfo now extends FeatureFlagSetHolderPotionEffectType now extends FeatureDependantEnchantment now extends FeatureDependantPotionType now extends FeatureDependantEntityType now extends FeatureDependantBlockType now extends FeatureDependantBoat now extends LeashableMob now extends LeashableAll API Removals
UnsafeValues#getFeatureFlag(NamespacedKey key): FeatureFlag #125 Updated Upstream (Bukkit/CraftBukkit)
There have been minor API changes. View them in the PR description.
#121 Add offline PDC API
Additions:
-
OfflinePlayer#getPersistentDataContainer()
Extensions:
OfflinePlayernow extendsPersistentDataViewHolder
#112 Add PlayerInsertLecternBookEvent [1.20 port]
Additions:
-
PlayerInsertLecternBookEvent extends PlayerEvent implements Cancellable
#111 Begin switching to JSpecify annotations
Additions:
-
org.jspecify` annotations are now included in the api
#109 Add API for explosions to damage the explosion cause
Added a new parameter to World#explode
#108 Add startingBrewTime
Additions:
-
BrewingStand#setRecipeBrewTime(int recipeBrewTime) -
BrewingStand#getRecipeBrewTime(): int -
BrewingStartEvent#getRecipeBrewTime(): int -
BrewingStartEvent#setRecipeBrewTime(int recipeBrewTime) -
BrewingStartEvent#getBrewingTime(): int -
BrewingStartEvent#setBrewingTime(int brewingTime) -
BrewingStandView#getRecipeBrewTime(): int -
BrewingStandView#setRecipeBrewTime(int recipeBrewTime)
Deprecations:
-
BrewingStartEvent#getTotalBrewTime(): int -
BrewingStartEvent#setTotalBrewTime(int brewTime)
#107 Improve entity effect API
Additions:
-
EntityEffect.TAMING_FAILED -
EntityEffect.TAMING_SUCCEEDED -
EntityEffect.ARMADILLO_PEEK -
EntityEffect.BODY_BREAK -
Entity#broadcastHurtAnimation(Collection<Player> players) -
Player#sendEntityEffect(EntityEffect effect, Entity target)
Deprecations:
-
EntityEffect.WORLD_SMOKE -
EntityEffect.WOLF_HEARTS -
EntityEffect.THORNS_HURT -
EntityEffect.HURT_DROWN -
EntityEffect.HURT_EXPLOSION -
EntityEffect.PLAYER_BAD_OMEN_RAID -
EntityEffect.HURT_BERRY_BUSH
#105 Add enchantWithLevels with tag specification
Additions:
-
ItemFactory#enchantWithLevels(ItemStack itemStack, int levels, RegistryKeySet<Enchantment> keySet, Random random): ItemStack -
ItemStack#enchantWithLevels(int levels, RegistryKeySet<Enchantment> keySet, Random random): ItemStack
#102 deprecate for removal Block#isValidTool
Deprecations:
-
Block#isValidTool(ItemStack itemStack): boolean
#97 make MenuType implement FeatureDependant
Extensions:
MenuTypenow extendsFeatureDependant
#95 Expand out datapack API
Additions:
-
Datapack#getTitle(): Component -
Datapack#getDescription(): Component -
Datapack#isRequired(): boolean -
Datapack#getRequiredFeatures(): Set<FeatureFlag> -
Datapack#getSource(): DatapackSource -
Datapack#computeDisplayName(): Component -
DatapackManager#refreshPacks() -
DatapackManager#getPack(String name): Datapack -
DatapackSource
#92 Add ItemStack array serialization methods
Additions:
-
ItemStack.serializeItemsAsBytes(Collection<ItemStack> items): byte[] -
ItemStack.serializeItemsAsBytes(ItemStack[] items): byte[] -
ItemStack#deserializeItemsFromBytes(byte[] bytes): ItemStack[]
Deprecations:
-
BukkitObjectInputStream -
BukkitObjectOutputStream
#90 Deprecate BlockType#isInteractable
Deprecations:
-
BlockType#isInteractable(): boolean
#89 Update launchProjectile API
Additions:
-
<T extends Projectile> ProjectileSource#launchProjective(Class<? extends T> projectile, Vector velocity, Consumer<? super T> function): T
#88 create TileStateInventoryHolder
Additions:
-
TileStateInventoryHolder extends TileState, BlockInventoryHolder
Extensions:
ChiseledBookshelfno longer extendsTileState & BlockInventoryHolderand now extendsTileStateInventoryHolderContainerno longer extendsBlockInventoryHolderand now extendsTileStateInventoryHolderDecoratedPotno longer extendsTileState & BlockInventoryHolderand now extendsTileStateInventoryHolderJukeboxno longer extendsTileState & BlockInventoryHolderand now extendsTileStateInventoryHolderLecternno longer extendsTileState & BlockInventoryHolderand now extendsTileStateInventoryHolder
#78 Updated Upstream (Bukkit/CraftBukkit/Spigot)
A lot of API changes were merged in this build. Check the PR description for details.
#75 deprecate isEnabledByFeature in Item/BlockType
Deprecations:
-
BlockType#isEnabledByFeature(World world): boolean -
ItemType#isEnabledByFeature(World world): boolean
#74 Add Decorated Pot Cracked API
Additions:
-
Bed#setOccupied(boolean occupied) -
DecoratedPot#isCracked(): boolean -
DecoratedPot#setCracked(boolean cracked)
#73 Add Item serialization as json api
Additions:
-
UnsafeValues#serializeItemAsJson(ItemStack itemStack): JsonObject -
UnsafeValues#deserializeItemFromJson(JsonObject data): ItemStack
#72 Tag Lifecycle Events
Additions:
-
TagEventTypeProvider -
PreFlattenTagRegistrar<T> extends Registrar -
PostFlattenTagRegistrar<T> extends Registrar -
TagEntry<T> extends Keyed -
LifecycleEvents.TAGS: TagEventTypeProvider
#70 Enchantment is data-driven, so not FeatureDependant
Extensions:
Enchantmentno longer extendsFeatureDependant
#69 Add FeatureFlag API
Additions:
-
FeatureDependant -
FeatureFlagSetHolder -
FeatureFlag.ALL_FLAGS: Index<Key, FeatureFlag>
Extensions:
RegionAccessornow extendsFeatureFlagSetHolderWorldInfonow extendsFeatureFlagSetHolderPotionEffectTypenow extendsFeatureDependantEnchantmentnow extendsFeatureDependantPotionTypenow extendsFeatureDependantEntityTypenow extendsFeatureDependantBlockTypenow extendsFeatureDependant
Removed:
-
UnsafeValues#getFeatureFlag(NamespacedKey key): FeatureFlag
#50 Add enchantment seed update API
Additions:
-
EnchantmentView#setEnchantmentSeed(int seed)
#49 Add a method to reset Lodestone compasses back to normal ones
Additions:
-
CompassMeta#isLodestoneCompass(): boolean -
CompassMeta#clearLodestone()
#47 Deprecate API relating to menu title changes
Deprecations:
-
InventoryView#getOriginalTitle(): String -
InventoryView:setTitle(String title)
#36 Add getWorld method that uses adventure Key
Additions:
-
Bukkit.getWorld(Key worldKey): World -
Server#getWorld(Key worldKey): World
#33 Allow getting/setting the sign's editor uuid
Additions:
-
Sign#getAllowedEditorUniqueId(): UUID -
Sign#setAllowedEditorUniqueId(UUID uuid)
#31 Leashable API
Additions:
-
Leashable
Extensions:
Boatnow extendsLeashableMobnow extendsLeashable
#30 Add even more Enchantment API
Additions:
-
Enchantment#description: Component -
Enchantment#getSupportedItems(): RegistryKeySet<ItemType> -
Enchantment#getPrimaryItems(): RegistryKeySet<ItemType> -
Enchantment#getWeight(): int -
Enchantment#getExclusiveWith(): RegistryKeySet<Enchantment>
#28 Updated Upstream (Bukkit/CraftBukkit/Spigot)
Additions:
-
FireworkMeta#hasPower(): boolean
Learn Paper Dev is licensed under CC BY-NC-SA 4.0