Advertisement
Guest User

Untitled

a guest
Jan 5th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.12 KB | None | 0 0
  1. package pl.hasakopia.mysql;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.util.Random;
  8. import java.util.UUID;
  9.  
  10. import org.bukkit.Bukkit;
  11. import org.bukkit.event.EventHandler;
  12. import org.bukkit.event.Listener;
  13. import org.bukkit.event.player.PlayerJoinEvent;
  14. import org.bukkit.plugin.java.JavaPlugin;
  15.  
  16. public class Main extends JavaPlugin implements Listener{
  17.    
  18.     public static final Random RAND = new Random();
  19.     private Connection conn;
  20.    
  21.     public void onEnable(){
  22.  
  23.         checkTable();
  24.         try {
  25.             loadData();
  26.         } catch (SQLException e) {
  27.             e.printStackTrace();
  28.         }
  29.         Bukkit.getPluginManager().registerEvents(this, this);
  30.     }
  31.    
  32.     public void onDisable(){
  33.         try {
  34.             saveData();
  35.         } catch (SQLException e) {
  36.             e.printStackTrace();
  37.         }
  38.     }
  39.    
  40.     private void checkTable(){
  41.         openConnection();
  42.         StringBuilder sb = new StringBuilder();
  43.         sb.append("create table if not exists users(");
  44.         sb.append("uuid varchar(100) not null,");
  45.         sb.append("name varchar(50) not null,");
  46.         sb.append("rank int not null,");
  47.         sb.append("kills int not null,");
  48.         sb.append("deaths int not null,");
  49.         sb.append("primary key(uuid));");
  50.         try {
  51.             System.out.println(conn == null);
  52.             conn.createStatement().executeUpdate(sb.toString());
  53.         } catch (SQLException e) {
  54.             e.printStackTrace();
  55.         }
  56.         closeConnection();
  57.     }
  58.    
  59.     private void loadData() throws SQLException{
  60.         openConnection();
  61.         int i = 0;
  62.         ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM `users`");
  63.         while(rs.next()){
  64.             User u = User.get(UUID.fromString(rs.getString("uuid")));
  65.             u.setName(rs.getString("name"));
  66.             u.setRank(rs.getInt("rank"));
  67.             u.setKills(rs.getInt("kills"));
  68.             u.setDeaths(rs.getInt("deaths"));
  69.             i++;
  70.            
  71.         }
  72.         Bukkit.getConsoleSender().sendMessage("§a§lLoaded §6§l" + i + " §a§lusers");
  73.         closeConnection();
  74.     }
  75.    
  76.     private void saveData() throws SQLException{
  77.         openConnection();
  78.         int i = 0;
  79.         for(User u : UserUtils.getUsers()){
  80.             StringBuilder sb = new StringBuilder();
  81.             sb.append("INSERT INTO users (uuid, name, rank, kills, deaths) VALUES (");
  82.             sb.append("'" + u.getUUID().toString() +"',");
  83.             sb.append("'" + u.getName() +"',");
  84.             sb.append("'" + u.getRank() +"',");
  85.             sb.append("'" + u.getKills() +"',");
  86.             sb.append("'" + u.getDeaths() +"'");
  87.             sb.append(") ON DUPLICATE KEY UPDATE ");
  88.             sb.append("name='" + u.getName() +"',");
  89.             sb.append("rank='" + u.getRank() +"',");
  90.             sb.append("kills='" + u.getKills() +"',");
  91.             sb.append("deaths='" + u.getDeaths() +"';");
  92.             conn.createStatement().executeUpdate(sb.toString());
  93.             i++;
  94.         }
  95.         Bukkit.getConsoleSender().sendMessage("§a§lSaved §6§l" + i + " §a§lusers");
  96.         closeConnection();
  97.     }
  98.    
  99.     private synchronized void openConnection(){
  100.         if(!isConnected()){
  101.             try{
  102.                 conn = DriverManager.getConnection("jdbc:mysql://*********:3306/TEST?user=root&password=******");
  103.                 System.out.println(conn == null);
  104.             } catch(SQLException e){
  105.                 e.printStackTrace();
  106.             }
  107.         }
  108.     }
  109.    
  110.     private synchronized void closeConnection(){
  111.         if(isConnected()){
  112.             try{
  113.                 conn.close();
  114.             } catch(SQLException e){
  115.                 e.printStackTrace();
  116.             }
  117.         }
  118.     }
  119.    
  120.     public boolean isConnected() {
  121.         System.out.println("1");
  122.         try{
  123.             System.out.println("2");
  124.             if(conn == null) return false;
  125.             System.out.println("3");
  126.             if(conn.isClosed()) return false;
  127.         } catch(SQLException e){
  128.             System.out.println("4");
  129.             e.printStackTrace();
  130.         }
  131.         System.out.println("5"); return true;
  132.     }
  133.    
  134.     @EventHandler
  135.     public void onJoin(PlayerJoinEvent e){
  136.         User u = User.get(e.getPlayer());
  137.         switch (RAND.nextInt(4)){
  138.         case 0:
  139.             u.setRank(u.getRank() + 50);
  140.             Bukkit.broadcastMessage("§aRank");
  141.             break;
  142.         case 1:
  143.             u.setKills(u.getKills() + 1);
  144.             Bukkit.broadcastMessage("§aKills");
  145.             break;
  146.         case 2:
  147.             u.setDeaths(u.getDeaths() + 1);
  148.             Bukkit.broadcastMessage("§aDeaths");
  149.             break;
  150.         case 3:
  151.             u.setRank(u.getRank() + 50);
  152.             u.setKills(u.getKills() + 1);
  153.             u.setDeaths(u.getDeaths() + 1);
  154.             Bukkit.broadcastMessage("§aAll");
  155.             break;
  156.         }
  157.     }
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement