Interface ProtoWorld


public interface ProtoWorld
Represents a small grid of chunks in a World with rudimentary block and entity access, for use during world generation.

A ProtoWorld is guaranteed read/write access to a 3x3 grid of chunks, but may have access to a grid as large as 17x17. It is safest to assume that there is only read/write access to 3x3 chunks. Some chunks outside of the 3x3 area may be readable but not writable.

ProtoWorlds should not be stored! After they are used during chunk generation they should be disposed of.

  • Method Details

    • setBlockData

      void setBlockData(int x, int y, int z, @NotNull @NotNull BlockData data)
      Sets the block at (x, y, z) to the provided BlockData.
      Parameters:
      x - X coordinate in this ProtoWorld
      y - Y coordinate in this ProtoWorld
      z - Z coordinate in this ProtoWorld
      data - BlockData to set the block at the provided coordinates to.
    • setBlockData

      default void setBlockData(@NotNull @NotNull Vector vector, @NotNull @NotNull BlockData data)
      Sets the block at a vector location to the provided BlockData.
      Parameters:
      vector - Vector representing the position of the block to set.
      data - BlockData to set the block at the provided coordinates to.
    • scheduleBlockUpdate

      void scheduleBlockUpdate(int x, int y, int z)
      Schedule a block update at (x, y, z).
      Parameters:
      x - X coordinate in this ProtoWorld
      y - Y coordinate in this ProtoWorld
      z - Z coordinate in this ProtoWorld
    • scheduleBlockUpdate

      default void scheduleBlockUpdate(@NotNull @NotNull Vector location)
      Schedule a block update at a vector location
      Parameters:
      location - Vector representing the position of the block to update.
    • scheduleFluidUpdate

      void scheduleFluidUpdate(int x, int y, int z)
      Schedule a fluid update at (x, y, z).
      Parameters:
      x - X coordinate in this ProtoWorld
      y - Y coordinate in this ProtoWorld
      z - Z coordinate in this ProtoWorld
    • scheduleFluidUpdate

      default void scheduleFluidUpdate(@NotNull @NotNull Vector location)
      Schedule a fluid update at a vector location
      Parameters:
      location - Vector representing the position of the block to update.
    • getWorld

      @NotNull @NotNull World getWorld()
      Get the World object this ProtoWorld represents.

      Do not attempt to read from/write to this world! Doing so during generation will cause a deadlock!

      Returns:
      The World object that this ProtoWorld represents.
    • getBlockData

      @NotNull @NotNull BlockData getBlockData(int x, int y, int z)
      Get the BlockData of the block at the provided coordinates.
      Parameters:
      x - X coordinate in this ProtoWorld
      y - Y coordinate in this ProtoWorld
      z - Z coordinate in this ProtoWorld
      Returns:
      BlockData at the coordinates
    • getBlockData

      @NotNull default @NotNull BlockData getBlockData(@NotNull @NotNull Vector vector)
      Get the BlockData of the block at the provided coordinates.
      Parameters:
      vector - Vector representing the position of the block to get.
      Returns:
      BlockData at the coordinates
    • getCenterChunkX

      int getCenterChunkX()
      Get the X-coordinate of the chunk in the center of this ProtoWorld
      Returns:
      The center chunk's X coordinate.
    • getCenterBlockX

      default int getCenterBlockX()
      Get the X-coordinate of the block in the center of this ProtoWorld
      Returns:
      The center chunk's X coordinate.
    • getCenterChunkZ

      int getCenterChunkZ()
      Get the Z-coordinate of the chunk in the center of this ProtoWorld
      Returns:
      The center chunk's Z coordinate.
    • getCenterBlockZ

      default int getCenterBlockZ()
      Get the Z-coordinate of the block in the center of this ProtoWorld
      Returns:
      The center chunk's Z coordinate.
    • spawnEntity

      Creates a entity at the location represented by the given Vector
      Parameters:
      loc - The Vector representing the location to spawn the entity
      type - The entity to spawn
      Returns:
      Resulting Entity of this method
    • spawn

      @NotNull default <T extends Entity> T spawn(@NotNull @NotNull Vector location, @NotNull @NotNull Class<T> clazz) throws IllegalArgumentException
      Spawn an entity of a specific class at location represented by the given Vector
      Type Parameters:
      T - The class of the Entity to spawn
      Parameters:
      location - The Vector representing the location to spawn the entity at
      clazz - The class of the Entity to spawn
      Returns:
      An instance of the spawned Entity
      Throws:
      IllegalArgumentException - if either parameter is null or the Entity requested cannot be spawned
    • spawn

      @NotNull default <T extends Entity> T spawn(@NotNull @NotNull Vector location, @NotNull @NotNull Class<T> clazz, @NotNull CreatureSpawnEvent.SpawnReason reason) throws IllegalArgumentException
      Spawn an entity of a specific class at location represented by the given Vector
      Type Parameters:
      T - The class of the Entity to spawn
      Parameters:
      location - The Vector representing the location to spawn the entity at
      clazz - The class of the Entity to spawn
      reason - The reason for the entity's spawn.
      Returns:
      An instance of the spawned Entity
      Throws:
      IllegalArgumentException - if either parameter is null or the Entity requested cannot be spawned
    • spawn

      @NotNull default <T extends Entity> T spawn(@NotNull @NotNull Vector location, @NotNull @NotNull Class<T> clazz, @Nullable @Nullable Consumer<T> function) throws IllegalArgumentException
      Spawn an entity of a specific class at the location represented by the given Vector, with the supplied function run before the entity is added to the world.
      Note that when the function is run, the entity will not be actually in the world. Any operation involving such as teleporting the entity is undefined until after this function returns.
      Type Parameters:
      T - The class of the Entity to spawn
      Parameters:
      location - The Vector representing the location to spawn the entity at
      clazz - The class of the Entity to spawn
      function - The function to be run before the entity is spawned.
      Returns:
      An instance of the spawned Entity
      Throws:
      IllegalArgumentException - if either parameter is null or the Entity requested cannot be spawned
    • spawn

      @NotNull default <T extends Entity> T spawn(@NotNull @NotNull Vector location, @NotNull @NotNull Class<T> clazz, @NotNull CreatureSpawnEvent.SpawnReason reason, @Nullable @Nullable Consumer<T> function) throws IllegalArgumentException
      Spawn an entity of a specific class at the location represented by the given Vector, with the supplied function run before the entity is added to the world.
      Note that when the function is run, the entity will not be actually in the world. Any operation involving such as teleporting the entity is undefined until after this function returns.
      Type Parameters:
      T - The class of the Entity to spawn
      Parameters:
      location - The Vector representing the location to spawn the entity at
      clazz - The class of the Entity to spawn
      reason - The reason for the entity's spawn.
      function - The function to be run before the entity is spawned.
      Returns:
      An instance of the spawned Entity
      Throws:
      IllegalArgumentException - if either parameter is null or the Entity requested cannot be spawned
    • spawnEntity

      Creates a entity at the location represented by the given Vector
      Parameters:
      loc - The Vector representing the location to spawn the entity
      type - The entity to spawn
      reason - The reason for the entity's spawn.
      Returns:
      Resulting Entity of this method
    • spawnEntity

      Creates a entity at the location represented by the given Vector, with the supplied function run before the entity is added to the world.
      Note that when the function is run, the entity will not be actually in the world. Any operation involving such as teleporting the entity is undefined until after this function returns.
      Parameters:
      loc - The Vector representing the location to spawn the entity
      type - The entity to spawn
      reason - The reason for the entity's spawn.
      function - The function to be run before the entity is spawned.
      Returns:
      Resulting Entity of this method
    • spawn

      Throws:
      IllegalArgumentException