Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2016
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.29 KB | None | 0 0
  1. package me.hobblyhobo;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.util.List;
  9.  
  10. import org.bukkit.Bukkit;
  11. import org.bukkit.configuration.file.FileConfiguration;
  12. import org.bukkit.entity.Player;
  13. import org.bukkit.event.EventHandler;
  14. import org.bukkit.event.Listener;
  15. import org.bukkit.event.player.PlayerLoginEvent;
  16. import org.bukkit.plugin.ServicesManager;
  17. import org.bukkit.plugin.java.JavaPlugin;
  18.  
  19. import me.lucko.luckperms.api.LuckPermsApi;
  20. import me.lucko.luckperms.api.User;
  21. import me.lucko.luckperms.exceptions.ObjectAlreadyHasException;
  22. import me.lucko.luckperms.exceptions.ObjectLacksException;
  23.  
  24. public class Main extends JavaPlugin implements Listener {
  25.     FileConfiguration config = this.getConfig();
  26.     private static Connection connection;
  27.     private static String databasename;
  28.     private static String username;
  29.     private static String password;
  30.     private static String host;
  31.     private static String port;
  32.     public LuckPermsApi luckPerms;
  33.     public List<String> ranks = getConfig().getStringList("ranks");
  34.    
  35.     public void onEnable(){
  36.         getServer().getPluginManager().registerEvents(this, this);
  37.         config.options().copyDefaults(true);
  38.         saveConfig();
  39.         ServicesManager manager = Bukkit.getServicesManager();
  40.         databasename = config.getString("databasename");
  41.         username = config.getString("username");
  42.         password = config.getString("password");
  43.         host = config.getString("host");
  44.         port = config.getString("port");
  45.         if (manager.isProvidedFor(LuckPermsApi.class)) {
  46.             final LuckPermsApi api = manager.getRegistration(LuckPermsApi.class).getProvider();
  47.             luckPerms = api;
  48.         }
  49.     }
  50.    
  51.     public void onDisable(){
  52.         try {
  53.             if(connection != null && !connection.isClosed()){
  54.                 connection.close();
  55.             }
  56.         } catch (SQLException e) {
  57.             e.printStackTrace();
  58.         }
  59.     }
  60.    
  61.     public synchronized static void openConnection() {
  62.         try {
  63.             connection = DriverManager.getConnection("jdbc:mysql://"+host+":"+port+"/"+databasename,username,password);
  64.         } catch (SQLException e) {
  65.             e.printStackTrace();
  66.         }  
  67.     }
  68.    
  69.     public synchronized static void closeConnection() {
  70.         try {
  71.             connection.close();
  72.         } catch (SQLException e) {
  73.             e.printStackTrace();
  74.         }  
  75.     }
  76.    
  77.     public synchronized static boolean playerDataContiansPlayer(Player player){
  78.         try {
  79.             PreparedStatement sql = connection
  80.                     .prepareStatement("SELECT * FROM `store_data` WHERE UUID=?;");
  81.             sql.setString(1, player.getUniqueId().toString());
  82.             ResultSet resultSet = sql.executeQuery();
  83.             boolean containsPlayer = resultSet.next();
  84.             sql.close();
  85.             resultSet.close();
  86.             return containsPlayer;
  87.         } catch (SQLException e) {
  88.             e.printStackTrace();
  89.             return false;
  90.         }
  91.     }
  92.  
  93.     public void refreshName(Player player){
  94.         openConnection();
  95.         try {          
  96.             if (playerDataContiansPlayer(player)){
  97.                 PreparedStatement sql = connection
  98.                         .prepareStatement("SELECT player_name FROM `store_data` WHERE UUID=?;");
  99.                 sql.setString(1, player.getUniqueId().toString());
  100.                 ResultSet result =  sql.executeQuery();
  101.                 result.next();
  102.                 if (result.getString("player_name") != player.getName()){
  103.                     PreparedStatement nameSet = connection
  104.                             .prepareStatement("UPDATE `store_data` SET player_name=? WHERE UUID=?");
  105.                     nameSet.setString(1, player.getName());
  106.                     nameSet.setString(2, player.getUniqueId().toString());
  107.                     nameSet.executeUpdate();
  108.                     nameSet.close();
  109.                 }
  110.                 sql.close();
  111.                 result.close();
  112.             }
  113.            
  114.         } catch (Exception e) {
  115.             e.printStackTrace();
  116.         } finally {
  117.             closeConnection();
  118.         }
  119.     }
  120.    
  121.     public int getDonationRank(Player player){
  122.         openConnection();
  123.         int donationRank = 0;
  124.         try {          
  125.             if (playerDataContiansPlayer(player)){
  126.                 PreparedStatement sql = connection
  127.                         .prepareStatement("SELECT donation_rank FROM `store_data` WHERE UUID=?;");
  128.                 sql.setString(1, player.getUniqueId().toString());
  129.                 ResultSet result =  sql.executeQuery();
  130.                 result.next();
  131.                 donationRank = result.getInt("donation_rank");
  132.                 sql.close();
  133.                 result.close();
  134.             } else {
  135.                 PreparedStatement newPlayer = connection
  136.                         .prepareStatement("INSERT INTO `store_data` values(?,?,0);");
  137.                 newPlayer.setString(1, player.getUniqueId().toString());
  138.                 newPlayer.setString(2, player.getName());
  139.                 newPlayer.execute();
  140.                 newPlayer.close();
  141.             }
  142.            
  143.         } catch (Exception e) {
  144.             e.printStackTrace();
  145.         } finally {
  146.             closeConnection();
  147.         }
  148.         return donationRank;
  149.     }
  150.    
  151.     @EventHandler
  152.     public void onPlayerEnter(PlayerLoginEvent e){
  153.         refreshName(e.getPlayer());
  154.         int donationRank = getDonationRank(e.getPlayer());
  155.         User user = luckPerms.getUser(e.getPlayer().getUniqueId());
  156.         if (donationRank == 0){
  157.             for (int i = 0; i < ranks.size(); i++) {
  158.                 try {
  159.                     user.removeGroup(luckPerms.getGroup(ranks.get(i)));
  160.                 } catch (ObjectLacksException e1) {
  161.                     e1.printStackTrace();
  162.                 }
  163.             }
  164.         }else{
  165.             for (int i = 0; i < ranks.size(); i++) {
  166.                 try {
  167.                     user.removeGroup(luckPerms.getGroup(ranks.get(i)));
  168.                 } catch (ObjectLacksException e1) {
  169.                     e1.printStackTrace();
  170.                 }
  171.             }
  172.                 try {
  173.                     user.addGroup(luckPerms.getGroup(ranks.get(donationRank)));
  174.                 } catch (ObjectAlreadyHasException e1) {
  175.                     e1.printStackTrace();
  176.             }
  177.         }
  178.     }
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement