From d98d46d0c92e0f042c9bb690fbaafdcc44253665 Mon Sep 17 00:00:00 2001 From: Brokkonaut Date: Wed, 16 Oct 2019 00:52:29 +0200 Subject: [PATCH] Fix logging when waterlogging waterlogged blocks --- src/main/java/de/diddiz/LogBlock/BlockChange.java | 13 ++++++++++--- .../LogBlock/listeners/BlockPlaceLogging.java | 9 ++++++++- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/diddiz/LogBlock/BlockChange.java b/src/main/java/de/diddiz/LogBlock/BlockChange.java index e28e778..51cac26 100644 --- a/src/main/java/de/diddiz/LogBlock/BlockChange.java +++ b/src/main/java/de/diddiz/LogBlock/BlockChange.java @@ -11,6 +11,7 @@ import org.bukkit.Note; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.Openable; import org.bukkit.block.data.Powerable; +import org.bukkit.block.data.Waterlogged; import org.bukkit.block.data.type.Comparator; import org.bukkit.block.data.type.DaylightDetector; import org.bukkit.block.data.type.Lectern; @@ -123,14 +124,20 @@ public class BlockChange implements LookupCacheElement { } else { msg.append("put ").append(BukkitUtils.toString(ca.itemStack)).append(" into ").append(type.getMaterial().name()); } + } else if (type instanceof Waterlogged && ((Waterlogged) type).isWaterlogged() != ((Waterlogged) replaced).isWaterlogged()) { + if (((Waterlogged) type).isWaterlogged()) { + msg.append("waterlogged ").append(type.getMaterial().name()); + } else { + msg.append("dried ").append(type.getMaterial().name()); + } } else if (BukkitUtils.getContainerBlocks().contains(type.getMaterial())) { msg.append("opened ").append(type.getMaterial().name()); - } else if (type instanceof Openable) { + } else if (type instanceof Openable && ((Openable) type).isOpen() != ((Openable) replaced).isOpen()) { // Door, Trapdoor, Fence gate msg.append(((Openable) type).isOpen() ? "opened" : "closed").append(" ").append(type.getMaterial().name()); - } else if (type.getMaterial() == Material.LEVER) { + } else if (type.getMaterial() == Material.LEVER && ((Switch) type).isPowered() != ((Switch) replaced).isPowered()) { msg.append("switched ").append(type.getMaterial().name()).append(" ").append(((Switch) type).isPowered() ? "on" : "off"); - } else if (type instanceof Switch) { + } else if (type instanceof Switch && ((Switch) type).isPowered() != ((Switch) replaced).isPowered()) { msg.append("pressed ").append(type.getMaterial().name()); } else if (type.getMaterial() == Material.CAKE) { msg.append("ate a piece of ").append(type.getMaterial().name()); diff --git a/src/main/java/de/diddiz/LogBlock/listeners/BlockPlaceLogging.java b/src/main/java/de/diddiz/LogBlock/listeners/BlockPlaceLogging.java index 9912f90..58ce7a2 100644 --- a/src/main/java/de/diddiz/LogBlock/listeners/BlockPlaceLogging.java +++ b/src/main/java/de/diddiz/LogBlock/listeners/BlockPlaceLogging.java @@ -54,7 +54,14 @@ public class BlockPlaceLogging extends LoggingListener { if (placedAt.isEmpty()) { consumer.queueBlockPlace(Actor.actorFromEntity(event.getPlayer()), placedAt.getLocation(), placedMaterial.createBlockData()); } else { - consumer.queueBlockReplace(Actor.actorFromEntity(event.getPlayer()), placedAt.getLocation(), placedAt.getBlockData(), placedMaterial.createBlockData()); + BlockData placedAtBlock = placedAt.getBlockData(); + if (placedAtBlock instanceof Waterlogged && !(((Waterlogged) placedAtBlock).isWaterlogged())) { + Waterlogged clickedWaterloggedWithWater = (Waterlogged) placedAtBlock.clone(); + clickedWaterloggedWithWater.setWaterlogged(true); + consumer.queueBlockReplace(Actor.actorFromEntity(event.getPlayer()), placedAt.getLocation(), placedAtBlock, clickedWaterloggedWithWater); + } else { + consumer.queueBlockReplace(Actor.actorFromEntity(event.getPlayer()), placedAt.getLocation(), placedAtBlock, placedMaterial.createBlockData()); + } } } }