Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package pl.meleride.api.user.manager;
- import org.apache.commons.lang.Validate;
- import org.bukkit.Bukkit;
- import org.bukkit.entity.Player;
- import pl.meleride.api.user.User;
- import java.util.*;
- import java.util.concurrent.ConcurrentHashMap;
- import java.util.concurrent.ConcurrentMap;
- import java.util.stream.Collectors;
- import pl.meleride.api.user.UserImpl;
- public class UserManagerImpl implements UserManager {
- private final ConcurrentMap<String, User> userNameMap = new ConcurrentHashMap<>(16, 0.9F, 1);
- private final ConcurrentMap<UUID, User> userUniqueIdMap = new ConcurrentHashMap<>(16, 0.9F, 1);
- @Override
- public Optional<User> getUser(String name) {
- Validate.notNull(name, "Player name cannot be null!");
- return this.userNameMap.values()
- .stream()
- .filter(user -> user.getName().equalsIgnoreCase(name))
- .findFirst();
- }
- @Override
- public Optional<User> getUser(UUID uniqueId) {
- Validate.notNull(uniqueId, "Player unique id cannot be null!");
- return this.userUniqueIdMap.values()
- .stream()
- .filter(user -> user.getUniqueId().equals(uniqueId))
- .findFirst();
- }
- @Override
- public Optional<User> getUser(Player player) {
- Validate.notNull(player, "Player object cannot be null!");
- return this.getUser(player.getUniqueId());
- }
- @Override
- public void addUser(User user) {
- Validate.notNull(user, "User object cannot be null!");
- this.userUniqueIdMap.put(user.getUniqueId(), user);
- this.userNameMap.put(user.getName(), user);
- }
- @Override
- public void createUser(Player player) {
- Validate.notNull(player, "Player cannot be null!");
- User user = new UserImpl(player);
- this.userUniqueIdMap.put(user.getUniqueId(), user);
- this.userNameMap.put(player.getName(), user);
- }
- @Override
- public void createUser(UUID uuid) {
- Validate.notNull(uuid, "UUID of player cannot be null!");
- User user = new UserImpl(uuid);
- this.userUniqueIdMap.put(uuid, user);
- this.userNameMap.put(Bukkit.getPlayer(uuid).getName(), user);
- }
- @Override
- public void removeUser(User user) {
- Validate.notNull(user, "User object cannot be null!");
- this.userUniqueIdMap.remove(user.getUniqueId());
- this.userNameMap.remove(user.getName());
- }
- @Override
- public Set<User> getOnlineUsers() {
- return Bukkit.getServer().getOnlinePlayers().stream()
- .map(player -> this.getUser(player.getUniqueId()))
- .filter(Optional::isPresent)
- .map(Optional::get)
- .collect(Collectors.toCollection(LinkedHashSet::new));
- }
- }
- / ------------------------------------------------------------------------ \
- package pl.meleride.api.user.caller;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.UUID;
- import org.bukkit.Bukkit;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.EventPriority;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
- import pl.meleride.api.MelerideAPI;
- import pl.meleride.api.storage.StorageException;
- import pl.meleride.api.storage.sql.hikari.SQLHikariStorage;
- import pl.meleride.api.user.User;
- import pl.meleride.api.user.event.UserAbortEvent;
- import pl.meleride.api.user.event.UserInitEvent;
- import pl.meleride.api.user.manager.UserManager;
- import pl.meleride.api.user.manager.UserManagerImpl;
- import pl.meleride.api.user.status.DiseaseStatus;
- public class PlayerPreLoginListener implements Listener {
- private MelerideAPI instance;
- private UserManager userManager = new UserManagerImpl();
- private ResultSet resultSet;
- public PlayerPreLoginListener(MelerideAPI instance) {
- this.instance = instance;
- }
- @EventHandler(priority = EventPriority.LOWEST)
- public void onPlayerPreLogin(AsyncPlayerPreLoginEvent event) {
- Player player = Bukkit.getPlayer(event.getUniqueId());
- if(!this.userManager.getUser(player).isPresent()) {
- this.userManager.createUser(player);
- }
- User user = this.userManager.getUser(player).get();
- SQLHikariStorage storage = instance.getStorage();
- UserInitEvent userInitEvent = new UserInitEvent(user);
- Bukkit.getPluginManager().callEvent(userInitEvent);
- if (userInitEvent.isCancelled()) {
- UserAbortEvent userAbortEvent = new UserAbortEvent(user);
- Bukkit.getPluginManager().callEvent(userAbortEvent);
- event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "Session abort.");
- return;
- }
- this.userManager.addUser(user);
- try {
- resultSet = storage.query("SELECT " + event.getName() + " from users");
- user.setName(resultSet.getString("name"));
- for(DiseaseStatus disease : DiseaseStatus.getDiseaseFromString(resultSet.getString("disease").split(","))) {
- user.addDisease(disease);
- }
- } catch(StorageException | SQLException e) {
- Bukkit.getLogger().severe("Wystąpił BARDZO POTEŻNY błąd w ładowaniu gracza!!1");
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement