diff --git a/src/main/java/de/diddiz/LogBlock/BlockChange.java b/src/main/java/de/diddiz/LogBlock/BlockChange.java index 16b2a7e..450f7fd 100644 --- a/src/main/java/de/diddiz/LogBlock/BlockChange.java +++ b/src/main/java/de/diddiz/LogBlock/BlockChange.java @@ -143,7 +143,7 @@ public class BlockChange implements LookupCacheElement { } else if (type.getMaterial() == Material.DAYLIGHT_DETECTOR) { msg.append("set ").append(type.getMaterial().name()).append(" to ").append(((DaylightDetector) type).isInverted() ? "inverted" : "normal"); } else if (type instanceof Lectern) { - msg.append("changed the book on a ").append(type.getMaterial().name()).append(" to").append(replacedDetails.length() == 0 ? "empty" : replacedDetails); + msg.append("changed the book on a ").append(type.getMaterial().name()).append(" to").append(typeDetails.length() == 0 ? " empty" : typeDetails); } else if (type instanceof Powerable) { msg.append("stepped on ").append(type.getMaterial().name()); } else if (type.getMaterial() == Material.TRIPWIRE) { diff --git a/src/main/java/de/diddiz/LogBlock/listeners/BlockPlaceLogging.java b/src/main/java/de/diddiz/LogBlock/listeners/BlockPlaceLogging.java index cf1bd4b..9912f90 100644 --- a/src/main/java/de/diddiz/LogBlock/listeners/BlockPlaceLogging.java +++ b/src/main/java/de/diddiz/LogBlock/listeners/BlockPlaceLogging.java @@ -29,7 +29,7 @@ public class BlockPlaceLogging extends LoggingListener { final BlockState before = event.getBlockReplacedState(); final BlockState after = event.getBlockPlaced().getState(); final Actor actor = Actor.actorFromEntity(event.getPlayer()); - if (before.getType() == Material.LECTERN && after.getType() == Material.LECTERN && !Config.isLogging(event.getBlock().getWorld(), Logging.LECTERNBOOKCHANGE)) { + if (before.getType() == Material.LECTERN && after.getType() == Material.LECTERN) { return; } LoggingUtil.smartLogBlockPlace(consumer, actor, before, after); diff --git a/src/main/java/de/diddiz/LogBlock/listeners/LecternLogging.java b/src/main/java/de/diddiz/LogBlock/listeners/LecternLogging.java index 491d4b2..e6b367c 100644 --- a/src/main/java/de/diddiz/LogBlock/listeners/LecternLogging.java +++ b/src/main/java/de/diddiz/LogBlock/listeners/LecternLogging.java @@ -6,16 +6,37 @@ import de.diddiz.LogBlock.Actor; import de.diddiz.LogBlock.LogBlock; import de.diddiz.LogBlock.Logging; import de.diddiz.LogBlock.config.WorldConfig; +import org.bukkit.Material; +import org.bukkit.block.BlockState; import org.bukkit.block.Lectern; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; +import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.player.PlayerTakeLecternBookEvent; +import org.bukkit.inventory.ItemStack; public class LecternLogging extends LoggingListener { public LecternLogging(LogBlock lb) { super(lb); } + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onBlockPlace(BlockPlaceEvent event) { + final WorldConfig wcfg = getWorldConfig(event.getPlayer().getWorld()); + if (wcfg != null && wcfg.isLogging(Logging.LECTERNBOOKCHANGE)) { + final BlockState before = event.getBlockReplacedState(); + final BlockState after = event.getBlockPlaced().getState(); + if (before.getType() == Material.LECTERN && after.getType() == Material.LECTERN) { + Lectern lecternBefore = (Lectern) before.getBlock().getState(); + ItemStack book = lecternBefore.getSnapshotInventory().getItem(0); + lecternBefore.getSnapshotInventory().setItem(0, null); + lecternBefore.setBlockData(before.getBlockData()); + consumer.queueBlockReplace(Actor.actorFromEntity(event.getPlayer()), lecternBefore, after); + lecternBefore.getSnapshotInventory().setItem(0, book); + } + } + } + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerTakeLecternBook(PlayerTakeLecternBookEvent event) { final WorldConfig wcfg = getWorldConfig(event.getPlayer().getWorld()); @@ -23,7 +44,11 @@ public class LecternLogging extends LoggingListener { Lectern oldState = event.getLectern(); Lectern newState = (Lectern) oldState.getBlock().getState(); newState.getSnapshotInventory().setItem(0, null); - + org.bukkit.block.data.type.Lectern oldBlockData = (org.bukkit.block.data.type.Lectern) oldState.getBlockData(); + org.bukkit.block.data.type.Lectern blockData = (org.bukkit.block.data.type.Lectern) Material.LECTERN.createBlockData(); + blockData.setFacing(oldBlockData.getFacing()); + blockData.setPowered(oldBlockData.isPowered()); + newState.setBlockData(blockData); consumer.queueBlockReplace(Actor.actorFromEntity(event.getPlayer()), oldState, newState); } }