Deprecated API
Contents
- Terminally Deprecated
- Interfaces
- Classes
- Enum Classes
- Annotation Interfaces
- Fields
- Methods
- Constructors
- Enum Constants
-
ElementDescriptionTimings will be removed in the futureTimings will be removed in the futureTimings will be removed in the futureTimings will be removed in the futureTimings will be removed in the futureTimings will be removed in the futureTimings will be removed in the futureTimings will be removed in the futureTimings will be removed in the futureuse
SoundGroup
useRayTraceResult
For removal, seeCommands
on how to use the new Brigadier API.For removal, seeCommands
on how to use the new Brigadier API.no longer used anymore since 1.15.2, the value fallback to the default value of the setting when unknown on the server. In this caseClientOption.ChatVisibility.FULL
will be returned.useRayTraceResult
useTNTPrimeEvent
UsePaperServerListPingEvent.getListedPlayers()
, as this does not contain real player profilesthe Iterable interface will be removed at some pointfor removal. SeeMessageComponentSerializer
for a direct replacement of functionality found in this class. As a general entrypoint to brigadier on paper, seeCommands
.Enchantments do not have a "rarity" since 1.20.5relative velocity flags now allow for the whole rotation to be relative, instead of the yaw and pitch having individual options. UseTeleportFlag.Relative.VELOCITY_ROTATION
instead.Since 1.21.3, vanilla split up the relative teleport flags into velocity and position related ones. As the API does not deal with position relative flags, this name is no longer applicable. UseTeleportFlag.Relative.VELOCITY_X
instead.Since 1.21.3, vanilla split up the relative teleport flags into velocity and position related ones. As the API does not deal with position relative flags, this name is no longer applicable. UseTeleportFlag.Relative.VELOCITY_Y
instead.relative velocity flags now allow for the whole rotation to be relative, instead of the yaw and pitch having individual options. UseTeleportFlag.Relative.VELOCITY_ROTATION
instead.Since 1.21.3, vanilla split up the relative teleport flags into velocity and position related ones. As the API does not deal with position relative flags, this name is no longer applicable. UseTeleportFlag.Relative.VELOCITY_Z
instead.useItemRarity
withItemMeta.getRarity()
useRegistryAccess.getRegistry(RegistryKey)
with keys fromRegistryKey
will be removed in adventure 5.0.0, usePlainTextComponentSerializer.plainText()
useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.PAINTING_VARIANT
. Painting variants can exist without a key.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.PAINTING_VARIANT
. Painting variants can exist without a key.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.useAttributeInstance.getModifier(net.kyori.adventure.key.Key)
, modifiers are no longer stored by UUIDuseAttributeInstance.removeModifier(net.kyori.adventure.key.Key)
, modifiers are no longer stored by UUIDattributes are now identified by keysmagic value, useRegistry.get(NamespacedKey)
insteadmagic valueuseRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.BANNER_PATTERN
. PatternTypes can exist without a key.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.BANNER_PATTERN
. PatternTypes can exist without a key.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.Biome is no longer an enum, custom biomes will have their own biome instance.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.partially replaced byBlock.isPreferredTool(ItemStack)
Timings will be removed in the futureTimings will be removed in the futureTimings will be removed in the futureTimings will be removed in the futureNo longer existspartially replaced byEffect.BEE_GROWTH
UseEnchantment.getActiveSlotGroups()
instead as enchantments are now applicable to a group of equipment slots.Enchantments now have a complex effect systems that cannot be reduced to a simple damage increase.Enchantments now have a complex effect systems that cannot be reduced to a simple damage increase.enchantment groupings are now managed by tags, not categoriesAs of 1.20.5 enchantments do not have a rarity.this method assumes that the enchantments description always be a translatable component which is not guaranteed.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.method is for internal use only and will be removedonly for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.useInventoryView
and its children.should not be used for anything, useThrownPotion
and set the potion via the methods there.entity groupings are now managed by tags, not categoriesHopper minecarts don't have cooldowns anymoreHopper minecarts don't have cooldowns anymoreuseMushroomCow.addEffectToNextStew(io.papermc.paper.potion.SuspiciousEffectEntry, boolean)
as PotionEffect suggests that all attributes are used. In fact, only the PotionEffectType and the duration are used.Mushroom cows can now hold multiple effects, useMushroomCow.getStewEffects()
Mushroom cows can now hold multiple effects, useMushroomCow.getStewEffects()
Mushroom cows can now hold multiple effects, useMushroomCow.setStewEffects(java.util.List)
Mushroom cows can now hold multiple effects, useMushroomCow.setStewEffects(java.util.List)
This is no longer sent from the client and will always be nulldoes not do anythingdoes not do anythingSpigots shearable API miserably fails at capturing all entities that may be sheared by a player, like mushroom cows which, once sheared, convert into normal cows. For such entities, methods likeShearable.setSheared(boolean)
orShearable.isSheared()
make no sense, making this API and interface dead API from the get-go.UseShearable.readyToBeSheared()
instead.UseShearable.shear()
instead if applicable. Some entities cannot be "unsheared".should not be used for anything, useThrownPotion
and set the potion via the methods there.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.Duplicate api, useWither.getInvulnerableTicks()
Duplicate api, useWither.setInvulnerableTicks(int)
Since 1.21.2 all zombie types can break doors if instructed as MC-137053 was fixed.raid system was overhauled in 1.20.5useBrewingStartEvent.getBrewingTime()
insteaduseBrewingStartEvent.setBrewingTime(int)
insteadduration is now a floatuseEntityRemoveFromWorldEvent
insteadthe respawn point is now set when the player enter the bed and this option doesn't work since MC 1.15.the respawn point is now set when the player enter the bed and this option doesn't work since MC 1.15.This is simply the online players. Modifications have no effectOnly works for sign commands; usePlayer.performCommand(String)
, including those casesthe mending enchantment uses enchantment effects to compute how much durability is granted per xp. The enchantment effects operation are too complex to reliably offer the inverse function.the mending enchantment uses enchantment effects to compute how much durability is granted per xp. The enchantment effects operation are too complex to reliably offer the inverse function.Hash does not seem to ever be setdismounting on tp is no longer controlled by the serverthe Iterable interface will be removed at some pointonly for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.STRUCTURE
. Structures can exist without a key.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.STRUCTURE
. Structures can exist without a key.useBlockData
useInventoryView
and its childrenItemStack
implementsTranslatable
; use that andComponent.translatable(net.kyori.adventure.translation.Translatable)
instead.this method uses an ambiguous data byte objectcast toBlockDataMeta
and useBlockDataMeta.getBlockData(Material)
useItemStack.getMaxItemUseDuration(org.bukkit.entity.LivingEntity)
; crossbows, later possibly more items require an entity parameterthis API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.UseItemMeta.displayName()
and cast it to aTranslatableComponent
. No longer used by the client.this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.this API is unsupported and will be replacedUseItemMeta.displayName()
and check if it is instanceof aTranslatableComponent
.this API is unsupported and will be replacedthis API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.UseItemMeta.displayName(Component)
with aTranslatableComponent
. No longer used by the client.this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.different types are different itemsdifferent types are different itemsuseRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.TRIM_MATERIAL
. TrimMaterials can exist without a key.this method assumes thatTrimMaterial.description()
will always be a translatable component which is not guaranteed.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.TRIM_MATERIAL
. TrimMaterials can exist without a key.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.TRIM_PATTERN
. TrimPatterns can exist without a key.this method assumes thatTrimPattern.description()
will always be a translatable component which is not guaranteed.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.TRIM_PATTERN
. TrimPatterns can exist without a key.this method assumes that jukebox song description will always be a translatable component which is not guaranteed.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.use color directlyuse color-related methodsuse color-related methodsuse color-related methodsall usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.useSpawnEggMeta
all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.INSTRUMENT
. MusicInstruments can exist without a key.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.INSTRUMENT
. MusicInstruments can exist without a key.this method assumes that the instrument description always be a translatable component which is not guaranteed.useDatapack
useDatapackManager
Plugin loading now occurs at a point which makes it impossible to expose this behavior. This instance will only throw unsupported operation exceptions.usePotionEffectType.createEffect(int, int)
instead.Upgraded / extended potions are now their ownPotionType
usePotionType.getPotionEffects()
insteadNon-FunctionalUpgraded / extended potions are now their ownPotionType
use them instead.useKeyed.key()
this method's behavior is broken and not useful. If you want to get an object based on its vanilla name, or a key, wrap it in aNamespacedKey
object and useRegistry.get(NamespacedKey)
useBlockData
checkMaterial
insteaduseRegistry.getKey(Keyed)
andRegistry.SOUNDS
. Sounds can exist without a key.useRegistry.getKey(Keyed)
andRegistry.SOUNDS
. Sounds can exist without a key.removed in Minecraft 1.20.5. Do not use. Will be removed at a later date. Until then, this constant now acts as a reference toTag.ITEMS_BREAKS_DECORATED_POTS
which largely shares the same contents of the old "minecraft:tools" tag.useTranslatable
look for atranslationKey()
method insteadDeprecated, see usage methods for replacement(s)custom biomes are properly supported in API nowcustom biomes are properly supported in API nowonly for backwards compatibility.only for backwards compatibility, old enums can not be compared.only for backwards compatibility.only for backwards compatibility, it is not guaranteed that an old enum always has the same ordinal.unused as of 1.19
-
InterfaceDescriptionTimings will be removed in the futureuse
SoundGroup
For removal, seeCommands
on how to use the new Brigadier API.For removal, seeCommands
on how to use the new Brigadier API.Timings will be removed in the futureshould not be used for anything, useThrownPotion
and set the potion via the methods there.Spigots shearable API miserably fails at capturing all entities that may be sheared by a player, like mushroom cows which, once sheared, convert into normal cows. For such entities, methods likeShearable.setSheared(boolean)
orShearable.isSheared()
make no sense, making this API and interface dead API from the get-go.should not be used for anything, useThrownPotion
and set the potion via the methods there.tipped status depends only on base potion type not being UNCRAFTABLE and effects being empty.Biomes are now set withBiomeProvider
this API part has been replaced by thePersistentDataHolder
API. Please usePersistentDataHolder
instead of this.this API part has been replaced byPersistentDataHolder
. Please usePersistentDataAdapterContext
instead of this.please usePersistentDataType
as this part of the api is being replaceduseDatapack
useDatapackManager
Do not use, interface will get removed, and the plugin won't runseePlayerProfile
useTranslatable
UseConsumer
insteadonly for backwards compatibility.Use either the Future or the Consumer based methods
-
ClassDescriptionTimings will be removed in the futureTimings will be removed in the futureTimings will be removed in the futureTimings will be removed in the futureTimings will be removed in the futureTimings will be removed in the futureTimings will be removed in the futureTimings will be removed in the futureuse
RayTraceResult
useRayTraceResult
useTNTPrimeEvent
For removal, use the new brigadier api.Deprecated, useProjectileHitEvent
and check if there is a hit entityNot useduseTitle
for removal. SeeMessageComponentSerializer
for a direct replacement of functionality found in this class. As a general entrypoint to brigadier on paper, seeCommands
.useBellRingEvent
Listening to this event forces chat to wait for the main thread, delaying chat messages. It is recommended to useAsyncChatEvent
instead, wherever possible.Timings will be removed in the futureonly for backwards compatibility, EnchantmentWrapper is no longer used.Unsupported apiuseEntityRemoveFromWorldEvent
insteaduseAsyncChatEvent
insteadchat previews have been removedUse the more genericPlayerBucketEntityEvent
Listening to this event forces chat to wait for the main thread, delaying chat messages. It is recommended to useAsyncChatEvent
instead, wherever possible.This event is no longer fired due to client changesThis event causes synchronization from the login thread;AsyncPlayerPreLoginEvent
is preferred to keep the secondary threads asynchronous.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.useSpawnEggMeta
all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.all usage of MaterialData is deprecated and subject to removal. UseBlockData
.Upgraded / extended potions are now their ownPotionType
use them instead.only for backwards compatibility, PotionEffectTypeWrapper is no longer used.use the constants declared inCriteria
insteadThis class does not represent the structures of a world well. UseStructure
orStructureType
instead.Object streams on their own are not safe. For safer and more consistent serialization of items, useItemStack.serializeAsBytes()
orItemStack.serializeItemsAsBytes(java.util.Collection)
.Object streams on their own are not safe. For safer and more consistent serialization of items, useItemStack.serializeAsBytes()
orItemStack.serializeItemsAsBytes(java.util.Collection)
.
-
Enum ClassDescriptionEnchantments do not have a "rarity" since 1.20.5use
ItemRarity
withItemMeta.getRarity()
useBanListType
to enforce the correct return value at compile time.ChatColor has been deprecated in favor of Adventure API. SeeNamedTextColor
for the adventure equivalent of pre-defined text colorsnot representative of what Effect doesdifferent boats types are now different entity typesfuture versions of Minecraft have additional spell casting entities.different variants are differing classesCats are now a separate entity.classes are different types. This interface only remains in the Skeleton interface to preserve backwards compatibility.This API is responsible for a large number of implementation problems and is in general unsustainable to maintain. It is likely to be removed very soon in a subsequent release. Please see this thread for more information.useBlockData
useInventoryView
and its childrenuse BlockDatauseBlockData
replaced byTeam.OptionStatus
checkMaterial
insteadDeprecated, see usage methods for replacement(s)
-
Annotation InterfaceDescriptionThis should generally not be used in any new API code as it suggests a bad API design.
-
FieldDescriptionrelative velocity flags now allow for the whole rotation to be relative, instead of the yaw and pitch having individual options. Use
TeleportFlag.Relative.VELOCITY_ROTATION
instead.Since 1.21.3, vanilla split up the relative teleport flags into velocity and position related ones. As the API does not deal with position relative flags, this name is no longer applicable. UseTeleportFlag.Relative.VELOCITY_X
instead.Since 1.21.3, vanilla split up the relative teleport flags into velocity and position related ones. As the API does not deal with position relative flags, this name is no longer applicable. UseTeleportFlag.Relative.VELOCITY_Y
instead.relative velocity flags now allow for the whole rotation to be relative, instead of the yaw and pitch having individual options. UseTeleportFlag.Relative.VELOCITY_ROTATION
instead.Since 1.21.3, vanilla split up the relative teleport flags into velocity and position related ones. As the API does not deal with position relative flags, this name is no longer applicable. UseTeleportFlag.Relative.VELOCITY_Z
instead.in favour ofTag.ENTITY_TYPES_AQUATIC
Biome is no longer an enum, custom biomes will have their own biome instance.Timings will be removed in the futureunused, not intended to be APIunused, not intended to be APIthis constant uses the wrong generic type, the sniffer now stores different positions from possibly different worlds. Use the relevant methods inSniffer
directly for now.not available since 1.21.2not available since 1.20 Thetrade_rebalance
feature flag.not available since 1.21Magic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueUsePersistentDataType.LIST
'sListPersistentDataTypeProvider.dataContainers()
instead asListPersistentDataType
s offer full support for primitive types, such as thePersistentDataContainer
.removed in Minecraft 1.20.5. Do not use. Will be removed at a later date. Until then, this constant now acts as a reference toTag.ITEMS_BREAKS_DECORATED_POTS
which largely shares the same contents of the old "minecraft:tools" tag.
-
MethodDescriptionDoesn't do anything - RemovedUse
PaperServerListPingEvent.getListedPlayers()
, as this does not contain real player profilesthe Iterable interface will be removed at some pointshould never be used by plugins, for internal use only!!check ifWaterBottleSplashEvent.getToDamage()
contains an entityuseWaterBottleSplashEvent.damageAsWaterSensitive(LivingEntity)
orWaterBottleSplashEvent.doNotDamageAsWaterSensitive(LivingEntity)
to change which entities are damageduseRegistryAccess.getRegistry(RegistryKey)
with keys fromRegistryKey
will be removed in adventure 5.0.0, usePlainTextComponentSerializer.plainText()
Magic valueonly for backwards compatibility, useRegistry.get(NamespacedKey)
instead.Magic valueuseRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.PAINTING_VARIANT
. Painting variants can exist without a key.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.PAINTING_VARIANT
. Painting variants can exist without a key.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.useAttributeInstance.getModifier(net.kyori.adventure.key.Key)
, modifiers are no longer stored by UUIDuseAttributeInstance.removeModifier(net.kyori.adventure.key.Key)
, modifiers are no longer stored by UUIDattributes are now identified by keysThis return a generic class, prefer useBanList.getEntries()
magic value, useRegistry.get(NamespacedKey)
insteadmagic valueuseRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.BANNER_PATTERN
. PatternTypes can exist without a key.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.BANNER_PATTERN
. PatternTypes can exist without a key.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.only encodes y block ranges from -512 to 511 and represents an already changed implementation detailMagic valuepartially replaced byBlock.isPreferredTool(ItemStack)
Magic valueMagic valueonly for internal useThis method is not comprehensive and does not accurately reflect what block types are interactable. Many "interactions" are defined on the item not block, and many are conditional on some other world state checks being true.in favour ofCommandBlock.name()
magic value, useBaseSpawner.getSpawnedType()
.magic value, useBaseSpawner.setSpawnedType(org.bukkit.entity.EntityType)
.in favor ofDecoratedPot.getSherds()
locks are not necessarily pure stringslocks are not necessarily pure stringsA sign may have multiple writable sides now. UseSign.getSide(Side)
andColorable.getColor()
.A sign may have multiple writable sides now. UseSign.getSide(Side)
andSignSide.line(int)
.A sign may have multiple writable sides now. UseSign.getSide(Side)
andSignSide.lines()
.useSign.isWaxed()
insteadA sign may have multiple writable sides now. UseSign.getSide(Side)
andSignSide.isGlowingText()
.A sign may have multiple writable sides now. UseSign.getSide(Side)
andSignSide.line(int)
.A sign may have multiple writable sides now. UseSign.getSide(Side)
andSignSide.line(int, net.kyori.adventure.text.Component)
.A sign may have multiple writable sides now. UseSign.getSide(Side)
andSignSide.lines()
.A sign may have multiple writable sides now. UseSign.getSide(Side)
andColorable.setColor(org.bukkit.DyeColor)
.useSign.setWaxed(boolean)
insteadA sign may have multiple writable sides now. UseSign.getSide(Side)
andSignSide.setGlowingText(boolean)
.A sign may have multiple writable sides now. UseSign.getSide(Side)
andSignSide.line(int, net.kyori.adventure.text.Component)
.in favour ofSignSide.line(int)
in favour ofSignSide.lines()
useBlockData
checkMaterial
insteaduseBlockData
checkMaterial
insteadin favour ofServer.broadcast(net.kyori.adventure.text.Component)
Deprecated in favor ofBukkit.getSpawnLimit(SpawnCategory)
Deprecated in favor ofBukkit.getSpawnLimit(SpawnCategory)
useBukkit.getBanList(io.papermc.paper.ban.BanListType)
to enforce the correct return value at compile time.Deprecated in favor ofBukkit.getSpawnLimit(SpawnCategory)
in favour ofBukkit.motd()
useRegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
with keys fromRegistryKey
in favour ofBukkit.shutdownMessage()
Deprecated in favor ofBukkit.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofBukkit.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofBukkit.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofBukkit.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofBukkit.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofBukkit.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofBukkit.getSpawnLimit(SpawnCategory)
Deprecated in favor ofBukkit.getSpawnLimit(SpawnCategory)
Deprecated in favor ofBukkit.getSpawnLimit(SpawnCategory)
in favour ofBukkit.motd(net.kyori.adventure.text.Component)
chat previews have been removedbiomes are now 3-dimensionalMagic valuebiomes are now 3-dimensionalMagic valueMagic valuepermission messages have not worked for player-executed commands since 1.13 as clients without permission to execute a command are unaware of its existence and therefore will not send an unknown command execution to the server. This message will only ever be shown to consoles or when this command is executed withBukkit.dispatchCommand(CommandSender, String)
.Timings will be removed in the futurepermission messages have not worked for player-executed commands since 1.13 as clients without permission to execute a command are unaware of its existence and therefore will not send an unknown command execution to the server. This message will only ever be shown to consoles or when this command is executed withBukkit.dispatchCommand(CommandSender, String)
.permission messages have not worked for player-executed commands since 1.13 as clients without permission to execute a command are unaware of its existence and therefore will not send an unknown command execution to the server. This message will only ever be shown to consoles or when this command is executed withBukkit.dispatchCommand(CommandSender, String)
.permission messages have not worked for player-executed commands since 1.13 as clients without permission to execute a command are unaware of its existence and therefore will not send an unknown command execution to the server. This message will only ever be shown to consoles or when this command is executed withBukkit.dispatchCommand(CommandSender, String)
.sender UUID is ignoredsender UUID is ignoredusesendMessage
methods that acceptComponent
usesendMessage
methods that acceptComponent
usesendMessage
methods that acceptComponent
usesendMessage
methods that acceptComponent
This method only exists for backwards compatibility. It will do nothing and should not be used! Please useFileConfigurationOptions.getHeader()
instead.CallFileConfigurationOptions.parseComments()
instead.CallFileConfigurationOptions.parseComments(boolean)
instead.use getHeader() instead.use setHeader() insteadsender UUID is ignoredMagic valueMagic valueMagic valueMagic valuesome effects can be both or neitherUseEnchantment.getActiveSlotGroups()
instead as enchantments are now applicable to a group of equipment slots.only for backwards compatibility, useRegistry.get(NamespacedKey)
insteadenchantments are badly named, useEnchantment.getByKey(org.bukkit.NamespacedKey)
.Enchantments now have a complex effect systems that cannot be reduced to a simple damage increase.Enchantments now have a complex effect systems that cannot be reduced to a simple damage increase.enchantment groupings are now managed by tags, not categoriesenchantments are badly named, useKeyed.getKey()
.As of 1.20.5 enchantments do not have a rarity.enchantment types are now managed by tagsthis method assumes that the enchantments description always be a translatable component which is not guaranteed.a function of the firing weaponUseAbstractArrow.getPickupStatus()
as an upstream compatible replacement for this functiona function of the firing weaponUseAbstractArrow.setPickupStatus(PickupStatus)
withAbstractArrow.PickupStatus
as an upstream compatible replacement for this functiona function of the firing weapon insteaddifferent variants are different classesuseAbstractHorse.isEatingGrass()
, this name is incorrectuseAbstractHorse.setEatingGrass(boolean)
, this name is incorrectyou are required to spawn a different entityshould check what class instance this is.Must spawn a new subtype variantUpgraded / extended potions are now their ownPotionType
useAreaEffectCloud.getBasePotionType()
instead.Upgraded / extended potions are now their ownPotionType
useAreaEffectCloud.setBasePotionType(org.bukkit.potion.PotionType)
instead.preferEntityEquipment.getBoots()
preferEntityEquipment.getHelmet()
preferArmorStand.getItem(EquipmentSlot)
// PaperpreferArmorStand.setItem(EquipmentSlot, ItemStack)
// PaperUpgraded / extended potions are now their ownPotionType
useArrow.getBasePotionType()
instead.Upgraded / extended potions are now their ownPotionType
useArrow.setBasePotionType(org.bukkit.potion.PotionType)
instead.different boats types are now different entity typesboats are complex and many of these methods do not work correctly across multiple versions.boats are complex and many of these methods do not work correctly across multiple versions.boats are complex and many of these methods do not work correctly across multiple versions.deprecated in favor ofBoat.getBoatType()
boats are complex and many of these methods do not work correctly across multiple versions.different boats types are now different entity typesboats are complex and many of these methods do not work correctly across multiple versions.boats are complex and many of these methods do not work correctly across multiple versions.boats are complex and many of these methods do not work correctly across multiple versions.deprecated in favor ofBoat.setBoatType(Type)
boats are complex and many of these methods do not work correctly across multiple versions.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.useAttribute.MAX_HEALTH
.useAttribute.MAX_HEALTH
.useAttribute.MAX_HEALTH
.this functionality no longer existsthis functionality no longer existsentities may have multiple passengers, useEntity.getPassengers()
slightly misleading name, useEntity.getTrackedBy()
method is for internal use only and will be removedentities may have multiple passengers, useEntity.addPassenger(org.bukkit.entity.Entity)
Magic valueMagic valueMagic valuefuture versions of Minecraft have additional spell casting entities.future versions of Minecraft have additional spell casting entities.Use getSpawnReason() == EXP_BOTTLEreplaced byEntity.getOrigin()
badly named method, returns the value ofFireball.getAcceleration()
Use #getAcceleration instead.use #setAcceleration(Vector) instead.has no effect in newer Minecraft versionshas no effect in newer Minecraft versionsonly for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.should check if instance ofElderGuardian
.Must spawn a newElderGuardian
.seeChestedHorse
seeChestedHorse
Humans may now dual wield in their off hand, use explicit methods inPlayerInventory
.There are currently no well defined semantics regarding serialized entities in Bukkit. Use with care.There are currently no well defined semantics regarding serialized entities in Bukkit. Use with care.Humans may now dual wield in their off hand, use explicit methods inPlayerInventory
.There are currently no well defined semantics regarding serialized entities in Bukkit. Use with care.There are currently no well defined semantics regarding serialized entities in Bukkit. Use with care.useInventoryView
and its children.Unsupported apisound is now client side and cannot be removedno need to force since multiple effects of the same type are now supported.entity groupings are now managed by tags, not categoriesuseLivingEntity.setArrowsInBody(int, boolean)
. This method previously firedArrowBodyCountChangeEvent
so if you want to retain exact functionality, passtrue
forfireEvent
.This does nothing and is immediately reverted by the server, in the next tickHopper minecarts don't have cooldowns anymoreHopper minecarts don't have cooldowns anymoreuseMushroomCow.addEffectToNextStew(io.papermc.paper.potion.SuspiciousEffectEntry, boolean)
as PotionEffect suggests that all attributes are used. In fact, only the PotionEffectType and the duration are used.Mushroom cows can now hold multiple effects, useMushroomCow.getStewEffects()
Mushroom cows can now hold multiple effects, useMushroomCow.getStewEffects()
Mushroom cows can now hold multiple effects, useMushroomCow.setStewEffects(java.util.List)
Mushroom cows can now hold multiple effects, useMushroomCow.setStewEffects(java.util.List)
Cats are now a separate entity.Cats are now a separate entity.Magic valueMagic valueseeAgeable.setBaby()
andAgeable.setAdult()
useHumanEntity.fireworkBoost(ItemStack)
instead. Note that this method does not check if the player is gliding or not.Misleading name. This method also returns the location of respawn anchors.in favour ofPlayer.displayName()
in favour ofPlayer.locale()
in favour ofPlayer.playerListFooter()
in favour ofPlayer.playerListHeader()
in favour ofPlayer.playerListName()
This is no longer sent from the client and will always be nullThis value is controlled only by the client and is therefore unreliable and vulnerable to spoofing and/or desync depending on the context/time which it is accessedin favour ofPlayer.kick(net.kyori.adventure.text.Component)
Magic valueMagic valueMagic valuesuppressLightUpdates is not functional in versions greater than 1.19.4usesendMessage
methods that acceptComponent
usesendMessage
methods that acceptComponent
This is unlikely the API you want to use. SeePlayer.sendActionBar(String)
for a more proper Action Bar API. This deprecated API may send unsafe items to the client.suppressLightUpdates is no longer available in 1.20+, usePlayer.sendMultiBlockChange(Map)
UsePlayer.sendBlockUpdate(Location, TileState)
by creating a new virtualSign
block state viaBlockData.createBlockState()
(constructed e.g. viaMaterial.createBlockData()
)UsePlayer.sendBlockUpdate(Location, TileState)
by creating a new virtualSign
block state viaBlockData.createBlockState()
(constructed e.g. viaMaterial.createBlockData()
)UsePlayer.sendBlockUpdate(Location, TileState)
by creating a new virtualSign
block state viaBlockData.createBlockState()
(constructed e.g. viaMaterial.createBlockData()
)UsePlayer.sendBlockUpdate(Location, TileState)
by creating a new virtualSign
block state viaBlockData.createBlockState()
(constructed e.g. viaMaterial.createBlockData()
)UsePlayer.sendBlockUpdate(Location, TileState)
by creating a new virtualSign
block state viaBlockData.createBlockState()
(constructed e.g. viaMaterial.createBlockData()
)UsePlayer.sendBlockUpdate(Location, TileState)
by creating a new virtualSign
block state viaBlockData.createBlockState()
(constructed e.g. viaMaterial.createBlockData()
)UsePlayer.sendBlockUpdate(Location, TileState)
by creating a new virtualSign
block state viaBlockData.createBlockState()
(constructed e.g. viaMaterial.createBlockData()
)Misleading name. This method sets the player's respawn location more generally and is not limited to beds.Misleading name. This method sets the player's respawn location more generally and is not limited to beds.Minecraft no longer uses textures packs. Instead you should usePlayer.setResourcePack(UUID, String, byte[], net.kyori.adventure.text.Component, boolean)
.usePlayer.getPing()
usesendMessage
methods that acceptComponent
usesendMessage
methods that acceptComponent
usesendMessage
methods that acceptComponent
usesendMessage
methods that acceptComponent
does not do anythingdoes not do anythingUseShearable.readyToBeSheared()
instead.UseShearable.shear()
instead if applicable. Some entities cannot be "unsheared".in favour ofTextDisplay.text()
in favour ofTextDisplay.text(net.kyori.adventure.text.Component)
replaced byEntity.getOrigin()
This API duplicates existing API which uses the more preferable name due to mirroring internals betterThis API duplicates existing API which uses the more preferable name due to mirroring internals betterThis API duplicates existing API which uses the more preferable name due to mirroring internals betteronly for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.Duplicate api, useWither.getInvulnerableTicks()
Duplicate api, useWither.setInvulnerableTicks(int)
seeAgeable.setBaby()
andAgeable.setAdult()
check if instanceofZombieVillager
.seeAgeable.setBaby()
andAgeable.setAdult()
must spawnZombieVillager
.Since 1.21.2 all zombie types can break doors if instructed as MC-137053 was fixed.slime blocks make the value of this method inaccurate due to blocks being pushed at the sideuseBrewingStartEvent.getBrewingTime()
insteaduseBrewingStartEvent.setBrewingTime(int)
insteadnot all cauldron contents are Levellednot all cauldron contents are Levellednot all cauldron contents are Levelledin favour ofSignChangeEvent.line(int)
in favour ofSignChangeEvent.lines()
UsePrepareItemEnchantEvent.getOffers()
instead of this methodduration is now a floatnot currently functionalThis does nothing, the server and the client doesn't work correctly when the server try to bypass this. A current workaround exists. If you want to cancel the switch from the ground state to the swimming state you need to disable the sprinting flag for the player after the cancel action.horse jumping was moved client side.horse jumping was moved client side.in favour ofPlayerDeathEvent.deathMessage()
MC 1.14 has changed how villagers restock their trades. UseMerchantRecipe.getUses()
.MC 1.14 has changed how villagers restock their trades. This has no effect anymore.This changes the ItemStack in their hand before any calculations are applied to the Inventory, which has a tendency to create inconsistencies between the Player and the server, and to make unexpected changes in the behavior of the clicked Inventory.This method uses a deprecated enum fromPlayerPreLoginEvent
This method uses a deprecated enum fromPlayerPreLoginEvent
in favour ofAsyncPlayerPreLoginEvent.kickMessage()
This method uses a deprecated enum fromPlayerPreLoginEvent
This method uses a deprecated enum fromPlayerPreLoginEvent
the respawn point is now set when the player enter the bed and this option doesn't work since MC 1.15.the respawn point is now set when the player enter the bed and this option doesn't work since MC 1.15.This is simply the online players. Modifications have no effectOnly works for sign commands; usePlayer.performCommand(String)
, including those casesbooks may be signed from off handmisleading, usePlayerInteractEvent.getInteractionPoint()
This event has two possible cancellation states, one forPlayerInteractEvent.useInteractedBlock()
and one forPlayerInteractEvent.useItemInHand()
. It is possible a call might have the former false, but the latter true, eg in the case of using a firework whilst gliding. Callers should check the relevant methods individually.the mending enchantment uses enchantment effects to compute how much durability is granted per xp. The enchantment effects operation are too complex to reliably offer the inverse function.the mending enchantment uses enchantment effects to compute how much durability is granted per xp. The enchantment effects operation are too complex to reliably offer the inverse function.in favour ofPlayerJoinEvent.joinMessage()
in favour ofPlayerKickEvent.leaveMessage()
in favour ofPlayerKickEvent.reason()
in favour ofPlayerLocaleChangeEvent.locale()
in favour ofPlayerLoginEvent.kickMessage()
No effectNo effectin favour ofPlayerPreLoginEvent.kickMessage()
in favour ofPlayerQuitEvent.quitMessage()
Hash does not seem to ever be setdismounting on tp is no longer controlled by the serverin favour ofBroadcastMessageEvent.message()
in favour ofServerListPingEvent.motd()
the Iterable interface will be removed at some pointchat previews have been removedonly for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.UseRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.biomes are now 3-dimensionalbiomes are now 3-dimensionalUses magic valuesChunkGenerator.ChunkData
are now directly providedThe generation is now split up and the new methods should be used, seeChunkGenerator
the chunk generation code should be thread safehas no effect, bedrock generation is part of the surface step, seeChunkGenerator.shouldGenerateSurface()
useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.STRUCTURE
. Structures can exist without a key.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.STRUCTURE
. Structures can exist without a key.Magic valueMagic valueUseCookingRecipe.getInputChoice()
instead for more complete data.entities can duel wield now use the methods for the specific hand insteadentities can duel wield now use the methods for the specific hand insteadentities can duel wield now use the methods for the specific hand insteadentities can duel wield now use the methods for the specific hand insteadfor internal compatibility use onlyMagic valuechanging the title is not supportedin favour ofInventoryView.title()
changing the title is not supported. This method has poorly defined and broken behaviors. It should not be used.useItemFactory.enchantWithLevels(ItemStack, int, boolean, java.util.Random)
. This method's implementation is poorly designed and was originally broken.useItemFactory.enchantWithLevels(ItemStack, int, boolean, java.util.Random)
. This method's implementation is poorly designed and was originally broken.useItemFactory.enchantWithLevels(ItemStack, int, boolean, java.util.Random)
. This method's implementation is poorly designed and was originally broken.ItemStack
implementsTranslatable
; use that andComponent.translatable(net.kyori.adventure.translation.Translatable)
instead.cast toBlockDataMeta
and useBlockDataMeta.getBlockData(Material)
ItemStack
implementsTranslatable
; use that andComponent.translatable(net.kyori.adventure.translation.Translatable)
instead.in favor ofItemStack.lore()
useItemStack.getMaxItemUseDuration(org.bukkit.entity.LivingEntity)
; crossbows, later possibly more items require an entity parameterdurability is now part of ItemMeta. To avoid confusion and misuse,ItemStack.getItemMeta()
,ItemStack.setItemMeta(ItemMeta)
andDamageable.setDamage(int)
should be used instead. This is because any call to this method will be overwritten by subsequent setting of ItemMeta which was created before this call.in favour ofItemStack.lore(java.util.List)
Setting the material type of ItemStacks is no longer supported.This method is deprecated due to potential illegal behavior that may occur during the context of which this ItemStack is being used, allowing for certain item validation to be bypassed. It is recommended to instead create a new ItemStack object with the desired Material type, and if possible, set it in the appropriate context. Using this method in ItemStacks passed in events will result in undefined behavior.
only for internal usecreative categories no longer exist on the serveruseBook.pages()
useBook.pages(List)
in favour ofBookMeta.page(int)
in favour ofBook.pages()
in favour ofBook.pages(java.util.List)
in favour ofBook.pages(net.kyori.adventure.text.Component...)
this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.this API part has been replaced by thePersistentDataHolder
API. Please usePersistentDataHolder.getPersistentDataContainer()
instead of this.this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.in favour ofItemMeta.displayName()
in favour ofItemMeta.itemName()
UseItemMeta.displayName()
and cast it to aTranslatableComponent
. No longer used by the client.in favour ofItemMeta.lore()
useItemMeta.lore()
this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.this API is unsupported and will be replacedUseItemMeta.displayName()
and check if it is instanceof aTranslatableComponent
.this API is unsupported and will be replacedthis API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.in favour ofItemMeta.itemName(Component)
UseItemMeta.displayName(Component)
with aTranslatableComponent
. No longer used by the client.in favour ofItemMeta.lore(List)
this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates.This method does not have the expected effect and is actually an alias forItemMeta.getLocalizedName()
.This method does not have the expected effect and is actually an alias forItemMeta.hasLocalizedName()
.This method does not have the expected effect and is actually an alias forItemMeta.setLocalizedName(String)
.These methods are poor API: They rely on the caller to pass in an only an integer property, and have poorly defined implementation behavior if that integer is not a valid map (the current implementation for example will generate a new map with a different ID). The xxxMapView family of methods should be used instead.Upgraded / extended potions are now their ownPotionType
usePotionMeta.getBasePotionType()
instead.Upgraded / extended potions are now their ownPotionType
usePotionMeta.setBasePotionType(org.bukkit.potion.PotionType)
instead.different types are different itemsdifferent types are different itemsuseSuspiciousStewMeta.addCustomEffect(io.papermc.paper.potion.SuspiciousEffectEntry, boolean)
as PotionEffect suggests that all attributes are used. In fact, only the PotionEffectType and the duration are used.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.TRIM_MATERIAL
. TrimMaterials can exist without a key.this method assumes thatTrimMaterial.description()
will always be a translatable component which is not guaranteed.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.TRIM_MATERIAL
. TrimMaterials can exist without a key.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.TRIM_PATTERN
. TrimPatterns can exist without a key.this method assumes thatTrimPattern.description()
will always be a translatable component which is not guaranteed.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.TRIM_PATTERN
. TrimPatterns can exist without a key.players can duel wield now use the methods for the specific hand insteadplayers can duel wield now use the methods for the specific hand insteadfor compatibility onlyUseShapedRecipe.getChoiceMap()
instead for more complete data.Magic valueMagic valueMagic valueUseShapelessRecipe.getChoiceList()
instead for more complete data.Magic valueMagic valueUseStonecuttingRecipe.getInputChoice()
instead for more complete data.this method assumes that jukebox song description will always be a translatable component which is not guaranteed.only encodes y block ranges from -512 to 511 and represents an already changed implementation detailno longer functionalno longer functionalMagic value, useMapCanvas.setPixelColor(int, int, Color)
in favour ofMapCursor.caption()
only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.Magic valueMagic valueMagic valueMagic valueuse color directlyuse color-related methodsuse color-related methodsuse color-related methodsThis method should not be used; use hinge and facing accessors instead.Magic valueMagic valueThis method is not comprehensive and does not accurately reflect what block types are interactable. Many "interactions" are defined on the item not block, and many are conditional on some other world state checks being true.currently does not have an implementation which is well linked to the underlying server. Contributions welcome.Magic valueMagic valuethis method creates an ItemStack of size 0 which is not generally useful. ConsiderMaterialData.toItemStack(int)
.Use MushroomBlockType cap optionsMagic valueThis is now stored inSpawnEggMeta
.This is now stored inSpawnEggMeta
.Magic valueMagic valueMagic valueMagic valueMagic valueMagic valueUseRegistry.get(NamespacedKey)
instead.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.INSTRUMENT
. MusicInstruments can exist without a key.useRegistry.getKey(Keyed)
,RegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
, andRegistryKey.INSTRUMENT
. MusicInstruments can exist without a key.this method assumes that the instrument description always be a translatable component which is not guaranteed.useIterable.iterator()
.in favour ofNameable.customName()
should never be used by plugins, for internal use only!!Misleading name. This method also returns the location of respawn anchors.The API contract is ambiguous and the implementation may or may not return the correct value given this API ambiguity. It is instead recommended useOfflinePlayer.getLastLogin()
orOfflinePlayer.getLastSeen()
depending on your needs.No longer applicable to all types of pluginsPlugin loading now occurs at a point which makes it impossible to expose this behavior. This instance will only throw unsupported operation exceptions.not an API methodnot an API methodMay be inaccurate due to different plugin implementations.unusedusePotionEffectType.createEffect(int, int)
instead.Upgraded / extended potions are now their ownPotionType
usePotionType.getPotionEffects()
insteadNon-Functionalcolor is not part of potion effectsonly for backwards compatibility, useRegistry.get(NamespacedKey)
instead.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.unused, always 1.0useKeyed.key()
only for backwards compatibility, useKeyed.getKey()
instead.useIterable.iterator()
.MisleadingPotions can have multiple effects usePotionType.getPotionEffects()
PotionType can have multiple effects, some of which can be instant and others not. UsePotionEffectType.isInstant()
in combination withPotionType.getPotionEffects()
andPotionEffect.getType()
this method's behavior is broken and not useful. If you want to get an object based on its vanilla name, or a key, wrap it in aNamespacedKey
object and useRegistry.get(NamespacedKey)
Magic valueMagic valueThis name is misleading, as it does not schedule "a sync" task, but rather, "an async" taskThis name is misleading, as it does not schedule "a sync" task, but rather, "an async" taskThis name is misleading, as it does not schedule "a sync" task, but rather, "an async" taskin favour ofObjective.displayName()
Scoreboards can contain entries that aren't playersScoreboards can contain entries that aren't playersa displayName should be explicitly specifiedin favour ofTeam.color()
in favour ofTeam.displayName()
Teams can contain entries that aren't playersin favour ofTeam.prefix()
in favour ofTeam.suffix()
in favour ofTeam.displayName(net.kyori.adventure.text.Component)
in favour ofTeam.prefix(net.kyori.adventure.text.Component)
in favour ofTeam.suffix(net.kyori.adventure.text.Component)
usesendMessage
methods that acceptComponent
usesendMessage
methods that acceptComponent
Deprecated in favor ofServer.getSpawnLimit(SpawnCategory)
Deprecated in favor ofServer.getSpawnLimit(SpawnCategory)
useServer.getBanList(io.papermc.paper.ban.BanListType)
to enforce the correct return value at compile time.Deprecated in favor ofServer.getSpawnLimit(SpawnCategory)
in favour ofServer.motd()
useRegistryAccess.getRegistry(io.papermc.paper.registry.RegistryKey)
with keys fromRegistryKey
in favour ofServer.shutdownMessage()
Deprecated in favor ofServer.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofServer.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofServer.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofServer.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofServer.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofServer.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofServer.getSpawnLimit(SpawnCategory)
Deprecated in favor ofServer.getSpawnLimit(SpawnCategory)
Deprecated in favor ofServer.getSpawnLimit(SpawnCategory)
in favour ofServer.motd(net.kyori.adventure.text.Component)
chat previews have been removedin favour ofServerLinks.ServerLink.displayName()
useRegistry.getKey(Keyed)
andRegistry.SOUNDS
. Sounds can exist without a key.useRegistry.getKey(Keyed)
andRegistry.SOUNDS
. Sounds can exist without a key.only for backwards compatibility, useRegistry.get(NamespacedKey)
instead.useIterable.iterator()
.look for atranslationKey()
method insteadMagic valueMagic valuecustom biomes are properly supported in API nowcustom biomes are properly supported in API nowonly for backwards compatibility, old enums can not be compared.only for backwards compatibility.only for backwards compatibility, it is not guaranteed that an old enum always has the same ordinal.unused as of 1.19this method does not handle tile entities (bee nests)Deprecated in favor ofWorld.getSpawnLimit(SpawnCategory)
Deprecated in favor ofWorld.getSpawnLimit(SpawnCategory)
biomes are now 3-dimensionalonly encodes y block ranges from -512 to 511 and represents an already changed implementation detailUse either the Future or the Consumer based methodsUse either the Future or the Consumer based methodsUse either the Future or the Consumer based methodsuseWorld.getGameRuleValue(GameRule)
insteadbiomes are now 3-dimensionaluseGameRule.SPAWN_CHUNK_RADIUS
for finer controlDeprecated in favor ofWorld.getSpawnLimit(SpawnCategory)
biomes are now 3-dimensionalDeprecated in favor ofWorld.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofWorld.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofWorld.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofWorld.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofWorld.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofWorld.getTicksPerSpawns(SpawnCategory)
Deprecated in favor ofWorld.getSpawnLimit(SpawnCategory)
Deprecated in favor ofWorld.getSpawnLimit(SpawnCategory)
Deprecated in favor ofWorld.getSpawnLimit(SpawnCategory)
world type is only used to select the default word generation settings and is not stored in Vanilla worlds, making it impossible for this method to always return the correct value.This method was added to facilitate chunk garbage collection. As of the current Minecraft version chunks are now strictly managed and will not be loaded for more than 1 tick unless they are in use.regenerating a single chunk is not likely to produce the same chunk as before as terrain decoration may be spread across chunks. It may or may not change blocks in the adjacent chunks as well.Deprecated in favor ofWorld.setSpawnLimit(SpawnCategory, int)
Deprecated in favor ofWorld.getSpawnLimit(SpawnCategory)
biomes are now 3-dimensionaluseWorld.setGameRule(GameRule, Object)
instead.useGameRule.SPAWN_CHUNK_RADIUS
for finer controlDeprecated in favor ofWorld.setSpawnLimit(SpawnCategory, int)
Deprecated in favor ofWorld.setTicksPerSpawns(SpawnCategory, int)
Deprecated in favor ofWorld.setTicksPerSpawns(SpawnCategory, int)
Deprecated in favor ofWorld.setTicksPerSpawns(SpawnCategory, int)
Deprecated in favor ofWorld.setTicksPerSpawns(SpawnCategory, int)
Deprecated in favor ofWorld.setTicksPerSpawns(SpawnCategory, int)
Deprecated in favor ofWorld.setTicksPerSpawns(SpawnCategory, int)
Deprecated in favor ofWorld.setSpawnLimit(SpawnCategory, int)
Deprecated in favor ofWorld.setSpawnLimit(SpawnCategory, int)
Deprecated in favor ofWorld.setSpawnLimit(SpawnCategory, int)
Magic value. UseRegionAccessor.spawn(Location, Class, Consumer)
(or a variation thereof) in combination withFallingBlock.setBlockData(BlockData)
UseRegionAccessor.spawn(Location, Class, Consumer)
(or a variation thereof) in combination withFallingBlock.setBlockData(BlockData)
UseRegionAccessor.spawn(Location, Class, Consumer)
(or a variation thereof) in combination withFallingBlock.setBlockData(BlockData)
Unsupported apisound is now client side and cannot be removedsound is now client side and cannot be removed
-
ConstructorDescriptionUse NamespacedKey version of constructorUse NamespacedKey version of constructorUse NamespacedKey version of constructorshould never be used by plugins, for internal use only!!options requiredoptions requiredorg.bukkit.event.player.PlayerBucketEmptyEvent
(Player, Block, Block, BlockFace, Material, ItemStack) this method uses an ambiguous data byte objectRecipes must have keys. UseShapedRecipe(NamespacedKey, ItemStack)
instead.as of Minecraft 1.20, smithing recipes are now separated into two distinct recipe types,SmithingTransformRecipe
andSmithingTrimRecipe
. This class now acts as a base class to these two classes and will do nothing when added to the server.Magic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueArtifact of old API, equivalent to newDoor(Material.LEGACY_WOODEN_DOOR);
Magic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic value
-
Enum ConstantDescriptionno longer used anymore since 1.15.2, the value fallback to the default value of the setting when unknown on the server. In this case
ClientOption.ChatVisibility.FULL
will be returned.deprecated in favor ofBanList.Type.PROFILE
no longer existsno longer existsNo longer existsno longer existsno longer existsno longer existsno longer existsno longer existsno longer existsno longer existsno longer existspartially replaced byEffect.BEE_GROWTH
this target no longer exists in Vanillasplit into individual effectsraid system was overhauled in 1.20.5split into individual effectsno longer called, chunks are generated with entities already existing. Consider usingChunkLoadEvent
,ChunkLoadEvent.isNewChunk()
andChunk.getEntities()
for similar effect.no longer used, player now gets an ominous bottle insteadThis action no longer happens, they are allInventoryAction.HOTBAR_SWAP
s.all plugins are now assumed to be UTF-8 aware.