Deprecated API
Contents
-
InterfaceDescriptiondoes not provide useful information beyond the material itselflingering status depends on only on the potion item.splash status depends on only on the potion item.tipped status depends only on base potion type not being UNCRAFTABLE and effects being empty.this API part has been replaced by the
PersistentDataHolder
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 replacedUse either the Future or the Consumer based methods
-
ClassDescriptionBukkit has added
EntityTransformEvent
, you should start using thatNot usedUsePlayerSpawnLocationEvent
, Duplicate APIReplaced byPlayerLocaleChangeEvent
upstreamDraft APIuseTitle
Listening to this event forces chat to wait for the main thread, delaying chat messages. It is recommended to useAsyncChatEvent
instead, wherever possible.useAsyncChatEvent
insteadUse the more genericPlayerBucketEntityEvent
This event will fire from the main thread and allows the use of all of the Bukkit API, unlike theAsyncPlayerChatEvent
.Listening to this event forces chat to wait for the main thread which causes delays for chat.
AsyncPlayerChatEvent
is the encouraged alternative for thread safe implementations.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
.
-
Enum ClassDescriptionUpstream has added their own API for using the game heightmaps. See
HeightMap
and the non-deprecated getHighestBlock methods on World such asWorld.getHighestBlockAt(Location, HeightMap)
.future 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 https://www.spigotmc.org/threads/194446/ for more information.replaced byTeam.OptionStatus
checkMaterial
instead
-
Annotation InterfaceDescriptionThis should generally not be used in any new API code as it suggests a bad API design.
-
FieldDescriptionremoved in 1.16removed in 1.16Magic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic value
-
MethodDescriptionDoesn't do anything - Removedshould never be used by plugins, for internal use only!!Magic valueMagic valueMagic valueMagic valueMagic valuemagic value, use
CreatureSpawner.getSpawnedType()
.magic value, useCreatureSpawner.setSpawnedType(org.bukkit.entity.EntityType)
.Magic valueMagic valuein favour ofSign.line(int)
in favour ofSign.lines()
in favour ofSign.line(int, net.kyori.adventure.text.Component)
useBlockData
checkMaterial
insteaduseBlockData
checkMaterial
insteadin favour ofServer.broadcast(net.kyori.adventure.text.Component)
Magic valuein favour ofBukkit.motd()
Persistent storage of users should be by UUID as names are no longer unique past a single session.in favour ofBukkit.shutdownMessage()
biomes are now 3-dimensionalMagic valuebiomes are now 3-dimensionalMagic valueMagic valueusesendMessage
methods that acceptComponent
usesendMessage
methods that acceptComponent
usesendMessage
methods that acceptComponent
usesendMessage
methods that acceptComponent
Magic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valuelegacy use onlyMagic valueMagic valueenchantments are badly named, useEnchantment.getByKey(org.bukkit.NamespacedKey)
.enchantments are badly named, useEnchantment.getKey()
.cursed enchantments are no longer special. Will return true only forEnchantment.BINDING_CURSE
andEnchantment.VANISHING_CURSE
.UseAbstractArrow.getPickupStatus()
as an upstream compatible replacement for this functionUseAbstractArrow.setPickupStatus(PickupStatus)
withAbstractArrow.PickupStatus
as an upstream compatible replacement for this functiondifferent variants are different classesyou are required to spawn a different entityshould check what class instance this is.Must spawn a new subtype variantpreferEntityEquipment.getBoots()
preferEntityEquipment.getHelmet()
preferArmorStand.getItem(EquipmentSlot)
// PaperpreferArmorStand.setItem(EquipmentSlot, ItemStack)
// Paperboats 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.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.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.boats are complex and many of these methods do not work correctly across multiple versions.this functionality no longer existsthis functionality no longer existsentities may have multiple passengers, useEntity.getPassengers()
entities may have multiple passengers, useEntity.addPassenger(org.bukkit.entity.Entity)
Magic valueMagic 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()
has no effect in newer Minecraft versionshas no effect in newer Minecraft versionsshould 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.no need to force since multiple effects of the same type are now supported.Magic valueMagic valueseeAgeable.setBaby()
andAgeable.setAdult()
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 is unimplemented and will throw an exception at runtime. TheWorld
-based methods still work.useAudience.clearTitle()
This 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 valueuseAudience.sendActionBar(Component)
useAudience.sendActionBar(Component)
useAudience.sendActionBar(Component)
Magic valueMagic valueusesendMessage
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.UseAudience.showTitle(net.kyori.adventure.title.Title)
API behavior subject to changein favour ofAudience.sendPlayerListFooter(net.kyori.adventure.text.Component)
in favour ofAudience.sendPlayerListHeader(net.kyori.adventure.text.Component)
in favour ofAudience.sendPlayerListHeaderAndFooter(net.kyori.adventure.text.Component, net.kyori.adventure.text.Component)
in favour ofAudience.sendPlayerListHeaderAndFooter(net.kyori.adventure.text.Component, net.kyori.adventure.text.Component)
in favour ofAudience.sendPlayerListHeaderAndFooter(net.kyori.adventure.text.Component, net.kyori.adventure.text.Component)
UseAudience.showTitle(net.kyori.adventure.title.Title)
UseAudience.showTitle(net.kyori.adventure.title.Title)
Minecraft no longer uses textures packs. Instead you should usePlayer.setResourcePack(String)
.UseAudience.showTitle(net.kyori.adventure.title.Title)
This is unimplemented and will throw an exception at runtime. TheWorld
-based methods still work.UseAudience.showTitle(net.kyori.adventure.title.Title)
UseAudience.showTitle(net.kyori.adventure.title.Title)
UseAudience.showTitle(net.kyori.adventure.title.Title)
UseAudience.showTitle(net.kyori.adventure.title.Title)
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.usesendMessage
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.useAudience.showTitle(net.kyori.adventure.title.Title)
replaced byEntity.getOrigin()
seeAgeable.setBaby()
andAgeable.setAdult()
check if instanceofZombieVillager
.seeAgeable.setBaby()
andAgeable.setAdult()
must spawnZombieVillager
.Magic valueslime blocks make the value of this method inaccurate due to blocks being pushed at the sidenot all cauldron contents are Levellednot all cauldron contents are Levellednot all cauldron contents are Levelledno effect on newer Minecraft versionsno effect on newer Minecraft versionsin favour ofSignChangeEvent.line(int)
in favour ofSignChangeEvent.lines()
UsePrepareItemEnchantEvent.getOffers()
instead of this methodhorse jumping was moved client side.horse jumping was moved client side.in favour ofPlayerDeathEvent.deathMessage()
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
This method is provided for backward compatibility with no guarantee to the effect of viewing or modifying the set.books may be signed from off handThis 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.in favour ofPlayerJoinEvent.joinMessage()
in favour ofPlayerKickEvent.leaveMessage()
in favour ofPlayerKickEvent.reason()
in favour ofPlayerLocaleChangeEvent.locale()
in favour ofPlayerLoginEvent.kickMessage()
in favour ofPlayerPreLoginEvent.kickMessage()
in favour ofPlayerQuitEvent.quitMessage()
in favour ofBroadcastMessageEvent.message()
in favour ofServerListPingEvent.motd()
Magic valueMagic valuebiomes are now 3-dimensionalbiomes are now 3-dimensionalUses magic valuesMagic valueMagic valueMagic valueMagic valueentities 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 insteadMagic valuein favour ofInventoryView.title()
Magic valueuseHoverEventSource.asHoverEvent()
for internal use onlyin favor ofItemStack.lore()
durability 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(List)
banner color is now stored as the data value, not meta.banner color is now stored as the data value, not meta.in favour ofBookMeta.page(int)
in favour ofBook.pages()
in favour ofBook.pages(net.kyori.adventure.text.Component...)
in favour ofBook.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...)
Minecraft does not limit this to the material enum, UseItemMeta.getDestroyableKeys()
as a replacementMinecraft does not limit this to the material enum, UseItemMeta.getPlaceableKeys()
as a replacementthis API part has been replaced by thePersistentDataHolder
API. Please usePersistentDataHolder.getPersistentDataContainer()
instead of this.in favour ofItemMeta.displayName()
in favour ofItemMeta.lore()
useItemMeta.lore()
Minecraft does not limit this to the material enum, UseItemMeta.setDestroyableKeys(Collection)
as a replacementMinecraft does not limit this to the material enum, UseItemMeta.setPlaceableKeys(Collection)
as a replacementin favour ofItemMeta.lore(List)
internal use onlyThese 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.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.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.different types are different itemsdifferent types are different itemsplayers 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 onlyMagic valueMagic valueMagic valueMagic valueMagic valuein favour ofMapCursor.caption()
Magic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueThis method should not be used; use hinge and facing accessors instead.Magic valueMagic valueMagic valuecurrently 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 valueshould never be used by plugins, for internal use only!!Magic valueMagic valueMagic valueMagic valueMagic valueThe 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.not an API methodnot an API methodunusedInternal useNon-functionalNon-functionalNon-Functionalcolor is not part of potion effectsMagic valueunused, always 1.0Magic valueMisleadingMagic valueMagic valueorg.bukkit.scheduler.BukkitScheduler.runTaskTimerAsynchronously(Plugin, BukkitRunnable, long, long)This 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 playersScoreboards can contain entries that aren't playersScoreboards can contain entries that aren't playersScoreboards can contain entries that aren't playersa displayName should be explicitly specifiedScoreboards can contain entries that aren't playersTeams can contain entries that aren't playersin favour ofTeam.color()
in favour ofTeam.displayName()
Teams can contain entries that aren't playersin favour ofTeam.prefix()
in favour ofTeam.suffix()
Teams can contain entries that aren't playersTeams can contain entries that aren't playersin 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
Magic valuein favour ofServer.motd()
Persistent storage of users should be by UUID as names are no longer unique past a single session.in favour ofServer.shutdownMessage()
Magic valueMagic valueMagic valueMagic valuebiomes are now 3-dimensionalUse 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)
insteadUpstream has added support for this, useWorld.getHighestBlockAt(int, int, HeightMap)
Upstream has added support for this, useWorld.getHighestBlockAt(Location, HeightMap)
Upstream has added support for this, useWorld.getHighestBlockYAt(int, int, HeightMap)
Upstream has added support for this, useWorld.getHighestBlockYAt(Location, HeightMap)
biomes are now 3-dimensionalbiomes are now 3-dimensionalworld 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.This method is not guaranteed to work suitably across all client implementations.regenerating a single chunk is not likely to produce the same chunk as before as terrain decoration may be spread across chunks. Use of this method should be avoided as it is known to produce buggy results.biomes are now 3-dimensionaluseWorld.setGameRule(GameRule, Object)
instead.Magic valueuseWorldBorder.isInside(Location)
for an upstream compatible replacement
-
ConstructorDescriptionUse NamespacedKey version of constructorUse NamespacedKey version of constructorUse NamespacedKey version of constructorshould never be used by plugins, for internal use only!!this method uses an ambiguous data byte objectMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueMagic valueArtifact of old API, equivalent to new
Door(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 valueshould never be used by plugins, for internal use only!!In favour of usingPotion(PotionType)
withPotion.splash()
.
-
Enum ConstantDescriptionthis target no longer exists in Vanillaalthough this effect may trigger other events on non-living entities, it's only supported usage is on living ones.although this effect may trigger other events on non-living entities, it's only supported usage is on living ones.no longer called, chunks are generated with entities already existing. Consider using
ChunkLoadEvent
,ChunkLoadEvent.isNewChunk()
andChunk.getEntities()
for similar effect.all plugins are now assumed to be UTF-8 aware.