aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches
diff options
context:
space:
mode:
authorLulu13022002 <[email protected]>2024-04-06 23:26:56 +0200
committerGitHub <[email protected]>2024-04-06 17:26:56 -0400
commitd8456ee65b75adfa854ca56c1badc160f27ddd9a (patch)
tree001ee1478932546b88178f1e36bab6de5c39f100 /patches
parentbbee11fb0e45f1a59de18f9b4e7d55f9d0d5d55f (diff)
downloadPaper-d8456ee65b75adfa854ca56c1badc160f27ddd9a.tar.gz
Paper-d8456ee65b75adfa854ca56c1badc160f27ddd9a.zip
Don't throw NPE for unplaced blockstate on #getDrops (#10366)
Diffstat (limited to 'patches')
-rw-r--r--patches/api/0374-Add-getDrops-to-BlockState.patch15
-rw-r--r--patches/server/0788-Add-getDrops-to-BlockState.patch15
2 files changed, 14 insertions, 16 deletions
diff --git a/patches/api/0374-Add-getDrops-to-BlockState.patch b/patches/api/0374-Add-getDrops-to-BlockState.patch
index 0a8d8ad13a..f25ab4169f 100644
--- a/patches/api/0374-Add-getDrops-to-BlockState.patch
+++ b/patches/api/0374-Add-getDrops-to-BlockState.patch
@@ -7,10 +7,10 @@ Originally added isPreferredTool to BlockData but
upstream added that.
diff --git a/src/main/java/org/bukkit/block/BlockState.java b/src/main/java/org/bukkit/block/BlockState.java
-index c439cf0bb6c50db2b3304c60e50046f096392f9f..ef35316fa66ac8d9c7836b9c8af56dcefbf6ff2e 100644
+index c439cf0bb6c50db2b3304c60e50046f096392f9f..19837f0eae67854f48e777bc7d4a13b53fa4b436 100644
--- a/src/main/java/org/bukkit/block/BlockState.java
+++ b/src/main/java/org/bukkit/block/BlockState.java
-@@ -243,5 +243,34 @@ public interface BlockState extends Metadatable {
+@@ -243,5 +243,41 @@ public interface BlockState extends Metadatable {
* @return true if collidable
*/
boolean isCollidable();
@@ -19,9 +19,12 @@ index c439cf0bb6c50db2b3304c60e50046f096392f9f..ef35316fa66ac8d9c7836b9c8af56dce
+ * Returns an immutable list of items which would drop by destroying this block state.
+ *
+ * @return an immutable list of dropped items for the block state
++ * @throws IllegalStateException if this block state is not placed
+ */
+ @NotNull
-+ [email protected] Collection<org.bukkit.inventory.ItemStack> getDrops();
++ default [email protected] Collection<org.bukkit.inventory.ItemStack> getDrops() {
++ return this.getDrops(null);
++ }
+
+ /**
+ * Returns an immutable list of items which would drop by destroying this block state
@@ -29,9 +32,12 @@ index c439cf0bb6c50db2b3304c60e50046f096392f9f..ef35316fa66ac8d9c7836b9c8af56dce
+ *
+ * @param tool The tool or item in hand used for digging
+ * @return an immutable list of dropped items for the block state
++ * @throws IllegalStateException if this block state is not placed
+ */
+ @NotNull
-+ [email protected] Collection<org.bukkit.inventory.ItemStack> getDrops(@Nullable org.bukkit.inventory.ItemStack tool);
++ default [email protected] Collection<org.bukkit.inventory.ItemStack> getDrops(@Nullable org.bukkit.inventory.ItemStack tool) {
++ return this.getDrops(tool, null);
++ }
+
+ /**
+ * Returns an immutable list of items which would drop by the entity destroying this
@@ -40,6 +46,7 @@ index c439cf0bb6c50db2b3304c60e50046f096392f9f..ef35316fa66ac8d9c7836b9c8af56dce
+ * @param tool The tool or item in hand used for digging
+ * @param entity the entity destroying the block
+ * @return an immutable list of dropped items for the block state
++ * @throws IllegalStateException if this block state is not placed
+ */
+ @NotNull
+ [email protected] Collection<org.bukkit.inventory.ItemStack> getDrops(@Nullable org.bukkit.inventory.ItemStack tool, @Nullable org.bukkit.entity.Entity entity);
diff --git a/patches/server/0788-Add-getDrops-to-BlockState.patch b/patches/server/0788-Add-getDrops-to-BlockState.patch
index 93f48ad578..ba33e973c5 100644
--- a/patches/server/0788-Add-getDrops-to-BlockState.patch
+++ b/patches/server/0788-Add-getDrops-to-BlockState.patch
@@ -7,26 +7,17 @@ Originally added isPreferredTool to BlockData but
upstream added that.
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
-index 08716e757b2e100f7bc47a046f02db664d882aba..d11d854ae90b99aa2ce227994d07fe1fe9b4a60a 100644
+index 08716e757b2e100f7bc47a046f02db664d882aba..2cfaa59a0bb6b5253b5a8dcc38ae65e0f085fd3f 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
-@@ -337,5 +337,33 @@ public class CraftBlockState implements BlockState {
+@@ -337,5 +337,24 @@ public class CraftBlockState implements BlockState {
public boolean isCollidable() {
return this.data.getBlock().hasCollision;
}
+
+ @Override
-+ public java.util.Collection<org.bukkit.inventory.ItemStack> getDrops() {
-+ return this.getDrops(null);
-+ }
-+
-+ @Override
-+ public java.util.Collection<org.bukkit.inventory.ItemStack> getDrops(org.bukkit.inventory.ItemStack item) {
-+ return this.getDrops(item, null);
-+ }
-+
-+ @Override
+ public java.util.Collection<org.bukkit.inventory.ItemStack> getDrops(org.bukkit.inventory.ItemStack item, org.bukkit.entity.Entity entity) {
++ this.requirePlaced();
+ net.minecraft.world.item.ItemStack nms = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(item);
+
+ // Modelled off EntityHuman#hasBlock