package org.ultralogger.logger.sql; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.ultralogger.Main; public class CommandLogger implements Listener,Runnable{ private SQL manager; public CommandLogger(SQL sql){ manager=sql; Thread t = new Thread(this,"[UltraLogger] - SQL Command Logger"); t.start(); } @EventHandler (priority = EventPriority.MONITOR) public void onCommand(PlayerCommandPreprocessEvent e){ String name = e.getPlayer().getName(); if(!((Main)manager.getPlugin()).getCommandManager().canLogCommand(e.getMessage())) return; boolean op = Main.isAdmin(e.getPlayer()); boolean display =false; String msg = e.getMessage()+" "; String command = msg; if(msg.contains("/") && msg.contains(" ")) command = msg.substring(msg.indexOf("/")+1, msg.indexOf(" ")); if(manager.getPlugin().getServer().getPluginCommand(command)!=null || isServerCommand(command) || manager.getPlugin().getServer().getCommandAliases().containsKey(command) || manager.getPlugin().getServer().getCommandAliases().containsValue(command)){ display =true; } String message = manager.StringCheck(e.getMessage()); manager.query("INSERT INTO `"+manager.getprefix()+"_command`(`time`,`op`, `playername`, `cmd`, `worked`) VALUES (NOW(),"+ op + ",'" + name + "', '" + message + "', " + display + ")"); } private boolean isServerCommand(String message) { if(message.startsWith("/help")||message.startsWith("/time set")||message.startsWith("/time add")||message.startsWith("/gamemode") ||message.startsWith("/ban")||message.startsWith("/op")||message.startsWith("/deop")||message.startsWith("/defaultgamemode") ||message.startsWith("/give")||message.startsWith("/kick")||message.startsWith("/list")||message.startsWith("/me") ||message.startsWith("/pardon")||message.startsWith("/plugins")||message.startsWith("/pl")||message.startsWith("/reload") ||message.startsWith("/save")||message.startsWith("/say")||message.startsWith("/xp")||message.startsWith("/seed") ||message.startsWith("/time")||message.startsWith("/stop")||message.startsWith("/tell")||message.startsWith("/timings") ||message.startsWith("/toggledownfall")||message.startsWith("/tp")||message.startsWith("/version")||message.startsWith("/whitelist") ||message.startsWith("/kill")){ return true; } return false; } @Override public void run() { manager.register(this); //Create the def command table manager.query("CREATE TABLE IF NOT EXISTS `"+manager.getprefix()+"_command` (`prim_key` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,`time` DATETIME NOT NULL,`op` BOOLEAN NOT NULL ,`playername` VARCHAR(255) NOT NULL," + "`cmd` VARCHAR(255) NOT NULL,`worked` BOOLEAN NOT NULL,PRIMARY KEY (prim_key)) COLLATE='utf8_general_ci'"); } }