Package org.bukkit

Interface World

All Superinterfaces:
Audience, FeatureFlagSetHolder, ForwardingAudience, Keyed, Keyed, Metadatable, PersistentDataHolder, PersistentDataViewHolder, PluginMessageRecipient, Pointered, RegionAccessor, WorldInfo

Represents a world, which may contain entities, chunks and blocks
  • Method Details

    • isVoidDamageEnabled

      boolean isVoidDamageEnabled()
      Checks if void damage is enabled on this world.
      Returns:
      true if enabled
    • setVoidDamageEnabled

      void setVoidDamageEnabled(boolean enabled)
      Sets whether void damage is enabled on this world.
      Parameters:
      enabled - true to enable void damage
    • getVoidDamageAmount

      float getVoidDamageAmount()
      Gets the damage applied to the player when they are in the void in this world. Check isVoidDamageEnabled() to see if void damage is enabled.
      Returns:
      amount of damage to apply
      See Also:
    • setVoidDamageAmount

      void setVoidDamageAmount(float voidDamageAmount)
      Sets the damage applied to the player when they are in the void in this world. Check isVoidDamageEnabled() to see if void damage is enabled.
      Parameters:
      voidDamageAmount - amount of damage to apply
    • getVoidDamageMinBuildHeightOffset

      double getVoidDamageMinBuildHeightOffset()
      Gets the offset applied to WorldInfo.getMinHeight() to determine the height at which void damage starts to apply.
      Returns:
      offset from min build height
      See Also:
    • setVoidDamageMinBuildHeightOffset

      void setVoidDamageMinBuildHeightOffset(double minBuildHeightOffset)
      Sets the offset applied to WorldInfo.getMinHeight() to determine the height at which void damage starts to apply.
      Parameters:
      minBuildHeightOffset - offset from min build height
    • getEntityCount

      int getEntityCount()
      Returns:
      The amount of Entities in this world
    • getTileEntityCount

      int getTileEntityCount()
      Returns:
      The amount of Tile Entities in this world
    • getTickableTileEntityCount

      int getTickableTileEntityCount()
      Returns:
      The amount of Tickable Tile Entities in this world
    • getChunkCount

      int getChunkCount()
      Returns:
      The amount of Chunks in this world
    • getPlayerCount

      int getPlayerCount()
      Returns:
      The amount of Players in this world
    • hasStructureAt

      boolean hasStructureAt(@NotNull Position position, @NotNull @NotNull Structure structure)
      Check if the naturally-generated structure exists at the position.

      Note that if the position is not loaded, this may cause chunk loads/generation to check if a structure is at that position. Use isPositionLoaded(io.papermc.paper.math.Position) to check if a position is loaded

      Parameters:
      position - the position to check at
      structure - the structure to check for
      Returns:
      true if that structure exists at the position
    • isPositionLoaded

      default boolean isPositionLoaded(@NotNull Position position)
      Checks if this position is loaded.
      Parameters:
      position - position to check
      Returns:
      true if loaded
    • getBlockAt

      @NotNull @NotNull Block getBlockAt(int x, int y, int z)
      Gets the Block at the given coordinates
      Parameters:
      x - X-coordinate of the block
      y - Y-coordinate of the block
      z - Z-coordinate of the block
      Returns:
      Block at the given coordinates
    • getBlockAt

      Gets the Block at the given Location
      Parameters:
      location - Location of the block
      Returns:
      Block at the given location
    • getBlockAtKey

      @NotNull @Deprecated(since="1.18.1") default @NotNull Block getBlockAtKey(long key)
      Deprecated.
      only encodes y block ranges from -512 to 511 and represents an already changed implementation detail
      Gets the Block at the given block key
      Parameters:
      key - The block key. See Block.getBlockKey()
      Returns:
      Block at the key
      See Also:
    • getLocationAtKey

      @NotNull @Deprecated(since="1.18.1") default @NotNull Location getLocationAtKey(long key)
      Deprecated.
      Gets the Location at the given block key
      Parameters:
      key - The block key. See Location.toBlockKey()
      Returns:
      Location at the key
      See Also:
    • getHighestBlockAt

      @NotNull @NotNull Block getHighestBlockAt(int x, int z)
      Gets the highest non-empty (impassable) block at the given coordinates.
      Parameters:
      x - X-coordinate of the block
      z - Z-coordinate of the block
      Returns:
      Highest non-empty block
    • getHighestBlockAt

      @NotNull @NotNull Block getHighestBlockAt(@NotNull @NotNull Location location)
      Gets the highest non-empty (impassable) block at the given coordinates.
      Parameters:
      location - Coordinates to get the highest block
      Returns:
      Highest non-empty block
    • getHighestBlockAt

      @NotNull @NotNull Block getHighestBlockAt(int x, int z, @NotNull @NotNull HeightMap heightMap)
      Gets the highest block corresponding to the HeightMap at the given coordinates.
      Parameters:
      x - X-coordinate of the block
      z - Z-coordinate of the block
      heightMap - the heightMap that is used to determine the highest point
      Returns:
      Highest block corresponding to the HeightMap
    • getHighestBlockAt

      @NotNull @NotNull Block getHighestBlockAt(@NotNull @NotNull Location location, @NotNull @NotNull HeightMap heightMap)
      Gets the highest block corresponding to the HeightMap at the given coordinates.
      Parameters:
      location - Coordinates to get the highest block
      heightMap - the heightMap that is used to determine the highest point
      Returns:
      Highest block corresponding to the HeightMap
    • getChunkAt

      @NotNull @NotNull Chunk getChunkAt(int x, int z)
      Gets the Chunk at the given coordinates
      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      Returns:
      Chunk at the given coordinates
    • getChunkAt

      @NotNull @NotNull Chunk getChunkAt(int x, int z, boolean generate)
      Gets the Chunk at the given coordinates
      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      generate - Whether the chunk should be fully generated or not
      Returns:
      Chunk at the given coordinates
    • getChunkAt

      Gets the Chunk at the given Location
      Parameters:
      location - Location of the chunk
      Returns:
      Chunk at the given location
    • getChunkAt

      Gets the Chunk that contains the given Block
      Parameters:
      block - Block to get the containing chunk from
      Returns:
      The chunk that contains the given block
    • getChunkAt

      @NotNull default @NotNull Chunk getChunkAt(long chunkKey)
      Gets the chunk at the specified chunk key, which is the X and Z packed into a long.

      See Chunk.getChunkKey() for easy access to the key, or you may calculate it as: long chunkKey = (long) chunkX & 0xffffffffL | ((long) chunkZ & 0xffffffffL) >> 32;

      Parameters:
      chunkKey - The Chunk Key to look up the chunk by
      Returns:
      The chunk at the specified key
    • getChunkAt

      @NotNull default @NotNull Chunk getChunkAt(long chunkKey, boolean generate)
      Gets the chunk at the specified chunk key, which is the X and Z packed into a long.

      See Chunk.getChunkKey() for easy access to the key, or you may calculate it as: long chunkKey = (long) chunkX & 0xffffffffL | ((long) chunkZ & 0xffffffffL) >> 32;

      Parameters:
      chunkKey - The Chunk Key to look up the chunk by
      generate - Whether the chunk should be fully generated or not
      Returns:
      The chunk at the specified key
    • isChunkGenerated

      default boolean isChunkGenerated(long chunkKey)
      Checks if a Chunk has been generated at the specified chunk key, which is the X and Z packed into a long.
      Parameters:
      chunkKey - The Chunk Key to look up the chunk by
      Returns:
      true if the chunk has been generated, otherwise false
    • isChunkLoaded

      boolean isChunkLoaded(@NotNull @NotNull Chunk chunk)
      Checks if the specified Chunk is loaded
      Parameters:
      chunk - The chunk to check
      Returns:
      true if the chunk is loaded, otherwise false
    • getLoadedChunks

      @NotNull @NotNull Chunk[] getLoadedChunks()
      Gets an array of all loaded Chunks
      Returns:
      Chunk[] containing all loaded chunks
    • loadChunk

      void loadChunk(@NotNull @NotNull Chunk chunk)
      Loads the specified Chunk.

      This method will keep the specified chunk loaded until one of the unload methods is manually called. Callers are advised to instead use getChunkAt which will only temporarily load the requested chunk.

      Parameters:
      chunk - The chunk to load
    • isChunkLoaded

      boolean isChunkLoaded(int x, int z)
      Checks if the Chunk at the specified coordinates is loaded
      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      Returns:
      true if the chunk is loaded, otherwise false
    • isChunkGenerated

      boolean isChunkGenerated(int x, int z)
      Checks if the Chunk at the specified coordinates is generated
      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      Returns:
      true if the chunk is generated, otherwise false
    • isChunkInUse

      @Deprecated boolean isChunkInUse(int x, int z)
      Deprecated.
      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.
      Checks if the Chunk at the specified coordinates is loaded and in use by one or more players
      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      Returns:
      true if the chunk is loaded and in use by one or more players, otherwise false
    • loadChunk

      void loadChunk(int x, int z)
      Loads the Chunk at the specified coordinates.

      This method will keep the specified chunk loaded until one of the unload methods is manually called. Callers are advised to instead use getChunkAt which will only temporarily load the requested chunk.

      If the chunk does not exist, it will be generated.

      This method is analogous to loadChunk(int, int, boolean) where generate is true.

      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
    • loadChunk

      boolean loadChunk(int x, int z, boolean generate)
      Loads the Chunk at the specified coordinates.

      This method will keep the specified chunk loaded until one of the unload methods is manually called. Callers are advised to instead use getChunkAt which will only temporarily load the requested chunk.

      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      generate - Whether or not to generate a chunk if it doesn't already exist
      Returns:
      true if the chunk has loaded successfully, otherwise false
    • unloadChunk

      boolean unloadChunk(@NotNull @NotNull Chunk chunk)
      Safely unloads and saves the Chunk at the specified coordinates

      This method is analogous to unloadChunk(int, int, boolean) where save is true.

      Parameters:
      chunk - the chunk to unload
      Returns:
      true if the chunk has unloaded successfully, otherwise false
    • unloadChunk

      boolean unloadChunk(int x, int z)
      Safely unloads and saves the Chunk at the specified coordinates

      This method is analogous to unloadChunk(int, int, boolean) where save is true.

      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      Returns:
      true if the chunk has unloaded successfully, otherwise false
    • unloadChunk

      boolean unloadChunk(int x, int z, boolean save)
      Safely unloads and optionally saves the Chunk at the specified coordinates.
      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      save - Whether or not to save the chunk
      Returns:
      true if the chunk has unloaded successfully, otherwise false
    • unloadChunkRequest

      boolean unloadChunkRequest(int x, int z)
      Safely queues the Chunk at the specified coordinates for unloading.
      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      Returns:
      true is the queue attempt was successful, otherwise false
    • regenerateChunk

      @Deprecated boolean regenerateChunk(int x, int z)
      Deprecated.
      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.
      Regenerates the Chunk at the specified coordinates
      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      Returns:
      Whether the chunk was actually regenerated
    • refreshChunk

      boolean refreshChunk(int x, int z)
      Resends the Chunk to all clients
      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      Returns:
      Whether the chunk was actually refreshed
    • getPlayersSeeingChunk

      @NotNull @NotNull Collection<Player> getPlayersSeeingChunk(@NotNull @NotNull Chunk chunk)
      Get a list of all players who are can view the specified chunk from their client

      This list will be empty if no players are viewing the chunk, or the chunk is unloaded.

      Parameters:
      chunk - the chunk to check
      Returns:
      collection of players who can see the chunk
    • getPlayersSeeingChunk

      @NotNull @NotNull Collection<Player> getPlayersSeeingChunk(int x, int z)
      Get a list of all players who are can view the specified chunk from their client

      This list will be empty if no players are viewing the chunk, or the chunk is unloaded.

      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      Returns:
      collection of players who can see the chunk
    • isChunkForceLoaded

      boolean isChunkForceLoaded(int x, int z)
      Gets whether the chunk at the specified chunk coordinates is force loaded.

      A force loaded chunk will not be unloaded due to lack of player activity.

      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      Returns:
      force load status
    • setChunkForceLoaded

      void setChunkForceLoaded(int x, int z, boolean forced)
      Sets whether the chunk at the specified chunk coordinates is force loaded.

      A force loaded chunk will not be unloaded due to lack of player activity.

      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      forced - force load status
    • getForceLoadedChunks

      @NotNull @NotNull Collection<Chunk> getForceLoadedChunks()
      Returns all force loaded chunks in this world.

      A force loaded chunk will not be unloaded due to lack of player activity.

      Returns:
      unmodifiable collection of force loaded chunks
    • addPluginChunkTicket

      boolean addPluginChunkTicket(int x, int z, @NotNull @NotNull Plugin plugin)
      Adds a plugin ticket for the specified chunk, loading the chunk if it is not already loaded.

      A plugin ticket will prevent a chunk from unloading until it is explicitly removed. A plugin instance may only have one ticket per chunk, but each chunk can have multiple plugin tickets.

      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      plugin - Plugin which owns the ticket
      Returns:
      true if a plugin ticket was added, false if the ticket already exists for the plugin
      Throws:
      IllegalStateException - If the specified plugin is not enabled
      See Also:
    • removePluginChunkTicket

      boolean removePluginChunkTicket(int x, int z, @NotNull @NotNull Plugin plugin)
      Removes the specified plugin's ticket for the specified chunk

      A plugin ticket will prevent a chunk from unloading until it is explicitly removed. A plugin instance may only have one ticket per chunk, but each chunk can have multiple plugin tickets.

      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      plugin - Plugin which owns the ticket
      Returns:
      true if the plugin ticket was removed, false if there is no plugin ticket for the chunk
      See Also:
    • removePluginChunkTickets

      void removePluginChunkTickets(@NotNull @NotNull Plugin plugin)
      Removes all plugin tickets for the specified plugin

      A plugin ticket will prevent a chunk from unloading until it is explicitly removed. A plugin instance may only have one ticket per chunk, but each chunk can have multiple plugin tickets.

      Parameters:
      plugin - Specified plugin
      See Also:
    • getPluginChunkTickets

      @NotNull @NotNull Collection<Plugin> getPluginChunkTickets(int x, int z)
      Retrieves a collection specifying which plugins have tickets for the specified chunk. This collection is not updated when plugin tickets are added or removed to the chunk.

      A plugin ticket will prevent a chunk from unloading until it is explicitly removed. A plugin instance may only have one ticket per chunk, but each chunk can have multiple plugin tickets.

      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      Returns:
      unmodifiable collection containing which plugins have tickets for the chunk
      See Also:
    • getPluginChunkTickets

      @NotNull @NotNull Map<Plugin,Collection<Chunk>> getPluginChunkTickets()
      Returns a map of which plugins have tickets for what chunks. The returned map is not updated when plugin tickets are added or removed to chunks. If a plugin has no tickets, it will be absent from the map.

      A plugin ticket will prevent a chunk from unloading until it is explicitly removed. A plugin instance may only have one ticket per chunk, but each chunk can have multiple plugin tickets.

      Returns:
      unmodifiable map containing which plugins have tickets for what chunks
      See Also:
    • getIntersectingChunks

      Gets all Chunks intersecting the given BoundingBox.
      Parameters:
      box - BoundingBox to check
      Returns:
      A collection of Chunks intersecting the given BoundingBox
    • dropItem

      Drops an item at the specified Location
      Parameters:
      location - Location to drop the item
      item - ItemStack to drop
      Returns:
      ItemDrop entity created as a result of this method
    • dropItem

      Drops an item at the specified Location Note that functions will run before the entity is spawned
      Parameters:
      location - Location to drop the item
      item - ItemStack to drop
      function - the function to be run before the entity is spawned.
      Returns:
      ItemDrop entity created as a result of this method
    • dropItemNaturally

      Drops an item at the specified Location with a random offset
      Parameters:
      location - Location to drop the item
      item - ItemStack to drop
      Returns:
      ItemDrop entity created as a result of this method
    • dropItemNaturally

      @NotNull @NotNull Item dropItemNaturally(@NotNull @NotNull Location location, @NotNull @NotNull ItemStack item, @Nullable @Nullable Consumer<? super Item> function)
      Drops an item at the specified Location with a random offset Note that functions will run before the entity is spawned
      Parameters:
      location - Location to drop the item
      item - ItemStack to drop
      function - the function to be run before the entity is spawned.
      Returns:
      ItemDrop entity created as a result of this method
    • spawnArrow

      @NotNull @NotNull Arrow spawnArrow(@NotNull @NotNull Location location, @NotNull @NotNull Vector direction, float speed, float spread)
      Creates an Arrow entity at the given Location
      Parameters:
      location - Location to spawn the arrow
      direction - Direction to shoot the arrow in
      speed - Speed of the arrow. A recommend speed is 0.6
      spread - Spread of the arrow. A recommend spread is 12
      Returns:
      Arrow entity spawned as a result of this method
    • spawnArrow

      @NotNull <T extends AbstractArrow> T spawnArrow(@NotNull @NotNull Location location, @NotNull @NotNull Vector direction, float speed, float spread, @NotNull @NotNull Class<T> clazz)
      Creates an arrow entity of the given class at the given Location
      Type Parameters:
      T - type of arrow to spawn
      Parameters:
      location - Location to spawn the arrow
      direction - Direction to shoot the arrow in
      speed - Speed of the arrow. A recommend speed is 0.6
      spread - Spread of the arrow. A recommend spread is 12
      clazz - the Entity class for the arrow SpectralArrow,Arrow,TippedArrow
      Returns:
      Arrow entity spawned as a result of this method
    • generateTree

      boolean generateTree(@NotNull @NotNull Location location, @NotNull @NotNull TreeType type)
      Creates a tree at the given Location
      Parameters:
      location - Location to spawn the tree
      type - Type of the tree to create
      Returns:
      true if the tree was created successfully, otherwise false
    • generateTree

      Deprecated.
      this method does not handle tile entities (bee nests)
      Creates a tree at the given Location
      Parameters:
      loc - Location to spawn the tree
      type - Type of the tree to create
      delegate - A class to call for each block changed as a result of this method
      Returns:
      true if the tree was created successfully, otherwise false
      See Also:
    • strikeLightning

      Strikes lightning at the given Location
      Parameters:
      loc - The location to strike lightning
      Returns:
      The lightning entity.
    • strikeLightningEffect

      Strikes lightning at the given Location without doing damage
      Parameters:
      loc - The location to strike lightning
      Returns:
      The lightning entity.
    • findLightningRod

      @Nullable @Nullable Location findLightningRod(@NotNull @NotNull Location location)
      Finds the location of the nearest unobstructed Lightning Rod in a 128-block radius around the given location. Returns null if no Lightning Rod is found.

      Note: To activate a Lightning Rod, the position one block above it must be struck by lightning.

      Parameters:
      location - Location to search for Lightning Rod around
      Returns:
      Location of Lightning Rod or null
    • findLightningTarget

      @Nullable @Nullable Location findLightningTarget(@NotNull @NotNull Location location)
      Finds a target Location for lightning to strike.

      It selects from (in the following order):

      1. the block above the nearest Lightning Rod, found using findLightningRod(Location)
      2. a random LivingEntity that can see the sky in a 6x6 cuboid around input X/Z coordinates. Y ranges from the highest motion-blocking block at the input X/Z - 3 to the height limit + 3

      Returns null if no target is found.

      Parameters:
      location - Location to search for target around
      Returns:
      lightning target or null
    • getEntities

      @NotNull @NotNull List<Entity> getEntities()
      Get a list of all entities in this World
      Specified by:
      getEntities in interface RegionAccessor
      Returns:
      A List of all Entities currently residing in this world
    • getLivingEntities

      @NotNull @NotNull List<LivingEntity> getLivingEntities()
      Get a list of all living entities in this World
      Specified by:
      getLivingEntities in interface RegionAccessor
      Returns:
      A List of all LivingEntities currently residing in this world
    • getEntitiesByClass

      @Deprecated @NotNull <T extends Entity> @NotNull Collection<T> getEntitiesByClass(@NotNull @NotNull Class<T>... classes)
      Deprecated.
      Get a collection of all entities in this World matching the given class/interface
      Type Parameters:
      T - an entity subclass
      Parameters:
      classes - The classes representing the types of entity to match
      Returns:
      A List of all Entities currently residing in this world that match the given class/interface
    • getEntitiesByClass

      @NotNull <T extends Entity> @NotNull Collection<T> getEntitiesByClass(@NotNull @NotNull Class<T> cls)
      Get a collection of all entities in this World matching the given class/interface
      Specified by:
      getEntitiesByClass in interface RegionAccessor
      Type Parameters:
      T - an entity subclass
      Parameters:
      cls - The class representing the type of entity to match
      Returns:
      A List of all Entities currently residing in this world that match the given class/interface
    • getEntitiesByClasses

      @NotNull @NotNull Collection<Entity> getEntitiesByClasses(@NotNull @NotNull Class<?>... classes)
      Get a collection of all entities in this World matching any of the given classes/interfaces
      Specified by:
      getEntitiesByClasses in interface RegionAccessor
      Parameters:
      classes - The classes representing the types of entity to match
      Returns:
      A List of all Entities currently residing in this world that match one or more of the given classes/interfaces
    • getNearbyLivingEntities

      @NotNull default @NotNull Collection<LivingEntity> getNearbyLivingEntities(@NotNull @NotNull Location loc, double radius)
      Gets nearby LivingEntities within the specified radius (bounding box)
      Parameters:
      loc - Center location
      radius - Radius
      Returns:
      the collection of entities near location. This will always be a non-null collection.
    • getNearbyLivingEntities

      @NotNull default @NotNull Collection<LivingEntity> getNearbyLivingEntities(@NotNull @NotNull Location loc, double xzRadius, double yRadius)
      Gets nearby LivingEntities within the specified radius (bounding box)
      Parameters:
      loc - Center location
      xzRadius - X/Z Radius
      yRadius - Y Radius
      Returns:
      the collection of entities near location. This will always be a non-null collection.
    • getNearbyLivingEntities

      @NotNull default @NotNull Collection<LivingEntity> getNearbyLivingEntities(@NotNull @NotNull Location loc, double xRadius, double yRadius, double zRadius)
      Gets nearby LivingEntities within the specified radius (bounding box)
      Parameters:
      loc - Center location
      xRadius - X Radius
      yRadius - Y Radius
      zRadius - Z radius
      Returns:
      the collection of entities near location. This will always be a non-null collection.
    • getNearbyLivingEntities

      @NotNull default @NotNull Collection<LivingEntity> getNearbyLivingEntities(@NotNull @NotNull Location loc, double radius, @Nullable @Nullable Predicate<? super LivingEntity> predicate)
      Gets nearby LivingEntities within the specified radius (bounding box)
      Parameters:
      loc - Center location
      radius - X Radius
      predicate - a predicate used to filter results
      Returns:
      the collection of living entities near location. This will always be a non-null collection
    • getNearbyLivingEntities

      @NotNull default @NotNull Collection<LivingEntity> getNearbyLivingEntities(@NotNull @NotNull Location loc, double xzRadius, double yRadius, @Nullable @Nullable Predicate<? super LivingEntity> predicate)
      Gets nearby LivingEntities within the specified radius (bounding box)
      Parameters:
      loc - Center location
      xzRadius - X/Z Radius
      yRadius - Y Radius
      predicate - a predicate used to filter results
      Returns:
      the collection of living entities near location. This will always be a non-null collection
    • getNearbyLivingEntities

      @NotNull default @NotNull Collection<LivingEntity> getNearbyLivingEntities(@NotNull @NotNull Location loc, double xRadius, double yRadius, double zRadius, @Nullable @Nullable Predicate<? super LivingEntity> predicate)
      Gets nearby LivingEntities within the specified radius (bounding box)
      Parameters:
      loc - Center location
      xRadius - X Radius
      yRadius - Y Radius
      zRadius - Z radius
      predicate - a predicate used to filter results
      Returns:
      the collection of living entities near location. This will always be a non-null collection.
    • getNearbyPlayers

      @NotNull default @NotNull Collection<Player> getNearbyPlayers(@NotNull @NotNull Location loc, double radius)
      Gets nearby players within the specified radius (bounding box)
      Parameters:
      loc - Center location
      radius - X/Y/Z Radius
      Returns:
      the collection of living entities near location. This will always be a non-null collection.
    • getNearbyPlayers

      @NotNull default @NotNull Collection<Player> getNearbyPlayers(@NotNull @NotNull Location loc, double xzRadius, double yRadius)
      Gets nearby players within the specified radius (bounding box)
      Parameters:
      loc - Center location
      xzRadius - X/Z Radius
      yRadius - Y Radius
      Returns:
      the collection of living entities near location. This will always be a non-null collection.
    • getNearbyPlayers

      @NotNull default @NotNull Collection<Player> getNearbyPlayers(@NotNull @NotNull Location loc, double xRadius, double yRadius, double zRadius)
      Gets nearby players within the specified radius (bounding box)
      Parameters:
      loc - Center location
      xRadius - X Radius
      yRadius - Y Radius
      zRadius - Z Radius
      Returns:
      the collection of players near location. This will always be a non-null collection.
    • getNearbyPlayers

      @NotNull default @NotNull Collection<Player> getNearbyPlayers(@NotNull @NotNull Location loc, double radius, @Nullable @Nullable Predicate<? super Player> predicate)
      Gets nearby players within the specified radius (bounding box)
      Parameters:
      loc - Center location
      radius - X/Y/Z Radius
      predicate - a predicate used to filter results
      Returns:
      the collection of players near location. This will always be a non-null collection.
    • getNearbyPlayers

      @NotNull default @NotNull Collection<Player> getNearbyPlayers(@NotNull @NotNull Location loc, double xzRadius, double yRadius, @Nullable @Nullable Predicate<? super Player> predicate)
      Gets nearby players within the specified radius (bounding box)
      Parameters:
      loc - Center location
      xzRadius - X/Z Radius
      yRadius - Y Radius
      predicate - a predicate used to filter results
      Returns:
      the collection of players near location. This will always be a non-null collection.
    • getNearbyPlayers

      @NotNull default @NotNull Collection<Player> getNearbyPlayers(@NotNull @NotNull Location loc, double xRadius, double yRadius, double zRadius, @Nullable @Nullable Predicate<? super Player> predicate)
      Gets nearby players within the specified radius (bounding box)
      Parameters:
      loc - Center location
      xRadius - X Radius
      yRadius - Y Radius
      zRadius - Z Radius
      predicate - a predicate used to filter results
      Returns:
      the collection of players near location. This will always be a non-null collection.
    • getNearbyEntitiesByType

      @NotNull default <T extends Entity> @NotNull Collection<T> getNearbyEntitiesByType(@Nullable @Nullable Class<? extends T> clazz, @NotNull @NotNull Location loc, double radius)
      Gets all nearby entities of the specified type, within the specified radius (bounding box)
      Type Parameters:
      T - the entity type
      Parameters:
      clazz - Type to filter by
      loc - Center location
      radius - X/Y/Z radius to search within
      Returns:
      the collection of entities near location. This will always be a non-null collection.
    • getNearbyEntitiesByType

      @NotNull default <T extends Entity> @NotNull Collection<T> getNearbyEntitiesByType(@Nullable @Nullable Class<? extends T> clazz, @NotNull @NotNull Location loc, double xzRadius, double yRadius)
      Gets all nearby entities of the specified type, within the specified radius, with x and x radius matching (bounding box)
      Type Parameters:
      T - the entity type
      Parameters:
      clazz - Type to filter by
      loc - Center location
      xzRadius - X/Z radius to search within
      yRadius - Y radius to search within
      Returns:
      the collection of entities near location. This will always be a non-null collection.
    • getNearbyEntitiesByType

      @NotNull default <T extends Entity> @NotNull Collection<T> getNearbyEntitiesByType(@Nullable @Nullable Class<? extends T> clazz, @NotNull @NotNull Location loc, double xRadius, double yRadius, double zRadius)
      Gets all nearby entities of the specified type, within the specified radius (bounding box)
      Type Parameters:
      T - the entity type
      Parameters:
      clazz - Type to filter by
      loc - Center location
      xRadius - X Radius
      yRadius - Y Radius
      zRadius - Z Radius
      Returns:
      the collection of entities near location. This will always be a non-null collection.
    • getNearbyEntitiesByType

      @NotNull default <T extends Entity> @NotNull Collection<T> getNearbyEntitiesByType(@Nullable @Nullable Class<? extends T> clazz, @NotNull @NotNull Location loc, double radius, @Nullable @Nullable Predicate<? super T> predicate)
      Gets all nearby entities of the specified type, within the specified radius (bounding box)
      Type Parameters:
      T - the entity type
      Parameters:
      clazz - Type to filter by
      loc - Center location
      radius - X/Y/Z radius to search within
      predicate - a predicate used to filter results
      Returns:
      the collection of entities near location. This will always be a non-null collection.
    • getNearbyEntitiesByType

      @NotNull default <T extends Entity> @NotNull Collection<T> getNearbyEntitiesByType(@Nullable @Nullable Class<? extends T> clazz, @NotNull @NotNull Location loc, double xzRadius, double yRadius, @Nullable @Nullable Predicate<? super T> predicate)
      Gets all nearby entities of the specified type, within the specified radius, with x and x radius matching (bounding box)
      Type Parameters:
      T - the entity type
      Parameters:
      clazz - Type to filter by
      loc - Center location
      xzRadius - X/Z radius to search within
      yRadius - Y radius to search within
      predicate - a predicate used to filter results
      Returns:
      the collection of entities near location. This will always be a non-null collection.
    • getNearbyEntitiesByType

      @NotNull default <T extends Entity> @NotNull Collection<T> getNearbyEntitiesByType(@Nullable @Nullable Class<? extends Entity> clazz, @NotNull @NotNull Location loc, double xRadius, double yRadius, double zRadius, @Nullable @Nullable Predicate<? super T> predicate)
      Gets all nearby entities of the specified type, within the specified radius (bounding box)
      Type Parameters:
      T - the entity type
      Parameters:
      clazz - Type to filter by
      loc - Center location
      xRadius - X Radius
      yRadius - Y Radius
      zRadius - Z Radius
      predicate - a predicate used to filter results
      Returns:
      the collection of entities near location. This will always be a non-null collection.
    • getChunkAtAsync

      @Deprecated(since="1.13.1") default void getChunkAtAsync(int x, int z, @NotNull @NotNull World.ChunkLoadCallback cb)
      Deprecated.
      Use either the Future or the Consumer based methods
      Requests a Chunk to be loaded at the given coordinates This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The World.ChunkLoadCallback will always be executed synchronously on the main Server Thread.
      Parameters:
      x - Chunk X-coordinate of the chunk - floor(world coordinate / 16)
      z - Chunk Z-coordinate of the chunk - floor(world coordinate / 16)
      cb - Callback to receive the chunk when it is loaded. will be executed synchronously
    • getChunkAtAsync

      @Deprecated(since="1.13.1") default void getChunkAtAsync(@NotNull @NotNull Location loc, @NotNull @NotNull World.ChunkLoadCallback cb)
      Deprecated.
      Use either the Future or the Consumer based methods
      Requests a Chunk to be loaded at the given Location This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The World.ChunkLoadCallback will always be executed synchronously on the main Server Thread.
      Parameters:
      loc - Location of the chunk
      cb - Callback to receive the chunk when it is loaded. will be executed synchronously
    • getChunkAtAsync

      @Deprecated(since="1.13.1") default void getChunkAtAsync(@NotNull @NotNull Block block, @NotNull @NotNull World.ChunkLoadCallback cb)
      Deprecated.
      Use either the Future or the Consumer based methods
      Requests Chunk to be loaded that contains the given Block This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The World.ChunkLoadCallback will always be executed synchronously on the main Server Thread.
      Parameters:
      block - Block to get the containing chunk from
      cb - Callback to receive the chunk when it is loaded. will be executed synchronously
    • getChunkAtAsync

      default void getChunkAtAsync(int x, int z, @NotNull @NotNull Consumer<? super Chunk> cb)
      Requests a Chunk to be loaded at the given coordinates This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The Consumer will always be executed synchronously on the main Server Thread.
      Parameters:
      x - Chunk X-coordinate of the chunk - floor(world coordinate / 16)
      z - Chunk Z-coordinate of the chunk - floor(world coordinate / 16)
      cb - Callback to receive the chunk when it is loaded. will be executed synchronously
    • getChunkAtAsync

      default void getChunkAtAsync(int x, int z, boolean gen, @NotNull @NotNull Consumer<? super Chunk> cb)
      Requests a Chunk to be loaded at the given coordinates This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The Consumer will always be executed synchronously on the main Server Thread.
      Parameters:
      x - Chunk X-coordinate of the chunk - floor(world coordinate / 16)
      z - Chunk Z-coordinate of the chunk - floor(world coordinate / 16)
      gen - Should we generate a chunk if it doesn't exist or not
      cb - Callback to receive the chunk when it is loaded. will be executed synchronously
    • getChunkAtAsync

      void getChunkAtAsync(int x, int z, boolean gen, boolean urgent, @NotNull @NotNull Consumer<? super Chunk> cb)
      Requests a Chunk to be loaded at the given coordinates This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The Consumer will always be executed synchronously on the main Server Thread.
      Parameters:
      x - Chunk X-coordinate of the chunk - floor(world coordinate / 16)
      z - Chunk Z-coordinate of the chunk - floor(world coordinate / 16)
      gen - Should we generate a chunk if it doesn't exist or not
      urgent - If true, the chunk may be prioritised to be loaded above other chunks in queue
      cb - Callback to receive the chunk when it is loaded. will be executed synchronously
    • getChunksAtAsync

      void getChunksAtAsync(int minX, int minZ, int maxX, int maxZ, boolean urgent, @NotNull @NotNull Runnable cb)
      Requests all chunks with x between [minX, maxZ] and z between [minZ, maxZ] to be loaded. This method makes no guarantee on how fast the chunk will load, and will invoke the callback at possibly a later time. You should use this method if you need chunks loaded but do not need them immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The Runnable will always be executed synchronously on the main Server Thread, and when invoked all chunks requested will be loaded.
      Parameters:
      minX - Minimum chunk X-coordinate of the chunk - floor(world coordinate / 16)
      minZ - Minimum chunk Z-coordinate of the chunk - floor(world coordinate / 16)
      maxX - Maximum chunk X-coordinate of the chunk - floor(world coordinate / 16)
      maxZ - Maximum chunk Z-coordinate of the chunk - floor(world coordinate / 16)
      urgent - If true, the chunks may be prioritised to be loaded above other chunks in queue
      cb - Callback to invoke when all chunks are loaded. Will be executed synchronously
      See Also:
    • getChunkAtAsync

      default void getChunkAtAsync(@NotNull @NotNull Location loc, @NotNull @NotNull Consumer<? super Chunk> cb)
      Requests a Chunk to be loaded at the given Location This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The Consumer will always be executed synchronously on the main Server Thread.
      Parameters:
      loc - Location of the chunk
      cb - Callback to receive the chunk when it is loaded. will be executed synchronously
    • getChunkAtAsync

      default void getChunkAtAsync(@NotNull @NotNull Location loc, boolean gen, @NotNull @NotNull Consumer<? super Chunk> cb)
      Requests a Chunk to be loaded at the given Location This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The Consumer will always be executed synchronously on the main Server Thread.
      Parameters:
      loc - Location of the chunk
      gen - Should the chunk generate if it doesn't exist
      cb - Callback to receive the chunk when it is loaded. will be executed synchronously
    • getChunkAtAsync

      default void getChunkAtAsync(@NotNull @NotNull Block block, @NotNull @NotNull Consumer<? super Chunk> cb)
      Requests Chunk to be loaded that contains the given Block This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The Consumer will always be executed synchronously on the main Server Thread.
      Parameters:
      block - Block to get the containing chunk from
      cb - Callback to receive the chunk when it is loaded. will be executed synchronously
    • getChunkAtAsync

      default void getChunkAtAsync(@NotNull @NotNull Block block, boolean gen, @NotNull @NotNull Consumer<? super Chunk> cb)
      Requests Chunk to be loaded that contains the given Block This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The Consumer will always be executed synchronously on the main Server Thread.
      Parameters:
      block - Block to get the containing chunk from
      gen - Should the chunk generate if it doesn't exist
      cb - Callback to receive the chunk when it is loaded. will be executed synchronously
    • getChunkAtAsync

      @NotNull default CompletableFuture<Chunk> getChunkAtAsync(@NotNull @NotNull Location loc)
      Requests a Chunk to be loaded at the given coordinates This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The future will always be executed synchronously on the main Server Thread.
      Parameters:
      loc - Location to load the corresponding chunk from
      Returns:
      Future that will resolve when the chunk is loaded
    • getChunkAtAsync

      @NotNull default CompletableFuture<Chunk> getChunkAtAsync(@NotNull @NotNull Location loc, boolean gen)
      Requests a Chunk to be loaded at the given coordinates This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The future will always be executed synchronously on the main Server Thread.
      Parameters:
      loc - Location to load the corresponding chunk from
      gen - Should the chunk generate if it doesn't exist
      Returns:
      Future that will resolve when the chunk is loaded
    • getChunkAtAsync

      @NotNull default CompletableFuture<Chunk> getChunkAtAsync(@NotNull @NotNull Block block)
      Requests a Chunk to be loaded at the given coordinates This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The future will always be executed synchronously on the main Server Thread.
      Parameters:
      block - Block to load the corresponding chunk from
      Returns:
      Future that will resolve when the chunk is loaded
    • getChunkAtAsync

      @NotNull default CompletableFuture<Chunk> getChunkAtAsync(@NotNull @NotNull Block block, boolean gen)
      Requests a Chunk to be loaded at the given coordinates This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The future will always be executed synchronously on the main Server Thread.
      Parameters:
      block - Block to load the corresponding chunk from
      gen - Should the chunk generate if it doesn't exist
      Returns:
      Future that will resolve when the chunk is loaded
    • getChunkAtAsync

      @NotNull default CompletableFuture<Chunk> getChunkAtAsync(int x, int z)
      Requests a Chunk to be loaded at the given coordinates This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The future will always be executed synchronously on the main Server Thread.
      Parameters:
      x - Chunk X-coordinate of the chunk - floor(world coordinate / 16)
      z - Chunk Z-coordinate of the chunk - floor(world coordinate / 16)
      Returns:
      Future that will resolve when the chunk is loaded
    • getChunkAtAsync

      @NotNull default CompletableFuture<Chunk> getChunkAtAsync(int x, int z, boolean gen)
      Requests a Chunk to be loaded at the given coordinates This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The future will always be executed synchronously on the main Server Thread.
      Parameters:
      x - Chunk X-coordinate of the chunk - floor(world coordinate / 16)
      z - Chunk Z-coordinate of the chunk - floor(world coordinate / 16)
      gen - Should we generate a chunk if it doesn't exist or not
      Returns:
      Future that will resolve when the chunk is loaded
    • getChunkAtAsyncUrgently

      @NotNull default CompletableFuture<Chunk> getChunkAtAsyncUrgently(@NotNull @NotNull Location loc)
      Requests a Chunk to be loaded at the given coordinates This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The future will always be executed synchronously on the main Server Thread.
      Parameters:
      loc - Location to load the corresponding chunk from
      Returns:
      Future that will resolve when the chunk is loaded
    • getChunkAtAsyncUrgently

      @NotNull default CompletableFuture<Chunk> getChunkAtAsyncUrgently(@NotNull @NotNull Location loc, boolean gen)
      Requests a Chunk to be loaded at the given coordinates This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The future will always be executed synchronously on the main Server Thread.
      Parameters:
      loc - Location to load the corresponding chunk from
      gen - Should the chunk generate if it doesn't exist
      Returns:
      Future that will resolve when the chunk is loaded
    • getChunkAtAsyncUrgently

      @NotNull default CompletableFuture<Chunk> getChunkAtAsyncUrgently(@NotNull @NotNull Block block)
      Requests a Chunk to be loaded at the given coordinates This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The future will always be executed synchronously on the main Server Thread.
      Parameters:
      block - Block to load the corresponding chunk from
      Returns:
      Future that will resolve when the chunk is loaded
    • getChunkAtAsyncUrgently

      @NotNull default CompletableFuture<Chunk> getChunkAtAsyncUrgently(@NotNull @NotNull Block block, boolean gen)
      Requests a Chunk to be loaded at the given coordinates This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The future will always be executed synchronously on the main Server Thread.
      Parameters:
      block - Block to load the corresponding chunk from
      gen - Should the chunk generate if it doesn't exist
      Returns:
      Future that will resolve when the chunk is loaded
    • getChunkAtAsyncUrgently

      @NotNull default CompletableFuture<Chunk> getChunkAtAsyncUrgently(int x, int z)
      Requests a Chunk to be loaded at the given coordinates This method makes no guarantee on how fast the chunk will load, and will return the chunk to the callback at a later time. You should use this method if you need a chunk but do not need it immediately, and you wish to let the server control the speed of chunk loads, keeping performance in mind. The future will always be executed synchronously on the main Server Thread.
      Parameters:
      x - X Coord
      z - Z Coord
      Returns:
      Future that will resolve when the chunk is loaded
    • getChunkAtAsync

      @NotNull default CompletableFuture<Chunk> getChunkAtAsync(int x, int z, boolean gen, boolean urgent)
    • getPlayers

      @NotNull @NotNull List<Player> getPlayers()
      Get a list of all players in this World
      Returns:
      A list of all Players currently residing in this world
    • audiences

      @NotNull default @NotNull Iterable<? extends Audience> audiences()
      Description copied from interface: net.kyori.adventure.audience.ForwardingAudience
      Gets the audiences.
      Specified by:
      audiences in interface ForwardingAudience
      Returns:
      the audiences
    • getNearbyEntities

      @NotNull @NotNull Collection<Entity> getNearbyEntities(@NotNull @NotNull Location location, double x, double y, double z)
      Returns a list of entities within a bounding box centered around a Location.

      This may not consider entities in currently unloaded chunks. Some implementations may impose artificial restrictions on the size of the search bounding box.

      Parameters:
      location - The center of the bounding box
      x - 1/2 the size of the box along x axis
      y - 1/2 the size of the box along y axis
      z - 1/2 the size of the box along z axis
      Returns:
      the collection of entities near location. This will always be a non-null collection.
    • getEntity

      Gets an entity in this world by its UUID
      Parameters:
      uuid - the UUID of the entity
      Returns:
      the entity with the given UUID, or null if it isn't found
    • getNearbyEntities

      @NotNull @NotNull Collection<Entity> getNearbyEntities(@NotNull @NotNull Location location, double x, double y, double z, @Nullable @Nullable Predicate<? super Entity> filter)
      Returns a list of entities within a bounding box centered around a Location.

      This may not consider entities in currently unloaded chunks. Some implementations may impose artificial restrictions on the size of the search bounding box.

      Parameters:
      location - The center of the bounding box
      x - 1/2 the size of the box along x axis
      y - 1/2 the size of the box along y axis
      z - 1/2 the size of the box along z axis
      filter - only entities that fulfill this predicate are considered, or null to consider all entities
      Returns:
      the collection of entities near location. This will always be a non-null collection.
    • getNearbyEntities

      @NotNull @NotNull Collection<Entity> getNearbyEntities(@NotNull @NotNull BoundingBox boundingBox)
      Returns a list of entities within the given bounding box.

      This may not consider entities in currently unloaded chunks. Some implementations may impose artificial restrictions on the size of the search bounding box.

      Parameters:
      boundingBox - the bounding box
      Returns:
      the collection of entities within the bounding box, will always be a non-null collection
    • getNearbyEntities

      @NotNull @NotNull Collection<Entity> getNearbyEntities(@NotNull @NotNull BoundingBox boundingBox, @Nullable @Nullable Predicate<? super Entity> filter)
      Returns a list of entities within the given bounding box.

      This may not consider entities in currently unloaded chunks. Some implementations may impose artificial restrictions on the size of the search bounding box.

      Parameters:
      boundingBox - the bounding box
      filter - only entities that fulfill this predicate are considered, or null to consider all entities
      Returns:
      the collection of entities within the bounding box, will always be a non-null collection
    • rayTraceEntities

      @Nullable @Nullable RayTraceResult rayTraceEntities(@NotNull @NotNull Location start, @NotNull @NotNull Vector direction, double maxDistance)
      Performs a ray trace that checks for entity collisions.

      This may not consider entities in currently unloaded chunks. Some implementations may impose artificial restrictions on the maximum distance.

      Note: Due to display entities having a zero size hitbox, this method will not detect them. To detect display entities use rayTraceEntities(Location, Vector, double, double) with a positive raySize

      Parameters:
      start - the start position
      direction - the ray direction
      maxDistance - the maximum distance
      Returns:
      the closest ray trace hit result, or null if there is no hit
      See Also:
    • rayTraceEntities

      @Nullable @Nullable RayTraceResult rayTraceEntities(@NotNull @NotNull Location start, @NotNull @NotNull Vector direction, double maxDistance, double raySize)
      Performs a ray trace that checks for entity collisions.

      This may not consider entities in currently unloaded chunks. Some implementations may impose artificial restrictions on the maximum distance.

      Parameters:
      start - the start position
      direction - the ray direction
      maxDistance - the maximum distance
      raySize - entity bounding boxes will be uniformly expanded (or shrunk) by this value before doing collision checks
      Returns:
      the closest ray trace hit result, or null if there is no hit
      See Also:
    • rayTraceEntities

      @Nullable @Nullable RayTraceResult rayTraceEntities(@NotNull @NotNull Location start, @NotNull @NotNull Vector direction, double maxDistance, @Nullable @Nullable Predicate<? super Entity> filter)
      Performs a ray trace that checks for entity collisions.

      This may not consider entities in currently unloaded chunks. Some implementations may impose artificial restrictions on the maximum distance.

      Note: Due to display entities having a zero size hitbox, this method will not detect them. To detect display entities use rayTraceEntities(Location, Vector, double, double, Predicate) with a positive raySize

      Parameters:
      start - the start position
      direction - the ray direction
      maxDistance - the maximum distance
      filter - only entities that fulfill this predicate are considered, or null to consider all entities
      Returns:
      the closest ray trace hit result, or null if there is no hit
      See Also:
    • rayTraceEntities

      @Nullable @Nullable RayTraceResult rayTraceEntities(@NotNull @NotNull Location start, @NotNull @NotNull Vector direction, double maxDistance, double raySize, @Nullable @Nullable Predicate<? super Entity> filter)
      Performs a ray trace that checks for entity collisions.

      This may not consider entities in currently unloaded chunks. Some implementations may impose artificial restrictions on the maximum distance.

      Parameters:
      start - the start position
      direction - the ray direction
      maxDistance - the maximum distance
      raySize - entity bounding boxes will be uniformly expanded (or shrunk) by this value before doing collision checks
      filter - only entities that fulfill this predicate are considered, or null to consider all entities
      Returns:
      the closest ray trace hit result, or null if there is no hit
    • rayTraceEntities

      @Nullable @Nullable RayTraceResult rayTraceEntities(@NotNull Position start, @NotNull @NotNull Vector direction, double maxDistance, double raySize, @Nullable @Nullable Predicate<? super Entity> filter)
      Performs a ray trace that checks for entity collisions.

      This may not consider entities in currently unloaded chunks. Some implementations may impose artificial restrictions on the maximum distance.

      Parameters:
      start - the start position
      direction - the ray direction
      maxDistance - the maximum distance
      raySize - entity bounding boxes will be uniformly expanded (or shrinked) by this value before doing collision checks
      filter - only entities that fulfill this predicate are considered, or null to consider all entities
      Returns:
      the closest ray trace hit result, or null if there is no hit
    • rayTraceBlocks

      @Nullable @Nullable RayTraceResult rayTraceBlocks(@NotNull @NotNull Location start, @NotNull @NotNull Vector direction, double maxDistance)
      Performs a ray trace that checks for block collisions using the blocks' precise collision shapes.

      This takes collisions with passable blocks into account, but ignores fluids.

      This may cause loading of chunks! Some implementations may impose artificial restrictions on the maximum distance.

      Parameters:
      start - the start location
      direction - the ray direction
      maxDistance - the maximum distance
      Returns:
      the ray trace hit result, or null if there is no hit
      See Also:
    • rayTraceBlocks

      @Nullable @Nullable RayTraceResult rayTraceBlocks(@NotNull @NotNull Location start, @NotNull @NotNull Vector direction, double maxDistance, @NotNull @NotNull FluidCollisionMode fluidCollisionMode)
      Performs a ray trace that checks for block collisions using the blocks' precise collision shapes.

      This takes collisions with passable blocks into account.

      This may cause loading of chunks! Some implementations may impose artificial restrictions on the maximum distance.

      Parameters:
      start - the start location
      direction - the ray direction
      maxDistance - the maximum distance
      fluidCollisionMode - the fluid collision mode
      Returns:
      the ray trace hit result, or null if there is no hit
      See Also:
    • rayTraceBlocks

      @Nullable @Nullable RayTraceResult rayTraceBlocks(@NotNull @NotNull Location start, @NotNull @NotNull Vector direction, double maxDistance, @NotNull @NotNull FluidCollisionMode fluidCollisionMode, boolean ignorePassableBlocks)
      Performs a ray trace that checks for block collisions using the blocks' precise collision shapes.

      If collisions with passable blocks are ignored, fluid collisions are ignored as well regardless of the fluid collision mode.

      Portal blocks are only considered passable if the ray starts within them. Apart from that collisions with portal blocks will be considered even if collisions with passable blocks are otherwise ignored.

      This may cause loading of chunks! Some implementations may impose artificial restrictions on the maximum distance.

      Parameters:
      start - the start location
      direction - the ray direction
      maxDistance - the maximum distance
      fluidCollisionMode - the fluid collision mode
      ignorePassableBlocks - whether to ignore passable but collidable blocks (ex. tall grass, signs, fluids, ..)
      Returns:
      the ray trace hit result, or null if there is no hit
    • rayTraceBlocks

      @Nullable @Nullable RayTraceResult rayTraceBlocks(@NotNull Position start, @NotNull @NotNull Vector direction, double maxDistance, @NotNull @NotNull FluidCollisionMode fluidCollisionMode, boolean ignorePassableBlocks, @Nullable @Nullable Predicate<? super Block> canCollide)
      Performs a ray trace that checks for block collisions using the blocks' precise collision shapes.

      If collisions with passable blocks are ignored, fluid collisions are ignored as well regardless of the fluid collision mode.

      Portal blocks are only considered passable if the ray starts within them. Apart from that collisions with portal blocks will be considered even if collisions with passable blocks are otherwise ignored.

      This may cause loading of chunks! Some implementations may impose artificial restrictions on the maximum distance.

      Parameters:
      start - the start position
      direction - the ray direction
      maxDistance - the maximum distance
      fluidCollisionMode - the fluid collision mode
      ignorePassableBlocks - whether to ignore passable but collidable blocks (ex. tall grass, signs, fluids, ..)
      canCollide - predicate for blocks the ray can potentially collide with, or null to consider all blocks
      Returns:
      the ray trace hit result, or null if there is no hit
    • rayTrace

      @Nullable @Nullable RayTraceResult rayTrace(@NotNull @NotNull Location start, @NotNull @NotNull Vector direction, double maxDistance, @NotNull @NotNull FluidCollisionMode fluidCollisionMode, boolean ignorePassableBlocks, double raySize, @Nullable @Nullable Predicate<? super Entity> filter)
      Performs a ray trace that checks for both block and entity collisions.

      Block collisions use the blocks' precise collision shapes. The raySize parameter is only taken into account for entity collision checks.

      If collisions with passable blocks are ignored, fluid collisions are ignored as well regardless of the fluid collision mode.

      Portal blocks are only considered passable if the ray starts within them. Apart from that collisions with portal blocks will be considered even if collisions with passable blocks are otherwise ignored.

      This may cause loading of chunks! Some implementations may impose artificial restrictions on the maximum distance.

      Parameters:
      start - the start location
      direction - the ray direction
      maxDistance - the maximum distance
      fluidCollisionMode - the fluid collision mode
      ignorePassableBlocks - whether to ignore passable but collidable blocks (ex. tall grass, signs, fluids, ..)
      raySize - entity bounding boxes will be uniformly expanded (or shrunk) by this value before doing collision checks
      filter - only entities that fulfill this predicate are considered, or null to consider all entities
      Returns:
      the closest ray trace hit result with either a block or an entity, or null if there is no hit
    • rayTrace

      @Nullable @Nullable RayTraceResult rayTrace(@NotNull Position start, @NotNull @NotNull Vector direction, double maxDistance, @NotNull @NotNull FluidCollisionMode fluidCollisionMode, boolean ignorePassableBlocks, double raySize, @Nullable @Nullable Predicate<? super Entity> filter, @Nullable @Nullable Predicate<? super Block> canCollide)
      Performs a ray trace that checks for both block and entity collisions.

      Block collisions use the blocks' precise collision shapes. The raySize parameter is only taken into account for entity collision checks.

      If collisions with passable blocks are ignored, fluid collisions are ignored as well regardless of the fluid collision mode.

      Portal blocks are only considered passable if the ray starts within them. Apart from that collisions with portal blocks will be considered even if collisions with passable blocks are otherwise ignored.

      This may cause loading of chunks! Some implementations may impose artificial restrictions on the maximum distance.

      Parameters:
      start - the start position
      direction - the ray direction
      maxDistance - the maximum distance
      fluidCollisionMode - the fluid collision mode
      ignorePassableBlocks - whether to ignore passable but collidable blocks (ex. tall grass, signs, fluids, ..)
      raySize - entity bounding boxes will be uniformly expanded (or shrinked) by this value before doing collision checks
      filter - only entities that fulfill this predicate are considered, or null to consider all entities
      canCollide - predicate for blocks the ray can potentially collide with, or null to consider all blocks
      Returns:
      the closest ray trace hit result with either a block or an entity, or null if there is no hit
    • getSpawnLocation

      @NotNull @NotNull Location getSpawnLocation()
      Gets the default spawn Location of this world
      Returns:
      The spawn location of this world
    • setSpawnLocation

      boolean setSpawnLocation(@NotNull @NotNull Location location)
      Sets the spawn location of the world.
      The location provided must be equal to this world.
      Parameters:
      location - The Location to set the spawn for this world at.
      Returns:
      True if it was successfully set.
    • setSpawnLocation

      boolean setSpawnLocation(int x, int y, int z, float angle)
      Sets the spawn location of the world
      Parameters:
      x - X coordinate
      y - Y coordinate
      z - Z coordinate
      angle - the angle
      Returns:
      True if it was successfully set.
    • setSpawnLocation

      boolean setSpawnLocation(int x, int y, int z)
      Sets the spawn location of the world
      Parameters:
      x - X coordinate
      y - Y coordinate
      z - Z coordinate
      Returns:
      True if it was successfully set.
    • getTime

      long getTime()
      Gets the relative in-game time of this world.

      The relative time is analogous to hours * 1000

      Returns:
      The current relative time
      See Also:
    • setTime

      void setTime(long time)
      Sets the relative in-game time on the server.

      The relative time is analogous to hours * 1000

      Note that setting the relative time below the current relative time will actually move the clock forward a day. If you require to rewind time, please see setFullTime(long)

      Parameters:
      time - The new relative time to set the in-game time to (in hours*1000)
      See Also:
    • getFullTime

      long getFullTime()
      Gets the full in-game time on this world
      Returns:
      The current absolute time
      See Also:
    • setFullTime

      void setFullTime(long time)
      Sets the in-game time on the server

      Note that this sets the full time of the world, which may cause adverse effects such as breaking redstone clocks and any scheduled events

      Parameters:
      time - The new absolute time to set this world to
      See Also:
    • isDayTime

      boolean isDayTime()
      Check if it is currently daytime in this world
      Returns:
      True if it is daytime
    • getGameTime

      long getGameTime()
      Gets the full in-game time on this world since the world generation
      Returns:
      The current absolute time since the world generation
      See Also:
    • hasStorm

      boolean hasStorm()
      Returns whether the world has an ongoing storm.
      Returns:
      Whether there is an ongoing storm
    • setStorm

      void setStorm(boolean hasStorm)
      Set whether there is a storm. A duration will be set for the new current conditions. This will implicitly call setClearWeatherDuration(int) with 0 ticks to reset the world's clear weather.
      Parameters:
      hasStorm - Whether there is rain and snow
    • getWeatherDuration

      int getWeatherDuration()
      Get the remaining time in ticks of the current conditions.
      Returns:
      Time in ticks
    • setWeatherDuration

      void setWeatherDuration(int duration)
      Set the remaining time in ticks of the current conditions.
      Parameters:
      duration - Time in ticks
    • isThundering

      boolean isThundering()
      Returns whether there is thunder.
      Returns:
      Whether there is thunder
    • setThundering

      void setThundering(boolean thundering)
      Set whether it is thundering. This will implicitly call setClearWeatherDuration(int) with 0 ticks to reset the world's clear weather.
      Parameters:
      thundering - Whether it is thundering
    • getThunderDuration

      int getThunderDuration()
      Get the thundering duration.
      Returns:
      Duration in ticks
    • setThunderDuration

      void setThunderDuration(int duration)
      Set the thundering duration.
      Parameters:
      duration - Duration in ticks
    • isClearWeather

      boolean isClearWeather()
      Returns whether the world has clear weather. This will be true such that isThundering() and hasStorm() are both false.
      Returns:
      true if clear weather
    • setClearWeatherDuration

      void setClearWeatherDuration(int duration)
      Set the clear weather duration. The clear weather ticks determine whether or not the world will be allowed to rain or storm. If clear weather ticks are > 0, the world will not naturally do either until the duration has elapsed. This method is equivalent to calling /weather clear with a set amount of ticks.
      Parameters:
      duration - duration in ticks
    • getClearWeatherDuration

      int getClearWeatherDuration()
      Get the clear weather duration.
      Returns:
      duration in ticks
    • createExplosion

      boolean createExplosion(double x, double y, double z, float power)
      Creates explosion at given coordinates with given power
      Parameters:
      x - X coordinate
      y - Y coordinate
      z - Z coordinate
      power - The power of explosion, where 4F is TNT
      Returns:
      false if explosion was canceled, otherwise true
    • createExplosion

      boolean createExplosion(double x, double y, double z, float power, boolean setFire)
      Creates explosion at given coordinates with given power and optionally setting blocks on fire.
      Parameters:
      x - X coordinate
      y - Y coordinate
      z - Z coordinate
      power - The power of explosion, where 4F is TNT
      setFire - Whether or not to set blocks on fire
      Returns:
      false if explosion was canceled, otherwise true
    • createExplosion

      boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks)
      Creates explosion at given coordinates with given power and optionally setting blocks on fire or breaking blocks.
      Parameters:
      x - X coordinate
      y - Y coordinate
      z - Z coordinate
      power - The power of explosion, where 4F is TNT
      setFire - Whether or not to set blocks on fire
      breakBlocks - Whether or not to have blocks be destroyed
      Returns:
      false if explosion was canceled, otherwise true
    • createExplosion

      boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, @Nullable @Nullable Entity source)
      Creates explosion at given coordinates with given power and optionally setting blocks on fire or breaking blocks.

      Note that if a non-null source Entity is provided and breakBlocks is true, the value of breakBlocks will be ignored if GameRule.MOB_GRIEFING is false in the world in which the explosion occurs. In other words, the mob griefing gamerule will take priority over breakBlocks if explosions are not allowed.

      Parameters:
      x - X coordinate
      y - Y coordinate
      z - Z coordinate
      power - The power of explosion, where 4F is TNT
      setFire - Whether or not to set blocks on fire
      breakBlocks - Whether or not to have blocks be destroyed
      source - the source entity, used for tracking damage
      Returns:
      false if explosion was canceled, otherwise true
    • createExplosion

      boolean createExplosion(@NotNull @NotNull Location loc, float power)
      Creates explosion at given coordinates with given power
      Parameters:
      loc - Location to blow up
      power - The power of explosion, where 4F is TNT
      Returns:
      false if explosion was canceled, otherwise true
    • createExplosion

      boolean createExplosion(@NotNull @NotNull Location loc, float power, boolean setFire)
      Creates explosion at given coordinates with given power and optionally setting blocks on fire.
      Parameters:
      loc - Location to blow up
      power - The power of explosion, where 4F is TNT
      setFire - Whether or not to set blocks on fire
      Returns:
      false if explosion was canceled, otherwise true
    • createExplosion

      boolean createExplosion(@Nullable @Nullable Entity source, @NotNull @NotNull Location loc, float power, boolean setFire, boolean breakBlocks, boolean excludeSourceFromDamage)
      Creates explosion at given location with given power and optionally setting blocks on fire, with the specified entity as the source.
      Parameters:
      source - The source entity of the explosion
      loc - Location to blow up
      power - The power of explosion, where 4F is TNT
      setFire - Whether or not to set blocks on fire
      breakBlocks - Whether or not to have blocks be destroyed
      excludeSourceFromDamage - whether the explosion should exclude the passed source from taking damage like vanilla explosions do.
      Returns:
      false if explosion was canceled, otherwise true
    • createExplosion

      default boolean createExplosion(@Nullable @Nullable Entity source, @NotNull @NotNull Location loc, float power, boolean setFire, boolean breakBlocks)
      Creates explosion at given location with given power and optionally setting blocks on fire, with the specified entity as the source.
      Parameters:
      source - The source entity of the explosion
      loc - Location to blow up
      power - The power of explosion, where 4F is TNT
      setFire - Whether or not to set blocks on fire
      breakBlocks - Whether or not to have blocks be destroyed
      Returns:
      false if explosion was canceled, otherwise true
    • createExplosion

      default boolean createExplosion(@Nullable @Nullable Entity source, @NotNull @NotNull Location loc, float power, boolean setFire)
      Creates explosion at given location with given power and optionally setting blocks on fire, with the specified entity as the source. Will destroy other blocks
      Parameters:
      source - The source entity of the explosion
      loc - Location to blow up
      power - The power of explosion, where 4F is TNT
      setFire - Whether or not to set blocks on fire
      Returns:
      false if explosion was canceled, otherwise true
    • createExplosion

      default boolean createExplosion(@Nullable @Nullable Entity source, @NotNull @NotNull Location loc, float power)
      Creates explosion at given location with given power, with the specified entity as the source. Will set blocks on fire and destroy blocks.
      Parameters:
      source - The source entity of the explosion
      loc - Location to blow up
      power - The power of explosion, where 4F is TNT
      Returns:
      false if explosion was canceled, otherwise true
    • createExplosion

      default boolean createExplosion(@NotNull @NotNull Entity source, float power, boolean setFire, boolean breakBlocks)
      Creates explosion at given entities location with given power and optionally setting blocks on fire, with the specified entity as the source.
      Parameters:
      source - The source entity of the explosion
      power - The power of explosion, where 4F is TNT
      setFire - Whether or not to set blocks on fire
      breakBlocks - Whether or not to have blocks be destroyed
      Returns:
      false if explosion was canceled, otherwise true
    • createExplosion

      default boolean createExplosion(@NotNull @NotNull Entity source, float power, boolean setFire)
      Creates explosion at given entities location with given power and optionally setting blocks on fire, with the specified entity as the source. Will destroy blocks.
      Parameters:
      source - The source entity of the explosion
      power - The power of explosion, where 4F is TNT
      setFire - Whether or not to set blocks on fire
      Returns:
      false if explosion was canceled, otherwise true
    • createExplosion

      default boolean createExplosion(@NotNull @NotNull Entity source, float power)
      Creates explosion at given entities location with given power and optionally setting blocks on fire, with the specified entity as the source.
      Parameters:
      source - The source entity of the explosion
      power - The power of explosion, where 4F is TNT
      Returns:
      false if explosion was canceled, otherwise true
    • createExplosion

      boolean createExplosion(@NotNull @NotNull Location loc, float power, boolean setFire, boolean breakBlocks)
      Creates explosion at given coordinates with given power and optionally setting blocks on fire or breaking blocks.
      Parameters:
      loc - Location to blow up
      power - The power of explosion, where 4F is TNT
      setFire - Whether or not to set blocks on fire
      breakBlocks - Whether or not to have blocks be destroyed
      Returns:
      false if explosion was canceled, otherwise true
    • createExplosion

      boolean createExplosion(@NotNull @NotNull Location loc, float power, boolean setFire, boolean breakBlocks, @Nullable @Nullable Entity source)
      Creates explosion at given coordinates with given power and optionally setting blocks on fire or breaking blocks.

      Note that if a non-null source Entity is provided and breakBlocks is true, the value of breakBlocks will be ignored if GameRule.MOB_GRIEFING is false in the world in which the explosion occurs. In other words, the mob griefing gamerule will take priority over breakBlocks if explosions are not allowed.

      Parameters:
      loc - Location to blow up
      power - The power of explosion, where 4F is TNT
      setFire - Whether or not to set blocks on fire
      breakBlocks - Whether or not to have blocks be destroyed
      source - the source entity, used for tracking damage
      Returns:
      false if explosion was canceled, otherwise true
    • getPVP

      boolean getPVP()
      Gets the current PVP setting for this world.
      Returns:
      True if PVP is enabled
    • setPVP

      void setPVP(boolean pvp)
      Sets the PVP setting for this world.
      Parameters:
      pvp - True/False whether PVP should be Enabled.
    • getGenerator

      Gets the chunk generator for this world
      Returns:
      ChunkGenerator associated with this world
    • getBiomeProvider

      @Nullable @Nullable BiomeProvider getBiomeProvider()
      Gets the biome provider for this world
      Returns:
      BiomeProvider associated with this world
    • save

      void save()
      Saves world to disk
    • getPopulators

      Gets a list of all applied BlockPopulators for this World
      Returns:
      List containing any or none BlockPopulators
    • spawn

      @NotNull <T extends LivingEntity> T spawn(@NotNull @NotNull Location location, @NotNull @NotNull Class<T> clazz, @NotNull CreatureSpawnEvent.SpawnReason spawnReason, boolean randomizeData, @Nullable @Nullable Consumer<? super T> function) throws IllegalArgumentException
      Creates a new entity at the given Location with the supplied function run before the entity is added to the world.
      Note that when the function is run, the entity will not be actually in the world. Any operation involving such as teleporting the entity is undefined until after this function returns. The passed function however is run after the potential entity's spawn randomization and hence already allows access to the values of the mob, whether or not those were randomized, such as attributes or the entity equipment.
      Type Parameters:
      T - the generic type of the entity that is being created.
      Parameters:
      location - the location at which the entity will be spawned.
      clazz - the class of the LivingEntity that is to be spawned.
      spawnReason - the reason provided during the CreatureSpawnEvent call.
      randomizeData - whether or not the entity's data should be randomised before spawning. By default entities are randomised before spawning in regards to their equipment, age, attributes, etc. An example of this randomization would be the color of a sheep, random enchantments on the equipment of mobs or even a zombie becoming a chicken jockey. If set to false, the entity will not be randomised before spawning, meaning all their data will remain in their default state and not further modifications to the entity will be made. Notably only entities that extend the Mob interface provide randomisation logic for their spawn. This parameter is hence useless for any other type of entity.
      function - the function to be run before the entity is spawned.
      Returns:
      the spawned entity instance.
      Throws:
      IllegalArgumentException - if either the world or clazz parameter are null.
    • spawnFallingBlock

      Deprecated.
      Spawn a FallingBlock entity at the given Location of the specified MaterialData. The MaterialData dictates what is falling. When the FallingBlock hits the ground, it will place that block.

      The Material must be a block type, check with data.getItemType().isBlock(). The Material may not be air.

      Parameters:
      location - The Location to spawn the FallingBlock
      data - The block data
      Returns:
      The spawned FallingBlock instance
      Throws:
      IllegalArgumentException - if Location or MaterialData are null or Material of the MaterialData is not a block
    • spawnFallingBlock

      Deprecated.
      Spawn a FallingBlock entity at the given Location of the specified BlockData. The BlockData dictates what is falling. When the FallingBlock hits the ground, it will place that block.
      Parameters:
      location - The Location to spawn the FallingBlock
      data - The BlockData of the FallingBlock to spawn
      Returns:
      The spawned FallingBlock instance
      Throws:
      IllegalArgumentException - if Location or BlockData are null
    • spawnFallingBlock

      Deprecated.
      Magic value. Use RegionAccessor.spawn(Location, Class, Consumer) (or a variation thereof) in combination with FallingBlock.setBlockData(BlockData)
      Spawn a FallingBlock entity at the given Location of the specified Material. The material dictates what is falling. When the FallingBlock hits the ground, it will place that block.

      The Material must be a block type, check with material.isBlock(). The Material may not be air.

      Parameters:
      location - The Location to spawn the FallingBlock
      material - The block Material type
      data - The block data
      Returns:
      The spawned FallingBlock instance
      Throws:
      IllegalArgumentException - if Location or Material are null or Material is not a block
    • playEffect

      void playEffect(@NotNull @NotNull Location location, @NotNull @NotNull Effect effect, int data)
      Plays an effect to all players within a default radius around a given location.
      Parameters:
      location - the Location around which players must be to hear the sound
      effect - the Effect
      data - a data bit needed for some effects
    • playEffect

      void playEffect(@NotNull @NotNull Location location, @NotNull @NotNull Effect effect, int data, int radius)
      Plays an effect to all players within a given radius around a location.
      Parameters:
      location - the Location around which players must be to hear the effect
      effect - the Effect
      data - a data bit needed for some effects
      radius - the radius around the location
    • playEffect

      <T> void playEffect(@NotNull @NotNull Location location, @NotNull @NotNull Effect effect, @Nullable T data)
      Plays an effect to all players within a default radius around a given location.
      Type Parameters:
      T - data dependant on the type of effect
      Parameters:
      location - the Location around which players must be to hear the sound
      effect - the Effect
      data - a data bit needed for some effects
    • playEffect

      <T> void playEffect(@NotNull @NotNull Location location, @NotNull @NotNull Effect effect, @Nullable T data, int radius)
      Plays an effect to all players within a given radius around a location.
      Type Parameters:
      T - data dependant on the type of effect
      Parameters:
      location - the Location around which players must be to hear the effect
      effect - the Effect
      data - a data bit needed for some effects
      radius - the radius around the location
    • getEmptyChunkSnapshot

      @NotNull @NotNull ChunkSnapshot getEmptyChunkSnapshot(int x, int z, boolean includeBiome, boolean includeBiomeTemp)
      Get empty chunk snapshot (equivalent to all air blocks), optionally including valid biome data. Used for representing an ungenerated chunk, or for fetching only biome data without loading a chunk.
      Parameters:
      x - - chunk x coordinate
      z - - chunk z coordinate
      includeBiome - - if true, snapshot includes per-coordinate biome type
      includeBiomeTemp - - if true, snapshot includes per-coordinate raw biome temperature
      Returns:
      The empty snapshot.
    • setSpawnFlags

      void setSpawnFlags(boolean allowMonsters, boolean allowAnimals)
      Sets the spawn flags for this.
      Parameters:
      allowMonsters - - if true, monsters are allowed to spawn in this world.
      allowAnimals - - if true, animals are allowed to spawn in this world.
    • getAllowAnimals

      boolean getAllowAnimals()
      Gets whether animals can spawn in this world.
      Returns:
      whether animals can spawn in this world.
    • getAllowMonsters

      boolean getAllowMonsters()
      Gets whether monsters can spawn in this world.
      Returns:
      whether monsters can spawn in this world.
    • getBiome

      @NotNull @Deprecated @NotNull Biome getBiome(int x, int z)
      Deprecated.
      biomes are now 3-dimensional
      Gets the biome for the given block coordinates.
      Parameters:
      x - X coordinate of the block
      z - Z coordinate of the block
      Returns:
      Biome of the requested block
    • setBiome

      @Deprecated void setBiome(int x, int z, @NotNull @NotNull Biome bio)
      Deprecated.
      biomes are now 3-dimensional
      Sets the biome for the given block coordinates
      Parameters:
      x - X coordinate of the block
      z - Z coordinate of the block
      bio - new Biome type for this block
    • getTemperature

      @Deprecated double getTemperature(int x, int z)
      Deprecated.
      biomes are now 3-dimensional
      Gets the temperature for the given block coordinates.

      It is safe to run this method when the block does not exist, it will not create the block.

      This method will return the raw temperature without adjusting for block height effects.

      Parameters:
      x - X coordinate of the block
      z - Z coordinate of the block
      Returns:
      Temperature of the requested block
    • getTemperature

      double getTemperature(int x, int y, int z)
      Gets the temperature for the given block coordinates.

      It is safe to run this method when the block does not exist, it will not create the block.

      This method will return the raw temperature without adjusting for block height effects.

      Parameters:
      x - X coordinate of the block
      y - Y coordinate of the block
      z - Z coordinate of the block
      Returns:
      Temperature of the requested block
    • getHumidity

      @Deprecated double getHumidity(int x, int z)
      Deprecated.
      biomes are now 3-dimensional
      Gets the humidity for the given block coordinates.

      It is safe to run this method when the block does not exist, it will not create the block.

      Parameters:
      x - X coordinate of the block
      z - Z coordinate of the block
      Returns:
      Humidity of the requested block
    • getHumidity

      double getHumidity(int x, int y, int z)
      Gets the humidity for the given block coordinates.

      It is safe to run this method when the block does not exist, it will not create the block.

      Parameters:
      x - X coordinate of the block
      y - Y coordinate of the block
      z - Z coordinate of the block
      Returns:
      Humidity of the requested block
    • getLogicalHeight

      int getLogicalHeight()
      Gets the maximum height to which chorus fruits and nether portals can bring players within this dimension. This excludes portals that were already built above the limit as they still connect normally. May not be greater than WorldInfo.getMaxHeight().
      Returns:
      maximum logical height for chorus fruits and nether portals
    • isNatural

      boolean isNatural()
      Gets if this world is natural. When false, compasses spin randomly, and using a bed to set the respawn point or sleep, is disabled. When true, nether portals can spawn zombified piglins.
      Returns:
      true if world is natural
    • isBedWorks

      boolean isBedWorks()
      Gets if beds work in this world. A non-working bed will blow up when trying to sleep. isNatural() defines if a bed can be used to set spawn point.
      Returns:
      true if beds work in this world
    • hasSkyLight

      boolean hasSkyLight()
      Gets if this world has skylight access.
      Returns:
      true if this world has skylight access
    • hasCeiling

      boolean hasCeiling()
      Gets if this world has a ceiling.
      Returns:
      true if this world has a bedrock ceiling
    • isPiglinSafe

      boolean isPiglinSafe()
      Gets if this world allow to piglins to survive without shaking and transforming to zombified piglins.
      Returns:
      true if piglins will not transform to zombified piglins
    • isRespawnAnchorWorks

      boolean isRespawnAnchorWorks()
      Gets if this world allows players to charge and use respawn anchors.
      Returns:
      true if players can charge and use respawn anchors
    • hasRaids

      boolean hasRaids()
      Gets if players with the bad omen effect in this world will trigger a raid.
      Returns:
      true if raids will be triggered
    • isUltraWarm

      boolean isUltraWarm()
      Gets if various water/lava mechanics will be triggered in this world, eg:
      • Water is evaporated
      • Sponges dry
      • Lava spreads faster and further
      Returns:
      true if this world has the above mechanics
    • getSeaLevel

      int getSeaLevel()
      Gets the sea level for this world.

      This is often half of WorldInfo.getMaxHeight()

      Returns:
      Sea level
    • getKeepSpawnInMemory

      @Deprecated boolean getKeepSpawnInMemory()
      Deprecated.
      use GameRule.SPAWN_CHUNK_RADIUS for finer control
      Gets whether the world's spawn area should be kept loaded into memory or not.
      Returns:
      true if the world's spawn area will be kept loaded into memory.
    • setKeepSpawnInMemory

      @Deprecated void setKeepSpawnInMemory(boolean keepLoaded)
      Deprecated.
      use GameRule.SPAWN_CHUNK_RADIUS for finer control
      Sets whether the world's spawn area should be kept loaded into memory or not.
      Parameters:
      keepLoaded - if true then the world's spawn area will be kept loaded into memory.
    • isAutoSave

      boolean isAutoSave()
      Gets whether or not the world will automatically save
      Returns:
      true if the world will automatically save, otherwise false
    • setAutoSave

      void setAutoSave(boolean value)
      Sets whether or not the world will automatically save
      Parameters:
      value - true if the world should automatically save, otherwise false
    • setDifficulty

      void setDifficulty(@NotNull @NotNull Difficulty difficulty)
      Sets the Difficulty of the world.
      Parameters:
      difficulty - the new difficulty you want to set the world to
    • getDifficulty

      @NotNull @NotNull Difficulty getDifficulty()
      Gets the Difficulty of the world.
      Returns:
      The difficulty of the world.
    • getViewDistance

      int getViewDistance()
      Returns the view distance used for this world.
      Returns:
      the view distance used for this world
    • getSimulationDistance

      int getSimulationDistance()
      Returns the simulation distance used for this world.
      Returns:
      the simulation distance used for this world
    • getWorldFolder

      @NotNull @NotNull File getWorldFolder()
      Gets the folder of this world on disk.
      Returns:
      The folder of this world.
    • getWorldType

      Deprecated.
      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.
      Gets the type of this world.
      Returns:
      Type of this world.
    • canGenerateStructures

      boolean canGenerateStructures()
      Gets whether or not structures are being generated.
      Returns:
      True if structures are being generated.
    • isHardcore

      boolean isHardcore()
      Gets whether the world is hardcore or not. In a hardcore world the difficulty is locked to hard.
      Returns:
      hardcore status
    • setHardcore

      void setHardcore(boolean hardcore)
      Sets whether the world is hardcore or not. In a hardcore world the difficulty is locked to hard.
      Parameters:
      hardcore - Whether the world is hardcore
    • getTicksPerAnimalSpawns

      @Deprecated long getTicksPerAnimalSpawns()
      Deprecated.
      Deprecated in favor of getTicksPerSpawns(SpawnCategory)
      Gets the world's ticks per animal spawns value

      This value determines how many ticks there are between attempts to spawn animals.

      Example Usage:

      • A value of 1 will mean the server will attempt to spawn animals in this world every tick.
      • A value of 400 will mean the server will attempt to spawn animals in this world every 400th tick.
      • A value below 0 will be reset back to Minecraft's default.

      Note: If set to 0, animal spawning will be disabled for this world. We recommend using setSpawnFlags(boolean, boolean) to control this instead.

      Minecraft default: 400.

      Returns:
      The world's ticks per animal spawns value
    • setTicksPerAnimalSpawns

      @Deprecated void setTicksPerAnimalSpawns(int ticksPerAnimalSpawns)
      Deprecated.
      Sets the world's ticks per animal spawns value

      This value determines how many ticks there are between attempts to spawn animals.

      Example Usage:

      • A value of 1 will mean the server will attempt to spawn animals in this world every tick.
      • A value of 400 will mean the server will attempt to spawn animals in this world every 400th tick.
      • A value below 0 will be reset back to Minecraft's default.

      Note: If set to 0, animal spawning will be disabled for this world. We recommend using setSpawnFlags(boolean, boolean) to control this instead.

      Minecraft default: 400.

      Parameters:
      ticksPerAnimalSpawns - the ticks per animal spawns value you want to set the world to
    • getTicksPerMonsterSpawns

      @Deprecated long getTicksPerMonsterSpawns()
      Deprecated.
      Deprecated in favor of getTicksPerSpawns(SpawnCategory)
      Gets the world's ticks per monster spawns value

      This value determines how many ticks there are between attempts to spawn monsters.

      Example Usage:

      • A value of 1 will mean the server will attempt to spawn monsters in this world every tick.
      • A value of 400 will mean the server will attempt to spawn monsters in this world every 400th tick.
      • A value below 0 will be reset back to Minecraft's default.

      Note: If set to 0, monsters spawning will be disabled for this world. We recommend using setSpawnFlags(boolean, boolean) to control this instead.

      Minecraft default: 1.

      Returns:
      The world's ticks per monster spawns value
    • setTicksPerMonsterSpawns

      @Deprecated void setTicksPerMonsterSpawns(int ticksPerMonsterSpawns)
      Deprecated.
      Sets the world's ticks per monster spawns value

      This value determines how many ticks there are between attempts to spawn monsters.

      Example Usage:

      • A value of 1 will mean the server will attempt to spawn monsters in this world on every tick.
      • A value of 400 will mean the server will attempt to spawn monsters in this world every 400th tick.
      • A value below 0 will be reset back to Minecraft's default.

      Note: If set to 0, monsters spawning will be disabled for this world. We recommend using setSpawnFlags(boolean, boolean) to control this instead.

      Minecraft default: 1.

      Parameters:
      ticksPerMonsterSpawns - the ticks per monster spawns value you want to set the world to
    • getTicksPerWaterSpawns

      @Deprecated long getTicksPerWaterSpawns()
      Deprecated.
      Deprecated in favor of getTicksPerSpawns(SpawnCategory)
      Gets the world's ticks per water mob spawns value

      This value determines how many ticks there are between attempts to spawn water mobs.

      Example Usage:

      • A value of 1 will mean the server will attempt to spawn water mobs in this world every tick.
      • A value of 400 will mean the server will attempt to spawn water mobs in this world every 400th tick.
      • A value below 0 will be reset back to Minecraft's default.

      Note: If set to 0, water mobs spawning will be disabled for this world.

      Minecraft default: 1.

      Returns:
      The world's ticks per water mob spawns value
    • setTicksPerWaterSpawns

      @Deprecated void setTicksPerWaterSpawns(int ticksPerWaterSpawns)
      Deprecated.
      Sets the world's ticks per water mob spawns value

      This value determines how many ticks there are between attempts to spawn water mobs.

      Example Usage:

      • A value of 1 will mean the server will attempt to spawn water mobs in this world on every tick.
      • A value of 400 will mean the server will attempt to spawn water mobs in this world every 400th tick.
      • A value below 0 will be reset back to Minecraft's default.

      Note: If set to 0, water mobs spawning will be disabled for this world.

      Minecraft default: 1.

      Parameters:
      ticksPerWaterSpawns - the ticks per water mob spawns value you want to set the world to
    • getTicksPerWaterAmbientSpawns

      @Deprecated long getTicksPerWaterAmbientSpawns()
      Deprecated.
      Deprecated in favor of getTicksPerSpawns(SpawnCategory)
      Gets the default ticks per water ambient mob spawns value.

      Example Usage:

      • A value of 1 will mean the server will attempt to spawn water ambient mobs every tick.
      • A value of 400 will mean the server will attempt to spawn water ambient mobs every 400th tick.
      • A value below 0 will be reset back to Minecraft's default.

      Note: If set to 0, ambient mobs spawning will be disabled.

      Minecraft default: 1.

      Returns:
      the default ticks per water ambient mobs spawn value
    • setTicksPerWaterAmbientSpawns

      @Deprecated void setTicksPerWaterAmbientSpawns(int ticksPerAmbientSpawns)
      Deprecated.
      Sets the world's ticks per water ambient mob spawns value

      This value determines how many ticks there are between attempts to spawn water ambient mobs.

      Example Usage:

      • A value of 1 will mean the server will attempt to spawn water ambient mobs in this world on every tick.
      • A value of 400 will mean the server will attempt to spawn water ambient mobs in this world every 400th tick.
      • A value below 0 will be reset back to Minecraft's default.

      Note: If set to 0, water ambient mobs spawning will be disabled for this world.

      Minecraft default: 1.

      Parameters:
      ticksPerAmbientSpawns - the ticks per water ambient mob spawns value you want to set the world to
    • getTicksPerWaterUndergroundCreatureSpawns

      @Deprecated long getTicksPerWaterUndergroundCreatureSpawns()
      Deprecated.
      Deprecated in favor of getTicksPerSpawns(SpawnCategory)
      Gets the default ticks per water underground creature spawns value.

      Example Usage:

      • A value of 1 will mean the server will attempt to spawn water underground creature every tick.
      • A value of 400 will mean the server will attempt to spawn water underground creature every 400th tick.
      • A value below 0 will be reset back to Minecraft's default.

      Note: If set to 0, water underground creature spawning will be disabled.

      Minecraft default: 1.

      Returns:
      the default ticks per water underground creature spawn value
    • setTicksPerWaterUndergroundCreatureSpawns

      @Deprecated void setTicksPerWaterUndergroundCreatureSpawns(int ticksPerWaterUndergroundCreatureSpawns)
      Deprecated.
      Sets the world's ticks per water underground creature spawns value

      This value determines how many ticks there are between attempts to spawn water underground creature.

      Example Usage:

      • A value of 1 will mean the server will attempt to spawn water underground creature in this world on every tick.
      • A value of 400 will mean the server will attempt to spawn water underground creature in this world every 400th tick.
      • A value below 0 will be reset back to Minecraft's default.

      Note: If set to 0, water underground creature spawning will be disabled for this world.

      Minecraft default: 1.

      Parameters:
      ticksPerWaterUndergroundCreatureSpawns - the ticks per water underground creature spawns value you want to set the world to
    • getTicksPerAmbientSpawns

      @Deprecated long getTicksPerAmbientSpawns()
      Deprecated.
      Deprecated in favor of getTicksPerSpawns(SpawnCategory)
      Gets the world's ticks per ambient mob spawns value

      This value determines how many ticks there are between attempts to spawn ambient mobs.

      Example Usage:

      • A value of 1 will mean the server will attempt to spawn ambient mobs in this world every tick.
      • A value of 400 will mean the server will attempt to spawn ambient mobs in this world every 400th tick.
      • A value below 0 will be reset back to Minecraft's default.

      Note: If set to 0, ambient mobs spawning will be disabled for this world.

      Minecraft default: 1.

      Returns:
      the default ticks per ambient mobs spawn value
    • setTicksPerAmbientSpawns

      @Deprecated void setTicksPerAmbientSpawns(int ticksPerAmbientSpawns)
      Deprecated.
      Sets the world's ticks per ambient mob spawns value

      This value determines how many ticks there are between attempts to spawn ambient mobs.

      Example Usage:

      • A value of 1 will mean the server will attempt to spawn ambient mobs in this world on every tick.
      • A value of 400 will mean the server will attempt to spawn ambient mobs in this world every 400th tick.
      • A value below 0 will be reset back to Minecraft's default.

      Note: If set to 0, ambient mobs spawning will be disabled for this world.

      Minecraft default: 1.

      Parameters:
      ticksPerAmbientSpawns - the ticks per ambient mob spawns value you want to set the world to
    • getTicksPerSpawns

      long getTicksPerSpawns(@NotNull @NotNull SpawnCategory spawnCategory)
      Gets the world's ticks per SpawnCategory mob spawns value

      This value determines how many ticks there are between attempts to spawn SpawnCategory mobs.

      Example Usage:

      • A value of 1 will mean the server will attempt to spawn SpawnCategory mobs in this world every tick.
      • A value of 400 will mean the server will attempt to spawn SpawnCategory mobs in this world every 400th tick.
      • A value below 0 will be reset back to Minecraft's default.

      Note: If set to 0, SpawnCategory mobs spawning will be disabled for this world.

      Minecraft default: 1.

      Parameters:
      spawnCategory - the category spawn
      Returns:
      The world's ticks per SpawnCategory mob spawns value
    • setTicksPerSpawns

      void setTicksPerSpawns(@NotNull @NotNull SpawnCategory spawnCategory, int ticksPerCategorySpawn)
      Sets the world's ticks per SpawnCategory mob spawns value

      This value determines how many ticks there are between attempts to spawn SpawnCategory mobs.

      Example Usage:

      • A value of 1 will mean the server will attempt to spawn SpawnCategory mobs in this world on every tick.
      • A value of 400 will mean the server will attempt to spawn SpawnCategory mobs in this world every 400th tick.
      • A value below 0 will be reset back to Minecraft's default.

      Note: If set to 0, SpawnCategory mobs spawning will be disabled for this world.

      Minecraft default: 1.

      Parameters:
      spawnCategory - the category spawn
      ticksPerCategorySpawn - the ticks per SpawnCategory mob spawns value you want to set the world to
    • getMonsterSpawnLimit

      @Deprecated int getMonsterSpawnLimit()
      Deprecated.
      Deprecated in favor of getSpawnLimit(SpawnCategory)
      Gets limit for number of monsters that can spawn in a chunk in this world
      Returns:
      The monster spawn limit
    • setMonsterSpawnLimit

      @Deprecated void setMonsterSpawnLimit(int limit)
      Deprecated.
      Deprecated in favor of setSpawnLimit(SpawnCategory, int)
      Sets the limit for number of monsters that can spawn in a chunk in this world

      Note: If set to a negative number the world will use the server-wide spawn limit instead.

      Parameters:
      limit - the new mob limit
    • getAnimalSpawnLimit

      @Deprecated int getAnimalSpawnLimit()
      Deprecated.
      Deprecated in favor of getSpawnLimit(SpawnCategory)
      Gets the limit for number of animals that can spawn in a chunk in this world
      Returns:
      The animal spawn limit
    • setAnimalSpawnLimit

      @Deprecated void setAnimalSpawnLimit(int limit)
      Deprecated.
      Deprecated in favor of getSpawnLimit(SpawnCategory)
      Sets the limit for number of animals that can spawn in a chunk in this world

      Note: If set to a negative number the world will use the server-wide spawn limit instead.

      Parameters:
      limit - the new mob limit
    • getWaterAnimalSpawnLimit

      @Deprecated int getWaterAnimalSpawnLimit()
      Deprecated.
      Deprecated in favor of getSpawnLimit(SpawnCategory)
      Gets the limit for number of water animals that can spawn in a chunk in this world
      Returns:
      The water animal spawn limit
    • setWaterAnimalSpawnLimit

      @Deprecated void setWaterAnimalSpawnLimit(int limit)
      Deprecated.
      Deprecated in favor of setSpawnLimit(SpawnCategory, int)
      Sets the limit for number of water animals that can spawn in a chunk in this world

      Note: If set to a negative number the world will use the server-wide spawn limit instead.

      Parameters:
      limit - the new mob limit
    • getWaterUndergroundCreatureSpawnLimit

      @Deprecated int getWaterUndergroundCreatureSpawnLimit()
      Deprecated.
      Deprecated in favor of getSpawnLimit(SpawnCategory)
      Gets the limit for number of water underground creature that can spawn in a chunk in this world
      Returns:
      The water underground creature spawn limit
    • setWaterUndergroundCreatureSpawnLimit

      @Deprecated void setWaterUndergroundCreatureSpawnLimit(int limit)
      Deprecated.
      Deprecated in favor of setSpawnLimit(SpawnCategory, int)
      Sets the limit for number of water underground creature that can spawn in a chunk in this world

      Note: If set to a negative number the world will use the server-wide spawn limit instead.

      Parameters:
      limit - the new mob limit
    • getWaterAmbientSpawnLimit

      @Deprecated int getWaterAmbientSpawnLimit()
      Deprecated.
      Deprecated in favor of getSpawnLimit(SpawnCategory)
      Gets user-specified limit for number of water ambient mobs that can spawn in a chunk.
      Returns:
      the water ambient spawn limit
    • setWaterAmbientSpawnLimit

      @Deprecated void setWaterAmbientSpawnLimit(int limit)
      Deprecated.
      Deprecated in favor of setSpawnLimit(SpawnCategory, int)
      Sets the limit for number of water ambient mobs that can spawn in a chunk in this world

      Note: If set to a negative number the world will use the server-wide spawn limit instead.

      Parameters:
      limit - the new mob limit
    • getAmbientSpawnLimit

      @Deprecated int getAmbientSpawnLimit()
      Deprecated.
      Deprecated in favor of getSpawnLimit(SpawnCategory)
      Gets the limit for number of ambient mobs that can spawn in a chunk in this world
      Returns:
      The ambient spawn limit
    • setAmbientSpawnLimit

      @Deprecated void setAmbientSpawnLimit(int limit)
      Deprecated.
      Deprecated in favor of setSpawnLimit(SpawnCategory, int)
      Sets the limit for number of ambient mobs that can spawn in a chunk in this world

      Note: If set to a negative number the world will use the server-wide spawn limit instead.

      Parameters:
      limit - the new mob limit
    • getSpawnLimit

      int getSpawnLimit(@NotNull @NotNull SpawnCategory spawnCategory)
      Gets the limit for number of SpawnCategory entities that can spawn in a chunk in this world
      Parameters:
      spawnCategory - the entity category
      Returns:
      The ambient spawn limit
    • setSpawnLimit

      void setSpawnLimit(@NotNull @NotNull SpawnCategory spawnCategory, int limit)
      Sets the limit for number of SpawnCategory entities that can spawn in a chunk in this world

      Note: If set to a negative number the world will use the server-wide spawn limit instead.

      Parameters:
      spawnCategory - the entity category
      limit - the new mob limit
    • playNote

      void playNote(@NotNull @NotNull Location loc, @NotNull @NotNull Instrument instrument, @NotNull @NotNull Note note)
      Play a note at the provided Location in the World.
      This will work with cake.

      This method will fail silently when called with Instrument.CUSTOM_HEAD.

      Parameters:
      loc - The location to play the note
      instrument - The instrument
      note - The note
    • playSound

      void playSound(@NotNull @NotNull Location location, @NotNull @NotNull Sound sound, float volume, float pitch)
      Play a Sound at the provided Location in the World.

      This function will fail silently if Location or Sound are null.

      Parameters:
      location - The location to play the sound
      sound - The sound to play
      volume - The volume of the sound
      pitch - The pitch of the sound
    • playSound

      void playSound(@NotNull @NotNull Location location, @NotNull @NotNull String sound, float volume, float pitch)
      Play a Sound at the provided Location in the World.

      This function will fail silently if Location or Sound are null. No sound will be heard by the players if their clients do not have the respective sound for the value passed.

      Parameters:
      location - The location to play the sound
      sound - The internal sound name to play
      volume - The volume of the sound
      pitch - The pitch of the sound
    • playSound

      void playSound(@NotNull @NotNull Location location, @NotNull @NotNull Sound sound, @NotNull @NotNull SoundCategory category, float volume, float pitch)
      Play a Sound at the provided Location in the World.

      This function will fail silently if Location or Sound are null.

      Parameters:
      location - The location to play the sound
      sound - The sound to play
      category - the category of the sound
      volume - The volume of the sound
      pitch - The pitch of the sound
    • playSound

      void playSound(@NotNull @NotNull Location location, @NotNull @NotNull String sound, @NotNull @NotNull SoundCategory category, float volume, float pitch)
      Play a Sound at the provided Location in the World.

      This function will fail silently if Location or Sound are null. No sound will be heard by the players if their clients do not have the respective sound for the value passed.

      Parameters:
      location - The location to play the sound
      sound - The internal sound name to play
      category - The category of the sound
      volume - The volume of the sound
      pitch - The pitch of the sound
    • playSound

      void playSound(@NotNull @NotNull Location location, @NotNull @NotNull Sound sound, @NotNull @NotNull SoundCategory category, float volume, float pitch, long seed)
      Play a Sound at the provided Location in the World. For sounds with multiple variations passing the same seed will always play the same variation.

      This function will fail silently if Location or Sound are null.

      Parameters:
      location - The location to play the sound
      sound - The sound to play
      category - the category of the sound
      volume - The volume of the sound
      pitch - The pitch of the sound
      seed - The seed for the sound
    • playSound

      void playSound(@NotNull @NotNull Location location, @NotNull @NotNull String sound, @NotNull @NotNull SoundCategory category, float volume, float pitch, long seed)
      Play a Sound at the provided Location in the World. For sounds with multiple variations passing the same seed will always play the same variation.

      This function will fail silently if Location or Sound are null. No sound will be heard by the players if their clients do not have the respective sound for the value passed.

      Parameters:
      location - The location to play the sound
      sound - The internal sound name to play
      category - the category of the sound
      volume - The volume of the sound
      pitch - The pitch of the sound
      seed - The seed for the sound
    • playSound

      void playSound(@NotNull @NotNull Entity entity, @NotNull @NotNull Sound sound, float volume, float pitch)
      Play a Sound at the location of the provided entity in the World.

      This function will fail silently if Entity or Sound are null.

      Parameters:
      entity - The entity to play the sound
      sound - The sound to play
      volume - The volume of the sound
      pitch - The pitch of the sound
    • playSound

      void playSound(@NotNull @NotNull Entity entity, @NotNull @NotNull String sound, float volume, float pitch)
      Play a Sound at the location of the provided entity in the World.

      This function will fail silently if Entity or Sound are null.

      Parameters:
      entity - The entity to play the sound
      sound - The sound to play
      volume - The volume of the sound
      pitch - The pitch of the sound
    • playSound

      void playSound(@NotNull @NotNull Entity entity, @NotNull @NotNull Sound sound, @NotNull @NotNull SoundCategory category, float volume, float pitch)
      Play a Sound at the location of the provided entity in the World.

      This function will fail silently if Entity or Sound are null.

      Parameters:
      entity - The entity to play the sound
      sound - The sound to play
      category - The category of the sound
      volume - The volume of the sound
      pitch - The pitch of the sound
    • playSound

      void playSound(@NotNull @NotNull Entity entity, @NotNull @NotNull String sound, @NotNull @NotNull SoundCategory category, float volume, float pitch)
      Play a Sound at the location of the provided entity in the World.

      This function will fail silently if Entity or Sound are null.

      Parameters:
      entity - The entity to play the sound
      sound - The sound to play
      category - The category of the sound
      volume - The volume of the sound
      pitch - The pitch of the sound
    • playSound

      void playSound(@NotNull @NotNull Entity entity, @NotNull @NotNull Sound sound, @NotNull @NotNull SoundCategory category, float volume, float pitch, long seed)
      Play a Sound at the location of the provided entity in the World. For sounds with multiple variations passing the same seed will always play the same variation.

      This function will fail silently if Entity or Sound are null.

      Parameters:
      entity - The entity to play the sound
      sound - The sound to play
      category - The category of the sound
      volume - The volume of the sound
      pitch - The pitch of the sound
      seed - The seed for the sound
    • playSound

      void playSound(@NotNull @NotNull Entity entity, @NotNull @NotNull String sound, @NotNull @NotNull SoundCategory category, float volume, float pitch, long seed)
      Play a Sound at the location of the provided entity in the World. For sounds with multiple variations passing the same seed will always play the same variation.

      This function will fail silently if Entity or Sound are null.

      Parameters:
      entity - The entity to play the sound
      sound - The sound to play
      category - The category of the sound
      volume - The volume of the sound
      pitch - The pitch of the sound
      seed - The seed for the sound
    • getGameRules

      @NotNull @NotNull String[] getGameRules()
      Get an array containing the names of all the GameRules.
      Returns:
      An array of GameRule names.
    • getGameRuleValue

      @Deprecated @Contract("null -> null; !null -> !null") @Nullable @Nullable String getGameRuleValue(@Nullable @Nullable String rule)
      Deprecated.
      Gets the current state of the specified rule

      Will return null if rule passed is null

      Parameters:
      rule - Rule to look up value of
      Returns:
      String value of rule
    • setGameRuleValue

      @Deprecated boolean setGameRuleValue(@NotNull @NotNull String rule, @NotNull @NotNull String value)
      Deprecated.
      Set the specified gamerule to specified value.

      The rule may attempt to validate the value passed, will return true if value was set.

      If rule is null, the function will return false.

      Parameters:
      rule - Rule to set
      value - Value to set rule to
      Returns:
      True if rule was set
    • isGameRule

      boolean isGameRule(@NotNull @NotNull String rule)
      Checks if string is a valid game rule
      Parameters:
      rule - Rule to check
      Returns:
      True if rule exists
    • getGameRuleValue

      @Nullable <T> T getGameRuleValue(@NotNull @NotNull GameRule<T> rule)
      Get the current value for a given GameRule.
      Type Parameters:
      T - the GameRule's type
      Parameters:
      rule - the GameRule to check
      Returns:
      the current value
    • getGameRuleDefault

      @Nullable <T> T getGameRuleDefault(@NotNull @NotNull GameRule<T> rule)
      Get the default value for a given GameRule. This value is not guaranteed to match the current value.
      Type Parameters:
      T - the type of GameRule
      Parameters:
      rule - the rule to return a default value for
      Returns:
      the default value
    • setGameRule

      <T> boolean setGameRule(@NotNull @NotNull GameRule<T> rule, @NotNull T newValue)
      Set the given GameRule's new value.
      Type Parameters:
      T - the value type of the GameRule
      Parameters:
      rule - the GameRule to update
      newValue - the new value
      Returns:
      true if the value was successfully set
    • getWorldBorder

      @NotNull @NotNull WorldBorder getWorldBorder()
      Gets the world border for this world.
      Returns:
      The world border for this world.
    • spawnParticle

      void spawnParticle(@NotNull @NotNull Particle particle, @NotNull @NotNull Location location, int count)
      Spawns the particle (the number of times specified by count) at the target location.
      Parameters:
      particle - the particle to spawn
      location - the location to spawn at
      count - the number of particles
    • spawnParticle

      void spawnParticle(@NotNull @NotNull Particle particle, double x, double y, double z, int count)
      Spawns the particle (the number of times specified by count) at the target location.
      Parameters:
      particle - the particle to spawn
      x - the position on the x axis to spawn at
      y - the position on the y axis to spawn at
      z - the position on the z axis to spawn at
      count - the number of particles
    • spawnParticle

      <T> void spawnParticle(@NotNull @NotNull Particle particle, @NotNull @NotNull Location location, int count, @Nullable T data)
      Spawns the particle (the number of times specified by count) at the target location.
      Type Parameters:
      T - type of particle data (see Particle.getDataType()
      Parameters:
      particle - the particle to spawn
      location - the location to spawn at
      count - the number of particles
      data - the data to use for the particle or null, the type of this depends on Particle.getDataType()
    • spawnParticle

      <T> void spawnParticle(@NotNull @NotNull Particle particle, double x, double y, double z, int count, @Nullable T data)
      Spawns the particle (the number of times specified by count) at the target location.
      Type Parameters:
      T - type of particle data (see Particle.getDataType()
      Parameters:
      particle - the particle to spawn
      x - the position on the x axis to spawn at
      y - the position on the y axis to spawn at
      z - the position on the z axis to spawn at
      count - the number of particles
      data - the data to use for the particle or null, the type of this depends on Particle.getDataType()
    • spawnParticle

      void spawnParticle(@NotNull @NotNull Particle particle, @NotNull @NotNull Location location, int count, double offsetX, double offsetY, double offsetZ)
      Spawns the particle (the number of times specified by count) at the target location. The position of each particle will be randomized positively and negatively by the offset parameters on each axis.
      Parameters:
      particle - the particle to spawn
      location - the location to spawn at
      count - the number of particles
      offsetX - the maximum random offset on the X axis
      offsetY - the maximum random offset on the Y axis
      offsetZ - the maximum random offset on the Z axis
    • spawnParticle

      void spawnParticle(@NotNull @NotNull Particle particle, double x, double y, double z, int count, double offsetX, double offsetY, double offsetZ)
      Spawns the particle (the number of times specified by count) at the target location. The position of each particle will be randomized positively and negatively by the offset parameters on each axis.
      Parameters:
      particle - the particle to spawn
      x - the position on the x axis to spawn at
      y - the position on the y axis to spawn at
      z - the position on the z axis to spawn at
      count - the number of particles
      offsetX - the maximum random offset on the X axis
      offsetY - the maximum random offset on the Y axis
      offsetZ - the maximum random offset on the Z axis
    • spawnParticle

      <T> void spawnParticle(@NotNull @NotNull Particle particle, @NotNull @NotNull Location location, int count, double offsetX, double offsetY, double offsetZ, @Nullable T data)
      Spawns the particle (the number of times specified by count) at the target location. The position of each particle will be randomized positively and negatively by the offset parameters on each axis.
      Type Parameters:
      T - type of particle data (see Particle.getDataType()
      Parameters:
      particle - the particle to spawn
      location - the location to spawn at
      count - the number of particles
      offsetX - the maximum random offset on the X axis
      offsetY - the maximum random offset on the Y axis
      offsetZ - the maximum random offset on the Z axis
      data - the data to use for the particle or null, the type of this depends on Particle.getDataType()
    • spawnParticle

      <T> void spawnParticle(@NotNull @NotNull Particle particle, double x, double y, double z, int count, double offsetX, double offsetY, double offsetZ, @Nullable T data)
      Spawns the particle (the number of times specified by count) at the target location. The position of each particle will be randomized positively and negatively by the offset parameters on each axis.
      Type Parameters:
      T - type of particle data (see Particle.getDataType()
      Parameters:
      particle - the particle to spawn
      x - the position on the x axis to spawn at
      y - the position on the y axis to spawn at
      z - the position on the z axis to spawn at
      count - the number of particles
      offsetX - the maximum random offset on the X axis
      offsetY - the maximum random offset on the Y axis
      offsetZ - the maximum random offset on the Z axis
      data - the data to use for the particle or null, the type of this depends on Particle.getDataType()
    • spawnParticle

      void spawnParticle(@NotNull @NotNull Particle particle, @NotNull @NotNull Location location, int count, double offsetX, double offsetY, double offsetZ, double extra)
      Spawns the particle (the number of times specified by count) at the target location. The position of each particle will be randomized positively and negatively by the offset parameters on each axis.
      Parameters:
      particle - the particle to spawn
      location - the location to spawn at
      count - the number of particles
      offsetX - the maximum random offset on the X axis
      offsetY - the maximum random offset on the Y axis
      offsetZ - the maximum random offset on the Z axis
      extra - the extra data for this particle, depends on the particle used (normally speed)
    • spawnParticle

      void spawnParticle(@NotNull @NotNull Particle particle, double x, double y, double z, int count, double offsetX, double offsetY, double offsetZ, double extra)
      Spawns the particle (the number of times specified by count) at the target location. The position of each particle will be randomized positively and negatively by the offset parameters on each axis.
      Parameters:
      particle - the particle to spawn
      x - the position on the x axis to spawn at
      y - the position on the y axis to spawn at
      z - the position on the z axis to spawn at
      count - the number of particles
      offsetX - the maximum random offset on the X axis
      offsetY - the maximum random offset on the Y axis
      offsetZ - the maximum random offset on the Z axis
      extra - the extra data for this particle, depends on the particle used (normally speed)
    • spawnParticle

      <T> void spawnParticle(@NotNull @NotNull Particle particle, @NotNull @NotNull Location location, int count, double offsetX, double offsetY, double offsetZ, double extra, @Nullable T data)
      Spawns the particle (the number of times specified by count) at the target location. The position of each particle will be randomized positively and negatively by the offset parameters on each axis.
      Type Parameters:
      T - type of particle data (see Particle.getDataType()
      Parameters:
      particle - the particle to spawn
      location - the location to spawn at
      count - the number of particles
      offsetX - the maximum random offset on the X axis
      offsetY - the maximum random offset on the Y axis
      offsetZ - the maximum random offset on the Z axis
      extra - the extra data for this particle, depends on the particle used (normally speed)
      data - the data to use for the particle or null, the type of this depends on Particle.getDataType()
    • spawnParticle

      default <T> void spawnParticle(@NotNull @NotNull Particle particle, double x, double y, double z, int count, double offsetX, double offsetY, double offsetZ, double extra, @Nullable T data)
      Spawns the particle (the number of times specified by count) at the target location. The position of each particle will be randomized positively and negatively by the offset parameters on each axis.
      Type Parameters:
      T - type of particle data (see Particle.getDataType()
      Parameters:
      particle - the particle to spawn
      x - the position on the x axis to spawn at
      y - the position on the y axis to spawn at
      z - the position on the z axis to spawn at
      count - the number of particles
      offsetX - the maximum random offset on the X axis
      offsetY - the maximum random offset on the Y axis
      offsetZ - the maximum random offset on the Z axis
      extra - the extra data for this particle, depends on the particle used (normally speed)
      data - the data to use for the particle or null, the type of this depends on Particle.getDataType()
    • spawnParticle

      default <T> void spawnParticle(@NotNull @NotNull Particle particle, @Nullable @Nullable List<Player> receivers, @NotNull @NotNull Player source, double x, double y, double z, int count, double offsetX, double offsetY, double offsetZ, double extra, @Nullable T data)
      Spawns the particle (the number of times specified by count) at the target location. The position of each particle will be randomized positively and negatively by the offset parameters on each axis.
      Type Parameters:
      T - Type
      Parameters:
      particle - the particle to spawn
      receivers - List of players to receive the particles, or null for all in world
      source - Source of the particles to be used in visibility checks, or null if no player source
      x - the position on the x axis to spawn at
      y - the position on the y axis to spawn at
      z - the position on the z axis to spawn at
      count - the number of particles
      offsetX - the maximum random offset on the X axis
      offsetY - the maximum random offset on the Y axis
      offsetZ - the maximum random offset on the Z axis
      extra - the extra data for this particle, depends on the particle used (normally speed)
      data - the data to use for the particle or null, the type of this depends on Particle.getDataType()
    • spawnParticle

      <T> void spawnParticle(@NotNull @NotNull Particle particle, @Nullable @Nullable List<Player> receivers, @Nullable @Nullable Player source, double x, double y, double z, int count, double offsetX, double offsetY, double offsetZ, double extra, @Nullable T data, boolean force)
      Spawns the particle (the number of times specified by count) at the target location. The position of each particle will be randomized positively and negatively by the offset parameters on each axis.
      Type Parameters:
      T - Type
      Parameters:
      particle - the particle to spawn
      receivers - List of players to receive the particles, or null for all in world
      source - Source of the particles to be used in visibility checks, or null if no player source
      x - the position on the x axis to spawn at
      y - the position on the y axis to spawn at
      z - the position on the z axis to spawn at
      count - the number of particles
      offsetX - the maximum random offset on the X axis
      offsetY - the maximum random offset on the Y axis
      offsetZ - the maximum random offset on the Z axis
      extra - the extra data for this particle, depends on the particle used (normally speed)
      data - the data to use for the particle or null, the type of this depends on Particle.getDataType()
      force - allows the particle to be seen further away from the player and shows to players using any vanilla client particle settings
    • spawnParticle

      <T> void spawnParticle(@NotNull @NotNull Particle particle, @NotNull @NotNull Location location, int count, double offsetX, double offsetY, double offsetZ, double extra, @Nullable T data, boolean force)
      Spawns the particle (the number of times specified by count) at the target location. The position of each particle will be randomized positively and negatively by the offset parameters on each axis.
      Type Parameters:
      T - type of particle data (see Particle.getDataType()
      Parameters:
      particle - the particle to spawn
      location - the location to spawn at
      count - the number of particles
      offsetX - the maximum random offset on the X axis
      offsetY - the maximum random offset on the Y axis
      offsetZ - the maximum random offset on the Z axis
      extra - the extra data for this particle, depends on the particle used (normally speed)
      data - the data to use for the particle or null, the type of this depends on Particle.getDataType()
      force - whether to send the particle to players within an extended range and encourage their client to render it regardless of settings
    • spawnParticle

      <T> void spawnParticle(@NotNull @NotNull Particle particle, double x, double y, double z, int count, double offsetX, double offsetY, double offsetZ, double extra, @Nullable T data, boolean force)
      Spawns the particle (the number of times specified by count) at the target location. The position of each particle will be randomized positively and negatively by the offset parameters on each axis.
      Type Parameters:
      T - type of particle data (see Particle.getDataType()
      Parameters:
      particle - the particle to spawn
      x - the position on the x axis to spawn at
      y - the position on the y axis to spawn at
      z - the position on the z axis to spawn at
      count - the number of particles
      offsetX - the maximum random offset on the X axis
      offsetY - the maximum random offset on the Y axis
      offsetZ - the maximum random offset on the Z axis
      extra - the extra data for this particle, depends on the particle used (normally speed)
      data - the data to use for the particle or null, the type of this depends on Particle.getDataType()
      force - whether to send the particle to players within an extended range and encourage their client to render it regardless of settings
    • locateNearestStructure

      @Nullable @Deprecated @Nullable Location locateNearestStructure(@NotNull @NotNull Location origin, @NotNull StructureType structureType, int radius, boolean findUnexplored)
      Find the closest nearby structure of a given StructureType. Finding unexplored structures can, and will, block if the world is looking in chunks that have not generated yet. This can lead to the world temporarily freezing while locating an unexplored structure.

      The radius is not a rigid square radius. Each structure may alter how many chunks to check for each iteration. Do not assume that only a radius x radius chunk area will be checked. For example, StructureType.WOODLAND_MANSION can potentially check up to 20,000 blocks away (or more) regardless of the radius used.

      This will not load or generate chunks. This can also lead to instances where the server can hang if you are only looking for unexplored structures. This is because it will keep looking further and further out in order to find the structure.

      Parameters:
      origin - where to start looking for a structure
      structureType - the type of structure to find
      radius - the radius, in chunks, around which to search
      findUnexplored - true to only find unexplored structures
      Returns:
      the closest Location, or null if no structure of the specified type exists.
      See Also:
    • locateNearestStructure

      @Nullable @Nullable StructureSearchResult locateNearestStructure(@NotNull @NotNull Location origin, @NotNull @NotNull StructureType structureType, int radius, boolean findUnexplored)
      Find the closest nearby structure of a given StructureType. Finding unexplored structures can, and will, block if the world is looking in chunks that have not generated yet. This can lead to the world temporarily freezing while locating an unexplored structure.

      The radius is not a rigid square radius. Each structure may alter how many chunks to check for each iteration. Do not assume that only a radius x radius chunk area will be checked. For example, StructureType.WOODLAND_MANSION can potentially check up to 20,000 blocks away (or more) regardless of the radius used.

      This will not load or generate chunks. This can also lead to instances where the server can hang if you are only looking for unexplored structures. This is because it will keep looking further and further out in order to find the structure.

      The difference between searching for a StructureType and a Structure is, that a StructureType can refer to multiple Structures while searching for a Structure while only search for the given Structure.

      Parameters:
      origin - where to start looking for a structure
      structureType - the type of structure to find
      radius - the radius, in chunks, around which to search
      findUnexplored - true to only find unexplored structures
      Returns:
      the closest Location and Structure, or null if no structure of the specified type exists.
      See Also:
    • locateNearestStructure

      @Nullable @Nullable StructureSearchResult locateNearestStructure(@NotNull @NotNull Location origin, @NotNull @NotNull Structure structure, int radius, boolean findUnexplored)
      Find the closest nearby structure of a given Structure. Finding unexplored structures can, and will, block if the world is looking in chunks that have not generated yet. This can lead to the world temporarily freezing while locating an unexplored structure.

      The radius is not a rigid square radius. Each structure may alter how many chunks to check for each iteration. Do not assume that only a radius x radius chunk area will be checked. For example, Structure.MANSION can potentially check up to 20,000 blocks away (or more) regardless of the radius used.

      This will not load or generate chunks. This can also lead to instances where the server can hang if you are only looking for unexplored structures. This is because it will keep looking further and further out in order to find the structure.

      The difference between searching for a StructureType and a Structure is, that a StructureType can refer to multiple Structures while searching for a Structure while only search for the given Structure.

      Parameters:
      origin - where to start looking for a structure
      structure - the structure to find
      radius - the radius, in chunks, around which to search
      findUnexplored - true to only find unexplored structures
      Returns:
      the closest Location and Structure, or null if no structure was found.
      See Also:
    • locateNearestBiome

      @Deprecated @Nullable default @Nullable Location locateNearestBiome(@NotNull @NotNull Location origin, @NotNull @NotNull Biome biome, int radius)
      Locates the nearest biome based on an origin, biome type, and radius to search. Step defaults to 8.
      Parameters:
      origin - Origin location
      biome - Biome to find
      radius - radius to search
      Returns:
      Location of biome or null if not found in specified radius
    • locateNearestBiome

      @Deprecated @Nullable default @Nullable Location locateNearestBiome(@NotNull @NotNull Location origin, @NotNull @NotNull Biome biome, int radius, int step)
      Locates the nearest biome based on an origin, biome type, and radius to search and step
      Parameters:
      origin - Origin location
      biome - Biome to find
      radius - radius to search
      step - Search step 1 would mean checking every block, 8 would be every 8th block
      Returns:
      Location of biome or null if not found in specified radius
    • getCoordinateScale

      double getCoordinateScale()
      Gets the coordinate scaling of this world.
      Returns:
      the coordinate scale
    • isFixedTime

      boolean isFixedTime()
      Checks if this world has a fixed time
      Returns:
      whether this world has fixed time
    • getInfiniburn

      Gets the collection of materials that burn infinitely in this world.
      Returns:
      the materials that will forever stay lit by fire
    • sendGameEvent

      void sendGameEvent(@Nullable @Nullable Entity sourceEntity, @NotNull @NotNull GameEvent gameEvent, @NotNull @NotNull Vector position)
      Posts a specified game event at a location
      Parameters:
      sourceEntity - optional source entity
      gameEvent - the game event to post
      position - the position in the world where to post the event to listeners
    • spigot

      Deprecated.
      Unsupported api
    • locateNearestBiome

      @Nullable @Nullable BiomeSearchResult locateNearestBiome(@NotNull @NotNull Location origin, int radius, @NotNull @NotNull Biome... biomes)
      Find the closest nearby location with a biome matching the provided Biome(s). Finding biomes can, and will, block if the world is looking in chunks that have not generated yet. This can lead to the world temporarily freezing while locating a biome.

      Note: This will not reflect changes made to the world after generation, this method only sees the biome at the time of world generation. This will not load or generate chunks.

      If multiple biomes are provided BiomeSearchResult.getBiome() will indicate which one was located.

      This method will use a horizontal interval of 32 and a vertical interval of 64, equal to the /locate command.

      Parameters:
      origin - where to start looking for a biome
      radius - the radius, in blocks, around which to search
      biomes - the biomes to search for
      Returns:
      a BiomeSearchResult containing the closest Location and Biome, or null if no biome was found.
      See Also:
    • locateNearestBiome

      @Nullable @Nullable BiomeSearchResult locateNearestBiome(@NotNull @NotNull Location origin, int radius, int horizontalInterval, int verticalInterval, @NotNull @NotNull Biome... biomes)
      Find the closest nearby location with a biome matching the provided Biome(s). Finding biomes can, and will, block if the world is looking in chunks that have not generated yet. This can lead to the world temporarily freezing while locating a biome.

      Note: This will not reflect changes made to the world after generation, this method only sees the biome at the time of world generation. This will not load or generate chunks.

      If multiple biomes are provided BiomeSearchResult.getBiome() will indicate which one was located. Higher values for horizontalInterval and verticalInterval will result in faster searches, but may lead to small biomes being missed.

      Parameters:
      origin - where to start looking for a biome
      radius - the radius, in blocks, around which to search
      horizontalInterval - the horizontal distance between each check
      verticalInterval - the vertical distance between each check
      biomes - the biomes to search for
      Returns:
      a BiomeSearchResult containing the closest Location and Biome, or null if no biome was found.
      See Also:
    • locateNearestRaid

      @Nullable @Nullable Raid locateNearestRaid(@NotNull @NotNull Location location, int radius)
      Finds the nearest raid close to the given location.
      Parameters:
      location - the origin location
      radius - the radius
      Returns:
      the closest Raid, or null if no raids were found
    • getRaid

      @Nullable @Nullable Raid getRaid(int id)
      Get a raid with the specific id from Raid.getId() from this world.
      Parameters:
      id - the id of the raid
      Returns:
      the raid or null if none with that id
    • getRaids

      @NotNull @NotNull List<Raid> getRaids()
      Gets all raids that are going on over this world.
      Returns:
      the list of all active raids
    • getEnderDragonBattle

      @Nullable @Nullable DragonBattle getEnderDragonBattle()
      Get the DragonBattle associated with this world. If this world's environment is not World.Environment.THE_END, null will be returned.

      If an end world, a dragon battle instance will be returned regardless of whether or not a dragon is present in the world or a fight sequence has been activated. The dragon battle instance acts as a state holder.

      Returns:
      the dragon battle instance
    • getLocalDifficultyAt

      float getLocalDifficultyAt(@NotNull @NotNull Location location)
      Gets the local difficulty (based on inhabited time) at a location
      Parameters:
      location - Location to check
      Returns:
      The local difficulty
    • sendBlockHighlight

      void sendBlockHighlight(@NotNull @NotNull Location location, int duration)
      Creates debug block highlight on specified block location and show it to all players on this world.

      Clients may be inconsistent in displaying it.

      Parameters:
      location - Location to highlight
      duration - Duration for highlight to show in milliseconds
    • sendBlockHighlight

      void sendBlockHighlight(@NotNull @NotNull Location location, int duration, int argb)
      Creates debug block highlight on specified block location and show it to all players on this world.

      Clients may be inconsistent in displaying it.

      Parameters:
      location - Location to highlight
      duration - Duration for highlight to show in milliseconds
      argb - Color of the highlight. ARGB int. Will be ignored on some versions of vanilla client
    • sendBlockHighlight

      void sendBlockHighlight(@NotNull @NotNull Location location, int duration, @NotNull @NotNull String text)
      Creates debug block highlight on specified block location and show it to all players on this world.

      Clients may be inconsistent in displaying it.

      Parameters:
      location - Location to highlight
      duration - Duration for highlight to show in milliseconds
      text - Text to show above the highlight
    • sendBlockHighlight

      void sendBlockHighlight(@NotNull @NotNull Location location, int duration, @NotNull @NotNull String text, int argb)
      Creates debug block highlight on specified block location and show it to all players on this world.

      Clients may be inconsistent in displaying it.

      Parameters:
      location - Location to highlight
      duration - Duration for highlight to show in milliseconds
      text - Text to show above the highlight
      argb - Color of the highlight. ARGB int. Will be ignored on some versions of vanilla client
    • sendBlockHighlight

      void sendBlockHighlight(@NotNull @NotNull Location location, int duration, @NotNull Color color, int transparency)
      Creates debug block highlight on specified block location and show it to all players on this world.

      Clients may be inconsistent in displaying it.

      Parameters:
      location - Location to highlight
      duration - Duration for highlight to show in milliseconds
      color - Color of the highlight. Will be ignored on some versions of vanilla client
      transparency - Transparency of the highlight
      Throws:
      IllegalArgumentException - If transparency is outside 0-255 range
    • sendBlockHighlight

      void sendBlockHighlight(@NotNull @NotNull Location location, int duration, @NotNull @NotNull String text, @NotNull Color color, int transparency)
      Creates debug block highlight on specified block location and show it to all players on this world.

      Clients may be inconsistent in displaying it.

      Parameters:
      location - Location to highlight
      duration - Duration for highlight to show in milliseconds
      text - Text to show above the highlight
      color - Color of the highlight. Will be ignored on some versions of vanilla client
      transparency - Transparency of the highlight
      Throws:
      IllegalArgumentException - If transparency is outside 0-255 range
    • clearBlockHighlights

      void clearBlockHighlights()
      Clears all debug block highlights for all players on this world.
    • getFeatureFlags

      @NotNull @NotNull Set<FeatureFlag> getFeatureFlags()
      Get all FeatureFlag enabled in this world.
      Specified by:
      getFeatureFlags in interface FeatureFlagSetHolder
      Returns:
      all enabled FeatureFlag
    • setViewDistance

      void setViewDistance(int viewDistance)
      Sets the view distance for this world.
      Parameters:
      viewDistance - view distance in [2, 32]
    • setSimulationDistance

      void setSimulationDistance(int simulationDistance)
      Sets the simulation distance for this world.
      Parameters:
      simulationDistance - simulation distance in [2, 32]
    • getNoTickViewDistance

      @Deprecated default int getNoTickViewDistance()
      Deprecated.
      Returns the no-tick view distance for this world.

      No-tick view distance is the view distance where chunks will load, however the chunks and their entities will not be set to tick.

      Returns:
      The no-tick view distance for this world.
    • setNoTickViewDistance

      @Deprecated default void setNoTickViewDistance(int viewDistance)
      Deprecated.
      Sets the no-tick view distance for this world.

      No-tick view distance is the view distance where chunks will load, however the chunks and their entities will not be set to tick.

      Parameters:
      viewDistance - view distance in [2, 32]
    • getSendViewDistance

      int getSendViewDistance()
      Gets the sending view distance for this world.

      Sending view distance is the view distance where chunks will load in for players in this world.

      Returns:
      The sending view distance for this world.
    • setSendViewDistance

      void setSendViewDistance(int viewDistance)
      Sets the sending view distance for this world.

      Sending view distance is the view distance where chunks will load in for players in this world.

      Parameters:
      viewDistance - view distance in [2, 32] or -1
    • getStructures

      @NotNull @NotNull Collection<GeneratedStructure> getStructures(int x, int z)
      Gets all generated structures that intersect the chunk at the given coordinates.
      If no structures are present an empty collection will be returned.
      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      Returns:
      a collection of placed structures in the chunk at the given coordinates
    • getStructures

      @NotNull @NotNull Collection<GeneratedStructure> getStructures(int x, int z, @NotNull @NotNull Structure structure)
      Gets all generated structures of a given Structure that intersect the chunk at the given coordinates.
      If no structures are present an empty collection will be returned.
      Parameters:
      x - X-coordinate of the chunk
      z - Z-coordinate of the chunk
      structure - the structure to find
      Returns:
      a collection of placed structures in the chunk at the given coordinates