aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0233-Additional-Block-Material-API-s.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/api/0233-Additional-Block-Material-API-s.patch')
-rw-r--r--patches/api/0233-Additional-Block-Material-API-s.patch57
1 files changed, 57 insertions, 0 deletions
diff --git a/patches/api/0233-Additional-Block-Material-API-s.patch b/patches/api/0233-Additional-Block-Material-API-s.patch
new file mode 100644
index 0000000000..ab3e6f9ac6
--- /dev/null
+++ b/patches/api/0233-Additional-Block-Material-API-s.patch
@@ -0,0 +1,57 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Aikar <[email protected]>
+Date: Wed, 30 Dec 2020 17:27:27 -0500
+Subject: [PATCH] Additional Block Material API's
+
+Faster version for isSolid() that utilizes NMS's state for isSolid instead of the slower
+process to do this in the Bukkit API
+
+Adds API for buildable, replaceable, burnable too.
+
+diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
+index 4aea4be0677d93e17a4ce98dd340dd9921f996a0..c68ed7de2d50da4105dd38c0986f237e8c56b2d6 100644
+--- a/src/main/java/org/bukkit/block/Block.java
++++ b/src/main/java/org/bukkit/block/Block.java
+@@ -439,6 +439,42 @@ public interface Block extends Metadatable, Translatable, net.kyori.adventure.tr
+ */
+ boolean isLiquid();
+
++ // Paper start
++ /**
++ * Check if this block is solid
++ * <p>
++ * Determined by Minecraft, typically a block a player can use to place a new block to build things.
++ * An example of a non buildable block would be liquids, flowers, or fire
++ *
++ * @return true if block is buildable
++ */
++ boolean isBuildable();
++ /**
++ * Check if this block is burnable
++ * <p>
++ * Determined by Minecraft, typically a block that fire can destroy (Wool, Wood)
++ *
++ * @return true if block is burnable
++ */
++ boolean isBurnable();
++ /**
++ * Check if this block is replaceable
++ * <p>
++ * Determined by Minecraft, representing a block that is not AIR that you can still place a new block at, such as flowers.
++ * @return true if block is replaceable
++ */
++ boolean isReplaceable();
++ /**
++ * Check if this block is solid
++ * <p>
++ * Determined by Minecraft, typically a block a player can stand on and can't be passed through.
++ *
++ * This API is faster than accessing Material#isSolid as it avoids a material lookup and switch statement.
++ * @return true if block is solid
++ */
++ boolean isSolid();
++ // Paper end
++
+ /**
+ * Gets the temperature of this block.
+ * <p>