diff --git a/src/de/diddiz/LogBlock/Consumer.java b/src/de/diddiz/LogBlock/Consumer.java index bd8456f..27fcd2b 100644 --- a/src/de/diddiz/LogBlock/Consumer.java +++ b/src/de/diddiz/LogBlock/Consumer.java @@ -5,6 +5,7 @@ import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.util.HashSet; import java.util.concurrent.LinkedBlockingQueue; import java.util.logging.Level; @@ -14,6 +15,7 @@ import org.bukkit.entity.Player; public class Consumer implements Runnable { private LinkedBlockingQueue bqueue = new LinkedBlockingQueue(); + private HashSet hiddenplayers = new HashSet(); private Connection conn = null; public void queueBlock(Player player, Block block, int typeAfter) { @@ -31,6 +33,8 @@ public class Consumer implements Runnable public void queueBlock(String playerName, Block block, int typeBefore, int typeAfter, byte data, String signtext, ChestAccess ca) { if (block == null || typeBefore < 0 || typeAfter < 0) return; + if (hiddenplayers.contains(playerName.hashCode())) + return; String table = LogBlock.config.tables.get(block.getWorld().getName().hashCode()); if (table == null) return; @@ -49,6 +53,17 @@ public class Consumer implements Runnable return bqueue.size(); } + public boolean hide(Player player) { + int hash = player.getName().hashCode(); + if (hiddenplayers.contains(hash)) { + hiddenplayers.remove(hash); + return false; + } else { + hiddenplayers.add(hash); + return true; + } + } + public void run() { try { if (conn == null || conn.isClosed()) diff --git a/src/de/diddiz/LogBlock/LogBlock.java b/src/de/diddiz/LogBlock/LogBlock.java index 132f821..4315b00 100644 --- a/src/de/diddiz/LogBlock/LogBlock.java +++ b/src/de/diddiz/LogBlock/LogBlock.java @@ -184,12 +184,20 @@ public class LogBlock extends JavaPlugin if (free >= 0) { player.getInventory().setItem(free, player.getItemInHand()); player.setItemInHand(new ItemStack(config.toolblockID, 1)); - player.sendMessage(ChatColor.GREEN + "Here is your tool."); + player.sendMessage(ChatColor.GREEN + "Here's your tool."); } else player.sendMessage(ChatColor.RED + "You have no empty slot in your inventory"); } } else player.sendMessage(ChatColor.RED + "You aren't allowed to do this."); + } else if (args[0].equalsIgnoreCase("hide")) { + if (CheckPermission(player, "logblock.hide")) { + if (consumer.hide(player)) + player.sendMessage(ChatColor.GREEN + "You are now hided and won't appear in any log. Type '/lb hide' again to unhide"); + else + player.sendMessage(ChatColor.GREEN + "You aren't hided anylonger."); + } else + player.sendMessage(ChatColor.RED + "You aren't allowed to do this."); } else if (args[0].equalsIgnoreCase("area")) { if (CheckPermission(player,"logblock.area")) { int radius = config.defaultDist; @@ -458,6 +466,8 @@ public class LogBlock extends JavaPlugin return true; else if (permission.equals("logblock.area")) return player.isOp(); + else if (permission.equals("logblock.hide")) + return player.isOp(); else if (permission.equals("logblock.rollback")) return player.isOp(); }