Interface Structure
- All Superinterfaces:
PersistentDataHolder
A structure is a mutable template of captured blocks and entities that can be
copied back into the world. The StructureManager
, retrieved via
Server.getStructureManager()
, allows you to create new
structures, load existing structures, and save structures.
In order for a structure to be usable by structure blocks, it needs to be
null registered
with the StructureManager
, or located in the primary
world folder, a DataPack, or the server's own default resources, so that the
StructureManager can find it.
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Fills the structure from an area in a world.void
fill
(Location origin, BlockVector size, boolean includeEntities) Fills the Structure from an area in a world, starting at the specified origin and extending in each axis according to the specified size vector.Gets a list of entities that have been included in the Structure.int
Gets the number of entities in this structure.int
Gets the number of palettes in this structure.Gets a list of available block palettes.getSize()
Gets the current size of the structure.void
place
(Location location, boolean includeEntities, StructureRotation structureRotation, Mirror mirror, int palette, float integrity, Random random) Place a structure in the world.void
place
(Location location, boolean includeEntities, StructureRotation structureRotation, Mirror mirror, int palette, float integrity, Random random, Collection<BlockTransformer> blockTransformers, Collection<EntityTransformer> entityTransformers) Place a structure in the world.void
place
(RegionAccessor regionAccessor, BlockVector location, boolean includeEntities, StructureRotation structureRotation, Mirror mirror, int palette, float integrity, Random random) Place a structure in the world.void
place
(RegionAccessor regionAccessor, BlockVector location, boolean includeEntities, StructureRotation structureRotation, Mirror mirror, int palette, float integrity, Random random, Collection<BlockTransformer> blockTransformers, Collection<EntityTransformer> entityTransformers) Place a structure in the world.Methods inherited from interface org.bukkit.persistence.PersistentDataHolder
getPersistentDataContainer
-
Method Details
-
getSize
Gets the current size of the structure.The size of the structure may not be fixed.
- Returns:
- A new vector that represents the size of the structure along each axis.
-
getPalettes
Gets a list of available block palettes.- Returns:
- a list of available variants of this structure.
-
getPaletteCount
int getPaletteCount()Gets the number of palettes in this structure.- Returns:
- The number of palettes in this structure
-
getEntities
Gets a list of entities that have been included in the Structure. The entity positions are offsets relative to the structure's position that is provided once the structure is placed into the world.- Returns:
- a list of Entities included in the Structure.
-
getEntityCount
int getEntityCount()Gets the number of entities in this structure.- Returns:
- The number of entities in this structure
-
place
void place(@NotNull Location location, boolean includeEntities, @NotNull StructureRotation structureRotation, @NotNull Mirror mirror, int palette, float integrity, @NotNull Random random) Place a structure in the world.- Parameters:
location
- The location to place the structure at.includeEntities
- If the entities present in the structure should be spawned.structureRotation
- The rotation of the structure.mirror
- The mirror settings of the structure.palette
- The palette index of the structure to use, starting at0
, or-1
to pick a random palette.integrity
- Determines how damaged the building should look by randomly skipping blocks to place. This value can range from 0 to 1. With 0 removing all blocks and 1 spawning the structure in pristine condition.random
- The randomizer used for setting the structure'sLootTable
s and integrity.
-
place
@Experimental void place(@NotNull Location location, boolean includeEntities, @NotNull StructureRotation structureRotation, @NotNull Mirror mirror, int palette, float integrity, @NotNull Random random, @NotNull Collection<BlockTransformer> blockTransformers, @NotNull Collection<EntityTransformer> entityTransformers) Place a structure in the world.- Parameters:
location
- The location to place the structure at.includeEntities
- If the entities present in the structure should be spawned.structureRotation
- The rotation of the structure.mirror
- The mirror settings of the structure.palette
- The palette index of the structure to use, starting at0
, or-1
to pick a random palette.integrity
- Determines how damaged the building should look by randomly skipping blocks to place. This value can range from 0 to 1. With 0 removing all blocks and 1 spawning the structure in pristine condition.random
- The randomizer used for setting the structure'sLootTable
s and integrity.blockTransformers
- A collection ofBlockTransformer
s to apply to the structure.entityTransformers
- A collection ofEntityTransformer
s to apply to the structure.
-
place
void place(@NotNull RegionAccessor regionAccessor, @NotNull BlockVector location, boolean includeEntities, @NotNull StructureRotation structureRotation, @NotNull Mirror mirror, int palette, float integrity, @NotNull Random random) Place a structure in the world.- Parameters:
regionAccessor
- The world to place the structure in.location
- The location to place the structure at.includeEntities
- If the entities present in the structure should be spawned.structureRotation
- The rotation of the structure.mirror
- The mirror settings of the structure.palette
- The palette index of the structure to use, starting at0
, or-1
to pick a random palette.integrity
- Determines how damaged the building should look by randomly skipping blocks to place. This value can range from 0 to 1. With 0 removing all blocks and 1 spawning the structure in pristine condition.random
- The randomizer used for setting the structure'sLootTable
s and integrity.
-
place
@Experimental void place(@NotNull RegionAccessor regionAccessor, @NotNull BlockVector location, boolean includeEntities, @NotNull StructureRotation structureRotation, @NotNull Mirror mirror, int palette, float integrity, @NotNull Random random, @NotNull Collection<BlockTransformer> blockTransformers, @NotNull Collection<EntityTransformer> entityTransformers) Place a structure in the world.- Parameters:
regionAccessor
- The world to place the structure in.location
- The location to place the structure at.includeEntities
- If the entities present in the structure should be spawned.structureRotation
- The rotation of the structure.mirror
- The mirror settings of the structure.palette
- The palette index of the structure to use, starting at0
, or-1
to pick a random palette.integrity
- Determines how damaged the building should look by randomly skipping blocks to place. This value can range from 0 to 1. With 0 removing all blocks and 1 spawning the structure in pristine condition.random
- The randomizer used for setting the structure'sLootTable
s and integrity.blockTransformers
- A collection ofBlockTransformer
s to apply to the structure.entityTransformers
- A collection ofEntityTransformer
s to apply to the structure.
-
fill
Fills the structure from an area in a world. The origin and size will be calculated automatically from the two corners provided.Be careful as this will override the current data of the structure.
Be aware that this method allows for creating structures larger than the 48x48x48 size that Minecraft's Structure blocks support. Any structures saved this way can not be loaded by using a structure block. Using the API however will still work.
- Parameters:
corner1
- A corner of the structure.corner2
- The corner opposite from corner1.includeEntities
- true if entities should be included in the saved structure.
-
fill
Fills the Structure from an area in a world, starting at the specified origin and extending in each axis according to the specified size vector.Be careful as this will override the current data of the structure.
Be aware that this method allows for saving structures larger than the 48x48x48 size that Minecraft's Structure blocks support. Any structures saved this way can not be loaded by using a structure block. Using the API however will still work.
- Parameters:
origin
- The origin of the structure.size
- The size of the structure, must be at least 1x1x1.includeEntities
- true if entities should be included in the saved structure.- Throws:
IllegalArgumentException
- Thrown if size is smaller than 1x1x1
-