From 3730aa92c4e5f4e644f792aa8c14937634d11819 Mon Sep 17 00:00:00 2001 From: Brokkonaut Date: Tue, 17 Aug 2021 05:54:13 +0200 Subject: [PATCH] Log breaking dripstone Fixes #831 --- src/main/java/de/diddiz/util/LoggingUtil.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/main/java/de/diddiz/util/LoggingUtil.java b/src/main/java/de/diddiz/util/LoggingUtil.java index 77df123..3c68c5b 100644 --- a/src/main/java/de/diddiz/util/LoggingUtil.java +++ b/src/main/java/de/diddiz/util/LoggingUtil.java @@ -14,6 +14,8 @@ import org.bukkit.block.data.Directional; import org.bukkit.block.data.type.Bell; import org.bukkit.block.data.type.Bell.Attachment; import org.bukkit.block.data.type.Lantern; +import org.bukkit.block.data.type.PointedDripstone; +import org.bukkit.block.data.type.PointedDripstone.Thickness; import org.bukkit.entity.Entity; import org.bukkit.entity.Projectile; import org.bukkit.entity.TNTPrimed; @@ -199,6 +201,24 @@ public class LoggingUtil { if (bell.getAttachment() == Attachment.FLOOR) { consumer.queueBlockBreak(actor, checkBlock.getState()); } + } else if (typeAbove == Material.POINTED_DRIPSTONE) { + Block dripStoneBlock = checkBlock; + while (true) { + if (dripStoneBlock.getType() != Material.POINTED_DRIPSTONE) { + break; + } + PointedDripstone dripstone = (PointedDripstone) dripStoneBlock.getBlockData(); + if (dripstone.getVerticalDirection() != BlockFace.UP) { + if (dripstone.getThickness() == Thickness.TIP_MERGE) { + PointedDripstone newDripstone = (PointedDripstone) dripstone.clone(); + newDripstone.setThickness(Thickness.TIP); + consumer.queueBlockReplace(actor, dripStoneBlock.getState(), newDripstone); + } + break; + } + consumer.queueBlockBreak(actor, dripStoneBlock.getState()); + dripStoneBlock = dripStoneBlock.getRelative(BlockFace.UP); + } } checkBlock = origin.getRelative(BlockFace.DOWN); @@ -233,6 +253,24 @@ public class LoggingUtil { checkBlock = checkBlock.getRelative(BlockFace.DOWN); typeBelow = checkBlock.getType(); } + } else if (typeBelow == Material.POINTED_DRIPSTONE) { + Block dripStoneBlock = checkBlock; + while (true) { + if (dripStoneBlock.getType() != Material.POINTED_DRIPSTONE) { + break; + } + PointedDripstone dripstone = (PointedDripstone) dripStoneBlock.getBlockData(); + if (dripstone.getVerticalDirection() != BlockFace.DOWN) { + if (dripstone.getThickness() == Thickness.TIP_MERGE) { + PointedDripstone newDripstone = (PointedDripstone) dripstone.clone(); + newDripstone.setThickness(Thickness.TIP); + consumer.queueBlockReplace(actor, dripStoneBlock.getState(), newDripstone); + } + break; + } + consumer.queueBlockBreak(actor, dripStoneBlock.getState()); + dripStoneBlock = dripStoneBlock.getRelative(BlockFace.DOWN); + } } List relativeBreakables = BukkitUtils.getBlocksNearby(origin, BukkitUtils.getRelativeBreakables());