Interface BlockEntity

All Superinterfaces:
CopyableDataHolder, DataHolder, DataHolder.Mutable, DataSerializable, Locatable, SerializableDataHolder, SerializableDataHolder.Mutable, ValueContainer
All Known Subinterfaces:
Banner, Barrel, Beacon, Bed, Beehive, Bell, BlastFurnace, BrewingStand, Campfire, CarrierBlockEntity, Chest, CommandBlock, Comparator, Conduit, DaylightDetector, Dispenser, Dropper, EnchantmentTable, EnderChest, EndGateway, EndPortal, Furnace, FurnaceBlockEntity, Hopper, Jigsaw, Jukebox, Lectern, MobSpawner, NameableBlockEntity, NameableCarrierBlockEntity, Piston, ShulkerBox, Sign, Skull, Smoker, StructureBlock, TrappedChest

@DoNotStore public interface BlockEntity extends SerializableDataHolder.Mutable, Locatable
Represents a block entity. It is a functional block that is continuously updated while residing in a world. It can perform specific functions based on the data that it contains.

A BlockEntity is contained within a ServerLocation and will continue to exists so long as the ServerLocation is of the correct block type.

Since a BlockEntity is performing various actions, all methods that are purely functional methods reside in the BlockEntity, whereas customizable data associated with a BlockEntity is represented by Values.

  • Method Details

    • isValid

      boolean isValid()
      Checks for whether the block entity is currently valid or not.

      Use this method to check if processing should be run on this BlockEntity. If it is valid, then processing can be run on it. If not, then processing should wait until it becomes valid or is destroyed.

      Returns:
      True if the block entity is valid, false if not
    • setValid

      void setValid(boolean valid)
      Changes the validation of this block entity.

      If the block entity is invalid, no processing will be done on this BlockEntity until it either becomes valid or is reset on the next tick.

      If the block entity is valid, then processing can continue and this BlockEntity will not be reset on the next tick.

      Parameters:
      valid - True if the block entity should be validated, or false if it should be invalidated
    • type

      Gets the type of BlockEntity this is.
      Returns:
      The type of block entity
    • block

      BlockState block()
      Gets the BlockState that this BlockEntity represents.
      Returns:
      The blockstate
    • rotate

      BlockEntity rotate(Rotation rotation)
      Rotates this BlockEntity for the desired Rotation.
      Parameters:
      rotation - The rotation
      Returns:
      The rotated state if not this state
    • rotate

      default BlockEntity rotate(Supplier<? extends Rotation> rotation)
      Rotates this BlockEntity for the desired Rotation.
      Parameters:
      rotation - The rotation
      Returns:
      The rotated state if not this state
    • mirror

      BlockEntity mirror(Mirror mirror)
      Gets the appropriate BlockEntity for the desired Mirror.
      Parameters:
      mirror - The mirror
      Returns:
      The mirrored BlockEntity
    • mirror

      default BlockEntity mirror(Supplier<? extends Mirror> mirror)
      Gets the appropriate BlockEntity for the desired Mirror.
      Parameters:
      mirror - The mirror
      Returns:
      The mirrored BlockEntity
    • createArchetype

      BlockEntityArchetype createArchetype()
      Creates a new BlockEntityArchetype for use with Schematics and placing the archetype in multiple locations.
      Returns:
      The created archetype for re-creating this block entity
    • locatableBlock

      LocatableBlock locatableBlock()
      Creates a LocatableBlock for this BlockEntity. Can be used as a simpler method of making them. Since this does not persist the data of this BlockEntity, it should not be used in place of a BlockSnapshot where data is being safely cloned.
      Returns:
      The created locatable block, not as a block snapshot
    • copy

      BlockEntity copy()
      Creates a new BlockEntityArchetype for use with Schematics and placing the archetype in multiple locations.
      Specified by:
      copy in interface CopyableDataHolder
      Specified by:
      copy in interface SerializableDataHolder
      Specified by:
      copy in interface SerializableDataHolder.Mutable
      Returns:
      The created archetype for re-creating this block entity