From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: MrPowerGamerBR Date: Mon, 10 Jun 2024 14:39:10 -0300 Subject: [PATCH] Add PlayerBlockDestroySpeedEvent diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java index a768b07dae4bf75b68e3bc1d3de4b68fc7d23842..64282c8d6addff1cd29de01a3484a5325e66deb9 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java @@ -338,6 +338,14 @@ public abstract class BlockBehaviour implements FeatureElement { protected float getDestroyProgress(BlockState state, Player player, BlockGetter world, BlockPos pos) { float f = state.getDestroySpeed(world, pos); + // SparklyPaper start - Add PlayerBlockDestroySpeedEvent + // *Technically* it seems that all getDestroyProgress calls use a LevelAccessor, but anyway... + if (world instanceof LevelAccessor) { + net.sparklypower.sparklypaper.event.block.PlayerBlockDestroySpeedEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerBlockDestroySpeedEvent(player, (LevelAccessor) world, pos, f); + f = event.getDestroySpeed(); + } + // SparklyPaper end + if (f == -1.0F) { return 0.0F; } else { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index bd6fee3e3ad9116802ff8bb57bfa741b881c4057..7e563a5288a8280c66dd9b245a587c5f26db1569 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -2204,4 +2204,13 @@ public class CraftEventFactory { return event; } // Paper end - add EntityFertilizeEggEvent + + // SparklyPaper start - add PlayerBlockDestroySpeedEvent + public static net.sparklypower.sparklypaper.event.block.PlayerBlockDestroySpeedEvent callPlayerBlockDestroySpeedEvent(net.minecraft.world.entity.player.Player player, LevelAccessor world, BlockPos blockPos, float destroySpeed) { + org.bukkit.block.Block block = CraftBlock.at(world, blockPos); + net.sparklypower.sparklypaper.event.block.PlayerBlockDestroySpeedEvent event = new net.sparklypower.sparklypaper.event.block.PlayerBlockDestroySpeedEvent((Player) player.getBukkitEntity(), block, destroySpeed); + event.callEvent(); + return event; + } + // SparklyPaper end }