aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0360-Expand-FallingBlock-API.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/api/0360-Expand-FallingBlock-API.patch')
-rw-r--r--patches/api/0360-Expand-FallingBlock-API.patch108
1 files changed, 108 insertions, 0 deletions
diff --git a/patches/api/0360-Expand-FallingBlock-API.patch b/patches/api/0360-Expand-FallingBlock-API.patch
new file mode 100644
index 0000000000..bbff3129a4
--- /dev/null
+++ b/patches/api/0360-Expand-FallingBlock-API.patch
@@ -0,0 +1,108 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Owen1212055 <[email protected]>
+Date: Sun, 5 Dec 2021 14:58:55 -0500
+Subject: [PATCH] Expand FallingBlock API
+
+- add auto expire setting
+- add setter for block data
+- add accessors for block state
+
+Co-authored-by: Lukas Planz <[email protected]>
+
+diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
+index 0eb90bfff2e12cb3ed977a581912221ac4dee6f6..5785dda1127106b529f0784df524e120aaf87f4f 100644
+--- a/src/main/java/org/bukkit/World.java
++++ b/src/main/java/org/bukkit/World.java
+@@ -2261,8 +2261,10 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+ * @return The spawned {@link FallingBlock} instance
+ * @throws IllegalArgumentException if {@link Location} or {@link
+ * MaterialData} are null or {@link Material} of the {@link MaterialData} is not a block
++ * @deprecated Use {@link #spawn(Location, Class, Consumer)} (or a variation thereof) in combination with {@link FallingBlock#setBlockData(BlockData)}
+ */
+ @NotNull
++ @Deprecated // Paper
+ public FallingBlock spawnFallingBlock(@NotNull Location location, @NotNull MaterialData data) throws IllegalArgumentException;
+
+ /**
+@@ -2275,8 +2277,10 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+ * @return The spawned {@link FallingBlock} instance
+ * @throws IllegalArgumentException if {@link Location} or {@link
+ * BlockData} are null
++ * @deprecated Use {@link #spawn(Location, Class, Consumer)} (or a variation thereof) in combination with {@link FallingBlock#setBlockData(BlockData)}
+ */
+ @NotNull
++ @org.jetbrains.annotations.ApiStatus.Obsolete // Paper
+ public FallingBlock spawnFallingBlock(@NotNull Location location, @NotNull BlockData data) throws IllegalArgumentException;
+
+ /**
+@@ -2293,7 +2297,7 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+ * @return The spawned {@link FallingBlock} instance
+ * @throws IllegalArgumentException if {@link Location} or {@link
+ * Material} are null or {@link Material} is not a block
+- * @deprecated Magic value
++ * @deprecated Magic value. Use {@link #spawn(Location, Class, Consumer)} (or a variation thereof) in combination with {@link FallingBlock#setBlockData(BlockData)}
+ */
+ @Deprecated
+ @NotNull
+diff --git a/src/main/java/org/bukkit/entity/FallingBlock.java b/src/main/java/org/bukkit/entity/FallingBlock.java
+index ae1ce2ee2deb82f3f4144ec54b3ba119b437c5e9..7904c716a3b0869ebf2f9b416536c59121a539a8 100644
+--- a/src/main/java/org/bukkit/entity/FallingBlock.java
++++ b/src/main/java/org/bukkit/entity/FallingBlock.java
+@@ -26,6 +26,33 @@ public interface FallingBlock extends Entity {
+ */
+ @NotNull
+ BlockData getBlockData();
++ // Paper start
++ /**
++ * Sets the data for the falling block.
++ * <br>
++ * Any potential additional data currently stored in the falling blocks {@link #getBlockState()} will be
++ * purged by calling this setter.
++ *
++ * @param blockData the data to use as the block
++ */
++ void setBlockData(@NotNull BlockData blockData);
++
++ /**
++ * Get the data of the falling block represented as a {@link org.bukkit.block.BlockState BlockState}
++ * which includes potential NBT data that gets applied when the block gets placed on landing.
++ *
++ * @return the BlockState representing this block
++ */
++ @NotNull
++ org.bukkit.block.BlockState getBlockState();
++
++ /**
++ * Sets the {@link BlockData} and possibly present tile entity data for the falling block.
++ *
++ * @param blockState the BlockState to use
++ */
++ void setBlockState(@NotNull org.bukkit.block.BlockState blockState);
++ // Paper end
+
+ /**
+ * Get if the falling block will break into an item if it cannot be placed.
+@@ -137,4 +164,23 @@ public interface FallingBlock extends Entity {
+ default org.bukkit.Location getSourceLoc() {
+ return this.getOrigin();
+ }
++ // Paper start - Auto expire setting
++ /**
++ * Sets if this falling block should expire after:
++ * - 30 seconds
++ * - 5 seconds and is outside of the world
++ *
++ * @return if this behavior occurs
++ */
++ boolean doesAutoExpire();
++
++ /**
++ * Sets if this falling block should expire after:
++ * - 30 seconds
++ * - 5 seconds and is outside of the world
++ *
++ * @param autoExpires if this behavior should occur
++ */
++ void shouldAutoExpire(boolean autoExpires);
++ // Paper end - Auto expire setting
+ }