mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-27 01:29:32 +01:00
54 lines
2.1 KiB
Diff
54 lines
2.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Mon, 6 Nov 2017 21:10:01 -0500
|
|
Subject: [PATCH] API to get a BlockState without a snapshot
|
|
|
|
This allows you to get a BlockState without creating a snapshot, operating
|
|
on the real tile entity.
|
|
|
|
This is useful for where performance is needed
|
|
|
|
diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
|
|
index b4094e042c1619cfcdd68c27f82979a7562ddf55..d29bdc125dba0128d93d57e8d9393b970e6c00a9 100644
|
|
--- a/src/main/java/org/bukkit/block/Block.java
|
|
+++ b/src/main/java/org/bukkit/block/Block.java
|
|
@@ -271,6 +271,16 @@ public interface Block extends Metadatable {
|
|
@NotNull
|
|
BlockState getState();
|
|
|
|
+ // Paper start
|
|
+ /**
|
|
+ * @see #getState() optionally disables use of snapshot, to operate on real block data
|
|
+ * @param useSnapshot if this block is a TE, should we create a fully copy of the TileEntity
|
|
+ * @return BlockState with the current state of this block
|
|
+ */
|
|
+ @NotNull
|
|
+ BlockState getState(boolean useSnapshot);
|
|
+ // Paper end
|
|
+
|
|
/**
|
|
* Returns the biome that this block resides in
|
|
*
|
|
diff --git a/src/main/java/org/bukkit/block/TileState.java b/src/main/java/org/bukkit/block/TileState.java
|
|
index 3b10fcc13893403b29f0260b8605144679e89b82..5c8517c5bcae10161952c104b6a4ff7c713bcdbd 100644
|
|
--- a/src/main/java/org/bukkit/block/TileState.java
|
|
+++ b/src/main/java/org/bukkit/block/TileState.java
|
|
@@ -36,4 +36,18 @@ public interface TileState extends BlockState, PersistentDataHolder {
|
|
@NotNull
|
|
@Override
|
|
PersistentDataContainer getPersistentDataContainer();
|
|
+
|
|
+ // Paper start
|
|
+ /**
|
|
+ * Checks if this TileState is a snapshot or a live
|
|
+ * representation of the underlying tile entity.
|
|
+ * <p>
|
|
+ * NOTE: You may still have to call {@link BlockState#update()} on
|
|
+ * live representations to update any visuals on the block.
|
|
+ *
|
|
+ * @return true if this is a snapshot
|
|
+ * @see Block#getState(boolean)
|
|
+ */
|
|
+ boolean isSnapshot();
|
|
+ // Paper end
|
|
}
|