package org.ultralogger.logger.sql;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.weather.LightningStrikeEvent;
import org.bukkit.event.weather.ThunderChangeEvent;
import org.bukkit.event.weather.WeatherChangeEvent;
public class WeatherLogger implements Listener,Runnable{
private SQL manager;
public WeatherLogger(SQL sql){
manager=sql;
Thread t = new Thread(this,"[UltraLogger] - SQL Weather Logger");
t.start();
}
@EventHandler (priority = EventPriority.MONITOR)
public void onStrike(LightningStrikeEvent e){
Entity i =e.getLightning();
manager.query("INSERT INTO `"+manager.getprefix()+"_weather`(`time`, `world`, `event`, `x`, `y`, `z`) VALUES (NOW(),'"+e.getWorld().getName()+"', 'strike' ," +
toSQLquery(i.getLocation())+")");
}
@EventHandler (priority = EventPriority.MONITOR)
public void onThunder(ThunderChangeEvent e){
boolean i =e.toThunderState();
String thunder ="thunder.stop";
if(i){
thunder="thunder.start";
}
manager.query("INSERT INTO `"+manager.getprefix()+"_weather`(`time`, `world`, `event`) VALUES (NOW(),'"+e.getWorld().getName()+"','"+ thunder +"')");
}
@EventHandler (priority = EventPriority.MONITOR)
public void onChange(WeatherChangeEvent e){
boolean i =e.toWeatherState();
String thunder ="rain.stop";
if(i){
thunder="rain.start";
}
manager.query("INSERT INTO `"+manager.getprefix()+"_weather`(`time`, `world`, `event`) VALUES (NOW(),'"+e.getWorld().getName()+"','"+ thunder +"')");
}
/*
* 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 weather table
manager.query("CREATE TABLE IF NOT EXISTS `"+manager.getprefix()+"_weather`(`prim_key` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,`time` DATETIME NOT NULL,`world` VARCHAR(255) NOT NULL," +
"`event` VARCHAR(255) NOT NULL,`x` INT,`y` INT, `z` INT,PRIMARY KEY (prim_key))");
}
}