summaryrefslogtreecommitdiffhomepage
path: root/patches/unapplied/server/0503-Add-Destroy-Speed-API.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/unapplied/server/0503-Add-Destroy-Speed-API.patch')
-rw-r--r--patches/unapplied/server/0503-Add-Destroy-Speed-API.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/patches/unapplied/server/0503-Add-Destroy-Speed-API.patch b/patches/unapplied/server/0503-Add-Destroy-Speed-API.patch
new file mode 100644
index 0000000000..d69d702d7e
--- /dev/null
+++ b/patches/unapplied/server/0503-Add-Destroy-Speed-API.patch
@@ -0,0 +1,38 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Ineusia <[email protected]>
+Date: Mon, 26 Oct 2020 11:48:06 -0500
+Subject: [PATCH] Add Destroy Speed API
+
+Co-authored-by: Jake Potrebic <[email protected]>
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
+index 1cfbe11ba3e82071bad8b723ac781818268414f2..5cca837474205eaa7bffadf31a60bf352ef7365b 100644
+--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
++++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
+@@ -701,5 +701,26 @@ public class CraftBlock implements Block {
+ public String translationKey() {
+ return this.getNMS().getBlock().getDescriptionId();
+ }
++
++ @Override
++ public float getDestroySpeed(ItemStack itemStack, boolean considerEnchants) {
++ net.minecraft.world.item.ItemStack nmsItemStack;
++ if (itemStack instanceof CraftItemStack) {
++ nmsItemStack = ((CraftItemStack) itemStack).handle;
++ if (nmsItemStack == null) {
++ nmsItemStack = net.minecraft.world.item.ItemStack.EMPTY;
++ }
++ } else {
++ nmsItemStack = CraftItemStack.asNMSCopy(itemStack);
++ }
++ float speed = nmsItemStack.getDestroySpeed(this.getNMS().getBlock().defaultBlockState());
++ if (speed > 1.0F && considerEnchants) {
++ int enchantLevel = net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.BLOCK_EFFICIENCY, nmsItemStack);
++ if (enchantLevel > 0) {
++ speed += enchantLevel * enchantLevel + 1;
++ }
++ }
++ return speed;
++ }
+ // Paper end
+ }