From e905fc102c846aa835a9d1ba5b9bad102d9c7fbd Mon Sep 17 00:00:00 2001 From: Steep Date: Tue, 25 Nov 2025 02:28:10 +0100 Subject: [PATCH 1/3] This removes any data from piston heads when they retract and therefore no longer exist. --- .../com/jeff_media/customblockdata/BlockDataListener.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/jeff_media/customblockdata/BlockDataListener.java b/src/main/java/com/jeff_media/customblockdata/BlockDataListener.java index 26182ed..03589c1 100644 --- a/src/main/java/com/jeff_media/customblockdata/BlockDataListener.java +++ b/src/main/java/com/jeff_media/customblockdata/BlockDataListener.java @@ -142,6 +142,13 @@ public void onPiston(BlockPistonExtendEvent event) { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPiston(BlockPistonRetractEvent event) { + Block pistonHead = event.getBlock().getRelative(event.getDirection().getOppositeFace()); + if(CustomBlockData.hasCustomBlockData(pistonHead, plugin)) { + CustomBlockDataMoveEvent moveEvent = new CustomBlockDataMoveEvent(plugin, pistonHead, destinationBlock, event); + Bukkit.getPluginManager().callEvent(moveEvent); + if (moveEvent.isCancelled()) return; + getCbd(pistonHead).clear(); + } onPiston(event.getBlocks(), event); } From 701946a5f8589555199024bb0d19157b029fe991 Mon Sep 17 00:00:00 2001 From: Steep Date: Tue, 25 Nov 2025 02:38:11 +0100 Subject: [PATCH 2/3] This will fix data not being removed from things like cactus, sugarcane, and really any block that breaks due to a block update. --- .../com/jeff_media/customblockdata/BlockDataListener.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/jeff_media/customblockdata/BlockDataListener.java b/src/main/java/com/jeff_media/customblockdata/BlockDataListener.java index 03589c1..81d9acc 100644 --- a/src/main/java/com/jeff_media/customblockdata/BlockDataListener.java +++ b/src/main/java/com/jeff_media/customblockdata/BlockDataListener.java @@ -105,6 +105,14 @@ private void callAndRemove(Block block, Event bukkitEvent) { public void onBreak(BlockBreakEvent event) { callAndRemove(event); } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onPhysics(BlockPhysicsEvent event) { + // event.getBlock().getType() returns air when the block is broken + if(event.getBlock().getType() == Material.AIR) { + callAndRemove(event.getBlock(), event); + } + } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlace(BlockPlaceEvent event) { From ad9752d1d78a44d2d89b389f9455feeda0b14bb2 Mon Sep 17 00:00:00 2001 From: Steep Date: Tue, 25 Nov 2025 04:11:51 +0100 Subject: [PATCH 3/3] Noticed this old code was using the wrong event and that we don't seem to care if the BukkitEvent was canceled. --- .../com/jeff_media/customblockdata/BlockDataListener.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/com/jeff_media/customblockdata/BlockDataListener.java b/src/main/java/com/jeff_media/customblockdata/BlockDataListener.java index 81d9acc..55e1a95 100644 --- a/src/main/java/com/jeff_media/customblockdata/BlockDataListener.java +++ b/src/main/java/com/jeff_media/customblockdata/BlockDataListener.java @@ -152,10 +152,7 @@ public void onPiston(BlockPistonExtendEvent event) { public void onPiston(BlockPistonRetractEvent event) { Block pistonHead = event.getBlock().getRelative(event.getDirection().getOppositeFace()); if(CustomBlockData.hasCustomBlockData(pistonHead, plugin)) { - CustomBlockDataMoveEvent moveEvent = new CustomBlockDataMoveEvent(plugin, pistonHead, destinationBlock, event); - Bukkit.getPluginManager().callEvent(moveEvent); - if (moveEvent.isCancelled()) return; - getCbd(pistonHead).clear(); + callAndRemove(pistonHead); } onPiston(event.getBlocks(), event); }