程序包 org.bukkit.block

# 接口 Structure

所有超级接口:
  `BlockState`, `Metadatable`, `PersistentDataHolder`, `TileState`

public interface Structure extends TileState
代表结构方块, 其可从文件中加载方块或保存方块到文件. 它们仅可被 OP 使用, 且生存模式下无法获取.

- ## 方法概要

  修饰符和类型
  方法
  说明
  `@NotNull String`
  `getAuthor()`
  获取此结构的作者.
  `float`
  `getIntegrity()`
  获取此结构的完整性.
  `@NotNull String`
  `getMetadata()`
  获取当此结构方块激活时将执行的函数元数据.
  `@NotNull Mirror`
  `getMirror()`
  此结构方块如何产生镜像.
  `@NotNull BlockVector`
  `getRelativePosition()`
  基于此结构方块位置的(以其为原点的)结构轮廓相对位置.
  `@NotNull StructureRotation`
  `getRotation()`
  获取此结构方块的旋转角度.
  `long`
  `getSeed()`
  获取用于决定加载结构时随机删除哪些方块的种子.
  `@NotNull String`
  `getStructureName()`
  获取结构名.
  `@NotNull BlockVector`
  `getStructureSize()`
  (结构原点)与结构对角之间的距离.
  `@NotNull UsageMode`
  `getUsageMode()`
  获取此结构方块所处的`使用模式`.
  `boolean`
  `isBoundingBoxVisible()`
  获取此结构方块是否显示结构轮廓.
  `boolean`
  `isIgnoreEntities()`
  获取此结构方块是否忽略实体.
  `boolean`
  `isShowAir()`
  获取此结构方块是否显示所有空气方块.
  `void`
  `setAuthor(@NotNull String author)`
  设置此结构的作者.
  `void`
  `setAuthor(@NotNull LivingEntity livingEntity)`
  设置此结构的作者名为某个`LivingEntity`的名字.
  `void`
  `setBoundingBoxVisible(boolean showBoundingBox)`
  设置此结构方块是否显示结构轮廓.
  `void`
  `setIgnoreEntities(boolean ignoreEntities)`
  处于`储存`模式时, 若本值为true, 保存结构时将忽略任何实体.
  `void`
  `setIntegrity(float integrity)`
  设置此结构的完整性.
  `void`
  `setMetadata(@NotNull String metadata)`
  仅在结构方块处于`数据模式`时应用.
  `void`
  `setMirror(@NotNull Mirror mirror)`
  设置此结构方块的镜像方法.
  `void`
  `setRelativePosition(@NotNull BlockVector vector)`
  设置结构方块基于原点的相对位置 (起始位置).
  `void`
  `setRotation(@NotNull StructureRotation rotation)`
  设置此结构方块的旋转角度.
  `void`
  `setSeed(long seed)`
  设置用于决定结构方块加载时随机删除哪些方块的种子.
  `void`
  `setShowAir(boolean showAir)`
  设置此结构方块是否显示所有空气方块.
  `void`
  `setStructureName(@NotNull String name)`
  设置结构名.
  `void`
  `setStructureSize(@NotNull BlockVector vector)`
  设置此结构自原点的最大尺寸.
  `void`
  `setUsageMode(@NotNull UsageMode mode)`
  设置此结构方块的`使用模式`.

  ### 从接口继承的方法 org.bukkit.block.BlockState

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

  ### 从接口继承的方法 org.bukkit.metadata.Metadatable

  `getMetadata, hasMetadata, removeMetadata, setMetadata`

  ### 从接口继承的方法 org.bukkit.block.TileState

  `getPersistentDataContainer`

- ## 方法详细资料

  - ### getStructureName

    @NotNull @NotNull String getStructureName()
    获取结构名.

    原文:The name of this structure.

    返回:
      结构名

  - ### 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.

    参数:
      `name` - 大小写敏感的结构名

  - ### getAuthor

    @NotNull @NotNull String getAuthor()
    获取此结构的作者.

    原文:Get the name of who created this structure.

    返回:
      此结构的作者

  - ### setAuthor

    void setAuthor(@NotNull @NotNull String author)
    设置此结构的作者.

    原文:Set the name of whoever created this structure.

    参数:
      `author` - 此结构的作者 (不可为空字符串或null)

  - ### setAuthor

    void setAuthor(@NotNull @NotNull LivingEntity livingEntity)
    设置此结构的作者名为某个`LivingEntity`的名字.

    原文:Set the name of whoever created this structure using a `LivingEntity`.

    参数:
      `livingEntity` - 创造此结构的生物

  - ### getRelativePosition

    @NotNull @NotNull BlockVector getRelativePosition()
    基于此结构方块位置的(以其为原点的)结构轮廓相对位置. 对于任意方向, 允许的最大距离为48个方块.

    原文:The relative position of the structure outline based on the position of the structure block. Maximum allowed distance is 48 blocks in any direction.

    返回:
      包含此结构与结构方块的相对距离的位置(向量)

  - ### setRelativePosition

    void setRelativePosition(@NotNull @NotNull BlockVector vector)
    设置结构方块基于原点的相对位置 (起始位置). 对于任意方向, 允许的最大距离为48个方块.

    原文:Set the relative position from the structure block. Maximum allowed distance is 48 blocks in any direction.

    参数:
      `vector` - 包含相对位置坐标的`BlockVector`

  - ### getStructureSize

    @NotNull @NotNull BlockVector getStructureSize()
    (结构原点)与结构对角之间的距离. 结构最大尺寸为 48x48x48. 当结构成功被计算时 (即处于最大允许距离之内), 将有白色边框包围这个结构.

    原文: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.

    返回:
      包含此结构总尺寸的`BlockVector`

  - ### setStructureSize

    void setStructureSize(@NotNull @NotNull BlockVector vector)
    设置此结构自原点的最大尺寸. 允许的最大尺寸为 48x48x48.

    原文:Set the maximum size of this structure from the origin point. Maximum allowed size is 48x48x48.

    参数:
      `vector` - 包含自原点起此结构尺寸的`BlockVector`

  - ### setMirror

    void setMirror(@NotNull @NotNull Mirror mirror)
    设置此结构方块的镜像方法.

    原文:Sets the mirroring of the structure.

    参数:
      `mirror` - 镜像方法

  - ### getMirror

    @NotNull @NotNull Mirror getMirror()
    此结构方块如何产生镜像.

    原文:How this structure is mirrored.

    返回:
      结构方块的镜像方法

  - ### setRotation

    void setRotation(@NotNull @NotNull StructureRotation rotation)
    设置此结构方块的旋转角度.

    原文:Set how this structure is rotated.

    参数:
      `rotation` - 旋转角度

  - ### getRotation

    @NotNull @NotNull StructureRotation getRotation()
    获取此结构方块的旋转角度.

    原文:Get how this structure is rotated.

    返回:
      旋转角度

  - ### setUsageMode

    void setUsageMode(@NotNull @NotNull UsageMode mode)
    设置此结构方块的`使用模式`.

    原文:Set the `UsageMode` of this structure block.

    参数:
      `mode` - 要设置的新模式

  - ### getUsageMode

    @NotNull @NotNull UsageMode getUsageMode()
    获取此结构方块所处的`使用模式`.

    原文:Get the `UsageMode` of this structure block.

    返回:
      当前所处的`使用模式`

  - ### setIgnoreEntities

    void setIgnoreEntities(boolean ignoreEntities)
    处于`储存`模式时, 若本值为true, 保存结构时将忽略任何实体.
    处于`加载`模式时, 若本值为true, 将忽略文件中存储的任何实体.

    原文: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.

    参数:
      `ignoreEntities` - 要设置的 flag 值

  - ### isIgnoreEntities

    boolean isIgnoreEntities()
    获取此结构方块是否忽略实体.

    原文:Get if this structure block should ignore entities.

    返回:
      如果在合适的`使用模式`忽略实体则返回true

  - ### setShowAir

    void setShowAir(boolean showAir)
    设置此结构方块是否显示所有空气方块.

    原文:Set if the structure outline should show air blocks.

    参数:
      `showAir` - 是否显示所有空气方块

  - ### isShowAir

    boolean isShowAir()
    获取此结构方块是否显示所有空气方块.

    原文:Check if this structure block is currently showing all air blocks

    返回:
      是否显示所有空气方块

  - ### setBoundingBoxVisible

    void setBoundingBoxVisible(boolean showBoundingBox)
    设置此结构方块是否显示结构轮廓.

    原文:Set if this structure box should show the bounding box.

    参数:
      `showBoundingBox` - 是否显示结构轮廓

  - ### isBoundingBoxVisible

    boolean isBoundingBoxVisible()
    获取此结构方块是否显示结构轮廓.

    原文:Get if this structure block is currently showing the bounding box.

    返回:
      是否显示结构轮廓

  - ### setIntegrity

    void setIntegrity(float integrity)
    设置此结构的完整性. 完整性数值必须处于 0.0 和 1.0 之间(闭区间). 越小的完整性数值将导致加载结构时有越多的方块被移除. 完整性和`getSeed()`共同用于决定哪些方块被随机删除以模拟“衰变”.

    原文: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."

    参数:
      `integrity` - 结构完整性

  - ### getIntegrity

    float getIntegrity()
    获取此结构的完整性.

    原文:Get the integrity of this structure.

    返回:
      结构完整性

  - ### setSeed

    void setSeed(long seed)
    设置用于决定结构方块加载时随机删除哪些方块的种子. `getIntegrity()` 和种子共同用于决定哪些方块被随机删除以模拟“衰变”.

    原文: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."

    参数:
      `seed` - 使用到的种子

  - ### getSeed

    long getSeed()
    获取用于决定加载结构时随机删除哪些方块的种子.

    原文:The seed used to determine how many blocks are removed upon loading of this structure.

    返回:
      使用到的种子

  - ### setMetadata

    void setMetadata(@NotNull @NotNull String metadata)
    仅在结构方块处于`数据模式`时应用. 元数据是可应用于结构标注位置的特定函数. 查阅Minecraft Wiki获取更多信息.

    原文: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.

    参数:
      `metadata` - 要执行于标注位置的函数

  - ### getMetadata

    @NotNull @NotNull String getMetadata()
    获取当此结构方块激活时将执行的函数元数据. 查阅Minecraft Wiki获取更多信息.

    原文:Get the metadata function this structure block will perform when activated. Consult the Minecraft Wiki for more information.

    返回:
      当此结构方块激活时将执行的函数