Class BlockSelection
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
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfacestatic final recordstatic interfacestatic enumstatic final recordstatic interface -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intprivate intprivate intprivate final it.unimi.dsi.fastutil.longs.Long2ObjectMap<BlockSelection.BlockHolder> private final ReentrantReadWriteLockstatic final Consumer<Ref<EntityStore>> private final List<Holder<EntityStore>> private final ReentrantReadWriteLockprivate final it.unimi.dsi.fastutil.longs.Long2ObjectMap<BlockSelection.FluidHolder> private static final com.hypixel.hytale.logger.HytaleLoggerprivate Vector3istatic final MetricsRegistry<BlockSelection> private Vector3iprivate intprivate intprivate intprivate int -
Constructor Summary
ConstructorsConstructorDescriptionBlockSelection(int initialBlockCapacity, int initialEntityCapacity) BlockSelection(BlockSelection other) -
Method Summary
Modifier and TypeMethodDescriptionvoidadd(BlockSelection other) private voidaddBlock0(int x, int y, int z, int block, int rotation, int filler, int supportValue, Holder<ChunkStore> state) private voidaddBlock0(int x, int y, int z, BlockSelection.BlockHolder block) voidaddBlockAtLocalPos(int x, int y, int z, int block, int rotation, int filler, int supportValue) voidaddBlockAtLocalPos(int x, int y, int z, int block, int rotation, int filler, int supportValue, Holder<ChunkStore> state) voidaddBlockAtWorldPos(int x, int y, int z, int block, int rotation, int filler, int supportValue) voidaddBlockAtWorldPos(int x, int y, int z, int block, int rotation, int filler, int supportValue, Holder<ChunkStore> state) voidaddEmptyAtWorldPos(int x, int y, int z) private voidaddEntity0(Holder<EntityStore> holder) voidaddEntityFromWorld(Holder<EntityStore> entityHolder) voidaddEntityHolderRaw(Holder<EntityStore> entityHolder) private voidaddFluid0(int x, int y, int z, int fluidId, byte fluidLevel) voidaddFluidAtLocalPos(int x, int y, int z, int fluidId, byte fluidLevel) voidaddFluidAtWorldPos(int x, int y, int z, int fluidId, byte fluidLevel) booleanprivate voidclearFluidAtPosition(World world, WorldChunk chunk, int blockX, int blockY, int blockZ) booleancompare(BlockSelection.BlockComparingIterator iterator) voidcopyFromAtWorld(int x, int y, int z, WorldChunk other, BlockPhysics blockPhysics) voidcopyPropertiesFrom(BlockSelection other) voidforEachBlock(BlockSelection.BlockIterator iterator) voidforEachEntity(Consumer<Holder<EntityStore>> consumer) voidforEachFluid(BlockSelection.FluidIterator iterator) intintintprivate intgetBlockAtLocalPos(int x, int y, int z) intgetBlockAtWorldPos(int x, int y, int z) intprivate BlockSelection.BlockHoldergetBlockHolderAtLocalPos(int x, int y, int z) getBlockHolderAtWorldPos(int x, int y, int z) intprivate intgetFluidAtLocalPos(int x, int y, int z) intgetFluidAtWorldPos(int x, int y, int z) intprivate bytegetFluidLevelAtLocalPos(int x, int y, int z) bytegetFluidLevelAtWorldPos(int x, int y, int z) intprivate Holder<ChunkStore> getStateAtLocalPos(int x, int y, int z) getStateAtWorldPos(int x, int y, int z) private intgetSupportValueAtLocalPos(int x, int y, int z) intgetSupportValueAtWorldPos(int x, int y, int z) intgetX()intgetY()intgetZ()booleanhasBlockAtLocalPos(int x, int y, int z) booleanhasBlockAtWorldPos(int x, int y, int z) booleanbooleanplace(CommandSender feedback, World outerWorld) place(CommandSender feedback, World outerWorld, Vector3i position, BlockMask blockMask) place(CommandSender feedback, World outerWorld, Vector3i position, BlockMask blockMask, Consumer<Ref<EntityStore>> entityConsumer) place(CommandSender feedback, World outerWorld, BlockMask blockMask) private voidplaceBlock(CommandSender feedback, World outerWorld, BlockMask blockMask, BlockSelection before, it.unimi.dsi.fastutil.longs.LongSet dirtyChunks, BlockTypeAssetMap<String, com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType> assetMap, long chunkIndex, 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) private voidplaceBlockNoReturn(String feedbackKey, CommandSender feedback, FeedbackConsumer feedbackConsumer, World outerWorld, BlockMask blockMask, 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, WorldChunk chunk, int blockX, int blockY, int blockZ, int newBlockId, int newRotation, int newFiller, Holder<ChunkStore> holder, ComponentAccessor<EntityStore> componentAccessor) private voidplaceEntities(World world, Vector3i pos) private voidplaceEntities(World world, Vector3i pos, Consumer<Ref<EntityStore>> entityConsumer) private Ref<EntityStore> placeEntity(World world, Holder<EntityStore> entityHolder, Vector3i pos, int prefabId) private voidplaceFluid(CommandSender feedback, World outerWorld, BlockSelection before, it.unimi.dsi.fastutil.longs.LongSet dirtyChunks, IndexedLookupTableAssetMap<String, Fluid> assetMap, long chunkIndex, WorldChunk chunk, int blockX, int blockY, int blockZ, int localX, int localY, int localZ, int newFluidId, byte newFluidLevel) private voidplaceFluidNoReturn(String feedbackKey, CommandSender feedback, FeedbackConsumer feedbackConsumer, World outerWorld, BlockMask blockMask, 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, WorldChunk chunk, int blockX, int blockY, int blockZ, int newFluidId, byte newFluidLevel, ComponentAccessor<EntityStore> componentAccessor) voidplaceNoReturn(World world, Vector3i position, ComponentAccessor<EntityStore> componentAccessor) voidplaceNoReturn(String feedbackKey, CommandSender feedback, FeedbackConsumer feedbackConsumer, World outerWorld, ComponentAccessor<EntityStore> componentAccessor) voidplaceNoReturn(String feedbackKey, CommandSender feedback, FeedbackConsumer feedbackConsumer, World outerWorld, Vector3i position, BlockMask blockMask, ComponentAccessor<EntityStore> componentAccessor) voidplaceNoReturn(String feedbackKey, CommandSender feedback, World outerWorld, ComponentAccessor<EntityStore> componentAccessor) relativize(int originX, int originY, int originZ) voidreserializeBlockStates(ChunkStore store, boolean destructive) voidreserializeEntities(Store<EntityStore> store, boolean destructive) rotateArbitrary(float yawDegrees, float pitchDegrees, float rollDegrees) voidsetAnchor(int anchorX, int anchorY, int anchorZ) voidsetAnchorAtWorldPos(int anchorX, int anchorY, int anchorZ) voidsetPosition(int x, int y, int z) voidsetPrefabId(int id) voidsetSelectionArea(Vector3i min, Vector3i max) toPacket()toString()voidtryFixFiller(boolean allowDestructive)
-
Field Details
-
DEFAULT_ENTITY_CONSUMER
-
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
-
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
-
blocksLock
-
entitiesLock
-
-
Constructor Details
-
BlockSelection
public BlockSelection() -
BlockSelection
public BlockSelection(int initialBlockCapacity, int initialEntityCapacity) -
BlockSelection
-
-
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
-
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
-
setPrefabId
public void setPrefabId(int id) -
copyPropertiesFrom
-
canPlace
-
matches
-
compare
-
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
-
getBlockHolderAtLocalPos
-
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
-
getStateAtLocalPos
-
forEachBlock
-
forEachFluid
-
forEachEntity
-
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
-
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
-
reserializeBlockStates
-
addEntityFromWorld
-
addEntityHolderRaw
-
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
-
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
-
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
-
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
-
relativize
-
relativize
-
cloneSelection
-
add
-
toMetricResults
- Specified by:
toMetricResultsin interfaceMetricProvider
-
toPacket
- Specified by:
toPacketin interfaceNetworkSerializable<EditorBlocksChange>
-
toSelectionPacket
-
toPacketWithSelection
-
tryFixFiller
public void tryFixFiller(boolean allowDestructive) -
reserializeEntities
public void reserializeEntities(@Nonnull Store<EntityStore> store, boolean destructive) throws IOException - Throws:
IOException
-
toString
-