Package org.bukkit.block

# Interface Structure

All Superinterfaces:
  `BlockState`, `Metadatable`, `PersistentDataHolder`, `TileState`

public interface Structure extends TileState
Represents a structure block that can save and load blocks from a file. They can only be used by OPs, and are not obtainable in survival.

## Method Summary

Modifier and Type
Method
Description
`@NotNull String`
`getAuthor()`
Get the name of who created this structure.
`float`
`getIntegrity()`
Get the integrity of this structure.
`@NotNull String`
`getMetadata()`
Get the metadata function this structure block will perform when activated.
`@NotNull Mirror`
`getMirror()`
How this structure is mirrored.
`@NotNull BlockVector`
`getRelativePosition()`
The relative position of the structure outline based on the position of the structure block.
`@NotNull StructureRotation`
`getRotation()`
Get how this structure is rotated.
`long`
`getSeed()`
The seed used to determine how many blocks are removed upon loading of this structure.
`@NotNull String`
`getStructureName()`
The name of this structure.
`@NotNull BlockVector`
`getStructureSize()`
The distance to the opposite corner of this structure.
`@NotNull UsageMode`
`getUsageMode()`
Get the `UsageMode` of this structure block.
`boolean`
`isBoundingBoxVisible()`
Get if this structure block is currently showing the bounding box.
`boolean`
`isIgnoreEntities()`
Get if this structure block should ignore entities.
`boolean`
`isShowAir()`
Check if this structure block is currently showing all air blocks
`void`
`setAuthor(@NotNull String author)`
Set the name of whoever created this structure.
`void`
`setAuthor(@NotNull LivingEntity livingEntity)`
Set the name of whoever created this structure using a `LivingEntity`.
`void`
`setBoundingBoxVisible(boolean showBoundingBox)`
Set if this structure box should show the bounding box.
`void`
`setIgnoreEntities(boolean ignoreEntities)`
While in `UsageMode.SAVE` mode, this will ignore any entities when saving the structure.
`void`
`setIntegrity(float integrity)`
Set the integrity of the structure.
`void`
`setMetadata(@NotNull String metadata)`
Only applicable while in `UsageMode.DATA`.
`void`
`setMirror(@NotNull Mirror mirror)`
Sets the mirroring of the structure.
`void`
`setRelativePosition(@NotNull BlockVector vector)`
Set the relative position from the structure block.
`void`
`setRotation(@NotNull StructureRotation rotation)`
Set how this structure is rotated.
`void`
`setSeed(long seed)`
The seed used to determine which blocks will be removed upon loading.
`void`
`setShowAir(boolean showAir)`
Set if the structure outline should show air blocks.
`void`
`setStructureName(@NotNull String name)`
Set the name of this structure.
`void`
`setStructureSize(@NotNull BlockVector vector)`
Set the maximum size of this structure from the origin point.
`void`
`setUsageMode(@NotNull UsageMode mode)`
Set the `UsageMode` of this structure block.

### Methods inherited from interface org.bukkit.block.BlockState

`getBlock, getBlockData, getChunk, getData, getLightLevel, getLocation, getLocation, getRawData, getType, getWorld, getX, getY, getZ, isCollidable, isPlaced, setBlockData, setData, setRawData, setType, update, update, update`

### Methods inherited from interface org.bukkit.metadata.Metadatable

`getMetadata, hasMetadata, removeMetadata, setMetadata`

### Methods inherited from interface org.bukkit.block.TileState

`getPersistentDataContainer`

## Method Details

### getStructureName

@NotNull @NotNull String getStructureName()
The name of this structure.

Returns:
  structure name

### setStructureName

void setStructureName(@NotNull @NotNull String name)
Set the name of this structure. This is case-sensitive. The name of the structure in the `UsageMode.SAVE` structure block MUST match the name within the `UsageMode.CORNER` block or the size calculation will fail.

Parameters:
  `name` - the case-sensitive name of this structure

### getAuthor

@NotNull @NotNull String getAuthor()
Get the name of who created this structure.

Returns:
  the name of whoever created this structure.

### setAuthor

void setAuthor(@NotNull @NotNull String author)
Set the name of whoever created this structure.

Parameters:
  `author` - whoever created this structure (not empty)

### setAuthor

void setAuthor(@NotNull @NotNull LivingEntity livingEntity)
Set the name of whoever created this structure using a `LivingEntity`.

Parameters:
  `livingEntity` - the entity who created this structure

### getRelativePosition

@NotNull @NotNull BlockVector getRelativePosition()
The relative position of the structure outline based on the position of the structure block. Maximum allowed distance is 48 blocks in any direction.

Returns:
  a Location which contains the relative distance this structure is from the structure block.

### setRelativePosition

void setRelativePosition(@NotNull @NotNull BlockVector vector)
Set the relative position from the structure block. Maximum allowed distance is 48 blocks in any direction.

Parameters:
  `vector` - the `BlockVector` containing the relative origin coordinates of this structure.

### getStructureSize

@NotNull @NotNull BlockVector getStructureSize()
The distance to the opposite corner of this structure. The maximum structure size is 48x48x48. When a structure has successfully been calculated (i.e. it is within the maximum allowed distance) a white border surrounds the structure.

Returns:
  a `BlockVector` which contains the total size of the structure.

### setStructureSize

void setStructureSize(@NotNull @NotNull BlockVector vector)
Set the maximum size of this structure from the origin point. Maximum allowed size is 48x48x48.

Parameters:
  `vector` - the `BlockVector` containing the size of this structure, based off of the origin coordinates.

### setMirror

void setMirror(@NotNull @NotNull Mirror mirror)
Sets the mirroring of the structure.

Parameters:
  `mirror` - the new mirroring method

### getMirror

@NotNull @NotNull Mirror getMirror()
How this structure is mirrored.

Returns:
  the current mirroring method

### setRotation

void setRotation(@NotNull @NotNull StructureRotation rotation)
Set how this structure is rotated.

Parameters:
  `rotation` - the new rotation

### getRotation

@NotNull @NotNull StructureRotation getRotation()
Get how this structure is rotated.

Returns:
  the new rotation

### setUsageMode

void setUsageMode(@NotNull @NotNull UsageMode mode)
Set the `UsageMode` of this structure block.

Parameters:
  `mode` - the new mode to set.

### getUsageMode

@NotNull @NotNull UsageMode getUsageMode()
Get the `UsageMode` of this structure block.

Returns:
  the mode this block is currently in.

### setIgnoreEntities

void setIgnoreEntities(boolean ignoreEntities)
While in `UsageMode.SAVE` mode, this will ignore any entities when saving the structure.
While in `UsageMode.LOAD` mode this will ignore any entities that were saved to file.

Parameters:
  `ignoreEntities` - the flag to set

### isIgnoreEntities

boolean isIgnoreEntities()
Get if this structure block should ignore entities.

Returns:
  true if the appropriate `UsageMode` should ignore entities.

### setShowAir

void setShowAir(boolean showAir)
Set if the structure outline should show air blocks.

Parameters:
  `showAir` - if the structure block should show air blocks

### isShowAir

boolean isShowAir()
Check if this structure block is currently showing all air blocks

Returns:
  true if the structure block is showing all air blocks

### setBoundingBoxVisible

void setBoundingBoxVisible(boolean showBoundingBox)
Set if this structure box should show the bounding box.

Parameters:
  `showBoundingBox` - if the structure box should be shown

### isBoundingBoxVisible

boolean isBoundingBoxVisible()
Get if this structure block is currently showing the bounding box.

Returns:
  true if the bounding box is shown

### setIntegrity

void setIntegrity(float integrity)
Set the integrity of the structure. Integrity must be between 0.0 and 1.0 Lower integrity values will result in more blocks being removed when loading a structure. Integrity and `getSeed()` are used together to determine which blocks are randomly removed to mimic "decay."

Parameters:
  `integrity` - the integrity of this structure

### getIntegrity

float getIntegrity()
Get the integrity of this structure.

Returns:
  the integrity of this structure

### setSeed

void setSeed(long seed)
The seed used to determine which blocks will be removed upon loading. `getIntegrity()` and seed are used together to determine which blocks are randomly removed to mimic "decay."

Parameters:
  `seed` - the seed used to determine how many blocks will be removed

### getSeed

long getSeed()
The seed used to determine how many blocks are removed upon loading of this structure.

Returns:
  the seed used

### setMetadata

void setMetadata(@NotNull @NotNull String metadata)
Only applicable while in `UsageMode.DATA`. Metadata are specific functions that can be applied to the structure location. Consult the Minecraft wiki for more information.

Parameters:
  `metadata` - the function to perform on the selected location

### getMetadata

@NotNull @NotNull String getMetadata()
Get the metadata function this structure block will perform when activated. Consult the Minecraft Wiki for more information.

Returns:
  the function that will be performed when this block is activated