Advertisement
Savorski

Fajen klase

Jun 24th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.03 KB | None | 0 0
  1. package pl.meleride.api.user.manager;
  2.  
  3. import org.apache.commons.lang.Validate;
  4. import org.bukkit.Bukkit;
  5. import org.bukkit.entity.Player;
  6. import pl.meleride.api.user.User;
  7.  
  8. import java.util.*;
  9. import java.util.concurrent.ConcurrentHashMap;
  10. import java.util.concurrent.ConcurrentMap;
  11. import java.util.stream.Collectors;
  12. import pl.meleride.api.user.UserImpl;
  13.  
  14. public class UserManagerImpl implements UserManager {
  15.  
  16. private final ConcurrentMap<String, User> userNameMap = new ConcurrentHashMap<>(16, 0.9F, 1);
  17. private final ConcurrentMap<UUID, User> userUniqueIdMap = new ConcurrentHashMap<>(16, 0.9F, 1);
  18.  
  19. @Override
  20. public Optional<User> getUser(String name) {
  21. Validate.notNull(name, "Player name cannot be null!");
  22.  
  23. return this.userNameMap.values()
  24. .stream()
  25. .filter(user -> user.getName().equalsIgnoreCase(name))
  26. .findFirst();
  27. }
  28.  
  29. @Override
  30. public Optional<User> getUser(UUID uniqueId) {
  31. Validate.notNull(uniqueId, "Player unique id cannot be null!");
  32.  
  33. return this.userUniqueIdMap.values()
  34. .stream()
  35. .filter(user -> user.getUniqueId().equals(uniqueId))
  36. .findFirst();
  37. }
  38.  
  39. @Override
  40. public Optional<User> getUser(Player player) {
  41. Validate.notNull(player, "Player object cannot be null!");
  42.  
  43. return this.getUser(player.getUniqueId());
  44. }
  45.  
  46. @Override
  47. public void addUser(User user) {
  48. Validate.notNull(user, "User object cannot be null!");
  49.  
  50. this.userUniqueIdMap.put(user.getUniqueId(), user);
  51. this.userNameMap.put(user.getName(), user);
  52. }
  53.  
  54. @Override
  55. public void createUser(Player player) {
  56. Validate.notNull(player, "Player cannot be null!");
  57.  
  58. User user = new UserImpl(player);
  59. this.userUniqueIdMap.put(user.getUniqueId(), user);
  60. this.userNameMap.put(player.getName(), user);
  61. }
  62.  
  63. @Override
  64. public void createUser(UUID uuid) {
  65. Validate.notNull(uuid, "UUID of player cannot be null!");
  66.  
  67. User user = new UserImpl(uuid);
  68. this.userUniqueIdMap.put(uuid, user);
  69. this.userNameMap.put(Bukkit.getPlayer(uuid).getName(), user);
  70. }
  71.  
  72. @Override
  73. public void removeUser(User user) {
  74. Validate.notNull(user, "User object cannot be null!");
  75.  
  76. this.userUniqueIdMap.remove(user.getUniqueId());
  77. this.userNameMap.remove(user.getName());
  78. }
  79.  
  80. @Override
  81. public Set<User> getOnlineUsers() {
  82. return Bukkit.getServer().getOnlinePlayers().stream()
  83. .map(player -> this.getUser(player.getUniqueId()))
  84. .filter(Optional::isPresent)
  85. .map(Optional::get)
  86. .collect(Collectors.toCollection(LinkedHashSet::new));
  87. }
  88.  
  89. }
  90.  
  91.  
  92. / ------------------------------------------------------------------------ \
  93.  
  94. package pl.meleride.api.user.caller;
  95.  
  96. import java.sql.ResultSet;
  97. import java.sql.SQLException;
  98. import java.util.UUID;
  99. import org.bukkit.Bukkit;
  100. import org.bukkit.entity.Player;
  101. import org.bukkit.event.EventHandler;
  102. import org.bukkit.event.EventPriority;
  103. import org.bukkit.event.Listener;
  104. import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
  105. import pl.meleride.api.MelerideAPI;
  106. import pl.meleride.api.storage.StorageException;
  107. import pl.meleride.api.storage.sql.hikari.SQLHikariStorage;
  108. import pl.meleride.api.user.User;
  109. import pl.meleride.api.user.event.UserAbortEvent;
  110. import pl.meleride.api.user.event.UserInitEvent;
  111. import pl.meleride.api.user.manager.UserManager;
  112. import pl.meleride.api.user.manager.UserManagerImpl;
  113. import pl.meleride.api.user.status.DiseaseStatus;
  114.  
  115. public class PlayerPreLoginListener implements Listener {
  116.  
  117. private MelerideAPI instance;
  118. private UserManager userManager = new UserManagerImpl();
  119. private ResultSet resultSet;
  120.  
  121. public PlayerPreLoginListener(MelerideAPI instance) {
  122. this.instance = instance;
  123. }
  124.  
  125. @EventHandler(priority = EventPriority.LOWEST)
  126. public void onPlayerPreLogin(AsyncPlayerPreLoginEvent event) {
  127. Player player = Bukkit.getPlayer(event.getUniqueId());
  128. if(!this.userManager.getUser(player).isPresent()) {
  129. this.userManager.createUser(player);
  130. }
  131. User user = this.userManager.getUser(player).get();
  132. SQLHikariStorage storage = instance.getStorage();
  133.  
  134. UserInitEvent userInitEvent = new UserInitEvent(user);
  135. Bukkit.getPluginManager().callEvent(userInitEvent);
  136.  
  137. if (userInitEvent.isCancelled()) {
  138. UserAbortEvent userAbortEvent = new UserAbortEvent(user);
  139. Bukkit.getPluginManager().callEvent(userAbortEvent);
  140. event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "Session abort.");
  141. return;
  142. }
  143.  
  144. this.userManager.addUser(user);
  145.  
  146. try {
  147. resultSet = storage.query("SELECT " + event.getName() + " from users");
  148. user.setName(resultSet.getString("name"));
  149. for(DiseaseStatus disease : DiseaseStatus.getDiseaseFromString(resultSet.getString("disease").split(","))) {
  150. user.addDisease(disease);
  151. }
  152. } catch(StorageException | SQLException e) {
  153. Bukkit.getLogger().severe("Wystąpił BARDZO POTEŻNY błąd w ładowaniu gracza!!1");
  154. e.printStackTrace();
  155. }
  156. }
  157.  
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement