Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.98 KB | None | 0 0
  1. private HashMap<String, Inventory> inventoryHashMap = new HashMap<>();
  2.  
  3.  
  4. public void loadPlayer(Player player) {
  5. ExecutorService executorService = Executors.newFixedThreadPool(2);
  6. executorService.submit(() -> {
  7. // BEIM JOIN(Hier wird das Inventory aus der Datenbank runtergeladen und in der Hashmap gepackt.
  8. if (exsistsPlayer(player.getUniqueId().toString())) {
  9. Inventory inv = getInventoryFromBase64Code(getDataFromMySQL(player), player);
  10. inventoryHashMap.put(player.getUniqueId().toString(), inv);
  11. } else {
  12. Inventory inventory = getDefaultInventory(player);
  13. inventoryHashMap.put(player.getUniqueId().toString(), inventory);
  14. }
  15. // inventoryHashMap.put(player.getUniqueId().toString(), getInventoryFromMySQL(player));
  16. });
  17. }
  18.  
  19.  
  20. public void uploadPlayer(Player player) {
  21.  
  22. // BEIM QUITTEN(Hier wird das Inventory aus der HashMap wieder hochgeladen beim quitten)
  23.  
  24. ExecutorService executorService = Executors.newFixedThreadPool(2);
  25. executorService.submit(() -> {
  26. if (!exsistsPlayer(player.getUniqueId().toString())) {
  27. createPlayer(player.getUniqueId().toString(), toBase64(getInventory(player)));
  28. inventoryHashMap.remove(player.getUniqueId().toString());
  29. } else {
  30. updateDataStringToMySQL(player.getUniqueId().toString(), toBase64(getInventory(player)));
  31. inventoryHashMap.remove(player.getUniqueId().toString());
  32. }
  33. });
  34. }
  35.  
  36. public Inventory getInventory(Player player) {
  37.  
  38. // Du bekommst das Inventory aus der HashMap..
  39. if (inventoryHashMap.containsKey(player.getUniqueId().toString())) {
  40. return inventoryHashMap.get(player.getUniqueId().toString());
  41.  
  42. }
  43. return null;
  44. }
  45.  
  46. public void updateInventory(Player player, Inventory inventory) {
  47.  
  48.  
  49. // WENN DER SPIER DAS INVENTORY VERÄNDERT HAT wird es in der Hashmap geupdatet und später wenn der Spieler den Server verlasst wird das Inventory auf die Datenbank hochgeladen lo, huso
  50. inventoryHashMap.put(player.getUniqueId().toString(), inventory);
  51.  
  52. }
  53.  
  54. private String getDataFromMySQL(Player player) {
  55. try {
  56. PreparedStatement preparedStatement = MySQL.connection.prepareStatement("SELECT * FROM knockwars_inventory WHERE uuid = ?");
  57. preparedStatement.setString(1, player.getUniqueId().toString());
  58. ResultSet resultSet = preparedStatement.executeQuery();
  59. if (resultSet.next()) {
  60. return resultSet.getString("inventory");
  61. }
  62. } catch (SQLException e) {
  63. e.printStackTrace();
  64. }
  65.  
  66. return "null";
  67. }
  68.  
  69. private void updateDataStringToMySQL(String uuid, String data) {
  70.  
  71. try {
  72. PreparedStatement preparedStatement = MySQL.connection.prepareStatement("UPDATE knockwars_inventory SET inventory = ? WHERE uuid = ? ");
  73. preparedStatement.setString(1, data);
  74. preparedStatement.setString(2, uuid);
  75. preparedStatement.executeUpdate();
  76. } catch (SQLException e) {
  77. e.printStackTrace();
  78. }
  79.  
  80. }
  81.  
  82. private boolean exsistsPlayer(String uuid) {
  83.  
  84. try {
  85. PreparedStatement preparedStatement = MySQL.connection.prepareStatement("SELECT * FROM knockwars_inventory WHERE uuid = ?");
  86. preparedStatement.setString(1, uuid);
  87. ResultSet resultSet = preparedStatement.executeQuery();
  88. if (resultSet.next()) {
  89. return true;
  90. }
  91. } catch (SQLException e) {
  92. e.printStackTrace();
  93. }
  94. return false;
  95. }
  96.  
  97. private void createPlayer(String uuid, String data) {
  98.  
  99. try {
  100. PreparedStatement preparedStatement = MySQL.connection.prepareStatement("INSERT INTO knockwars_inventory (uuid,inventory) VALUES (?,?)");
  101. preparedStatement.setString(1, uuid);
  102. preparedStatement.setString(2, data);
  103. preparedStatement.executeUpdate();
  104. } catch (SQLException e) {
  105. e.printStackTrace();
  106. }
  107. }
  108.  
  109.  
  110. public void createTable() {
  111. //uuid,inv
  112. try {
  113. PreparedStatement preparedStatement = MySQL.connection.prepareStatement("CREATE TABLE IF NOT EXISTS knockwars_inventory(uuid VARCHAR(64),inventory TEXT(20000))");
  114. preparedStatement.execute();
  115. } catch (SQLException e) {
  116. e.printStackTrace();
  117. }
  118.  
  119.  
  120. }
  121.  
  122.  
  123. public String toBase64(Inventory inv) {
  124. try {
  125. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  126. BukkitObjectOutputStream dataOutput = new BukkitObjectOutputStream(outputStream);
  127.  
  128. dataOutput.writeInt(inv.getSize());
  129. for (int i = 0; i < inv.getSize(); i++) {
  130. dataOutput.writeObject(inv.getItem(i));
  131. }
  132. dataOutput.close();
  133. return Base64Coder.encodeLines(outputStream.toByteArray());
  134. } catch (Exception ex) {
  135. ex.printStackTrace();
  136. }
  137. return null;
  138. }
  139.  
  140.  
  141. public Inventory getInventoryFromBase64Code(String data, Player p) {
  142. try {
  143. ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data));
  144. BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream);
  145. Inventory inv = Bukkit.getServer().createInventory(p, dataInput.readInt(), "Sortiere dein Inventar");
  146. for (int i = 0; i < inv.getSize(); i++) {
  147. inv.setItem(i, (ItemStack) dataInput.readObject());
  148. }
  149. dataInput.close();
  150. return inv;
  151. } catch (Exception ex) {
  152. ex.printStackTrace();
  153. }
  154. return null;
  155. }
  156.  
  157. public Inventory getDefaultInventory(Player player) {
  158.  
  159. Inventory sortieren2Inv = KnockWars.getInstance().invSortieren2;
  160.  
  161. sortieren2Inv = Bukkit.getServer().createInventory(player, 9, "Sortiere dein Inventar");
  162.  
  163.  
  164. ItemStack item1 = new ItemStack(Material.STICK);
  165. ItemMeta meta1 = item1.getItemMeta();
  166. meta1.addEnchant(Enchantment.KNOCKBACK, 1, true);
  167. meta1.setDisplayName("§fKnüpel");
  168. item1.setItemMeta(meta1);
  169.  
  170. ItemStack item3 = new ItemStack(Material.SANDSTONE, 64);
  171. ItemMeta meta3 = item3.getItemMeta();
  172. item3.setItemMeta(meta3);
  173.  
  174. ItemStack item4 = new ItemStack(Material.SANDSTONE, 64);
  175. ItemMeta meta4 = item4.getItemMeta();
  176. item4.setItemMeta(meta4);
  177.  
  178.  
  179. sortieren2Inv.setItem(1, ItemBuilder.createItem1(257, (short) 0, "§fSpitzhacke", false, new String[0]));
  180. sortieren2Inv.setItem(2, item3);
  181. sortieren2Inv.setItem(3, item4);
  182. sortieren2Inv.setItem(0, item1);
  183.  
  184. return sortieren2Inv;
  185. }
  186.  
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement