java.lang.Object
com.hypixel.hytale.server.core.prefab.selection.standard.BlockSelection
All Implemented Interfaces:
MetricProvider, NetworkSerializable<EditorBlocksChange>

public class BlockSelection extends Object implements NetworkSerializable<EditorBlocksChange>, MetricProvider
  • Field Details

    • DEFAULT_ENTITY_CONSUMER

      public static final Consumer<Ref<EntityStore>> DEFAULT_ENTITY_CONSUMER
    • METRICS_REGISTRY

      public static final MetricsRegistry<BlockSelection> METRICS_REGISTRY
    • LOGGER

      private static final com.hypixel.hytale.logger.HytaleLogger LOGGER
    • x

      private int x
    • y

      private int y
    • z

      private int z
    • anchorX

      private int anchorX
    • anchorY

      private int anchorY
    • anchorZ

      private int anchorZ
    • prefabId

      private int prefabId
    • min

      @Nonnull private Vector3i min
    • max

      @Nonnull private Vector3i max
    • blocks

      @Nonnull private final it.unimi.dsi.fastutil.longs.Long2ObjectMap<BlockSelection.BlockHolder> blocks
    • fluids

      @Nonnull private final it.unimi.dsi.fastutil.longs.Long2ObjectMap<BlockSelection.FluidHolder> fluids
    • entities

      @Nonnull private final List<Holder<EntityStore>> entities
    • blocksLock

      private final ReentrantReadWriteLock blocksLock
    • entitiesLock

      private final ReentrantReadWriteLock entitiesLock
  • Constructor Details

    • BlockSelection

      public BlockSelection()
    • BlockSelection

      public BlockSelection(int initialBlockCapacity, int initialEntityCapacity)
    • BlockSelection

      public BlockSelection(@Nonnull BlockSelection other)
  • Method Details

    • getX

      public int getX()
    • getY

      public int getY()
    • getZ

      public int getZ()
    • getAnchorX

      public int getAnchorX()
    • getAnchorY

      public int getAnchorY()
    • getAnchorZ

      public int getAnchorZ()
    • getSelectionMin

      @Nonnull public Vector3i getSelectionMin()
    • getSelectionMax

      @Nonnull public Vector3i getSelectionMax()
    • hasSelectionBounds

      public boolean hasSelectionBounds()
    • getBlockCount

      public int getBlockCount()
    • getFluidCount

      public int getFluidCount()
    • getSelectionVolume

      public int getSelectionVolume()
    • getEntityCount

      public int getEntityCount()
    • setPosition

      public void setPosition(int x, int y, int z)
    • setAnchorAtWorldPos

      public void setAnchorAtWorldPos(int anchorX, int anchorY, int anchorZ)
    • setAnchor

      public void setAnchor(int anchorX, int anchorY, int anchorZ)
    • setSelectionArea

      public void setSelectionArea(@Nonnull Vector3i min, @Nonnull Vector3i max)
    • setPrefabId

      public void setPrefabId(int id)
    • copyPropertiesFrom

      public void copyPropertiesFrom(@Nonnull BlockSelection other)
    • canPlace

      public boolean canPlace(@Nonnull World world, @Nonnull Vector3i position, @Nullable it.unimi.dsi.fastutil.ints.IntList mask)
    • matches

      public boolean matches(@Nonnull World world, @Nonnull Vector3i position)
    • compare

      public boolean compare(@Nonnull BlockSelection.BlockComparingIterator iterator)
    • hasBlockAtWorldPos

      public boolean hasBlockAtWorldPos(int x, int y, int z)
    • hasBlockAtLocalPos

      public boolean hasBlockAtLocalPos(int x, int y, int z)
    • getBlockAtWorldPos

      public int getBlockAtWorldPos(int x, int y, int z)
    • getBlockAtLocalPos

      private int getBlockAtLocalPos(int x, int y, int z)
    • getBlockHolderAtWorldPos

      public BlockSelection.BlockHolder getBlockHolderAtWorldPos(int x, int y, int z)
    • getBlockHolderAtLocalPos

      private BlockSelection.BlockHolder getBlockHolderAtLocalPos(int x, int y, int z)
    • getFluidAtWorldPos

      public int getFluidAtWorldPos(int x, int y, int z)
    • getFluidAtLocalPos

      private int getFluidAtLocalPos(int x, int y, int z)
    • getFluidLevelAtWorldPos

      public byte getFluidLevelAtWorldPos(int x, int y, int z)
    • getFluidLevelAtLocalPos

      private byte getFluidLevelAtLocalPos(int x, int y, int z)
    • getSupportValueAtWorldPos

      public int getSupportValueAtWorldPos(int x, int y, int z)
    • getSupportValueAtLocalPos

      private int getSupportValueAtLocalPos(int x, int y, int z)
    • getStateAtWorldPos

      @Nullable public Holder<ChunkStore> getStateAtWorldPos(int x, int y, int z)
    • getStateAtLocalPos

      @Nullable private Holder<ChunkStore> getStateAtLocalPos(int x, int y, int z)
    • forEachBlock

      public void forEachBlock(@Nonnull BlockSelection.BlockIterator iterator)
    • forEachFluid

      public void forEachFluid(@Nonnull BlockSelection.FluidIterator iterator)
    • forEachEntity

      public void forEachEntity(Consumer<Holder<EntityStore>> consumer)
    • copyFromAtWorld

      public void copyFromAtWorld(int x, int y, int z, @Nonnull WorldChunk other, @Nullable BlockPhysics blockPhysics)
    • addEmptyAtWorldPos

      public void addEmptyAtWorldPos(int x, int y, int z)
    • addBlockAtWorldPos

      public void addBlockAtWorldPos(int x, int y, int z, int block, int rotation, int filler, int supportValue)
    • addBlockAtWorldPos

      public void addBlockAtWorldPos(int x, int y, int z, int block, int rotation, int filler, int supportValue, Holder<ChunkStore> state)
    • addBlockAtLocalPos

      public void addBlockAtLocalPos(int x, int y, int z, int block, int rotation, int filler, int supportValue)
    • addBlockAtLocalPos

      public void addBlockAtLocalPos(int x, int y, int z, int block, int rotation, int filler, int supportValue, Holder<ChunkStore> state)
    • addBlock0

      private void addBlock0(int x, int y, int z, int block, int rotation, int filler, int supportValue, Holder<ChunkStore> state)
    • addBlock0

      private void addBlock0(int x, int y, int z, @Nonnull BlockSelection.BlockHolder block)
    • addFluidAtWorldPos

      public void addFluidAtWorldPos(int x, int y, int z, int fluidId, byte fluidLevel)
    • addFluidAtLocalPos

      public void addFluidAtLocalPos(int x, int y, int z, int fluidId, byte fluidLevel)
    • addFluid0

      private void addFluid0(int x, int y, int z, int fluidId, byte fluidLevel)
    • addEntity0

      private void addEntity0(Holder<EntityStore> holder)
    • reserializeBlockStates

      public void reserializeBlockStates(ChunkStore store, boolean destructive)
    • addEntityFromWorld

      public void addEntityFromWorld(@Nonnull Holder<EntityStore> entityHolder)
    • addEntityHolderRaw

      public void addEntityHolderRaw(Holder<EntityStore> entityHolder)
    • placeNoReturn

      public void placeNoReturn(@Nonnull World world, Vector3i position, ComponentAccessor<EntityStore> componentAccessor)
    • placeNoReturn

      public void placeNoReturn(String feedbackKey, CommandSender feedback, @Nonnull World outerWorld, ComponentAccessor<EntityStore> componentAccessor)
    • placeNoReturn

      public void placeNoReturn(String feedbackKey, CommandSender feedback, @Nonnull FeedbackConsumer feedbackConsumer, @Nonnull World outerWorld, ComponentAccessor<EntityStore> componentAccessor)
    • placeNoReturn

      public void placeNoReturn(@Nullable String feedbackKey, @Nullable CommandSender feedback, @Nonnull FeedbackConsumer feedbackConsumer, @Nonnull World outerWorld, @Nullable Vector3i position, @Nullable BlockMask blockMask, ComponentAccessor<EntityStore> componentAccessor)
    • placeBlockNoReturn

      private void placeBlockNoReturn(String feedbackKey, CommandSender feedback, @Nonnull FeedbackConsumer feedbackConsumer, @Nonnull World outerWorld, @Nullable BlockMask blockMask, @Nonnull it.unimi.dsi.fastutil.longs.LongSet dirtyChunks, @Nonnull BlockTypeAssetMap<String,com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType> assetMap, int totalBlocks, int counter, long chunkIndex, @Nonnull WorldChunk chunk, int blockX, int blockY, int blockZ, int newBlockId, int newRotation, int newFiller, Holder<ChunkStore> holder, ComponentAccessor<EntityStore> componentAccessor)
    • placeFluidNoReturn

      private void placeFluidNoReturn(String feedbackKey, CommandSender feedback, @Nonnull FeedbackConsumer feedbackConsumer, @Nonnull World outerWorld, BlockMask blockMask, @Nonnull it.unimi.dsi.fastutil.longs.LongSet dirtyChunks, BlockTypeAssetMap<String,com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType> assetMap, int totalBlocks, int counter, long chunkIndex, @Nonnull WorldChunk chunk, int blockX, int blockY, int blockZ, int newFluidId, byte newFluidLevel, ComponentAccessor<EntityStore> componentAccessor)
    • clearFluidAtPosition

      private void clearFluidAtPosition(@Nonnull World world, @Nonnull WorldChunk chunk, int blockX, int blockY, int blockZ)
    • place

      @Nonnull public BlockSelection place(CommandSender feedback, @Nonnull World outerWorld)
    • place

      @Nonnull public BlockSelection place(CommandSender feedback, @Nonnull World outerWorld, BlockMask blockMask)
    • place

      @Nonnull public BlockSelection place(CommandSender feedback, @Nonnull World outerWorld, Vector3i position, BlockMask blockMask)
    • place

      @Nonnull public BlockSelection place(CommandSender feedback, @Nonnull World outerWorld, @Nullable Vector3i position, @Nullable BlockMask blockMask, @Nonnull Consumer<Ref<EntityStore>> entityConsumer)
    • placeBlock

      private void placeBlock(CommandSender feedback, @Nonnull World outerWorld, @Nullable BlockMask blockMask, @Nonnull BlockSelection before, @Nonnull it.unimi.dsi.fastutil.longs.LongSet dirtyChunks, @Nonnull BlockTypeAssetMap<String,com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType> assetMap, long chunkIndex, @Nonnull WorldChunk chunk, int blockX, int blockY, int blockZ, int localX, int localY, int localZ, int newBlockId, int newRotation, int newFiller, Holder<ChunkStore> holder, int newSupportValue)
    • placeFluid

      private void placeFluid(CommandSender feedback, @Nonnull World outerWorld, @Nonnull BlockSelection before, @Nonnull it.unimi.dsi.fastutil.longs.LongSet dirtyChunks, IndexedLookupTableAssetMap<String,Fluid> assetMap, long chunkIndex, @Nonnull WorldChunk chunk, int blockX, int blockY, int blockZ, int localX, int localY, int localZ, int newFluidId, byte newFluidLevel)
    • placeEntities

      private void placeEntities(@Nonnull World world, @Nonnull Vector3i pos)
    • placeEntities

      private void placeEntities(@Nonnull World world, @Nonnull Vector3i pos, @Nonnull Consumer<Ref<EntityStore>> entityConsumer)
    • placeEntity

      @Nonnull private Ref<EntityStore> placeEntity(@Nonnull World world, @Nonnull Holder<EntityStore> entityHolder, @Nonnull Vector3i pos, int prefabId)
    • rotate

      @Nonnull public BlockSelection rotate(@Nonnull Axis axis, int angle)
    • rotate

      @Nonnull public BlockSelection rotate(@Nonnull Axis axis, int angle, @Nonnull Vector3f originOfRotation)
    • rotateArbitrary

      @Nonnull public BlockSelection rotateArbitrary(float yawDegrees, float pitchDegrees, float rollDegrees)
    • flip

      @Nonnull public BlockSelection flip(@Nonnull Axis axis)
    • relativize

      @Nonnull public BlockSelection relativize()
    • relativize

      @Nonnull public BlockSelection relativize(int originX, int originY, int originZ)
    • cloneSelection

      @Nonnull public BlockSelection cloneSelection()
    • add

      public void add(@Nonnull BlockSelection other)
    • toMetricResults

      @Nonnull public MetricResults toMetricResults()
      Specified by:
      toMetricResults in interface MetricProvider
    • toPacket

      @Nonnull public EditorBlocksChange toPacket()
      Specified by:
      toPacket in interface NetworkSerializable<EditorBlocksChange>
    • toSelectionPacket

      @Nonnull public EditorBlocksChange toSelectionPacket()
    • toPacketWithSelection

      @Nonnull public EditorBlocksChange toPacketWithSelection()
    • tryFixFiller

      public void tryFixFiller(boolean allowDestructive)
    • reserializeEntities

      public void reserializeEntities(@Nonnull Store<EntityStore> store, boolean destructive) throws IOException
      Throws:
      IOException
    • toString

      @Nonnull public String toString()
      Overrides:
      toString in class Object