package org.ultralogger.logger.sql; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.world.PortalCreateEvent; import org.bukkit.event.world.SpawnChangeEvent; import org.bukkit.event.world.StructureGrowEvent; import org.ultralogger.Main; public class WorldLogger implements Listener,Runnable{ private SQL manager; public WorldLogger(SQL sql){ manager=sql; Thread t = new Thread(this,"[UltraLogger] - SQL World Logger"); t.start(); } @EventHandler (priority = EventPriority.MONITOR) public void onPortal(PortalCreateEvent e){ Block i = e.getBlocks().get(0); manager.query("INSERT INTO `"+manager.getprefix()+"_world`(`time`, `world`, `event`,`x`,`y`, `z`) VALUES (NOW(),'"+e.getWorld().getName()+"', 'portal.create' ," + toSQLquery(i.getLocation())+")"); } @EventHandler (priority = EventPriority.MONITOR) public void onGrow(StructureGrowEvent e){ String name =""; boolean op; int gamemode; String bonemeal =""; if(e.isFromBonemeal()){ bonemeal = "cause.bonemeal"; } Location i = e.getLocation(); if(e.getPlayer()!=null){ name = e.getPlayer().getName(); op = Main.isAdmin(e.getPlayer()); gamemode = e.getPlayer().getGameMode().getValue(); manager.query("INSERT INTO `"+manager.getprefix()+"_world`(`time`, `world`, `event`,`species`,`x`,`y`, `z`, entity_name, op, gamemode) VALUES (NOW(),'"+e.getWorld().getName()+"', 'player.structure.grow."+bonemeal+"','" + e.getSpecies().name()+"',"+toSQLquery(i)+",'"+name+"',"+ op +","+ gamemode +")"); }else{ manager.query("INSERT INTO `"+manager.getprefix()+"_world`(`time`, `world`, `event`,`species`,`x`,`y`, `z`) VALUES (NOW(),'"+e.getWorld().getName()+"', 'structure.grow."+bonemeal+"','" + e.getSpecies().name()+"',"+toSQLquery(i)+")"); } } @EventHandler (priority = EventPriority.MONITOR) public void onSpawnChanges(SpawnChangeEvent e){ Location i =e.getPreviousLocation(); Location it = e.getWorld().getSpawnLocation(); manager.query("INSERT INTO `"+manager.getprefix()+"_world`(`time`, `world`, `event`,`x`,`y`, `z`, `x2`, `y2`, `z2`) VALUES (NOW(),'"+e.getWorld().getName()+"', 'spawn.change' ," + toSQLquery(i)+","+toSQLquery(it)+")"); } /* * TODO: Move to another file where it can be called from as it is used in multiple Loggers */ public String toSQLquery(Location loc){ String s =loc.getBlockX()+","+loc.getBlockY()+","+loc.getBlockZ(); return s; } @Override public void run() { manager.register(this); //Create the def world table manager.query("CREATE TABLE IF NOT EXISTS `"+manager.getprefix()+"_world` (`prim_key` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,`time` DATETIME NOT NULL," + "`world` VARCHAR(255) NOT NULL,`event` VARCHAR(255) NOT NULL,`species` VARCHAR(255),`x` INT NOT NULL,`y` INT NOT NULL, `z` INT NOT NULL, `x2` INT, `y2` INT, `z2` INT, `entity_name` VARCHAR(255), `op` BOOLEAN, `gamemode` SMALLINT,PRIMARY KEY (prim_key))"); } }