Class BlockPopulator

java.lang.Object
org.bukkit.generator.BlockPopulator

public abstract class BlockPopulator extends Object
A block populator is responsible for generating a small area of blocks.

For example, generating glowstone inside the nether or generating dungeons full of treasure

A BlockPopulator can be used in combination with a custom ChunkGenerator by returning it in the method ChunkGenerator.getDefaultPopulators(World) or by adding it manually to the worlds populator list returned by World.getPopulators().

When adding a BlockPopulator manually to a world it is recommended to do so during the WorldInitEvent.

  • Constructor Details

    • BlockPopulator

      public BlockPopulator()
  • Method Details

    • populate

      @Deprecated(since="1.17.1") public void populate(@NotNull @NotNull World world, @NotNull @NotNull Random random, @NotNull @NotNull Chunk source)
      Populates an area of blocks at or around the given chunk.

      The chunks on each side of the specified chunk must already exist; that is, there must be one north, east, south and west of the specified chunk. The "corner" chunks may not exist, in which scenario the populator should record any changes required for those chunks and perform the changes when they are ready.

      Parameters:
      world - The world to generate in
      random - The random generator to use
      source - The chunk to generate for
    • populate

      public void populate(@NotNull @NotNull WorldInfo worldInfo, @NotNull @NotNull Random random, int chunkX, int chunkZ, @NotNull @NotNull LimitedRegion limitedRegion)
      Populates an area of blocks at or around the given chunk.

      Notes:

      This method should never attempt to get the Chunk at the passed coordinates, as doing so may cause an infinite loop

      This method should never modify a LimitedRegion at a later point of time.

      This method must be completely thread safe and able to handle multiple concurrent callers.

      No physics are applied, whether or not it is set to true in BlockState.update(boolean, boolean)

      Only use the BlockState returned by LimitedRegion, never use methods from a World to modify the chunk.

      Parameters:
      worldInfo - The world info of the world to generate in
      random - The random generator to use
      chunkX - The X-coordinate of the chunk
      chunkZ - The Z-coordinate of the chunk
      limitedRegion - The chunk region to populate