From 94e488f80d5ec63a873688034e5e97b34f25b153 Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Mon, 27 Mar 2023 10:20:06 -0700 Subject: [PATCH] Add Structure check API --- paper-api/src/main/java/org/bukkit/World.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/paper-api/src/main/java/org/bukkit/World.java b/paper-api/src/main/java/org/bukkit/World.java index 3cb0aecf58..1796615065 100644 --- a/paper-api/src/main/java/org/bukkit/World.java +++ b/paper-api/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. + *

+ * 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