geforkt von Mirrors/Paper
e339ec27b4
The method sadly is not usable in 1.21 without a player as all of an enchantments attribtue modifiers rely on a base value supplied by a player. The method could only offer a rough estimate based on some default values, however a better method for this should be added down the line rather than trying to force such logic into the existing one.
84 Zeilen
3.8 KiB
Diff
84 Zeilen
3.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Ineusia <ineusia@yahoo.com>
|
|
Date: Mon, 26 Oct 2020 11:37:48 -0500
|
|
Subject: [PATCH] Add Destroy Speed API
|
|
|
|
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
|
|
diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
|
|
index 25db31b2e9a6d75f0c59f75237842f9ad7d1c350..75c2aadb0a2baebe8b2625ad11b16380285d65c5 100644
|
|
--- a/src/main/java/org/bukkit/block/Block.java
|
|
+++ b/src/main/java/org/bukkit/block/Block.java
|
|
@@ -690,4 +690,31 @@ public interface Block extends Metadatable, Translatable, net.kyori.adventure.tr
|
|
@Deprecated(forRemoval = true)
|
|
String getTranslationKey();
|
|
// Paper end
|
|
+
|
|
+ // Paper start - destroy speed API
|
|
+ /**
|
|
+ * Gets the speed at which this block will be destroyed by a given {@link ItemStack}
|
|
+ * <p>
|
|
+ * Default value is 1.0
|
|
+ *
|
|
+ * @param itemStack {@link ItemStack} used to mine this Block
|
|
+ * @return the speed that this Block will be mined by the given {@link ItemStack}
|
|
+ */
|
|
+ default float getDestroySpeed(final @NotNull ItemStack itemStack) {
|
|
+ return this.getBlockData().getDestroySpeed(itemStack);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Gets the speed at which this block will be destroyed by a given {@link ItemStack}
|
|
+ * <p>
|
|
+ * Default value is 1.0
|
|
+ *
|
|
+ * @param itemStack {@link ItemStack} used to mine this Block
|
|
+ * @param considerEnchants true to look at enchants on the itemstack
|
|
+ * @return the speed that this Block will be mined by the given {@link ItemStack}
|
|
+ */
|
|
+ default float getDestroySpeed(@NotNull ItemStack itemStack, boolean considerEnchants) {
|
|
+ return this.getBlockData().getDestroySpeed(itemStack, considerEnchants);
|
|
+ }
|
|
+ // Paper end - destroy speed API
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/block/data/BlockData.java b/src/main/java/org/bukkit/block/data/BlockData.java
|
|
index cd3b3e05cc825cfedec07f9a2a1e0b7b2a8866d6..a2dc7376b2a3d386b671c894f73389139e0d97bf 100644
|
|
--- a/src/main/java/org/bukkit/block/data/BlockData.java
|
|
+++ b/src/main/java/org/bukkit/block/data/BlockData.java
|
|
@@ -266,4 +266,35 @@ public interface BlockData extends Cloneable {
|
|
@NotNull
|
|
@ApiStatus.Experimental
|
|
BlockState createBlockState();
|
|
+
|
|
+ // Paper start - destroy speed API
|
|
+ /**
|
|
+ * Gets the speed at which this block will be destroyed by a given {@link ItemStack}
|
|
+ * <p>
|
|
+ * Default value is 1.0
|
|
+ *
|
|
+ * @param itemStack {@link ItemStack} used to mine this Block
|
|
+ * @return the speed that this Block will be mined by the given {@link ItemStack}
|
|
+ * @deprecated the destroy speed of a block was never purely tied to an item stack. Since 1.21 enchantments
|
|
+ * also use complex effects that require a consuming player to compute their effects, including mining efficiency.
|
|
+ */
|
|
+ @Deprecated(forRemoval = true, since = "1.21")
|
|
+ default float getDestroySpeed(final @NotNull ItemStack itemStack) {
|
|
+ return this.getDestroySpeed(itemStack, false);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Gets the speed at which this block will be destroyed by a given {@link ItemStack}
|
|
+ * <p>
|
|
+ * Default value is 1.0
|
|
+ *
|
|
+ * @param itemStack {@link ItemStack} used to mine this Block
|
|
+ * @param considerEnchants true to look at enchants on the itemstack
|
|
+ * @return the speed that this Block will be mined by the given {@link ItemStack}
|
|
+ * @deprecated the destroy speed of a block was never purely tied to an item stack. Since 1.21 enchantments
|
|
+ * also use complex effects that require a consuming player to compute their effects, including mining efficiency.
|
|
+ */
|
|
+ @Deprecated(forRemoval = true, since = "1.21")
|
|
+ float getDestroySpeed(@NotNull ItemStack itemStack, boolean considerEnchants);
|
|
+ // Paper end - destroy speed API
|
|
}
|