Class Polygonal2DRegion

All Implemented Interfaces:
IBatchProcessor, FlatRegion, Region, Cloneable, Iterable<BlockVector3>, Collection<BlockVector3>, Set<BlockVector3>

public class Polygonal2DRegion extends AbstractRegion implements FlatRegion
Represents a 2D polygonal region.
  • Constructor Details

    • Polygonal2DRegion

      public Polygonal2DRegion()
      Construct the region.
    • Polygonal2DRegion

      public Polygonal2DRegion(World world)
      Construct the region.
      Parameters:
      world - the world
    • Polygonal2DRegion

      public Polygonal2DRegion(World world, List<BlockVector2> points, int minY, int maxY)
      Construct the region.
      Parameters:
      world - the world
      points - list of points
      minY - minimum Y
      maxY - maximum Y
    • Polygonal2DRegion

      public Polygonal2DRegion(Polygonal2DRegion region)
      Make a copy of another region.
      Parameters:
      region - the other region
  • Method Details

    • getPoints

      public List<BlockVector2> getPoints()
      Get the list of points.
      Returns:
      a list of points
    • recalculate

      protected void recalculate()
      Recalculate the bounding box of this polygonal region. This should be called after points have been changed.
    • addPoint

      public void addPoint(BlockVector2 position)
      Add a point to the list.
      Parameters:
      position - the position
    • addPoint

      public void addPoint(BlockVector3 position)
      Add a point to the list.
      Parameters:
      position - the position
    • getMinimumY

      public int getMinimumY()
      Description copied from interface: FlatRegion
      Gets the minimum Y value.
      Specified by:
      getMinimumY in interface FlatRegion
      Specified by:
      getMinimumY in interface Region
      Returns:
      the Y value
    • setMinimumY

      public void setMinimumY(int y)
      Set the minimum Y.
      Parameters:
      y - the Y
    • getMaximumY

      public int getMaximumY()
      Description copied from interface: FlatRegion
      Gets the maximum Y value.
      Specified by:
      getMaximumY in interface FlatRegion
      Specified by:
      getMaximumY in interface Region
      Returns:
      the Y value
    • setMaximumY

      public void setMaximumY(int y)
      Set the maximum Y.
      Parameters:
      y - the Y
    • getMinimumPoint

      public BlockVector3 getMinimumPoint()
      Description copied from interface: Region
      Get the lower point of a region.
      Specified by:
      getMinimumPoint in interface Region
      Returns:
      min. point
    • getMaximumPoint

      public BlockVector3 getMaximumPoint()
      Description copied from interface: Region
      Get the upper point of a region.
      Specified by:
      getMaximumPoint in interface Region
      Returns:
      max. point
    • getVolume

      public long getVolume()
      Description copied from interface: Region
      Get the number of blocks in the region.
      Specified by:
      getVolume in interface Region
      Overrides:
      getVolume in class AbstractRegion
      Returns:
      number of blocks
    • getWidth

      public int getWidth()
      Description copied from class: AbstractRegion
      Get X-size.
      Specified by:
      getWidth in interface Region
      Overrides:
      getWidth in class AbstractRegion
      Returns:
      width
    • getHeight

      public int getHeight()
      Description copied from class: AbstractRegion
      Get Y-size.
      Specified by:
      getHeight in interface Region
      Overrides:
      getHeight in class AbstractRegion
      Returns:
      height
    • getLength

      public int getLength()
      Description copied from class: AbstractRegion
      Get Z-size.
      Specified by:
      getLength in interface Region
      Overrides:
      getLength in class AbstractRegion
      Returns:
      length
    • expand

      public void expand(BlockVector3... changes) throws RegionOperationException
      Description copied from interface: Region
      Expand the region.
      Specified by:
      expand in interface Region
      Parameters:
      changes - array/arguments with multiple related changes
      Throws:
      RegionOperationException - if the operation cannot be performed
    • contract

      public void contract(BlockVector3... changes) throws RegionOperationException
      Description copied from interface: Region
      Contract the region.
      Specified by:
      contract in interface Region
      Parameters:
      changes - array/arguments with multiple related changes
      Throws:
      RegionOperationException - if the operation cannot be performed
    • shift

      public void shift(BlockVector3 change) throws RegionOperationException
      Description copied from interface: Region
      Shift the region.
      Specified by:
      shift in interface Region
      Overrides:
      shift in class AbstractRegion
      Parameters:
      change - the change
      Throws:
      RegionOperationException - if the operation cannot be performed
    • contains

      public boolean contains(int targetX, int targetZ)
      Specified by:
      contains in interface Region
    • contains

      public boolean contains(BlockVector3 position)
      Description copied from interface: Region
      Returns true based on whether the region contains the point.
      Specified by:
      contains in interface Region
      Parameters:
      position - the position
      Returns:
      true if contained
    • contains

      public static boolean contains(List<BlockVector2> points, int minY, int maxY, BlockVector3 pt)
      Checks to see if a point is inside a region.
      Parameters:
      points - a list of points
      minY - the min Y
      maxY - the max Y
      pt - the position to check
      Returns:
      true if the given polygon contains the given point
    • size

      public int size()
      Return the number of points.
      Specified by:
      size in interface Collection<BlockVector3>
      Specified by:
      size in interface Set<BlockVector3>
      Overrides:
      size in class AbstractRegion
      Returns:
      the number of points
    • expandY

      public boolean expandY(int y)
      Expand the height of the polygon to fit the specified Y.
      Parameters:
      y - the amount to expand
      Returns:
      true if the area was expanded
    • iterator

      public Iterator<BlockVector3> iterator()
      Description copied from class: AbstractRegion
      Get the iterator.
      Specified by:
      iterator in interface Collection<BlockVector3>
      Specified by:
      iterator in interface Iterable<BlockVector3>
      Specified by:
      iterator in interface Set<BlockVector3>
      Overrides:
      iterator in class AbstractRegion
      Returns:
      iterator of points inside the region
    • asFlatRegion

      public Iterable<BlockVector2> asFlatRegion()
      Description copied from interface: FlatRegion
      Get this region as an iterable flat region.
      Specified by:
      asFlatRegion in interface FlatRegion
      Returns:
      a flat region iterable
    • toString

      public String toString()
      Returns string representation in the format "(x1, z1) - ... - (xN, zN) * (minY - maxY)"
      Overrides:
      toString in class AbstractCollection<BlockVector3>
      Returns:
      string
    • clone

      public Polygonal2DRegion clone()
      Description copied from interface: Region
      Make a clone of the region.
      Specified by:
      clone in interface Region
      Overrides:
      clone in class AbstractRegion
      Returns:
      a cloned version
    • polygonize

      public List<BlockVector2> polygonize(int maxPoints)
      Description copied from interface: Region
      Polygonizes a cross-section or a 2D projection of the region orthogonal to the Y axis.
      Specified by:
      polygonize in interface Region
      Overrides:
      polygonize in class AbstractRegion
      Parameters:
      maxPoints - maximum number of points to generate. -1 for no limit.
      Returns:
      the points.
    • containsEntireCuboid

      public boolean containsEntireCuboid(int bx, int tx, int by, int ty, int bz, int tz)
      Specified by:
      containsEntireCuboid in interface Region