java.lang.Object
com.fastasyncworldedit.core.queue.implementation.blocks.CharBlocks
All Implemented Interfaces:
IBlocks, Trimable
Direct Known Subclasses:
CharGetBlocks, CharSetBlocks

public abstract class CharBlocks extends Object implements IBlocks
  • Field Details

    • FULL

      protected static final CharBlocks.Section FULL
    • empty

      protected final CharBlocks.Section empty
    • blocks

      public char[][] blocks
    • sections

      public CharBlocks.Section[] sections
    • sectionLocks

      public Object[] sectionLocks
    • minSectionPosition

      protected int minSectionPosition
    • maxSectionPosition

      protected int maxSectionPosition
    • sectionCount

      protected int sectionCount
  • Constructor Details

    • CharBlocks

      public CharBlocks(int minSectionPosition, int maxSectionPosition)
      New instance given initial min/max section indices. Can be negative.
  • Method Details

    • trim

      public boolean trim(boolean aggressive)
      Description copied from interface: Trimable
      Trims the object, reducing its memory footprint.
      Specified by:
      trim in interface Trimable
      Parameters:
      aggressive - if trimming should be aggressive e.g., Not returning early when the first element cannot be trimmed
      Returns:
      if this object is empty at the end of the trim, and can therefore be deleted
    • trim

      public boolean trim(boolean aggressive, int layer)
      Specified by:
      trim in interface IBlocks
    • reset

      public IChunkSet reset()
      Specified by:
      reset in interface IBlocks
    • reset

      public void reset(int layer)
    • update

      public char[] update(int layer, char[] data, boolean aggressive)
    • hasSection

      public boolean hasSection(int layer)
      Description copied from interface: IBlocks
      Returns if the chunk has a BLOCKS section at the given layer. May not be indicative of presence of entities, tile entites, biomes, etc.
      Specified by:
      hasSection in interface IBlocks
      Parameters:
      layer - chunk section layer
      Returns:
      if blocks/a block section is present
    • load

      public char[] load(int layer)
      Description copied from interface: IBlocks
      Obtain the specified chunk section stored as an array of ordinals. Uses normal minecraft chunk-section position indices (length 4096). Operations synchronises on the section and will load the section into memory if not present. For chunk GET operations, this will load the data from the world. For chunk SET, this will create a new empty array.
      Specified by:
      load in interface IBlocks
      Parameters:
      layer - chunk section layer (may be negative)
      Returns:
      char array of ordinals of the chunk section
    • loadIfPresent

      @Nullable public char[] loadIfPresent(int layer)
      Description copied from interface: IBlocks
      Obtain the specified chunk section stored as an array of ordinals if present or null. Uses normal minecraft chunk-section position indices (length 4096). Does not synchronise to the section layer as it will not attempt to load into memory.
      Specified by:
      loadIfPresent in interface IBlocks
      Parameters:
      layer - chunk section layer (may be negative)
      Returns:
      char array of ordinals of the chunk section if present
    • getSectionCount

      public int getSectionCount()
      Description copied from interface: IBlocks
      Get the number of stored sections
      Specified by:
      getSectionCount in interface IBlocks
    • getMaxSectionPosition

      public int getMaxSectionPosition()
      Description copied from interface: IBlocks
      Get the highest layer position stored in the internal chunk. For 1.16 and below, always returns 15. For 1.17 and above, may not return a value correct to the world if this is a IChunkSet instance, which defaults to 15. For extended height worlds, this will only return over 15 if blocks are stored outside the default range.
      Specified by:
      getMaxSectionPosition in interface IBlocks
    • getMinSectionPosition

      public int getMinSectionPosition()
      Description copied from interface: IBlocks
      Get the lowest layer position stored in the internal chunk. For 1.16 and below, always returns 0. For 1.17 and above, may not return a value correct to the world if this is a IChunkSet instance, which defaults to 0. For extended height worlds, this will only return under 0 if blocks are stored outside the default range.
      Specified by:
      getMinSectionPosition in interface IBlocks
    • getBlock

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

      public char get(int x, int y, int z)
    • defaultOrdinal

      protected abstract char defaultOrdinal()
      Default char value to be used when "updating"/resetting data arrays
    • set

      public void set(int x, int y, int z, char value)
    • get

      public final char get(int layer, int index)
    • set

      public final void set(int layer, int index, char value) throws ArrayIndexOutOfBoundsException
      Throws:
      ArrayIndexOutOfBoundsException