mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-13 10:21:13 +01:00
928bcc8d3a
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 09943450 Update SnakeYAML version 5515734f SPIGOT-7162: Incorrect description for Entity#getVehicle javadoc 6f82b381 PR-788: Add getHand() to all relevant events CraftBukkit Changes: aaf484f6f SPIGOT-7163: CraftMerchantRecipe doesn't copy demand and specialPrice from BukkitMerchantRecipe 5329dd6fd PR-1107: Add getHand() to all relevant events 93061706e SPIGOT-7045: Ocelots never spawn with babies with spawn reason OCELOT_BABY
61 lines
2.9 KiB
Diff
61 lines
2.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: MelnCat <melncatuwu@gmail.com>
|
|
Date: Fri, 12 Aug 2022 23:24:37 -0700
|
|
Subject: [PATCH] Add getDrops to BlockState and isPreferredTool to BlockData
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
|
|
index 966ac60daebb7bb211ab8096fc0c5f33db67320a..a8ab1d3ee81664193be39d2735d6495136e0e310 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
|
|
@@ -330,5 +330,33 @@ 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) {
|
|
+ net.minecraft.world.item.ItemStack nms = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(item);
|
|
+
|
|
+ // Modelled off EntityHuman#hasBlock
|
|
+ if (item == null || !data.requiresCorrectToolForDrops() || nms.isCorrectToolForDrops(data)) {
|
|
+ return net.minecraft.world.level.block.Block.getDrops(
|
|
+ data,
|
|
+ world.getHandle(),
|
|
+ position,
|
|
+ world.getHandle().getBlockEntity(position), entity == null ? null :
|
|
+ ((org.bukkit.craftbukkit.entity.CraftEntity) entity).getHandle(), nms
|
|
+ ).stream().map(org.bukkit.craftbukkit.inventory.CraftItemStack::asBukkitCopy).toList();
|
|
+ } else {
|
|
+ return java.util.Collections.emptyList();
|
|
+ }
|
|
+ }
|
|
// Paper end
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
|
|
index e4c15fcbd21f70836c26133ef10f3d0da9b6c238..edce55a0cebe245cd944fcc1df735df66c736e43 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
|
|
@@ -620,4 +620,12 @@ public class CraftBlockData implements BlockData {
|
|
return this.state.isRandomlyTicking();
|
|
}
|
|
// Paper end
|
|
+
|
|
+ // Paper start - Preferred tool API
|
|
+ @Override
|
|
+ public boolean isPreferredTool(org.bukkit.inventory.ItemStack item) {
|
|
+ net.minecraft.world.item.ItemStack nms = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(item);
|
|
+ return !state.requiresCorrectToolForDrops() || nms.isCorrectToolForDrops(state);
|
|
+ }
|
|
+ // Paper end
|
|
}
|