forked from LogBlock/LogBlock
Added command to execute rollback/redo/clearlog/writelogfile/lookup
commands to tools
This commit is contained in:
@@ -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);
|
||||
|
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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();
|
||||
|
15
src/de/diddiz/LogBlock/ToolMode.java
Normal file
15
src/de/diddiz/LogBlock/ToolMode.java
Normal 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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user