Add API to get Tile Entities in a Chunk by Predicate

This commit is contained in:
Matthew Miller
2020-12-18 21:24:21 +10:00
parent 5583c8c007
commit cfd2fcf443
2 changed files with 67 additions and 11 deletions

View File

@@ -8,30 +8,49 @@ diff --git a/src/main/java/org/bukkit/Chunk.java b/src/main/java/org/bukkit/Chun
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/Chunk.java
+++ b/src/main/java/org/bukkit/Chunk.java
@@ -0,0 +0,0 @@
package org.bukkit;
import java.util.Collection;
+import java.util.function.Predicate;
+
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.data.BlockData;
@@ -0,0 +0,0 @@ public interface Chunk extends PersistentDataHolder {
@NotNull
Entity[] getEntities();
+ // Paper start
+ /**
+ * Get a list of all tile entities in the chunk.
+ *
+ * @return The tile entities.
+ */
+ @NotNull
+ default BlockState[] getTileEntities() {
+ return getTileEntities(true);
+ }
+
/**
* Get a list of all tile entities in the chunk.
*
+ * @param useSnapshot Take snapshots or direct references
* @return The tile entities.
*/
@NotNull
- BlockState[] getTileEntities();
+ default BlockState[] getTileEntities() {
+ return getTileEntities(true);
+ }
+
+ /**
+ * Get a list of all tile entities in the chunk.
+ *
+ * @param useSnapshot Take snapshots or direct references
+ * @return The tile entities.
+ */
+ @NotNull
+ BlockState[] getTileEntities(boolean useSnapshot);
+
+ /**
+ * Get a list of all tile entities that match a given predicate in the chunk.
+ *
+ * @param blockPredicate The predicate of blocks to return tile entities for
+ * @param useSnapshot Take snapshots or direct references
+ * @return The tile entities.
+ */
+ @NotNull
+ Collection<BlockState> getTileEntities(@NotNull Predicate<Block> blockPredicate, boolean useSnapshot);
+ // Paper end
/**