Paper/patches/api/0137-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch
Nassim Jahnke 5960af9d87
Updated Upstream (Bukkit/CraftBukkit) (#6568)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
7da4c0be SPIGOT-6729: Add Chunk.isEntitiesLoaded()

CraftBukkit Changes:
9217b523 #929: Call EntityBlockFormEvent for Wither Rose placed by dead entity
757d42ae SPIGOT-6729: Add Chunk.isEntitiesLoaded()
2021-09-06 11:26:47 +02:00

58 lines
1.8 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 15 Aug 2018 01:04:58 -0400
Subject: [PATCH] Ability to get Tile Entities from a chunk without snapshots
diff --git a/src/main/java/org/bukkit/Chunk.java b/src/main/java/org/bukkit/Chunk.java
index 40ddeb7abd49eeece531a8e90b4508f3831cc3e9..5a4884db36d448c885e49c965ae329a0638dd628 100644
--- a/src/main/java/org/bukkit/Chunk.java
+++ b/src/main/java/org/bukkit/Chunk.java
@@ -1,6 +1,8 @@
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;
@@ -111,13 +113,36 @@ 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
- 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
/**
* Checks if the chunk is loaded.