aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0229-Ability-to-get-block-entities-from-a-chunk-without-s.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0229-Ability-to-get-block-entities-from-a-chunk-without-s.patch')
-rw-r--r--patches/server/0229-Ability-to-get-block-entities-from-a-chunk-without-s.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/patches/server/0229-Ability-to-get-block-entities-from-a-chunk-without-s.patch b/patches/server/0229-Ability-to-get-block-entities-from-a-chunk-without-s.patch
new file mode 100644
index 0000000000..8ecb7597f5
--- /dev/null
+++ b/patches/server/0229-Ability-to-get-block-entities-from-a-chunk-without-s.patch
@@ -0,0 +1,55 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Aikar <[email protected]>
+Date: Wed, 15 Aug 2018 01:16:34 -0400
+Subject: [PATCH] Ability to get block entities from a chunk without snapshots
+
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+index e37dae711e7059834612ead5f4fcea9f28ad436f..f1d5c2d423dc015cc7720a4544370895f3cc644b 100644
+--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
++++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+@@ -174,6 +174,13 @@ public class CraftChunk implements Chunk {
+
+ @Override
+ public BlockState[] getTileEntities() {
++ // Paper start
++ return getTileEntities(true);
++ }
++
++ @Override
++ public BlockState[] getTileEntities(boolean useSnapshot) {
++ // Paper end
+ if (!this.isLoaded()) {
+ this.getWorld().getChunkAt(this.x, this.z); // Transient load for this tick
+ }
+@@ -183,7 +190,29 @@ public class CraftChunk implements Chunk {
+ BlockState[] entities = new BlockState[chunk.blockEntities.size()];
+
+ for (BlockPos position : chunk.blockEntities.keySet()) {
+- entities[index++] = this.worldServer.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ()).getState();
++ // Paper start
++ entities[index++] = this.worldServer.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ()).getState(useSnapshot);
++ }
++
++ return entities;
++ }
++
++ @Override
++ public Collection<BlockState> getTileEntities(Predicate<? super Block> blockPredicate, boolean useSnapshot) {
++ Preconditions.checkNotNull(blockPredicate, "blockPredicate");
++ if (!this.isLoaded()) {
++ this.getWorld().getChunkAt(this.x, this.z); // Transient load for this tick
++ }
++ ChunkAccess chunk = this.getHandle(ChunkStatus.FULL);
++
++ java.util.List<BlockState> entities = new java.util.ArrayList<>();
++
++ for (BlockPos position : chunk.blockEntities.keySet()) {
++ Block block = this.worldServer.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ());
++ if (blockPredicate.test(block)) {
++ entities.add(block.getState(useSnapshot));
++ }
++ // Paper end
+ }
+
+ return entities;