Package org.bukkit.generator

# 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

## Constructor Summary

Constructors
Constructor
Description
`BlockPopulator()`

## Method Summary

Modifier and Type
Method
Description
`void`
`populate(@NotNull WorldInfo worldInfo, @NotNull Random random, int x, int z, @NotNull LimitedRegion limitedRegion)`
Populates an area of blocks at or around the given chunk.
`void`
`populate(@NotNull World world, @NotNull Random random, @NotNull Chunk source)`
Deprecated.
Use `populate(WorldInfo, Random, int, int, LimitedRegion)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### BlockPopulator

public BlockPopulator()

## Method Details

### populate

@Deprecated public void populate(@NotNull @NotNull World world, @NotNull @NotNull Random random, @NotNull @NotNull Chunk source)
Deprecated.
Use `populate(WorldInfo, Random, int, int, LimitedRegion)`
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 x, int z, @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
  `x` - The X-coordinate of the chunk
  `z` - The Z-coordinate of the chunk
  `limitedRegion` - The chunk region to populate