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 cda78bdc6e6a76dbb5c711ee16dcb470a7b839a6..c1f1faebc0d33710eb17dd96fddb16c85b7868e5 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. + *

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