aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0440-Add-Structure-check-API.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/api/0440-Add-Structure-check-API.patch')
-rw-r--r--patches/api/0440-Add-Structure-check-API.patch41
1 files changed, 41 insertions, 0 deletions
diff --git a/patches/api/0440-Add-Structure-check-API.patch b/patches/api/0440-Add-Structure-check-API.patch
new file mode 100644
index 0000000000..4c0756c86e
--- /dev/null
+++ b/patches/api/0440-Add-Structure-check-API.patch
@@ -0,0 +1,41 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Mon, 27 Mar 2023 10:20:06 -0700
+Subject: [PATCH] Add Structure check API
+
+
+diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
+index 3abd62dc08e1edaeec6773819c8726671221074a..0e3c7de14be8dc01199fd68b6bf41783c5c43ec3 100644
+--- a/src/main/java/org/bukkit/World.java
++++ b/src/main/java/org/bukkit/World.java
+@@ -78,6 +78,30 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+ */
+ int getPlayerCount();
+ // Paper end
++ // Paper start - structure check API
++ /**
++ * Check if the naturally-generated structure exists at the position.
++ * <p>
++ * Note that if the position is not loaded, this may cause chunk loads/generation
++ * to check if a structure is at that position. Use {@link #isPositionLoaded(io.papermc.paper.math.Position)}
++ * to check if a position is loaded
++ *
++ * @param position the position to check at
++ * @param structure the structure to check for
++ * @return true if that structure exists at the position
++ */
++ boolean hasStructureAt(io.papermc.paper.math.@NotNull Position position, @NotNull Structure structure);
++
++ /**
++ * Checks if this position is loaded.
++ *
++ * @param position position to check
++ * @return true if loaded
++ */
++ default boolean isPositionLoaded(io.papermc.paper.math.@NotNull Position position) {
++ return this.isChunkLoaded(position.blockX() >> 4, position.blockZ() >> 4);
++ }
++ // Paper end
+
+ /**
+ * Gets the {@link Block} at the given coordinates