Package org.bukkit.entity

# Interface HumanEntity

All Superinterfaces:
  `AnimalTamer`, `Attributable`, `Audience`, `CommandSender`, `Damageable`, `Entity`, `HoverEventSource<HoverEvent.ShowEntity>`, `InventoryHolder`, `LivingEntity`, `Metadatable`, `Nameable`, `Permissible`, `PersistentDataHolder`, `Pointered`, `ProjectileSource`, `ServerOperator`, `Sound.Emitter`

All Known Subinterfaces:
  `Player`

public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder
Represents a human entity, such as an NPC or a player

## Nested Class Summary

## Nested classes/interfaces inherited from interface org.bukkit.entity.Entity

`Entity.Spigot`

## Method Summary

Modifier and Type
Method
Description
`void`
`closeInventory()`
Force-closes the currently open inventory view for this player, if any.
`void`
`closeInventory(InventoryCloseEvent.Reason reason)`
Force-closes the currently open inventory view for this player, if any.
`boolean`
`discoverRecipe(@NotNull NamespacedKey recipe)`
Discover a recipe for this player such that it has not already been discovered.
`int`
`discoverRecipes(@NotNull Collection<NamespacedKey> recipes)`
Discover a collection of recipes for this player such that they have not already been discovered.
`boolean`
`dropItem(boolean dropAll)`
Make the entity drop the item in their hand.
`float`
`getAttackCooldown()`
Gets the current cooldown for a player's attack.
`@NotNull Location`
`getBedLocation()`
Gets the location of the bed the player is currently sleeping in
`int`
`getCooldown(@NotNull Material material)`
Get the cooldown time in ticks remaining for the specified material.
`@NotNull Set<NamespacedKey>`
`getDiscoveredRecipes()`
Get an immutable set of recipes this entity has discovered.
`@NotNull Inventory`
`getEnderChest()`
Get the player's EnderChest inventory
`@NotNull EntityEquipment`
`getEquipment()`
Gets the inventory with the equipment worn by the living entity.
`float`
`getExhaustion()`
Gets the players current exhaustion level.
`int`
`getExpToLevel()`
Get the total amount of experience required for the player to level
`int`
`getFoodLevel()`
Gets the players current food level
`@NotNull GameMode`
`getGameMode()`
Gets this human's current `GameMode`
`@NotNull PlayerInventory`
`getInventory()`
Get the player's inventory.
`@NotNull ItemStack`
`getItemInHand()`
Deprecated.
Humans may now dual wield in their off hand, use explicit methods in `PlayerInventory`.
`@Nullable ItemStack`
`getItemInUse()`
Gets the item that the player is using (eating food, drawing back a bow, blocking, etc.)
`@NotNull ItemStack`
`getItemOnCursor()`
Returns the ItemStack currently on your cursor, can be empty.
`@NotNull MainHand`
`getMainHand()`
Gets the player's selected main hand
`@NotNull String`
`getName()`
Returns the name of this player
`@NotNull InventoryView`
`getOpenInventory()`
Gets the inventory view the player is currently viewing.
`@Nullable Location`
`getPotentialBedLocation()`
Gets the Location of the player's bed, null if they have not slept in one.
`int`
`getSaturatedRegenRate()`
Get the regeneration rate (1 health per x ticks) of the HumanEntity when they have saturation and their food level is >= 20.
`float`
`getSaturation()`
Gets the players current saturation level.
`@Nullable Entity`
`getShoulderEntityLeft()`
Deprecated.
There are currently no well defined semantics regarding serialized entities in Bukkit.
`@Nullable Entity`
`getShoulderEntityRight()`
Deprecated.
There are currently no well defined semantics regarding serialized entities in Bukkit.
`int`
`getSleepTicks()`
Get the sleep ticks of the player.
`int`
`getStarvationRate()`
Get the starvation rate (1 health per x ticks) of the HumanEntity.
`int`
`getUnsaturatedRegenRate()`
Get the regeneration rate (1 health per x ticks) of the HumanEntity when they have no saturation and their food level is >= 18.
`boolean`
`hasCooldown(@NotNull Material material)`
Check whether a cooldown is active on the specified material.
`boolean`
`hasDiscoveredRecipe(@NotNull NamespacedKey recipe)`
Check whether or not this entity has discovered the specified recipe.
`boolean`
`isBlocking()`
Check if the player is currently blocking (ie with a shield).
`boolean`
`isDeeplySleeping()`
If the player has slept enough to count towards passing the night.
`boolean`
`isHandRaised()`
Check if the player currently has their hand raised (ie about to begin blocking).
`@Nullable InventoryView`
`openAnvil(@Nullable Location location, boolean force)`
Opens an empty anvil inventory window with the player's inventory on the bottom.
`@Nullable InventoryView`
`openCartographyTable(@Nullable Location location, boolean force)`
Opens an empty cartography table inventory window with the player's inventory on the bottom.
`@Nullable InventoryView`
`openEnchanting(@Nullable Location location, boolean force)`
Opens an empty enchanting inventory window with the player's inventory on the bottom.
`@Nullable InventoryView`
`openGrindstone(@Nullable Location location, boolean force)`
Opens an empty grindstone inventory window with the player's inventory on the bottom.
`@Nullable InventoryView`
`openInventory(@NotNull Inventory inventory)`
Opens an inventory window with the specified inventory on the top and the player's inventory on the bottom.
`void`
`openInventory(@NotNull InventoryView inventory)`
Opens an inventory window to the specified inventory view.
`@Nullable InventoryView`
`openLoom(@Nullable Location location, boolean force)`
Opens an empty loom inventory window with the player's inventory on the bottom.
`@Nullable InventoryView`
`openMerchant(@NotNull Villager trader, boolean force)`
Starts a trade between the player and the villager.
`@Nullable InventoryView`
`openMerchant(@NotNull Merchant merchant, boolean force)`
Starts a trade between the player and the merchant.
`void`
`openSign(Sign sign)`
Opens an editor window for the specified sign
`@Nullable InventoryView`
`openSmithingTable(@Nullable Location location, boolean force)`
Opens an empty smithing table inventory window with the player's inventory on the bottom.
`@Nullable InventoryView`
`openStonecutter(@Nullable Location location, boolean force)`
Opens an empty stonecutter inventory window with the player's inventory on the bottom.
`@Nullable InventoryView`
`openWorkbench(@Nullable Location location, boolean force)`
Opens an empty workbench inventory window with the player's inventory on the bottom.
`@Nullable Entity`
`releaseLeftShoulderEntity()`
If there is an Entity on this entities left shoulder, it will be released to the world and returned.
`@Nullable Entity`
`releaseRightShoulderEntity()`
If there is an Entity on this entities left shoulder, it will be released to the world and returned.
`void`
`setCooldown(@NotNull Material material, int ticks)`
Set a cooldown on the specified material for a certain amount of ticks.
`void`
`setExhaustion(float value)`
Sets the players current exhaustion level
`void`
`setFoodLevel(int value)`
Sets the players current food level
`void`
`setGameMode(@NotNull GameMode mode)`
Sets this human's current `GameMode`
`void`
`setItemInHand(@Nullable ItemStack item)`
Deprecated.
Humans may now dual wield in their off hand, use explicit methods in `PlayerInventory`.
`void`
`setItemOnCursor(@Nullable ItemStack item)`
Sets the item to the given ItemStack, this will replace whatever the user was moving.
`void`
`setSaturatedRegenRate(int ticks)`
Set the regeneration rate (1 health per x ticks) of the HumanEntity when they have saturation and their food level is >= 20.
`void`
`setSaturation(float value)`
Sets the players current saturation level
`void`
`setShoulderEntityLeft(@Nullable Entity entity)`
Deprecated.
There are currently no well defined semantics regarding serialized entities in Bukkit.
`void`
`setShoulderEntityRight(@Nullable Entity entity)`
Deprecated.
There are currently no well defined semantics regarding serialized entities in Bukkit.
`void`
`setStarvationRate(int ticks)`
Get the starvation rate (1 health per x ticks) of the HumanEntity.
`void`
`setUnsaturatedRegenRate(int ticks)`
Get the regeneration rate (1 health per x ticks) of the HumanEntity when they have no saturation and their food level is >= 18.
`boolean`
`setWindowProperty(InventoryView.Property prop, int value)`
If the player currently has an inventory window open, this method will set a property of that window, such as the state of a progress bar.
`boolean`
`sleep(@NotNull Location location, boolean force)`
Attempts to make the entity sleep at the given location.
`boolean`
`undiscoverRecipe(@NotNull NamespacedKey recipe)`
Undiscover a recipe for this player such that it has already been discovered.
`int`
`undiscoverRecipes(@NotNull Collection<NamespacedKey> recipes)`
Undiscover a collection of recipes for this player such that they have already been discovered.
`void`
`wakeup(boolean setSpawnLocation)`
Causes the player to wakeup if they are currently sleeping.

### Methods inherited from interface org.bukkit.entity.AnimalTamer

`getUniqueId`

### Methods inherited from interface org.bukkit.attribute.Attributable

`getAttribute, registerAttribute`

### Methods inherited from interface net.kyori.adventure.audience.Audience

`clearTitle, filterAudience, forEachAudience, hideBossBar, openBook, openBook, playSound, playSound, playSound, resetTitle, sendActionBar, sendActionBar, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendPlayerListFooter, sendPlayerListFooter, sendPlayerListHeader, sendPlayerListHeader, sendPlayerListHeaderAndFooter, sendPlayerListHeaderAndFooter, sendTitlePart, showBossBar, showTitle, stopSound, stopSound`

### Methods inherited from interface org.bukkit.command.CommandSender

`name, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage`

### Methods inherited from interface org.bukkit.entity.Damageable

`damage, damage, getAbsorptionAmount, getHealth, getMaxHealth, resetMaxHealth, setAbsorptionAmount, setHealth, setMaxHealth`

### Methods inherited from interface org.bukkit.entity.Entity

`addPassenger, addScoreboardTag, asHoverEvent, eject, fromMobSpawner, getBoundingBox, getChunk, getEntityId, getEntitySpawnReason, getFacing, getFallDistance, getFireTicks, getFreezeTicks, getHeight, getLastDamageCause, getLocation, getLocation, getMaxFireTicks, getMaxFreezeTicks, getNearbyEntities, getOrigin, getPassenger, getPassengers, getPistonMoveReaction, getPortalCooldown, getPose, getScoreboardTags, getServer, getTicksLived, getTrackedPlayers, getType, getUniqueId, getVehicle, getVelocity, getWidth, getWorld, hasGravity, isCustomNameVisible, isDead, isEmpty, isFrozen, isGlowing, isInBubbleColumn, isInLava, isInRain, isInsideVehicle, isInvulnerable, isInWater, isInWaterOrBubbleColumn, isInWaterOrRain, isInWaterOrRainOrBubbleColumn, isOnGround, isPersistent, isSilent, isTicking, isValid, isVisualFire, leaveVehicle, playEffect, remove, removePassenger, removeScoreboardTag, setCustomNameVisible, setFallDistance, setFireTicks, setFreezeTicks, setGlowing, setGravity, setInvulnerable, setLastDamageCause, setPassenger, setPersistent, setPortalCooldown, setRotation, setSilent, setTicksLived, setVelocity, setVisualFire, spawnAt, spawnAt, spigot, teamDisplayName, teleport, teleport, teleport, teleport, teleportAsync, teleportAsync`

### Methods inherited from interface net.kyori.adventure.text.event.HoverEventSource

`asHoverEvent`

### Methods inherited from interface org.bukkit.entity.LivingEntity

`addPotionEffect, addPotionEffect, addPotionEffects, attack, clearActiveItem, getActiveItem, getActivePotionEffects, getArrowCooldown, getArrowsInBody, getArrowsStuck, getBeeStingerCooldown, getBeeStingersInBody, getCanPickupItems, getCategory, getCollidableExemptions, getEyeHeight, getEyeHeight, getEyeLocation, getHandRaised, getHandRaisedTime, getHurtDirection, getItemUseRemainingTime, getKiller, getLastDamage, getLastTwoTargetBlocks, getLeashHolder, getLineOfSight, getMaximumAir, getMaximumNoDamageTicks, getMemory, getNoDamageTicks, getPotionEffect, getRemainingAir, getRemoveWhenFarAway, getShieldBlockingDelay, getTargetBlock, getTargetBlock, getTargetBlock, getTargetBlockExact, getTargetBlockExact, getTargetBlockFace, getTargetBlockFace, getTargetBlockInfo, getTargetBlockInfo, getTargetEntity, getTargetEntity, getTargetEntityInfo, getTargetEntityInfo, hasAI, hasLineOfSight, hasLineOfSight, hasPotionEffect, isClimbing, isCollidable, isGliding, isInvisible, isJumping, isLeashed, isRiptiding, isSleeping, isSwimming, playPickupItemAnimation, playPickupItemAnimation, rayTraceBlocks, rayTraceBlocks, removePotionEffect, setAI, setArrowCooldown, setArrowsInBody, setArrowsStuck, setBeeStingerCooldown, setBeeStingersInBody, setCanPickupItems, setCollidable, setGliding, setHurtDirection, setInvisible, setJumping, setKiller, setLastDamage, setLeashHolder, setMaximumAir, setMaximumNoDamageTicks, setMemory, setNoDamageTicks, setRemainingAir, setRemoveWhenFarAway, setShieldBlockingDelay, setSwimming, swingMainHand, swingOffHand`

### Methods inherited from interface org.bukkit.metadata.Metadatable

`getMetadata, hasMetadata, removeMetadata, setMetadata`

### Methods inherited from interface org.bukkit.Nameable

`customName, customName, getCustomName, setCustomName`

### Methods inherited from interface org.bukkit.permissions.Permissible

`addAttachment, addAttachment, addAttachment, addAttachment, getEffectivePermissions, hasPermission, hasPermission, isPermissionSet, isPermissionSet, permissionValue, permissionValue, recalculatePermissions, removeAttachment`

### Methods inherited from interface org.bukkit.persistence.PersistentDataHolder

`getPersistentDataContainer`

### Methods inherited from interface net.kyori.adventure.pointer.Pointered

`get, getOrDefault, getOrDefaultFrom, pointers`

### Methods inherited from interface org.bukkit.projectiles.ProjectileSource

`launchProjectile, launchProjectile`

### Methods inherited from interface org.bukkit.permissions.ServerOperator

`isOp, setOp`

## Method Details

### getEquipment

@NotNull EntityEquipment getEquipment()
Description copied from interface: `LivingEntity`
Gets the inventory with the equipment worn by the living entity.

Specified by:
  `getEquipment` in interface `LivingEntity`
Returns:
  the living entity's inventory

### getName

@NotNull @NotNull String getName()
Returns the name of this player

Specified by:
  `getName` in interface `AnimalTamer`
Specified by:
  `getName` in interface `CommandSender`
Returns:
  Player name

### getInventory

@NotNull @NotNull PlayerInventory getInventory()
Get the player's inventory.

Specified by:
  `getInventory` in interface `InventoryHolder`
Returns:
  The inventory of the player, this also contains the armor slots.

### getEnderChest

@NotNull @NotNull Inventory getEnderChest()
Get the player's EnderChest inventory

Returns:
  The EnderChest of the player

### getMainHand

@NotNull @NotNull MainHand getMainHand()
Gets the player's selected main hand

Returns:
  the players main hand

### setWindowProperty

boolean setWindowProperty(@NotNull InventoryView.Property prop, int value)
If the player currently has an inventory window open, this method will set a property of that window, such as the state of a progress bar.

Parameters:
  `prop` - The property.
  `value` - The value to set the property to.
Returns:
  True if the property was successfully set.

### getOpenInventory

@NotNull @NotNull InventoryView getOpenInventory()
Gets the inventory view the player is currently viewing. If they do not have an inventory window open, it returns their internal crafting view.

Returns:
  The inventory view.

### openInventory

@Nullable @Nullable InventoryView openInventory(@NotNull @NotNull Inventory inventory)
Opens an inventory window with the specified inventory on the top and the player's inventory on the bottom.

Parameters:
  `inventory` - The inventory to open
Returns:
  The newly opened inventory view

### openWorkbench

@Nullable @Nullable InventoryView openWorkbench(@Nullable @Nullable Location location, boolean force)
Opens an empty workbench inventory window with the player's inventory on the bottom.

Parameters:
  `location` - The location to attach it to. If null, the player's location is used.
  `force` - If false, and there is no workbench block at the location, no inventory will be opened and null will be returned.
Returns:
  The newly opened inventory view, or null if it could not be opened.

### openEnchanting

@Nullable @Nullable InventoryView openEnchanting(@Nullable @Nullable Location location, boolean force)
Opens an empty enchanting inventory window with the player's inventory on the bottom.

Parameters:
  `location` - The location to attach it to. If null, the player's location is used.
  `force` - If false, and there is no enchanting table at the location, no inventory will be opened and null will be returned.
Returns:
  The newly opened inventory view, or null if it could not be opened.

### openInventory

void openInventory(@NotNull @NotNull InventoryView inventory)
Opens an inventory window to the specified inventory view.

Parameters:
  `inventory` - The view to open

### openMerchant

@Nullable @Nullable InventoryView openMerchant(@NotNull @NotNull Villager trader, boolean force)
Starts a trade between the player and the villager. Note that only one player may trade with a villager at once. You must use the force parameter for this.

Parameters:
  `trader` - The merchant to trade with. Cannot be null.
  `force` - whether to force the trade even if another player is trading
Returns:
  The newly opened inventory view, or null if it could not be opened.

### openMerchant

@Nullable @Nullable InventoryView openMerchant(@NotNull @NotNull Merchant merchant, boolean force)
Starts a trade between the player and the merchant. Note that only one player may trade with a merchant at once. You must use the force parameter for this.

Parameters:
  `merchant` - The merchant to trade with. Cannot be null.
  `force` - whether to force the trade even if another player is trading
Returns:
  The newly opened inventory view, or null if it could not be opened.

### openAnvil

@Nullable @Nullable InventoryView openAnvil(@Nullable @Nullable Location location, boolean force)
Opens an empty anvil inventory window with the player's inventory on the bottom.

Parameters:
  `location` - The location to attach it to. If null, the player's location is used.
  `force` - If false, and there is no anvil block at the location, no inventory will be opened and null will be returned.
Returns:
  The newly opened inventory view, or null if it could not be opened.

### openCartographyTable

@Nullable @Nullable InventoryView openCartographyTable(@Nullable @Nullable Location location, boolean force)
Opens an empty cartography table inventory window with the player's inventory on the bottom.

Parameters:
  `location` - The location to attach it to. If null, the player's location is used.
  `force` - If false, and there is no cartography table block at the location, no inventory will be opened and null will be returned.
Returns:
  The newly opened inventory view, or null if it could not be opened.

### openGrindstone

@Nullable @Nullable InventoryView openGrindstone(@Nullable @Nullable Location location, boolean force)
Opens an empty grindstone inventory window with the player's inventory on the bottom.

Parameters:
  `location` - The location to attach it to. If null, the player's location is used.
  `force` - If false, and there is no grindstone block at the location, no inventory will be opened and null will be returned.
Returns:
  The newly opened inventory view, or null if it could not be opened.

### openLoom

@Nullable @Nullable InventoryView openLoom(@Nullable @Nullable Location location, boolean force)
Opens an empty loom inventory window with the player's inventory on the bottom.

Parameters:
  `location` - The location to attach it to. If null, the player's location is used.
  `force` - If false, and there is no loom block at the location, no inventory will be opened and null will be returned.
Returns:
  The newly opened inventory view, or null if it could not be opened.

### openSmithingTable

@Nullable @Nullable InventoryView openSmithingTable(@Nullable @Nullable Location location, boolean force)
Opens an empty smithing table inventory window with the player's inventory on the bottom.

Parameters:
  `location` - The location to attach it to. If null, the player's location is used.
  `force` - If false, and there is no smithing table block at the location, no inventory will be opened and null will be returned.
Returns:
  The newly opened inventory view, or null if it could not be opened.

### openStonecutter

@Nullable @Nullable InventoryView openStonecutter(@Nullable @Nullable Location location, boolean force)
Opens an empty stonecutter inventory window with the player's inventory on the bottom.

Parameters:
  `location` - The location to attach it to. If null, the player's location is used.
  `force` - If false, and there is no stonecutter block at the location, no inventory will be opened and null will be returned.
Returns:
  The newly opened inventory view, or null if it could not be opened.

### closeInventory

void closeInventory()
Force-closes the currently open inventory view for this player, if any.

### closeInventory

void closeInventory(@NotNull InventoryCloseEvent.Reason reason)
Force-closes the currently open inventory view for this player, if any.

Parameters:
  `reason` - why the inventory is closing

### getItemInHand

@Deprecated @NotNull @NotNull ItemStack getItemInHand()
Deprecated.
Humans may now dual wield in their off hand, use explicit methods in `PlayerInventory`.
Returns the ItemStack currently in your hand, can be empty.

Returns:
  The ItemStack of the item you are currently holding.

### setItemInHand

@Deprecated void setItemInHand(@Nullable @Nullable ItemStack item)
Deprecated.
Humans may now dual wield in their off hand, use explicit methods in `PlayerInventory`.
Sets the item to the given ItemStack, this will replace whatever the user was holding.

Parameters:
  `item` - The ItemStack which will end up in the hand

### getItemOnCursor

@NotNull @NotNull ItemStack getItemOnCursor()
Returns the ItemStack currently on your cursor, can be empty. Will always be empty if the player currently has no open window.

Returns:
  The ItemStack of the item you are currently moving around.

### setItemOnCursor

void setItemOnCursor(@Nullable @Nullable ItemStack item)
Sets the item to the given ItemStack, this will replace whatever the user was moving. Will always be empty if the player currently has no open window.

Parameters:
  `item` - The ItemStack which will end up in the hand

### hasCooldown

boolean hasCooldown(@NotNull @NotNull Material material)
Check whether a cooldown is active on the specified material.

Parameters:
  `material` - the material to check
Returns:
  if a cooldown is active on the material

### getCooldown

int getCooldown(@NotNull @NotNull Material material)
Get the cooldown time in ticks remaining for the specified material.

Parameters:
  `material` - the material to check
Returns:
  the remaining cooldown time in ticks

### setCooldown

void setCooldown(@NotNull @NotNull Material material, int ticks)
Set a cooldown on the specified material for a certain amount of ticks. ticks. 0 ticks will result in the removal of the cooldown.

Cooldowns are used by the server for items such as ender pearls and shields to prevent them from being used repeatedly.

Note that cooldowns will not by themselves stop an item from being used for attacking.

Parameters:
  `material` - the material to set the cooldown for
  `ticks` - the amount of ticks to set or 0 to remove

### isDeeplySleeping

boolean isDeeplySleeping()
If the player has slept enough to count towards passing the night.

Returns:
  true if the player has slept enough

### getSleepTicks

int getSleepTicks()
Get the sleep ticks of the player. This value may be capped.

Returns:
  slumber ticks

### getPotentialBedLocation

@Nullable @Nullable Location getPotentialBedLocation()
Gets the Location of the player's bed, null if they have not slept in one. This method will not attempt to validate if the current bed is still valid.

Returns:
  Bed Location if has slept in one, otherwise null.

### sleep

boolean sleep(@NotNull @NotNull Location location, boolean force)
Attempts to make the entity sleep at the given location.
The location must be in the current world and have a bed placed at the location. The game may also enforce other requirements such as proximity to bed, monsters, and dimension type if force is not set.

Parameters:
  `location` - the location of the bed
  `force` - whether to try and sleep at the location even if not normally possible
Returns:
  whether the sleep was successful

### wakeup

void wakeup(boolean setSpawnLocation)
Causes the player to wakeup if they are currently sleeping.

Parameters:
  `setSpawnLocation` - whether to set their spawn location to the bed they are currently sleeping in
Throws:
  `IllegalStateException` - if not sleeping

### getBedLocation

@NotNull @NotNull Location getBedLocation()
Gets the location of the bed the player is currently sleeping in

Returns:
  location
Throws:
  `IllegalStateException` - if not sleeping

### getGameMode

@NotNull @NotNull GameMode getGameMode()
Gets this human's current `GameMode`

Returns:
  Current game mode

### setGameMode

void setGameMode(@NotNull @NotNull GameMode mode)
Sets this human's current `GameMode`

Parameters:
  `mode` - New game mode

### isBlocking

boolean isBlocking()
Check if the player is currently blocking (ie with a shield).

Returns:
  Whether they are blocking.

### isHandRaised

boolean isHandRaised()
Check if the player currently has their hand raised (ie about to begin blocking).

Specified by:
  `isHandRaised` in interface `LivingEntity`
Returns:
  Whether their hand is raised

### getItemInUse

@Nullable @Nullable ItemStack getItemInUse()
Gets the item that the player is using (eating food, drawing back a bow, blocking, etc.)

Returns:
  the item being used by the player, or null if they are not using an item

### getExpToLevel

int getExpToLevel()
Get the total amount of experience required for the player to level

Returns:
  Experience required to level up

### releaseLeftShoulderEntity

@Nullable @Nullable Entity releaseLeftShoulderEntity()
If there is an Entity on this entities left shoulder, it will be released to the world and returned. If no Entity is released, null will be returned.

Returns:
  The released entity, or null

### releaseRightShoulderEntity

@Nullable @Nullable Entity releaseRightShoulderEntity()
If there is an Entity on this entities left shoulder, it will be released to the world and returned. If no Entity is released, null will be returned.

Returns:
  The released entity, or null

### getAttackCooldown

float getAttackCooldown()
Gets the current cooldown for a player's attack. This is used to calculate damage, with 1.0 representing a fully charged attack and 0.0 representing a non-charged attack

Returns:
  A float between 0.0-1.0 representing the progress of the charge

### discoverRecipe

boolean discoverRecipe(@NotNull @NotNull NamespacedKey recipe)
Discover a recipe for this player such that it has not already been discovered. This method will add the key's associated recipe to the player's recipe book.

Parameters:
  `recipe` - the key of the recipe to discover
Returns:
  whether or not the recipe was newly discovered

### discoverRecipes

int discoverRecipes(@NotNull @NotNull Collection<NamespacedKey> recipes)
Discover a collection of recipes for this player such that they have not already been discovered. This method will add the keys' associated recipes to the player's recipe book. If a recipe in the provided collection has already been discovered, it will be silently ignored.

Parameters:
  `recipes` - the keys of the recipes to discover
Returns:
  the amount of newly discovered recipes where 0 indicates that none were newly discovered and a number equal to `recipes.size()` indicates that all were new

### undiscoverRecipe

boolean undiscoverRecipe(@NotNull @NotNull NamespacedKey recipe)
Undiscover a recipe for this player such that it has already been discovered. This method will remove the key's associated recipe from the player's recipe book.

Parameters:
  `recipe` - the key of the recipe to undiscover
Returns:
  whether or not the recipe was successfully undiscovered (i.e. it was previously discovered)

### undiscoverRecipes

int undiscoverRecipes(@NotNull @NotNull Collection<NamespacedKey> recipes)
Undiscover a collection of recipes for this player such that they have already been discovered. This method will remove the keys' associated recipes from the player's recipe book. If a recipe in the provided collection has not yet been discovered, it will be silently ignored.

Parameters:
  `recipes` - the keys of the recipes to undiscover
Returns:
  the amount of undiscovered recipes where 0 indicates that none were undiscovered and a number equal to `recipes.size()` indicates that all were undiscovered

### hasDiscoveredRecipe

boolean hasDiscoveredRecipe(@NotNull @NotNull NamespacedKey recipe)
Check whether or not this entity has discovered the specified recipe.

Parameters:
  `recipe` - the key of the recipe to check
Returns:
  true if discovered, false otherwise

### getDiscoveredRecipes

@NotNull @NotNull Set<NamespacedKey> getDiscoveredRecipes()
Get an immutable set of recipes this entity has discovered.

Returns:
  all discovered recipes

### getShoulderEntityLeft

@Deprecated @Nullable @Nullable Entity getShoulderEntityLeft()
Deprecated.
There are currently no well defined semantics regarding serialized entities in Bukkit. Use with care.
Gets the entity currently perched on the left shoulder or null if no entity.
The returned entity will not be spawned within the world, so most operations are invalid unless the entity is first spawned in.

Returns:
  left shoulder entity

### setShoulderEntityLeft

@Deprecated void setShoulderEntityLeft(@Nullable @Nullable Entity entity)
Deprecated.
There are currently no well defined semantics regarding serialized entities in Bukkit. Use with care.
Sets the entity currently perched on the left shoulder, or null to remove. This method will remove the entity from the world.
Note that only a copy of the entity will be set to display on the shoulder.
Also note that the client will currently only render `Parrot` entities.

Parameters:
  `entity` - left shoulder entity

### getShoulderEntityRight

@Deprecated @Nullable @Nullable Entity getShoulderEntityRight()
Deprecated.
There are currently no well defined semantics regarding serialized entities in Bukkit. Use with care.
Gets the entity currently perched on the right shoulder or null if no entity.
The returned entity will not be spawned within the world, so most operations are invalid unless the entity is first spawned in.

Returns:
  right shoulder entity

### setShoulderEntityRight

@Deprecated void setShoulderEntityRight(@Nullable @Nullable Entity entity)
Deprecated.
There are currently no well defined semantics regarding serialized entities in Bukkit. Use with care.
Sets the entity currently perched on the right shoulder, or null to remove. This method will remove the entity from the world.
Note that only a copy of the entity will be set to display on the shoulder.
Also note that the client will currently only render `Parrot` entities.

Parameters:
  `entity` - right shoulder entity

### openSign

void openSign(@NotNull Sign sign)
Opens an editor window for the specified sign

Parameters:
  `sign` - The sign to open

### dropItem

boolean dropItem(boolean dropAll)
Make the entity drop the item in their hand.
This will force the entity to drop the item they are holding with an option to drop the entire `ItemStack` or just 1 of the items.

Parameters:
  `dropAll` - True to drop entire stack, false to drop 1 of the stack
Returns:
  True if item was dropped successfully

### getExhaustion

float getExhaustion()
Gets the players current exhaustion level.

Exhaustion controls how fast the food level drops. While you have a certain amount of exhaustion, your saturation will drop to zero, and then your food will drop to zero.

Returns:
  Exhaustion level

### setExhaustion

void setExhaustion(float value)
Sets the players current exhaustion level

Parameters:
  `value` - Exhaustion level

### getSaturation

float getSaturation()
Gets the players current saturation level.

Saturation is a buffer for food level. Your food level will not drop if you are saturated > 0.

Returns:
  Saturation level

### setSaturation

void setSaturation(float value)
Sets the players current saturation level

Parameters:
  `value` - Saturation level

### getFoodLevel

int getFoodLevel()
Gets the players current food level

Returns:
  Food level

### setFoodLevel

void setFoodLevel(int value)
Sets the players current food level

Parameters:
  `value` - New food level

### getSaturatedRegenRate

int getSaturatedRegenRate()
Get the regeneration rate (1 health per x ticks) of the HumanEntity when they have saturation and their food level is >= 20. Default is 10.

Returns:
  the regeneration rate

### setSaturatedRegenRate

void setSaturatedRegenRate(int ticks)
Set the regeneration rate (1 health per x ticks) of the HumanEntity when they have saturation and their food level is >= 20. Default is 10. Not affected if the world's difficulty is peaceful.

Parameters:
  `ticks` - the amount of ticks to gain 1 health.

### getUnsaturatedRegenRate

int getUnsaturatedRegenRate()
Get the regeneration rate (1 health per x ticks) of the HumanEntity when they have no saturation and their food level is >= 18. Default is 80.

Returns:
  the regeneration rate

### setUnsaturatedRegenRate

void setUnsaturatedRegenRate(int ticks)
Get the regeneration rate (1 health per x ticks) of the HumanEntity when they have no saturation and their food level is >= 18. Default is 80. Not affected if the world's difficulty is peaceful.

Parameters:
  `ticks` - the amount of ticks to gain 1 health.

### getStarvationRate

int getStarvationRate()
Get the starvation rate (1 health per x ticks) of the HumanEntity. Default is 80.

Returns:
  the starvation rate

### setStarvationRate

void setStarvationRate(int ticks)
Get the starvation rate (1 health per x ticks) of the HumanEntity. Default is 80.

Parameters:
  `ticks` - the amount of ticks to lose 1 health