diff --git a/src/de/diddiz/LogBlock/Config.java b/src/de/diddiz/LogBlock/Config.java index b4bf5bc..4142bc6 100644 --- a/src/de/diddiz/LogBlock/Config.java +++ b/src/de/diddiz/LogBlock/Config.java @@ -22,7 +22,7 @@ public class Config public final boolean useBukkitScheduler; public final int keepLogDays; public final boolean dumpDeletedLog; - public final boolean logBlockCreations, logBlockDestroyings, logSignTexts, logExplosions, logFire, logLeavesDecay, logLavaFlow, logChestAccess, logKills; + public final boolean logBlockCreations, logBlockDestroyings, logSignTexts, logExplosions, logFire, logLeavesDecay, logLavaFlow, logChestAccess, logButtonsAndLevers, logKills; public final boolean logCreeperExplosionsAsPlayerWhoTriggeredThese; public final LogKillsLevel logKillsLevel; public final Set dontRollback; @@ -100,6 +100,8 @@ public class Config config.setProperty("logging.logLavaFlow", false); if (!subkeys.contains("logChestAccess")) config.setProperty("logging.logChestAccess", false); + if (!subkeys.contains("logButtonsAndLevers")) + config.setProperty("logging.logButtonsAndLevers", false); if (!subkeys.contains("logKills")) config.setProperty("logging.logKills", false); if (!subkeys.contains("logKillsLevel")) @@ -159,6 +161,7 @@ public class Config logCreeperExplosionsAsPlayerWhoTriggeredThese = config.getBoolean("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false); logFire = config.getBoolean("logging.logFire", false); logChestAccess = config.getBoolean("logging.logChestAccess", false); + logButtonsAndLevers = config.getBoolean("logging.logButtonsAndLevers", false); logLeavesDecay = config.getBoolean("logging.logLeavesDecay", false); logLavaFlow = config.getBoolean("logging.logLavaFlow", false); logKills = config.getBoolean("logging.logKills", false); diff --git a/src/de/diddiz/LogBlock/HistoryFormatter.java b/src/de/diddiz/LogBlock/HistoryFormatter.java index a3482bd..c7fe700 100644 --- a/src/de/diddiz/LogBlock/HistoryFormatter.java +++ b/src/de/diddiz/LogBlock/HistoryFormatter.java @@ -30,7 +30,7 @@ public class HistoryFormatter } else if (type == replaced) { if (type == 0) msg.append("did a unspecified action"); - else if (type == 23 || type == 54 || type == 61) { + else if (type == 23 || type == 54 || type == 61 || type == 62) { final int itemType = rs.getInt("itemtype"); final int itemAmount = rs.getInt("itemamount"); if (itemType == 0 || itemAmount == 0) @@ -39,7 +39,10 @@ public class HistoryFormatter msg.append("took " + itemAmount * -1 + "x " + getMaterialName(itemType)); else msg.append("put in " + itemAmount + "x " + getMaterialName(itemType)); - } + } else if (type == 69) + msg.append("swiched " + getMaterialName(type)); + else if (type == 77) + msg.append("pressed " + getMaterialName(type)); } else if (type == 0) msg.append("destroyed " + getMaterialName(replaced)); else if (replaced == 0) diff --git a/src/de/diddiz/LogBlock/LBPlayerListener.java b/src/de/diddiz/LogBlock/LBPlayerListener.java index 625b252..5df1d96 100644 --- a/src/de/diddiz/LogBlock/LBPlayerListener.java +++ b/src/de/diddiz/LogBlock/LBPlayerListener.java @@ -1,8 +1,10 @@ package de.diddiz.LogBlock; import org.bukkit.Material; +import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerBucketEmptyEvent; import org.bukkit.event.player.PlayerBucketFillEvent; +import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerListener; class LBPlayerListener extends PlayerListener @@ -15,10 +17,11 @@ class LBPlayerListener extends PlayerListener @Override public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) { - if (event.getBucket() == Material.WATER_BUCKET) - consumer.queueBlockPlace(event.getPlayer().getName(), event.getBlockClicked().getFace(event.getBlockFace()).getLocation(), 9, (byte)0); - else if (event.getBucket() == Material.LAVA_BUCKET) - consumer.queueBlockPlace(event.getPlayer().getName(), event.getBlockClicked().getFace(event.getBlockFace()).getLocation(), 11, (byte)0); + if (!event.isCancelled()) + if (event.getBucket() == Material.WATER_BUCKET) + consumer.queueBlockPlace(event.getPlayer().getName(), event.getBlockClicked().getFace(event.getBlockFace()).getLocation(), 9, (byte)0); + else if (event.getBucket() == Material.LAVA_BUCKET) + consumer.queueBlockPlace(event.getPlayer().getName(), event.getBlockClicked().getFace(event.getBlockFace()).getLocation(), 11, (byte)0); } @Override @@ -26,4 +29,13 @@ class LBPlayerListener extends PlayerListener if (!event.isCancelled()) consumer.queueBlockBreak(event.getPlayer().getName(), event.getBlockClicked().getState()); } + + @Override + public void onPlayerInteract(PlayerInteractEvent event) { + if (!event.isCancelled() && (event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_BLOCK)) { + final int type = event.getClickedBlock().getTypeId(); + if (type == 69 || type == 77) + consumer.queueBlock(event.getPlayer().getName(), event.getClickedBlock().getLocation(), type, type, (byte)0); + } + } } diff --git a/src/de/diddiz/LogBlock/LogBlock.java b/src/de/diddiz/LogBlock/LogBlock.java index cd50973..a583378 100644 --- a/src/de/diddiz/LogBlock/LogBlock.java +++ b/src/de/diddiz/LogBlock/LogBlock.java @@ -132,6 +132,8 @@ public class LogBlock extends JavaPlugin log.warning("[LogBlock] BukkitContrib not found. Can't log chest accesses."); if (config.logLavaFlow) pm.registerEvent(Type.BLOCK_FROMTO, lbBlockListener, Priority.Monitor, this); + if (config.logButtonsAndLevers) + pm.registerEvent(Type.PLAYER_INTERACT, lbPlayerListener, Priority.Monitor, this); if (config.logKills) pm.registerEvent(Type.ENTITY_DAMAGE, lbEntityListener, Priority.Monitor, this); if (config.useBukkitScheduler) {