Added command to execute rollback/redo/clearlog/writelogfile/lookup

commands to tools
This commit is contained in:
Robin Kupper
2011-06-09 22:47:20 +02:00
parent 6e3b47f5be
commit c6293ce516
4 changed files with 94 additions and 30 deletions

View File

@@ -118,6 +118,23 @@ public class CommandsHandler implements CommandExecutor
} else if (args[1].equalsIgnoreCase("disable") || args[1].equalsIgnoreCase("off")) {
logblock.getSession(player.getName()).toolEnabled = false;
player.sendMessage(ChatColor.GREEN + "Tool disabled.");
} else if (args[1].equalsIgnoreCase("mode")) {
final Session session = logblock.getSession(player.getName());
if (args.length == 3) {
final ToolMode mode;
try {
mode = ToolMode.valueOf(args[2].toUpperCase());
} catch (final IllegalArgumentException ex) {
sender.sendMessage(ChatColor.RED + "Can't find mode " + args[2]);
return true;
}
if (logblock.hasPermission(player, mode.getPermission())) {
session.toolMode = mode;
sender.sendMessage(ChatColor.GREEN + "Tool mode set to " + args[2]);
} else
sender.sendMessage(ChatColor.RED + "You aren't allowed to use mode " + args[2]);
} else
player.sendMessage(ChatColor.RED + "No mode specified");
} else if (logblock.hasPermission(player, "logblock.lookup"))
try {
final QueryParams params = new QueryParams(logblock, sender, ArgsToList(args, 1));
@@ -144,6 +161,23 @@ public class CommandsHandler implements CommandExecutor
} else if (args[1].equalsIgnoreCase("disable") || args[1].equalsIgnoreCase("off")) {
logblock.getSession(player.getName()).toolBlockEnabled = false;
player.sendMessage(ChatColor.GREEN + "Tool block disabled.");
} else if (args[1].equalsIgnoreCase("mode")) {
final Session session = logblock.getSession(player.getName());
if (args.length == 3) {
final ToolMode mode;
try {
mode = ToolMode.valueOf(args[2].toUpperCase());
} catch (final IllegalArgumentException ex) {
sender.sendMessage(ChatColor.RED + "Can't find mode " + args[2]);
return true;
}
if (logblock.hasPermission(player, mode.getPermission())) {
session.toolBlockMode = mode;
sender.sendMessage(ChatColor.GREEN + "Toolblock mode set to " + args[2]);
} else
sender.sendMessage(ChatColor.RED + "You aren't allowed to use mode " + args[2]);
} else
player.sendMessage(ChatColor.RED + "No mode specified");
} else if (logblock.hasPermission(player, "logblock.lookup"))
try {
final QueryParams params = new QueryParams(logblock, sender, ArgsToList(args, 1));
@@ -162,7 +196,7 @@ public class CommandsHandler implements CommandExecutor
if (logblock.getConsumer().hide((Player)sender))
sender.sendMessage(ChatColor.GREEN + "You are now hided and won't appear in any log. Type '/lb hide' again to unhide");
else
sender.sendMessage(ChatColor.GREEN + "You aren't hided anylonger.");
sender.sendMessage(ChatColor.GREEN + "You aren't hidden anylonger.");
} else
sender.sendMessage(ChatColor.RED + "You aren't allowed to do this.");
} else
@@ -550,7 +584,7 @@ public class CommandsHandler implements CommandExecutor
}
if (config.dumpDeletedLog)
try {
state.execute("SELECT * FROM `" + table + "` " + join + params.getWhere() + "INTO OUTFILE '" + new File(dumpFolder, formatter.format(System.currentTimeMillis()) + " " + table + " " + params.getTitle() + ".csv").getAbsolutePath().replace("\\", "\\\\") + "' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'");
state.execute("SELECT * FROM `" + table + "` " + join + params.getWhere() + "INTO OUTFILE '" + new File(dumpFolder, formatter.format(System.currentTimeMillis()) + " " + table + " " + params.getTitle().replace(":", ".") + ".csv").getAbsolutePath().replace("\\", "\\\\") + "' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'");
} catch (final SQLException ex) {
sender.sendMessage(ChatColor.RED + "Error while dumping log. Make sure your MySQL user has access to the LogBlock folder, or disable clearlog.dumpDeletedLog");
log.log(Level.SEVERE, "[LogBlock ClearLog] Exception while dumping", ex);

View File

@@ -26,32 +26,45 @@ class LBToolListener extends PlayerListener
@Override
public void onPlayerInteract(PlayerInteractEvent event) {
if (!event.isCancelled()) {
final Player player = event.getPlayer();
if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getMaterial().getId() == toolID && logblock.hasPermission(player, "logblock.tool") && logblock.getSession(player.getName()).toolEnabled) {
if (tables.get(player.getWorld().getName().hashCode()) != null) {
try {
final QueryParams params = logblock.getSession(player.getName()).toolQuery;
params.setLocation(event.getClickedBlock().getLocation());
handler.new CommandLookup(player, params);
} catch (final Exception ex) {
player.sendMessage(ChatColor.RED + ex.getMessage());
}
if (event.getClickedBlock().getTypeId() != 26)
event.setCancelled(true);
} else
player.sendMessage("This world isn't logged");
} else if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getMaterial().getId() == toolblockID && logblock.hasPermission(player, "logblock.toolblock") && logblock.getSession(player.getName()).toolBlockEnabled)
if (tables.get(player.getWorld().getName().hashCode()) != null) {
try {
final QueryParams params = logblock.getSession(player.getName()).toolQuery;
params.setLocation(event.getClickedBlock().getFace(event.getBlockFace()).getLocation());
handler.new CommandLookup(player, params);
} catch (final Exception ex) {
player.sendMessage(ChatColor.RED + ex.getMessage());
}
event.setCancelled(true);
} else
player.sendMessage("This world isn't logged");
final Action action = event.getAction();
final int type = event.getMaterial().getId();
if (type == toolID && action == Action.RIGHT_CLICK_BLOCK || type == toolblockID && (action == Action.LEFT_CLICK_BLOCK || action == Action.RIGHT_CLICK_BLOCK)) {
final Player player = event.getPlayer();
final Session session = logblock.getSession(player.getName());
if (type == toolID && session.toolEnabled && logblock.hasPermission(player, "logblock.tool") || type == toolblockID && session.toolBlockEnabled && logblock.hasPermission(player, "logblock.toolblock"))
if (tables.get(player.getWorld().getName().hashCode()) != null) {
if (!(type == toolID && event.getClickedBlock().getTypeId() == 26))
event.setCancelled(true);
final QueryParams params;
ToolMode mode;
if (type == toolID) {
params = session.toolQuery;
mode = session.toolMode;
} else {
params = session.toolBlockQuery;
mode = session.toolBlockMode;
}
if (type == toolblockID && action == Action.RIGHT_CLICK_BLOCK)
params.setLocation(event.getClickedBlock().getFace(event.getBlockFace()).getLocation());
else
params.setLocation(event.getClickedBlock().getLocation());
try {
if (mode == ToolMode.ROLLBACK)
handler.new CommandRollback(player, params);
else if (mode == ToolMode.REDO)
handler.new CommandRedo(player, params);
else if (mode == ToolMode.CLEARLOG)
handler.new CommandClearLog(player, params);
else if (mode == ToolMode.WRITELOGFILE)
handler.new CommandWriteLogFile(player, params);
else
handler.new CommandLookup(player, params);
} catch (final Exception ex) {
player.sendMessage(ChatColor.RED + ex.getMessage());
}
} else
player.sendMessage("This world isn't logged");
}
}
}
}

View File

@@ -3,10 +3,12 @@ package de.diddiz.LogBlock;
public class Session
{
public QueryParams lastQuery = null;
public QueryParams toolQuery;
public QueryParams toolBlockQuery;
public boolean toolEnabled = true;
public QueryParams toolQuery;
public ToolMode toolMode;
public boolean toolBlockEnabled = true;
public QueryParams toolBlockQuery;
public ToolMode toolBlockMode;
Session(LogBlock logblock) {
toolQuery = logblock.getConfig().toolQuery.clone();

View File

@@ -0,0 +1,15 @@
package de.diddiz.LogBlock;
public enum ToolMode {
CLEARLOG("logblock.clearlog"), LOOKUP("logblock.lookup"), REDO("logblock.rollback"), ROLLBACK("logblock.rollback"), WRITELOGFILE("logblock.rollback");
private final String permission;
private ToolMode(String permission) {
this.permission = permission;
}
public String getPermission() {
return permission;
}
}