diff options
Diffstat (limited to 'patches/api/0293-Add-more-LimitedRegion-API.patch')
-rw-r--r-- | patches/api/0293-Add-more-LimitedRegion-API.patch | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/patches/api/0293-Add-more-LimitedRegion-API.patch b/patches/api/0293-Add-more-LimitedRegion-API.patch new file mode 100644 index 0000000000..292f95c890 --- /dev/null +++ b/patches/api/0293-Add-more-LimitedRegion-API.patch @@ -0,0 +1,161 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: dfsek <[email protected]> +Date: Sat, 19 Jun 2021 20:15:29 -0700 +Subject: [PATCH] Add more LimitedRegion API + + +diff --git a/src/main/java/org/bukkit/generator/LimitedRegion.java b/src/main/java/org/bukkit/generator/LimitedRegion.java +index 85faeeeef908243aa5f172284784e7e67995ebfb..e0b249d328f7671894cea94bc00d54ab54aacd36 100644 +--- a/src/main/java/org/bukkit/generator/LimitedRegion.java ++++ b/src/main/java/org/bukkit/generator/LimitedRegion.java +@@ -4,6 +4,12 @@ import java.util.List; + import org.bukkit.Location; + import org.bukkit.RegionAccessor; + import org.bukkit.block.BlockState; ++// Paper start ++import org.bukkit.World; ++import org.bukkit.block.BlockState; ++import org.bukkit.block.data.BlockData; ++import org.bukkit.util.Vector; ++// Paper end + import org.jetbrains.annotations.NotNull; + + /** +@@ -53,4 +59,137 @@ public interface LimitedRegion extends RegionAccessor { + */ + @NotNull + List<BlockState> getTileEntities(); ++ ++ ++ // Paper start ++ /** ++ * Sets the block at a vector location to the provided {@link BlockData}. ++ * ++ * @param vector {@link Vector} representing the position of the block to set. ++ * @param data {@link BlockData} to set the block at the provided coordinates to. ++ */ ++ default void setBlockData(@NotNull Vector vector, @NotNull BlockData data) { ++ setBlockData(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ(), data); ++ } ++ ++ /** ++ * Sets the {@link BlockState} at a location. ++ * ++ * @param x X coordinate. ++ * @param y Y coordinate. ++ * @param z Z coordinate. ++ * @param state The block state. ++ */ ++ void setBlockState(int x, int y, int z, @NotNull BlockState state); ++ ++ /** ++ * Sets the {@link BlockState} at a location. ++ * ++ * @param location Location to set block state. ++ * @param state The block state. ++ */ ++ default void setBlockState(@NotNull Vector location, @NotNull BlockState state) { ++ setBlockState(location.getBlockX(), location.getBlockY(), location.getBlockZ(), state); ++ } ++ ++ /** ++ * Gets the {@link BlockState} at a location. ++ * ++ * @param location Location to get block state from. ++ * @return The block state. ++ */ ++ @NotNull ++ default BlockState getBlockState(@NotNull Vector location) { ++ return getBlockState(location.getBlockX(), location.getBlockY(), location.getBlockZ()); ++ } ++ ++ /** ++ * Schedules a block update at (x, y, z). ++ * ++ * @param x X coordinate ++ * @param y Y coordinate ++ * @param z Z coordinate ++ */ ++ void scheduleBlockUpdate(int x, int y, int z); ++ ++ /** ++ * Schedules a block update at a vector location. ++ * ++ * @param location {@link Vector} representing the position of the block to update. ++ */ ++ default void scheduleBlockUpdate(@NotNull Vector location) { ++ scheduleBlockUpdate(location.getBlockX(), location.getBlockY(), location.getBlockZ()); ++ } ++ ++ /** ++ * Schedules a fluid update at (x, y, z). ++ * ++ * @param x X coordinate ++ * @param y Y coordinate ++ * @param z Z coordinate ++ */ ++ void scheduleFluidUpdate(int x, int y, int z); ++ ++ /** ++ * Schedules a fluid update at a vector location. ++ * ++ * @param location {@link Vector} representing the position of the block to update. ++ */ ++ default void scheduleFluidUpdate(@NotNull Vector location) { ++ scheduleFluidUpdate(location.getBlockX(), location.getBlockY(), location.getBlockZ()); ++ } ++ ++ /** ++ * Gets the {@link World} object this region represents. ++ * <p> ++ * Do <b>not</b> attempt to read from/write to this world! Doing so during generation <b>will cause a deadlock!</b> ++ * ++ * @return The {@link World} object that this region represents. ++ */ ++ @NotNull ++ World getWorld(); ++ ++ /** ++ * Gets the {@link BlockData} of the block at the provided coordinates. ++ * ++ * @param vector {@link Vector} representing the position of the block to get. ++ * @return {@link BlockData} at the coordinates ++ */ ++ @NotNull ++ default BlockData getBlockData(@NotNull Vector vector) { ++ return getBlockData(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ()); ++ } ++ ++ /** ++ * Gets the X-coordinate of the chunk in the center of the region. ++ * ++ * @return The center chunk's X coordinate. ++ */ ++ int getCenterChunkX(); ++ ++ /** ++ * Gets the X-coordinate of the block in the center of the region. ++ * ++ * @return The center chunk's X coordinate. ++ */ ++ default int getCenterBlockX() { ++ return getCenterChunkX() << 4; ++ } ++ ++ /** ++ * Gets the Z-coordinate of the chunk in the center of the region. ++ * ++ * @return The center chunk's Z coordinate. ++ */ ++ int getCenterChunkZ(); ++ ++ /** ++ * Gets the Z-coordinate of the block in the center of the region. ++ * ++ * @return The center chunk's Z coordinate. ++ */ ++ default int getCenterBlockZ() { ++ return getCenterChunkZ() << 4; ++ } ++ // Paper end + } |