From 3dd027e7de33a176d4cd7f4c005a4e76f9e57817 Mon Sep 17 00:00:00 2001 From: Boy Date: Fri, 17 May 2024 21:37:08 +0200 Subject: [PATCH] fix: attribute being reset between breaking vanilla & custom block --- .../mineinabyss/blocky/listeners/BlockyGenericListener.kt | 3 +++ .../mineinabyss/blocky/listeners/BlockyNoteBlockListener.kt | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/com/mineinabyss/blocky/listeners/BlockyGenericListener.kt b/src/main/kotlin/com/mineinabyss/blocky/listeners/BlockyGenericListener.kt index 638bddc..4d82d39 100644 --- a/src/main/kotlin/com/mineinabyss/blocky/listeners/BlockyGenericListener.kt +++ b/src/main/kotlin/com/mineinabyss/blocky/listeners/BlockyGenericListener.kt @@ -31,6 +31,9 @@ class BlockyGenericListener : Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) fun BlockDamageEvent.onDamageCustomBlock() { + // Return before removing as BlockyNoteBlockListener handles this scenario + if (block.isVanillaNoteBlock) return + player.miningAttribute?.removeModifier(player) if (player.gameMode == GameMode.CREATIVE) return diff --git a/src/main/kotlin/com/mineinabyss/blocky/listeners/BlockyNoteBlockListener.kt b/src/main/kotlin/com/mineinabyss/blocky/listeners/BlockyNoteBlockListener.kt index aff6503..dc1d8db 100644 --- a/src/main/kotlin/com/mineinabyss/blocky/listeners/BlockyNoteBlockListener.kt +++ b/src/main/kotlin/com/mineinabyss/blocky/listeners/BlockyNoteBlockListener.kt @@ -17,6 +17,7 @@ import com.mineinabyss.geary.papermc.tracking.blocks.helpers.toGearyOrNull import com.mineinabyss.geary.papermc.tracking.entities.toGearyOrNull import com.mineinabyss.idofront.entities.rightClicked import com.mineinabyss.idofront.messaging.broadcastVal +import org.bukkit.GameMode import org.bukkit.Material import org.bukkit.attribute.Attribute import org.bukkit.block.data.type.NoteBlock @@ -34,9 +35,11 @@ class BlockyNoteBlockListener : Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) fun BlockDamageEvent.onDamageVanillaBlock() { + // Return before removing as this is handled by BlockyGenericListener + if (block.isBlockyBlock) return player.miningAttribute?.removeModifier(player) - if (!block.isVanillaNoteBlock) return + if (player.gameMode == GameMode.CREATIVE || !block.isVanillaNoteBlock) return val mining = PlayerMiningAttribute(NoteBlockHelpers.vanillaBreakingComponent.createBreakingModifier(player, block)) player.toGearyOrNull()?.set(mining)