public class LineGen extends AbstractBlockShape
Class to generate line related shapes
The Main purpose of this class is to generate the coordinates based on a shape. The coordinates are organized depending on a Map<ChunkPos, LongOpenHashSet>.

It emply some things:

  • The coordinates are divided in chunk
  • It uses LongOpenHashSet for several reasons.
    • First, We use a set to avoid doing unnecessary calculations on the shape. It ensures that no duplicate is present.
    • Second, it compresses the BlockPos: The BlockPos are saved under long using LongPosHelper. It saves some memory since that we save four bytes of data for each BlockPos, and there should not have overhead since that we use primitive data type.
    • Third, since that we use primitive data types and that they take less memory, coordinate generation, accession or deletion is much faster than using a Set<BlockPos>. Encoding and decoding blockPos and then adding it into LongOpenHashSetis extremely faster compared to only adding a BlockPos. ~60- 70% facter.

Dividing Coordinates into Chunk has some advantages :

  • Constructor Details

    • LineGen

      public LineGen(@NotNull @NotNull net.minecraft.util.math.BlockPos pos, Rotator rotator, net.minecraft.util.math.BlockPos secondPos)
      init the Line Shape
      Parameters:
      pos - the position of the start of the line
      secondPos - the second pos on which the line has to go
    • LineGen

      public LineGen(@NotNull @NotNull net.minecraft.util.math.BlockPos pos, net.minecraft.util.math.BlockPos secondPos)
      init the Line Shape
      Parameters:
      pos - the position of the start of the line
      secondPos - the second pos on which the line has to go
  • Method Details

    • getSecondPos

      public net.minecraft.util.math.BlockPos getSecondPos()
    • setSecondPos

      public void setSecondPos(net.minecraft.util.math.BlockPos secondPos)
    • getShapeCoordinates

      public Map<net.minecraft.util.math.ChunkPos,it.unimi.dsi.fastutil.longs.LongOpenHashSet> getShapeCoordinates()
      Description copied from class: AbstractBlockShape
      method to get the coordinates that will be placed later
      Specified by:
      getShapeCoordinates in class AbstractBlockShape
      Returns:
      a map of ChunkPos of blockPos for every shape
    • generateAxisLine

      public void generateAxisLine(net.minecraft.util.math.Direction dir)
      this method generates the coordinates
      Parameters:
      dir - the direction of the line
    • drawLine

      public void drawLine()