Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.mcsmp.BlockLogLite;
- import java.io.File;
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.logging.Logger;
- //import org.bukkit.event.Event.Priority;
- //import org.bukkit.event.Event.Type;
- import org.bukkit.util.config.Configuration;
- import org.bukkit.block.Block;
- import org.bukkit.plugin.java.JavaPlugin;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.Statement;
- import java.util.logging.FileHandler;
- import java.util.logging.Level;
- import java.util.logging.SimpleFormatter;
- public class BlockLogLite extends JavaPlugin {
- Logger log1;
- Logger log2;
- Configuration conf;
- Connection db;
- BlockLogLiteBlockListener blockListener = new BlockLogLiteBlockListener(this);
- HashMap<String, Integer> playerIdCache = new HashMap<String, Integer>();
- @Override
- public void onEnable() {
- try {
- log1 = Logger.getLogger("Minecraft");
- log2 = Logger.getLogger("BlockLogLite");
- log2.setUseParentHandlers(false);
- FileHandler log2fh = new FileHandler(getDataFolder().getAbsolutePath() File.separatorChar "error.log", true);
- log2fh.setFormatter(new SimpleFormatter());
- log2.addHandler(log2fh);
- log2.setLevel(Level.ALL);
- } catch (SecurityException ex) {
- ex.printStackTrace();
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- //log("onEnable();");
- boolean configExists = (new File(getDataFolder(), "config.yml")).exists();
- if (!configExists) {
- getDataFolder().mkdirs();
- }
- conf = new Configuration(new File(getDataFolder(), "config.yml"));
- if (!configExists) {
- conf.setProperty("logging.file", "error.log");
- conf.setProperty("logging.level", "all");
- conf.setProperty("database.user", "root");
- conf.setProperty("database.pass", "");
- conf.setProperty("database.type", "mysql");
- conf.setProperty("database.mysql-url", "jdbc:mysql://localhost:3306/test");
- conf.setProperty("database.mysql-queries.create-players", "CREATE TABLE IF NOT EXISTS `bll_players` (`id` int unsigned AUTO_INCREMENT, `player` varchar(32), PRIMARY KEY `player` (`player`), KEY `id` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
- conf.setProperty("database.mysql-queries.create-data", "CREATE TABLE IF NOT EXISTS `bll_data` (`id` int unsigned AUTO_INCREMENT, `date` int unsigned, `player_id` int unsigned, `action` tinyint unsigned, `x` int, `y` smallint, `z` int, `block_id` smallint, PRIMARY KEY `id` (`id`), KEY `xyz` (`x`, `y`, `z`), KEY `player_id` (`player_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
- conf.setProperty("database.mysql-queries.select-player", "SELECT id FROM `bll_players` WHERE player = ?;");
- conf.setProperty("database.mysql-queries.insert-player", "INSERT INTO `bll_players` (`player`) VALUES (?);");
- conf.setProperty("database.mysql-queries.select-data", "SELECT date FROM `bll_players` WHERE player = ?;");
- conf.setProperty("database.mysql-queries.insert-data", "INSERT INTO `bll_data` (`date`, `player_id`, `action`, `x`, `y`, `z`, `block_id`) VALUES (UNIX_TIMESTAMP(), ?, ?, ?, ?, ?, ?);");
- conf.save();
- }
- conf.load();
- try {
- Class.forName("com.mysql.jdbc.Driver");
- db = DriverManager.getConnection(conf.getString("database.mysql-url"), conf.getString("database.user"), conf.getString("database.pass"));
- Statement s = db.createStatement();
- s.execute(conf.getString("database.mysql-queries.create-players"));
- s.execute(conf.getString("database.mysql-queries.create-data"));
- s.close();
- } catch (Exception ex) {
- log(Level.SEVERE, ex.getStackTrace().toString());
- }
- getServer().getPluginManager().registerEvent(org.bukkit.event.Event.Type.BLOCK_PLACED, blockListener, org.bukkit.event.Event.Priority.Monitor, this);
- getServer().getPluginManager().registerEvent(org.bukkit.event.Event.Type.BLOCK_BREAK, blockListener, org.bukkit.event.Event.Priority.Monitor, this);
- }
- @Override
- public void onDisable() {
- //log("onDisable();");
- try {
- db.close();
- } catch (Exception ex) {
- log(Level.SEVERE, ex.getStackTrace().toString());
- }
- }
- @Override
- public boolean onCommand(CommandSender s, Command cmd, String cl, String[] a) {
- String cmdName = cmd.getName().toLowerCase();
- if ( cmdName.equals("bl") && s.isOp() ) {
- s.sendMessage("BLARG");
- }
- return false;
- }
- public int getPlayerId(String player) {
- //log("getPlayerId(" player ");");
- int id = 0;
- if (playerIdCache.containsKey(player)) {
- return playerIdCache.get(player);
- }
- try {
- PreparedStatement s = db.prepareStatement(conf.getString("database.mysql-queries.select-player"));
- s.setString(1, player);
- ResultSet result = s.executeQuery();
- if (result.next()) {
- id = result.getInt("id");
- playerIdCache.put(player, id);
- } else {
- s.close();
- s = db.prepareStatement(conf.getString("database.mysql-queries.insert-player"), s.RETURN_GENERATED_KEYS);
- s.setString(1, player);
- s.executeUpdate();
- result = s.getGeneratedKeys();
- if (result.next()) {
- id = result.getInt("GENERATED_KEY");
- playerIdCache.put(player, id);
- }
- }
- s.close();
- } catch (Exception ex) {
- log(Level.SEVERE, ex.getStackTrace().toString());
- }
- return id;
- }
- public void blockAction(String player, int blockAction, Block block) {
- //log("blockAction(" player ", " blockAction ", " block.getX() ", " block.getY() ", " block.getZ() ", " block.getTypeId() ");");
- int playerId = getPlayerId(player);
- if (playerId > 0) {
- try {
- PreparedStatement s = db.prepareStatement(conf.getString("database.mysql-queries.insert-data"));
- s.setInt(1, playerId);
- s.setInt(2, blockAction);
- s.setInt(3, block.getX());
- s.setInt(4, block.getY());
- s.setInt(5, block.getZ());
- s.setInt(6, block.getTypeId());
- s.executeUpdate();
- s.close();
- } catch (Exception ex) {
- log(Level.SEVERE, ex.getStackTrace().toString());
- }
- } else {
- log(Level.SEVERE, "getPlayerId(" player "): failed (returned 0)");
- }
- }
- public void log(Level l, String msg) {
- log1.log(l, "[BlockLogLite] " msg);
- log2.log(l, msg);
- }
- /*
- public void log(String msg) {
- log(Level.INFO, msg);
- }
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement