diff --git a/src/de/diddiz/LogBlock/Config.java b/src/de/diddiz/LogBlock/Config.java index 4142bc6..3b0d257 100644 --- a/src/de/diddiz/LogBlock/Config.java +++ b/src/de/diddiz/LogBlock/Config.java @@ -25,13 +25,12 @@ public class Config 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; - public final Set replaceAnyway; + public final Set dontRollback, replaceAnyway; public final QueryParams toolQuery, toolBlockQuery; public final int defaultDist, defaultTime; public final int toolID, toolblockID; public final boolean askRollbacks, askRedos, askClearLogs, askSavequeueBeforeRollback; - public final Set hiddenPlayers; + public final Set hiddenPlayers, hiddenBlocks; public static enum LogKillsLevel { PLAYERS, MONSTERS, ANIMALS @@ -108,6 +107,8 @@ public class Config config.setProperty("logging.logKillsLevel", "PLAYERS"); if (!subkeys.contains("hiddenPlayers")) config.setProperty("logging.hiddenPlayers", new ArrayList()); + if (!subkeys.contains("hiddenBlocks")) + config.setProperty("logging.hiddenBlocks", Arrays.asList(new Integer[]{0})); subkeys = config.getKeys("rollback"); if (subkeys == null) subkeys = new ArrayList(); @@ -173,6 +174,14 @@ public class Config hiddenPlayers = new HashSet(); for (final String playerName : config.getStringList("logging.hiddenPlayers", new ArrayList())) hiddenPlayers.add(playerName.hashCode()); + hiddenBlocks = new HashSet(); + for (final String blocktype : config.getStringList("logging.hiddenBlocks", new ArrayList())) { + final Material mat = Material.matchMaterial(blocktype); + if (mat != null) + hiddenBlocks.add(mat.getId()); + else + throw new DataFormatException("Not a valid material: '" + blocktype + "'"); + } dontRollback = new HashSet(config.getIntList("rollback.dontRollback", null)); replaceAnyway = new HashSet(config.getIntList("rollback.replaceAnyway", null)); try { diff --git a/src/de/diddiz/LogBlock/Consumer.java b/src/de/diddiz/LogBlock/Consumer.java index 82b09db..9ecdc62 100644 --- a/src/de/diddiz/LogBlock/Consumer.java +++ b/src/de/diddiz/LogBlock/Consumer.java @@ -29,7 +29,7 @@ public class Consumer extends TimerTask { private final Queue bqueue = new LinkedBlockingQueue(); private final Config config; - private final Set hiddenplayers; + private final Set hiddenPlayers, hiddenBlocks; private final Queue kqueue = new LinkedBlockingQueue(); private final Map lastAttackedEntity = new HashMap(); private final Map lastAttackTime = new HashMap(); @@ -41,7 +41,8 @@ public class Consumer extends TimerTask this.logblock = logblock; log = logblock.getServer().getLogger(); config = logblock.getConfig(); - hiddenplayers = config.hiddenPlayers; + hiddenPlayers = config.hiddenPlayers; + hiddenBlocks = config.hiddenBlocks; } /** @@ -312,11 +313,11 @@ public class Consumer extends TimerTask boolean hide(Player player) { final int hash = player.getName().hashCode(); - if (hiddenplayers.contains(hash)) { - hiddenplayers.remove(hash); + if (hiddenPlayers.contains(hash)) { + hiddenPlayers.remove(hash); return false; } - hiddenplayers.add(hash); + hiddenPlayers.add(hash); return true; } @@ -331,7 +332,9 @@ public class Consumer extends TimerTask } private void queueBlock(String playerName, Location loc, int typeBefore, int typeAfter, byte data, String signtext, ChestAccess ca) { - if (playerName == null || loc == null || typeBefore < 0 || typeAfter < 0 || hiddenplayers.contains(playerName.hashCode()) || !config.tables.containsKey(loc.getWorld().getName().hashCode())) + if (playerName == null || loc == null || typeBefore < 0 || typeAfter < 0 || hiddenPlayers.contains(playerName.hashCode()) || !config.tables.containsKey(loc.getWorld().getName().hashCode())) + return; + if (typeBefore != typeAfter && hiddenBlocks.contains(typeBefore) && hiddenBlocks.contains(typeAfter)) return; if (playerName.length() > 32) playerName = playerName.substring(0, 32);