Advertisement
Guest User

Untitled

a guest
Aug 1st, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.23 KB | None | 0 0
  1. package com.mcsmp.BlockLogLite;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.util.HashMap;
  6. import java.util.logging.Logger;
  7. //import org.bukkit.event.Event.Priority;
  8. //import org.bukkit.event.Event.Type;
  9. import org.bukkit.util.config.Configuration;
  10. import org.bukkit.block.Block;
  11. import org.bukkit.plugin.java.JavaPlugin;
  12. import org.bukkit.command.Command;
  13. import org.bukkit.command.CommandSender;
  14. import java.sql.Connection;
  15. import java.sql.DriverManager;
  16. import java.sql.PreparedStatement;
  17. import java.sql.ResultSet;
  18. import java.sql.Statement;
  19. import java.util.logging.FileHandler;
  20. import java.util.logging.Level;
  21. import java.util.logging.SimpleFormatter;
  22.  
  23. public class BlockLogLite extends JavaPlugin {
  24.  
  25. Logger log1;
  26. Logger log2;
  27. Configuration conf;
  28. Connection db;
  29. BlockLogLiteBlockListener blockListener = new BlockLogLiteBlockListener(this);
  30. HashMap<String, Integer> playerIdCache = new HashMap<String, Integer>();
  31.  
  32. @Override
  33. public void onEnable() {
  34. try {
  35. log1 = Logger.getLogger("Minecraft");
  36. log2 = Logger.getLogger("BlockLogLite");
  37. log2.setUseParentHandlers(false);
  38. FileHandler log2fh = new FileHandler(getDataFolder().getAbsolutePath() File.separatorChar "error.log", true);
  39. log2fh.setFormatter(new SimpleFormatter());
  40. log2.addHandler(log2fh);
  41. log2.setLevel(Level.ALL);
  42. } catch (SecurityException ex) {
  43. ex.printStackTrace();
  44. } catch (IOException ex) {
  45. ex.printStackTrace();
  46. }
  47. //log("onEnable();");
  48. boolean configExists = (new File(getDataFolder(), "config.yml")).exists();
  49. if (!configExists) {
  50. getDataFolder().mkdirs();
  51. }
  52. conf = new Configuration(new File(getDataFolder(), "config.yml"));
  53. if (!configExists) {
  54. conf.setProperty("logging.file", "error.log");
  55. conf.setProperty("logging.level", "all");
  56. conf.setProperty("database.user", "root");
  57. conf.setProperty("database.pass", "");
  58. conf.setProperty("database.type", "mysql");
  59. conf.setProperty("database.mysql-url", "jdbc:mysql://localhost:3306/test");
  60. 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;");
  61. 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;");
  62. conf.setProperty("database.mysql-queries.select-player", "SELECT id FROM `bll_players` WHERE player = ?;");
  63. conf.setProperty("database.mysql-queries.insert-player", "INSERT INTO `bll_players` (`player`) VALUES (?);");
  64. conf.setProperty("database.mysql-queries.select-data", "SELECT date FROM `bll_players` WHERE player = ?;");
  65. conf.setProperty("database.mysql-queries.insert-data", "INSERT INTO `bll_data` (`date`, `player_id`, `action`, `x`, `y`, `z`, `block_id`) VALUES (UNIX_TIMESTAMP(), ?, ?, ?, ?, ?, ?);");
  66. conf.save();
  67. }
  68. conf.load();
  69. try {
  70. Class.forName("com.mysql.jdbc.Driver");
  71. db = DriverManager.getConnection(conf.getString("database.mysql-url"), conf.getString("database.user"), conf.getString("database.pass"));
  72. Statement s = db.createStatement();
  73. s.execute(conf.getString("database.mysql-queries.create-players"));
  74. s.execute(conf.getString("database.mysql-queries.create-data"));
  75. s.close();
  76. } catch (Exception ex) {
  77. log(Level.SEVERE, ex.getStackTrace().toString());
  78. }
  79. getServer().getPluginManager().registerEvent(org.bukkit.event.Event.Type.BLOCK_PLACED, blockListener, org.bukkit.event.Event.Priority.Monitor, this);
  80. getServer().getPluginManager().registerEvent(org.bukkit.event.Event.Type.BLOCK_BREAK, blockListener, org.bukkit.event.Event.Priority.Monitor, this);
  81. }
  82.  
  83. @Override
  84. public void onDisable() {
  85. //log("onDisable();");
  86. try {
  87. db.close();
  88. } catch (Exception ex) {
  89. log(Level.SEVERE, ex.getStackTrace().toString());
  90. }
  91. }
  92.  
  93. @Override
  94. public boolean onCommand(CommandSender s, Command cmd, String cl, String[] a) {
  95. String cmdName = cmd.getName().toLowerCase();
  96. if ( cmdName.equals("bl") && s.isOp() ) {
  97. s.sendMessage("BLARG");
  98. }
  99. return false;
  100. }
  101.  
  102. public int getPlayerId(String player) {
  103. //log("getPlayerId(" player ");");
  104. int id = 0;
  105. if (playerIdCache.containsKey(player)) {
  106. return playerIdCache.get(player);
  107. }
  108. try {
  109. PreparedStatement s = db.prepareStatement(conf.getString("database.mysql-queries.select-player"));
  110. s.setString(1, player);
  111. ResultSet result = s.executeQuery();
  112. if (result.next()) {
  113. id = result.getInt("id");
  114. playerIdCache.put(player, id);
  115. } else {
  116. s.close();
  117. s = db.prepareStatement(conf.getString("database.mysql-queries.insert-player"), s.RETURN_GENERATED_KEYS);
  118. s.setString(1, player);
  119. s.executeUpdate();
  120. result = s.getGeneratedKeys();
  121. if (result.next()) {
  122. id = result.getInt("GENERATED_KEY");
  123. playerIdCache.put(player, id);
  124. }
  125. }
  126. s.close();
  127. } catch (Exception ex) {
  128. log(Level.SEVERE, ex.getStackTrace().toString());
  129. }
  130. return id;
  131. }
  132.  
  133. public void blockAction(String player, int blockAction, Block block) {
  134. //log("blockAction(" player ", " blockAction ", " block.getX() ", " block.getY() ", " block.getZ() ", " block.getTypeId() ");");
  135. int playerId = getPlayerId(player);
  136. if (playerId > 0) {
  137. try {
  138. PreparedStatement s = db.prepareStatement(conf.getString("database.mysql-queries.insert-data"));
  139. s.setInt(1, playerId);
  140. s.setInt(2, blockAction);
  141. s.setInt(3, block.getX());
  142. s.setInt(4, block.getY());
  143. s.setInt(5, block.getZ());
  144. s.setInt(6, block.getTypeId());
  145. s.executeUpdate();
  146. s.close();
  147. } catch (Exception ex) {
  148. log(Level.SEVERE, ex.getStackTrace().toString());
  149. }
  150. } else {
  151. log(Level.SEVERE, "getPlayerId(" player "): failed (returned 0)");
  152. }
  153. }
  154.  
  155. public void log(Level l, String msg) {
  156. log1.log(l, "[BlockLogLite] " msg);
  157. log2.log(l, msg);
  158. }
  159.  
  160. /*
  161. public void log(String msg) {
  162. log(Level.INFO, msg);
  163. }
  164. */
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement