Package org.bukkit

Interface RegionAccessor

All Superinterfaces:
net.kyori.adventure.key.Keyed, Keyed
All Known Subinterfaces:
LimitedRegion, World

public interface RegionAccessor extends Keyed
A RegionAccessor gives access to getting, modifying and spawning Biome, BlockState and Entity, as well as generating some basic structures.
  • Method Details

    • getBiome

      Gets the Biome at the given Location.
      Parameters:
      location - the location of the biome
      Returns:
      Biome at the given location
      See Also:
    • getBiome

      @NotNull @NotNull Biome getBiome(int x, int y, int z)
      Gets the Biome at the given coordinates.
      Parameters:
      x - X-coordinate of the block
      y - Y-coordinate of the block
      z - Z-coordinate of the block
      Returns:
      Biome at the given coordinates
      See Also:
    • getComputedBiome

      @NotNull @NotNull Biome getComputedBiome(int x, int y, int z)
      Gets the computed Biome at the given coordinates.

      The computed Biome is the Biome as seen by clients for rendering purposes and in the "F3" debug menu. This is computed by looking at the noise biome at this and surrounding quarts and applying complex math operations.

      Most other Biome-related methods named getBiome, setBiome, and similar operate on the "noise biome", which is stored per-quart, or in other words, 1 Biome per 4x4x4 block region. This is how Biomes are currently generated and stored on disk.

      Parameters:
      x - X-coordinate of the block
      y - Y-coordinate of the block
      z - Z-coordinate of the block
      Returns:
      Biome at the given coordinates
    • setBiome

      void setBiome(@NotNull @NotNull Location location, @NotNull @NotNull Biome biome)
      Sets the Biome at the given Location.
      Parameters:
      location - the location of the biome
      biome - New Biome type for this block
    • setBiome

      void setBiome(int x, int y, int z, @NotNull @NotNull Biome biome)
      Sets the Biome for the given block coordinates
      Parameters:
      x - X-coordinate of the block
      y - Y-coordinate of the block
      z - Z-coordinate of the block
      biome - New Biome type for this block
    • getBlockState

      Gets the BlockState at the given Location.
      Parameters:
      location - The location of the block state
      Returns:
      Block state at the given location
    • getBlockState

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

      Gets the BlockData at the given Location.
      Parameters:
      location - The location of the block data
      Returns:
      Block data at the given location
    • getBlockData

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

      Gets the type of the block at the given Location.
      Parameters:
      location - The location of the block
      Returns:
      Material at the given coordinates
    • getType

      @NotNull @NotNull Material getType(int x, int y, int z)
      Gets the type of 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:
      Material at the given coordinates
    • setBlockData

      void setBlockData(@NotNull @NotNull Location location, @NotNull @NotNull BlockData blockData)
      Sets the BlockData at the given Location.
      Parameters:
      location - The location of the block
      blockData - The block data to set the block to
    • setBlockData

      void setBlockData(int x, int y, int z, @NotNull @NotNull BlockData blockData)
      Sets the BlockData at the given coordinates.
      Parameters:
      x - X-coordinate of the block
      y - Y-coordinate of the block
      z - Z-coordinate of the block
      blockData - The block data to set the block to
    • setType

      void setType(@NotNull @NotNull Location location, @NotNull @NotNull Material material)
      Sets the Material at the given Location.
      Parameters:
      location - The location of the block
      material - The type to set the block to
    • setType

      void setType(int x, int y, int z, @NotNull @NotNull Material material)
      Sets the Material at the given coordinates.
      Parameters:
      x - X-coordinate of the block
      y - Y-coordinate of the block
      z - Z-coordinate of the block
      material - The type to set the block to
    • generateTree

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

      boolean generateTree(@NotNull @NotNull Location location, @NotNull @NotNull Random random, @NotNull @NotNull TreeType type, @Nullable @Nullable Consumer<? super BlockState> stateConsumer)
      Creates a tree at the given Location

      The provided consumer gets called for every block which gets changed as a result of the tree generation. When the consumer gets called no modifications to the world are done yet. Which means, that calling getBlockState(Location) in the consumer will return the state of the block before the generation.

      Modifications done to the BlockState in the consumer are respected, which means that it is not necessary to call BlockState.update()

      Parameters:
      location - Location to spawn the tree
      random - Random to use to generate the tree
      type - Type of the tree to create
      stateConsumer - The consumer which should get called for every block which gets changed
      Returns:
      true if the tree was created successfully, otherwise false
    • generateTree

      boolean generateTree(@NotNull @NotNull Location location, @NotNull @NotNull Random random, @NotNull @NotNull TreeType type, @Nullable @Nullable Predicate<? super BlockState> statePredicate)
      Creates a tree at the given Location

      The provided predicate gets called for every block which gets changed as a result of the tree generation. When the predicate gets called no modifications to the world are done yet. Which means, that calling getBlockState(Location) in the predicate will return the state of the block before the generation.

      If the predicate returns true the block gets set in the world. If it returns false the block won't get set in the world.

      Parameters:
      location - Location to spawn the tree
      random - Random to use to generate the tree
      type - Type of the tree to create
      statePredicate - The predicate which should get used to test if a block should be set or not.
      Returns:
      true if the tree was created successfully, otherwise false
    • spawnEntity

      Creates a entity at the given Location
      Parameters:
      location - The location to spawn the entity
      type - The entity to spawn
      Returns:
      Resulting Entity of this method
    • spawnEntity

      @NotNull @NotNull Entity spawnEntity(@NotNull @NotNull Location loc, @NotNull @NotNull EntityType type, boolean randomizeData)
      Creates a new entity at the given Location.
      Parameters:
      loc - the location at which the entity will be spawned.
      type - the entity type that determines the entity to spawn.
      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.
      Returns:
      the spawned entity instance.
    • getEntities

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

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

      @NotNull <T extends Entity> @NotNull Collection<T> getEntitiesByClass(@NotNull @NotNull Class<T> cls)
      Get a collection of all entities in this RegionAccessor matching the given class/interface
      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 accessor that match the given class/interface
    • getEntitiesByClasses

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

      @NotNull <T extends Entity> T createEntity(@NotNull @NotNull Location location, @NotNull @NotNull Class<T> clazz)
      Creates an entity of a specific class at the given Location but does not spawn it in the world.

      Note: The created entity keeps a reference to the world it was created in, care should be taken that the entity does not outlive the world instance as this will lead to memory leaks.

      Type Parameters:
      T - the class of the Entity to create
      Parameters:
      location - the Location to create the entity at
      clazz - the class of the Entity to spawn
      Returns:
      an instance of the created Entity
      See Also:
    • spawn

      @NotNull <T extends Entity> T spawn(@NotNull @NotNull Location location, @NotNull @NotNull Class<T> clazz) throws IllegalArgumentException
      Spawn an entity of a specific class at the given Location
      Type Parameters:
      T - the class of the Entity to spawn
      Parameters:
      location - the Location to spawn the entity at
      clazz - the class of the Entity to spawn
      Returns:
      an instance of the spawned Entity
      Throws:
      IllegalArgumentException - if either parameter is null or the Entity requested cannot be spawned
    • spawn

      @NotNull default <T extends Entity> T spawn(@NotNull @NotNull Location location, @NotNull @NotNull Class<T> clazz, @Nullable @Nullable Consumer<? super T> function) throws IllegalArgumentException
      Spawn an entity of a specific class 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.
      Type Parameters:
      T - the class of the Entity to spawn
      Parameters:
      location - the Location to spawn the entity at
      clazz - the class of the Entity to spawn
      function - the function to be run before the entity is spawned.
      Returns:
      an instance of the spawned Entity
      Throws:
      IllegalArgumentException - if either parameter is null or the Entity requested cannot be spawned
    • spawn

      Throws:
      IllegalArgumentException
    • spawn

      @NotNull default <T extends Entity> T spawn(@NotNull @NotNull Location location, @NotNull @NotNull Class<T> clazz, @NotNull CreatureSpawnEvent.SpawnReason reason, @Nullable @Nullable Consumer<? super T> function) throws IllegalArgumentException
      Throws:
      IllegalArgumentException
    • spawnEntity

    • spawnEntity

    • spawn

      Throws:
      IllegalArgumentException
    • spawn

      @NotNull <T extends Entity> T spawn(@NotNull @NotNull Location location, @NotNull @NotNull Class<T> clazz, 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 Entity that is to be spawned.
      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.
    • getHighestBlockYAt

      int getHighestBlockYAt(int x, int z)
      Gets the highest non-empty (impassable) coordinate at the given coordinates.
      Parameters:
      x - X-coordinate of the blocks
      z - Z-coordinate of the blocks
      Returns:
      Y-coordinate of the highest non-empty block
    • getHighestBlockYAt

      int getHighestBlockYAt(@NotNull @NotNull Location location)
      Gets the highest non-empty (impassable) coordinate at the given Location.
      Parameters:
      location - Location of the blocks
      Returns:
      Y-coordinate of the highest non-empty block
    • getHighestBlockYAt

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

      int getHighestBlockYAt(@NotNull @NotNull Location location, @NotNull @NotNull HeightMap heightMap)
      Gets the highest coordinate corresponding to the HeightMap at the given Location.
      Parameters:
      location - Location of the blocks
      heightMap - the heightMap that is used to determine the highest point
      Returns:
      Y-coordinate of the highest block corresponding to the HeightMap
    • addEntity

      @NotNull <T extends Entity> T addEntity(@NotNull T entity)
      Spawns a previously created entity in the world.
      The provided entity must not have already been spawned in a world.
      Type Parameters:
      T - the generic type of the entity that is being added.
      Parameters:
      entity - the entity to add
      Returns:
      the entity now in the world
    • getMoonPhase

      @NotNull MoonPhase getMoonPhase()
      Returns:
      the current moon phase at the current time in the world
    • getKey

      Get the world's key
      Specified by:
      getKey in interface Keyed
      Returns:
      the world's key
    • lineOfSightExists

      boolean lineOfSightExists(@NotNull @NotNull Location from, @NotNull @NotNull Location to)
      Tell whether a line of sight exists between the given locations
      Parameters:
      from - Location to start at
      to - target Location
      Returns:
      whether a line of sight exists between from and to
    • hasCollisionsIn

      boolean hasCollisionsIn(@NotNull BoundingBox boundingBox)
      Checks if the world collides with the given boundingbox. This will check for any colliding hard entities (boats, shulkers) / worldborder / blocks. Does not load chunks that are within the bounding box.
      Parameters:
      boundingBox - the box to check collisions in
      Returns:
      collides or not