Advertisement
JolyJDIA

Untitled

Oct 12th, 2020
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.65 KB | None | 0 0
  1. private final Main main;
  2.     private final Map<UUID, Miner> miners = new IdentityHashMap<>();
  3.  
  4.     public Events(Main main) {
  5.         this.main = main;
  6.     }
  7.  
  8.     @EventHandler
  9.     public void onBreak(PlayerMoveEvent e) {
  10.         UUID uuid = e.getPlayer().getUniqueId();
  11.         Miner miner = miners.computeIfAbsent(uuid, v -> {
  12.             Miner newMiner = new Miner(uuid, 0);
  13.             load(newMiner).thenAccept(u -> System.out.println("ПРибавил результат из бд"));
  14.             return newMiner;
  15.         });
  16.         miner.incrementAndGet();
  17.     }
  18.     @EventHandler
  19.     public void onLeave(PlayerQuitEvent e) {
  20.         UUID uuid = e.getPlayer().getUniqueId();
  21.         Miner miner = miners.get(uuid);
  22.         if(miner == null) {
  23.             return;
  24.         }
  25.         executor.execute(() -> {
  26.             PreparedStatement ps = null;
  27.             try {
  28.                 ps = miner.isDone()
  29.                         ? main.getDatabaseSQL().getConnection().prepareStatement(
  30.                         "INSERT INTO `miner_skills` (`uuid`, `exp`) VALUES(?, ?) " +
  31.                             "ON DUPLICATE KEY UPDATE `exp` = ?;")
  32.                         : main.getDatabaseSQL().getConnection().prepareStatement(
  33.                         "INSERT INTO `miner_skills` (`uuid`, `exp`) VALUES(?, ?) " +
  34.                             "ON DUPLICATE KEY UPDATE `exp` = `exp` + ?;"
  35.                 );
  36.                 ps.setString(1, uuid.toString());
  37.  
  38.                 ps.setInt(2, miner.getScore());
  39.                 ps.setInt(3, miner.getScore());
  40.                 ps.execute();
  41.             } catch (SQLException ex) {
  42.                 ex.printStackTrace();
  43.             } finally {
  44.                 if(ps != null) {
  45.                     try {
  46.                         ps.close();
  47.                     } catch (SQLException ex) {
  48.                         ex.printStackTrace();
  49.                     }
  50.                 }
  51.             }
  52.         });
  53.     }
  54.     public CompletableFuture<Void> load(Miner miner) {
  55.         return miner.completeAsync(() -> {
  56.             try (PreparedStatement ps = main.getDatabaseSQL().getConnection().prepareStatement(
  57.                     "SELECT `exp` FROM `miner_skills` WHERE `uuid` = ? LIMIT 1;"
  58.             )) {
  59.                 ps.setString(1, miner.getUuid().toString());
  60.                 try (ResultSet rs = ps.executeQuery()) {
  61.                     if(rs.next()) {
  62.                         miner.incrementAndGet(rs.getInt(1));
  63.                     }
  64.                 }
  65.             } catch (SQLException e) {
  66.                 throw new RuntimeException(e);
  67.             }
  68.             return null;
  69.         }, executor);
  70.     }
  71. }
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement