From 0000000000000000000000000000000000000000 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 diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java index e014a71f2fd20e41f985ce68301006c4a4e0c5e3..bf4b94ea2577e9d7e344385209fc0644a4e6bfbb 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java @@ -76,6 +76,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