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 99fd67a78539133adf78d65e2c520ff3dd260301..96640ae707c9babe1c4f4895f39d4d7cfc71a765 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 @@ -336,6 +336,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 e37aaf77f94b97b736cc20ef070cefdff0400188..a46f0c810ee2b9679c0530e5e6d3505b3d1f661c 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -2271,4 +2271,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 }