Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.78 KB | None | 0 0
  1. package ru.Twinger;
  2.  
  3. import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
  4.  
  5. import org.bukkit.Bukkit;
  6. import org.bukkit.ChatColor;
  7. import org.bukkit.command.Command;
  8. import org.bukkit.command.CommandExecutor;
  9. import org.bukkit.command.CommandSender;
  10. import org.bukkit.entity.Player;
  11. import org.bukkit.event.EventHandler;
  12. import org.bukkit.event.Listener;
  13. import org.bukkit.event.player.PlayerLoginEvent;
  14. import org.bukkit.event.player.PlayerLoginEvent.Result;
  15. import org.bukkit.plugin.java.JavaPlugin;
  16.  
  17. import java.sql.Connection;
  18. import java.sql.PreparedStatement;
  19. import java.sql.ResultSet;
  20. import java.sql.SQLException;
  21.  
  22. public final class Main extends JavaPlugin implements Listener {
  23.     private MysqlDataSource ds = null;
  24.     private String sqlGet = null, sqlDelete = null;
  25.  
  26.     @Override
  27.     public void onEnable() {
  28.         super.onEnable();
  29.         saveDefaultConfig();
  30.  
  31.         // Set MySQL connector
  32.         ds = new MysqlDataSource();
  33.         ds.setServerName(getConfig().getString("mysql.address"));
  34.         ds.setUser(getConfig().getString("mysql.username"));
  35.         ds.setPassword(getConfig().getString("mysql.password"));
  36.         ds.setDatabaseName(getConfig().getString("mysql.database"));
  37.  
  38.         // Format SQL queries
  39.     //  String table = getConfig().getString("mysql.table");
  40.     //  String usernameColumn = getConfig().getString("mysql.usernameColumn");
  41.     //  String groupColumn = getConfig().getString("mysql.groupColumn");
  42.         sqlGet = "SELECT `group` FROM `umfetcher` WHERE `username` = ?";
  43.         sqlDelete = "DELETE FROM `umfetcher` WHERE `username`=? AND `group`=?";
  44.  
  45.         // Register commands and events
  46.         getCommand("cart").setExecutor(new CartCommand());
  47.         getServer().getPluginManager().registerEvents(this, this);
  48.     }
  49.  
  50.     private void flushCart(Player player, boolean notify) {
  51.         String username = player.getName();
  52.         try (Connection c = ds.getConnection()) {
  53.             String group;
  54.             try (PreparedStatement stmt = c.prepareStatement(sqlGet)) {
  55.                 stmt.setString(1, username);
  56.                 try (ResultSet result = stmt.executeQuery()) {
  57.                     group = result.next() ? result.getString(1) : null;
  58.                 }
  59.             }
  60.  
  61.             // Do nothing if not in database
  62.             if (group == null) {
  63.                 if (notify) {
  64.                     player.sendMessage(ChatColor.RED + "Ваша корзина пуста");
  65.                 }
  66.                 return;
  67.             }
  68.  
  69.             // Delete privilege
  70.             boolean failed;
  71.             try (PreparedStatement stmt = c.prepareStatement(sqlDelete)) {
  72.                 stmt.setString(1, username);
  73.                 stmt.setString(2, group);
  74.                 failed = stmt.executeUpdate() < 1;
  75.             }
  76.  
  77.             // Verify is failed
  78.             if (failed) {
  79.                 player.sendMessage(ChatColor.RED + "[UltraMineFetcher] Не удалось завершить транзакцию");
  80.                 return;
  81.             }
  82.  
  83.             // Give permission
  84.             PermissionsEx.getUser(player).setParentsIdentifier(Collections.singletonList(group));
  85.             //Bukkit.dispatchCommand(Bukkit.getConsoleSender(),"sync console all pex user "+player.getName()+" group set " + group);
  86.             player.sendMessage(ChatColor.GREEN + "Поздравляем! Вам выдана группа " + group);
  87.         } catch (SQLException e) {
  88.             getLogger().severe(e.toString());
  89.             player.sendMessage(ChatColor.RED + "[UltraMineFetcher] Невозможно подключиться к базе");
  90.         }
  91.     }
  92.  
  93.     @EventHandler
  94.     public void login(PlayerLoginEvent event) {
  95.         if (event.getResult() == Result.ALLOWED) {
  96.             flushCart(event.getPlayer(), false);
  97.         }
  98.     }
  99.  
  100.     private final class CartCommand implements CommandExecutor {
  101.         @Override
  102.         public boolean onCommand(CommandSender commandSender, Command command, String alias, String[] strings) {
  103.             if (!(commandSender instanceof Player)) {
  104.                 commandSender.sendMessage(ChatColor.RED + "Только игроки могут использовать эту команду");
  105.                 return true;
  106.             }
  107.             flushCart((Player) commandSender, true);
  108.             return true;
  109.         }
  110.     }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement