Class AbstractDelegateExtent

java.lang.Object
com.sk89q.worldedit.extent.AbstractDelegateExtent
All Implemented Interfaces:
Extent, InputExtent, OutputExtent
Direct Known Subclasses:
AbstractBufferingExtent, BiomeQuirkExtent, BlockBagExtent, BlockChangeLimiter, BlockQuirkExtent, BlockTranslateExtent, ChangeSetExtent, ChunkLoadingExtent, DataValidatorExtent, DisallowedBlocksExtent, ForgetfulExtentBuffer, HistoryExtent, LastAccessExtentCache, LimitExtent, MaskingExtent, PassthroughExtent, ProcessedWEExtent, ResettableExtent, SideEffectExtent, SlowExtent, StripNBTExtent, SurvivalModeExtent, TracingExtent, WatchdogTickingExtent

public class AbstractDelegateExtent extends Object implements Extent
A base class for Extents that merely passes extents onto another.
  • Field Details

    • extent

      public Extent extent
  • Constructor Details

    • AbstractDelegateExtent

      public AbstractDelegateExtent(Extent extent)
      Create a new instance.
      Parameters:
      extent - the extent
  • Method Details

    • getExtent

      public Extent getExtent()
      Get the extent.
      Returns:
      the extent
    • getBlock

      public BlockState getBlock(BlockVector3 position)
      Description copied from interface: InputExtent
      Get a snapshot of the block at the given location.

      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 immutable 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 Patterns and so on.

      Specified by:
      getBlock in interface InputExtent
      Parameters:
      position - position of the block
      Returns:
      the block
    • getBlock

      public BlockState getBlock(int x, int y, int z)
      Specified by:
      getBlock in interface InputExtent
    • getFullBlock

      public BaseBlock getFullBlock(BlockVector3 position)
      Description copied from interface: InputExtent
      Get an immutable snapshot of the block at the given location.
      Specified by:
      getFullBlock in interface InputExtent
      Parameters:
      position - position of the block
      Returns:
      the block
    • getFullBlock

      public BaseBlock getFullBlock(int x, int y, int z)
      Specified by:
      getFullBlock in interface InputExtent
    • getMinimumPoint

      public BlockVector3 getMinimumPoint()
      Description copied from interface: Extent
      Get the minimum point in the extent.

      If the extent is unbounded, then a large (negative) value may be returned.

      Specified by:
      getMinimumPoint in interface Extent
      Returns:
      the minimum point
    • getMaximumPoint

      public BlockVector3 getMaximumPoint()
      Description copied from interface: Extent
      Get the maximum point in the extent.

      If the extent is unbounded, then a large (positive) value may be returned.

      Specified by:
      getMaximumPoint in interface Extent
      Returns:
      the maximum point
    • getEntities

      public List<? extends Entity> getEntities(Region region)
      Description copied from interface: Extent
      Get a list of all entities within the given region.

      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.

      Specified by:
      getEntities in interface Extent
      Parameters:
      region - the region in which entities must be contained
      Returns:
      a list of entities
    • getEntities

      public List<? extends Entity> getEntities()
      Description copied from interface: Extent
      Get a list of all entities.

      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.

      Specified by:
      getEntities in interface Extent
      Returns:
      a list of entities
    • createEntity

      @Nullable public Entity createEntity(Location location, BaseEntity entity)
      Description copied from interface: Extent
      Create an entity at the given location.
      Specified by:
      createEntity in interface Extent
      Parameters:
      location - the location
      entity - the entity
      Returns:
      a reference to the created entity, or null if the entity could not be created
    • createEntity

      @Nullable public Entity createEntity(Location location, BaseEntity entity, UUID uuid)
      Description copied from interface: Extent
      Create an entity at the given location, forcing a UUID onto the entity Only use if you are aware of the consequences of forcing a UUID to an entity.
      Specified by:
      createEntity in interface Extent
      Parameters:
      location - the location
      entity - the entity
      uuid - UUID to force the entity to have
      Returns:
      a reference to the created entity, or null if the entity could not be created
    • commit

      @Nullable public Operation commit()
      Description copied from interface: OutputExtent
      Return an Operation that should be called to tie up loose ends (such as to commit changes in a buffer).
      Specified by:
      commit in interface Extent
      Specified by:
      commit in interface OutputExtent
      Returns:
      an operation or null if there is none to execute
    • cancel

      public boolean cancel()
      Specified by:
      cancel in interface Extent
    • removeEntity

      public void removeEntity(int x, int y, int z, UUID uuid)
      Description copied from interface: Extent
      Create an entity at the given location.
      Specified by:
      removeEntity in interface Extent
      Parameters:
      x - the x coordinate
      y - the y coordinate
      z - the z coordinate
      uuid - the unique identifier of the entity
    • isQueueEnabled

      public boolean isQueueEnabled()
      Specified by:
      isQueueEnabled in interface Extent
    • enableQueue

      public void enableQueue()
      Specified by:
      enableQueue in interface Extent
    • disableQueue

      public void disableQueue()
      Specified by:
      disableQueue in interface Extent
    • isWorld

      public boolean isWorld()
      Specified by:
      isWorld in interface Extent
    • getBlockDistribution

      public List<Countable<BlockType>> getBlockDistribution(Region region)
      Description copied from interface: Extent
      Get the block distribution inside a region.
      Specified by:
      getBlockDistribution in interface Extent
      Parameters:
      region - a region
      Returns:
      the results
    • getBlockDistributionWithData

      public List<Countable<BlockState>> getBlockDistributionWithData(Region region)
      Description copied from interface: Extent
      Get the block distribution (with data values) inside a region.
      Specified by:
      getBlockDistributionWithData in interface Extent
      Parameters:
      region - a region
      Returns:
      the results
    • getMaxY

      public int getMaxY()
      Specified by:
      getMaxY in interface Extent
    • countBlocks

      public int countBlocks(Region region, Set<BaseBlock> searchBlocks)
      Description copied from interface: Extent
      Count the number of blocks of a list of types in a region.
      Specified by:
      countBlocks in interface Extent
      Parameters:
      region - the region
      searchBlocks - the list of blocks to search
      Returns:
      the number of blocks that matched the block
    • countBlocks

      public int countBlocks(Region region, Mask searchMask)
      Description copied from interface: Extent
      Count the number of blocks of a list of types in a region.
      Specified by:
      countBlocks in interface Extent
      Parameters:
      region - the region
      searchMask - mask to match
      Returns:
      the number of blocks that matched the mask
    • setBlocks

      public <B extends BlockStateHolder<B>> int setBlocks(Region region, B block) throws MaxChangedBlocksException
      Description copied from interface: Extent
      Sets all the blocks inside a region to a given block type.
      Specified by:
      setBlocks in interface Extent
      Parameters:
      region - the region
      block - the block
      Returns:
      number of blocks affected
      Throws:
      MaxChangedBlocksException - thrown if too many blocks are changed
    • setBlocks

      public int setBlocks(Region region, Pattern pattern) throws MaxChangedBlocksException
      Description copied from interface: Extent
      Sets all the blocks inside a region to a given pattern.
      Specified by:
      setBlocks in interface Extent
      Parameters:
      region - the region
      pattern - the pattern that provides the replacement block
      Returns:
      number of blocks affected
      Throws:
      MaxChangedBlocksException - thrown if too many blocks are changed
    • replaceBlocks

      public <B extends BlockStateHolder<B>> int replaceBlocks(Region region, Set<BaseBlock> filter, B replacement) throws MaxChangedBlocksException
      Description copied from interface: Extent
      Replaces all the blocks matching a given filter, within a given region, to a block returned by a given pattern.
      Specified by:
      replaceBlocks in interface Extent
      Parameters:
      region - the region to replace the blocks within
      filter - a list of block types to match, or null to use ExistingBlockMask
      replacement - the replacement block
      Returns:
      number of blocks affected
      Throws:
      MaxChangedBlocksException - thrown if too many blocks are changed
    • replaceBlocks

      public int replaceBlocks(Region region, Set<BaseBlock> filter, Pattern pattern) throws MaxChangedBlocksException
      Description copied from interface: Extent
      Replaces all the blocks matching a given filter, within a given region, to a block returned by a given pattern.
      Specified by:
      replaceBlocks in interface Extent
      Parameters:
      region - the region to replace the blocks within
      filter - a list of block types to match, or null to use ExistingBlockMask
      pattern - the pattern that provides the new blocks
      Returns:
      number of blocks affected
      Throws:
      MaxChangedBlocksException - thrown if too many blocks are changed
    • replaceBlocks

      public int replaceBlocks(Region region, Mask mask, Pattern pattern) throws MaxChangedBlocksException
      Description copied from interface: Extent
      Replaces all the blocks matching a given mask, within a given region, to a block returned by a given pattern.
      Specified by:
      replaceBlocks in interface Extent
      Parameters:
      region - the region to replace the blocks within
      mask - the mask that blocks must match
      pattern - the pattern that provides the new blocks
      Returns:
      number of blocks affected
      Throws:
      MaxChangedBlocksException - thrown if too many blocks are changed
    • setBlocks

      public int setBlocks(Set<BlockVector3> vset, Pattern pattern)
      Specified by:
      setBlocks in interface Extent
    • getMinY

      public int getMinY()
      Specified by:
      getMinY in interface Extent
    • relight

      public boolean relight(int x, int y, int z)
      Specified by:
      relight in interface Extent
    • relightBlock

      public boolean relightBlock(int x, int y, int z)
      Specified by:
      relightBlock in interface Extent
    • relightSky

      public boolean relightSky(int x, int y, int z)
      Specified by:
      relightSky in interface Extent
    • addProcessor

      public Extent addProcessor(IBatchProcessor processor)
      Description copied from interface: Extent
      Have an extent processed - Either block (Extent) processing or chunk processing
      Specified by:
      addProcessor in interface Extent
      Parameters:
      processor -
      Returns:
      processed Extent
    • addPostProcessor

      public Extent addPostProcessor(IBatchProcessor processor)
      Specified by:
      addPostProcessor in interface Extent
    • disableHistory

      public Extent disableHistory()
      Specified by:
      disableHistory in interface Extent
    • apply

      public <T extends Filter> T apply(Region region, T filter, boolean full)
      Specified by:
      apply in interface Extent
    • commitBefore

      protected Operation commitBefore()
    • getBiome

      public BiomeType getBiome(BlockVector3 position)
      Description copied from interface: InputExtent
      Get the biome at the given location.

      If there is no biome available, then the ocean biome should be returned.

      As implementation varies per Minecraft version, this may not exactly get this positions biome. On versions prior to 1.15, this will get the entire column. On later versions it will get the 4x4x4 cube's biome.

      Specified by:
      getBiome in interface InputExtent
      Parameters:
      position - the (x, y, z) location to check the biome at
      Returns:
      the biome at the location
      See Also:
    • getBiomeType

      public BiomeType getBiomeType(int x, int y, int z)
      Specified by:
      getBiomeType in interface InputExtent
    • getEmittedLight

      public int getEmittedLight(int x, int y, int z)
      Specified by:
      getEmittedLight in interface InputExtent
    • getSkyLight

      public int getSkyLight(int x, int y, int z)
      Specified by:
      getSkyLight in interface InputExtent
    • getBrightness

      public int getBrightness(int x, int y, int z)
      Specified by:
      getBrightness in interface InputExtent
    • setChangeSet

      public void setChangeSet(AbstractChangeSet changeSet)
    • setBlock

      public <T extends BlockStateHolder<T>> boolean setBlock(BlockVector3 position, T block) throws WorldEditException
      Description copied from interface: OutputExtent
      Change the block at the given location to the given block. The operation may not tie the given BlockStateHolder to the world, so future changes to the BlockStateHolder 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.

      Specified by:
      setBlock in interface OutputExtent
      Parameters:
      position - position of the block
      block - block to set
      Returns:
      true if the block was successfully set (return value may not be accurate)
      Throws:
      WorldEditException - thrown on an error
    • setBlock

      public <T extends BlockStateHolder<T>> boolean setBlock(int x, int y, int z, T block) throws WorldEditException
      Specified by:
      setBlock in interface OutputExtent
      Throws:
      WorldEditException
    • tile

      public boolean tile(int x, int y, int z, FaweCompoundTag tile) throws WorldEditException
      Description copied from interface: OutputExtent
      Sets a tile/block entity at the given location.
      Specified by:
      tile in interface OutputExtent
      Parameters:
      x - the x position
      y - the y position
      z - the z position
      tile - the tile/block entity to set
      Returns:
      true if the tile/block entity was placed
      Throws:
      WorldEditException
    • fullySupports3DBiomes

      public boolean fullySupports3DBiomes()
      Description copied from interface: OutputExtent
      Check if this extent fully supports 3D biomes.

      If false, the extent only visually reads biomes from y = 0. The biomes will still be set in 3D, but the client will only see the one at y = 0. It is up to the caller to determine if they want to set that biome instead, or simply warn the actor.

      Specified by:
      fullySupports3DBiomes in interface OutputExtent
      Returns:
      if the extent fully supports 3D biomes
    • setBiome

      public boolean setBiome(BlockVector3 position, BiomeType biome)
      Description copied from interface: OutputExtent
      Set the biome.

      As implementation varies per Minecraft version, this may set more than this position's biome. On versions prior to 1.15, this will set the entire column. On later versions it will set the 4x4x4 cube.

      Specified by:
      setBiome in interface OutputExtent
      Parameters:
      position - the (x, y, z) location to set the biome at
      biome - the biome to set to
      Returns:
      true if the biome was successfully set (return value may not be accurate)
    • setBiome

      public boolean setBiome(int x, int y, int z, BiomeType biome)
      Specified by:
      setBiome in interface OutputExtent
    • setBlockLight

      public void setBlockLight(int x, int y, int z, int value)
      Specified by:
      setBlockLight in interface OutputExtent
    • setSkyLight

      public void setSkyLight(int x, int y, int z, int value)
      Specified by:
      setSkyLight in interface OutputExtent
    • toString

      public String toString()
      Overrides:
      toString in class Object