public abstract class AbstractDelegateExtent extends java.lang.Object implements Extent
Extent
s that merely passes extents onto another.Modifier | Constructor and Description |
---|---|
protected |
AbstractDelegateExtent(Extent extent)
Create a new instance.
|
Modifier and Type | Method and Description |
---|---|
Operation |
commit()
Return an
Operation that should be called to tie up loose ends
(such as to commit changes in a buffer). |
protected Operation |
commitBefore() |
Entity |
createEntity(Location location,
BaseEntity entity)
Create an entity at the given location.
|
BaseBiome |
getBiome(Vector2D position)
Get the biome at the given location.
|
BaseBlock |
getBlock(Vector position)
Get a snapshot of the block at the given location.
|
java.util.List<? extends Entity> |
getEntities()
Get a list of all entities.
|
java.util.List<? extends Entity> |
getEntities(Region region)
Get a list of all entities within the given region.
|
Extent |
getExtent()
Get the extent.
|
BaseBlock |
getLazyBlock(Vector position)
Get a lazy, immutable snapshot of the block at the given location that only
immediately contains information about the block's type (and metadata).
|
Vector |
getMaximumPoint()
Get the maximum point in the extent.
|
Vector |
getMinimumPoint()
Get the minimum point in the extent.
|
boolean |
setBiome(Vector2D position,
BaseBiome biome)
Set the biome.
|
boolean |
setBlock(Vector location,
BaseBlock block)
Change the block at the given location to the given block.
|
protected AbstractDelegateExtent(Extent extent)
extent
- the extentpublic Extent getExtent()
public BaseBlock getBlock(Vector position)
InputExtent
If the given position is out of the bounds of the extent, then the behavior
is undefined (an air block could be returned). However, null
should not be returned.
The returned block is mutable and is a snapshot of the block at the time
of call. It has no position attached to it, so it could be reused in
Pattern
s and so on.
Calls to this method can actually be quite expensive, so cache results
whenever it is possible, while being aware of the mutability aspect.
The cost, however, depends on the implementation and particular extent.
If only basic information about the block is required, then use of
InputExtent.getLazyBlock(Vector)
is recommended.
getBlock
in interface InputExtent
position
- position of the blockpublic BaseBlock getLazyBlock(Vector position)
InputExtent
Further information (such as NBT data) will be available by the time of access. Therefore, it is not recommended that this method is used if the world is being simulated at the time of call. If the block needs to be stored for future use, then this method should definitely not be used. Moreover, the block that is returned is immutable (or should be), and therefore modifications should not be attempted on it. If a modifiable copy is required, then the block should be cloned.
This method exists because it is sometimes important to inspect the block
at a given location, but InputExtent.getBlock(Vector)
may be too expensive in
the underlying implementation. It is also not possible to implement
caching if the returned object is mutable, so this methods allows caching
implementations to be used.
getLazyBlock
in interface InputExtent
position
- position of the blockpublic boolean setBlock(Vector location, BaseBlock block) throws WorldEditException
OutputExtent
BaseBlock
to the world, so future changes to the
BaseBlock
do not affect the world until this method is called again.
The return value of this method indicates whether the change was probably successful. It may not be successful if, for example, the location is out of the bounds of the extent. It may be unsuccessful if the block passed is the same as the one in the world. However, the return value is only an estimation and it may be incorrect, but it could be used to count, for example, the approximate number of changes.
setBlock
in interface OutputExtent
location
- position of the blockblock
- block to setWorldEditException
- thrown on an error@Nullable public Entity createEntity(Location location, BaseEntity entity)
Extent
createEntity
in interface Extent
location
- the locationentity
- the entitypublic java.util.List<? extends Entity> getEntities()
Extent
If the extent is not wholly loaded (i.e. a world being simulated in the game will not have every chunk loaded), then this list may not be incomplete.
getEntities
in interface Extent
public java.util.List<? extends Entity> getEntities(Region region)
Extent
If the extent is not wholly loaded (i.e. a world being simulated in the game will not have every chunk loaded), then this list may not be incomplete.
getEntities
in interface Extent
region
- the region in which entities must be containedpublic BaseBiome getBiome(Vector2D position)
InputExtent
If there is no biome available, then the ocean biome should be returned.
getBiome
in interface InputExtent
position
- the (x, z) location to check the biome atpublic boolean setBiome(Vector2D position, BaseBiome biome)
OutputExtent
setBiome
in interface OutputExtent
position
- the (x, z) location to set the biome atbiome
- the biome to set topublic Vector getMinimumPoint()
Extent
If the extent is unbounded, then a large (negative) value may be returned.
getMinimumPoint
in interface Extent
public Vector getMaximumPoint()
Extent
If the extent is unbounded, then a large (positive) value may be returned.
getMaximumPoint
in interface Extent
protected Operation commitBefore()
@Nullable public final Operation commit()
OutputExtent
Operation
that should be called to tie up loose ends
(such as to commit changes in a buffer).commit
in interface OutputExtent