Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Singleton
- public class UserRepository implements Listener {
- private final Set<UUID> premiumAccount = Sets.newHashSet();
- private final ConcurrentMap<UUID, String> firstPassword = Maps.newConcurrentMap();
- private final ConcurrentMap<UUID, RegisteredUser> userCache = Maps.newConcurrentMap();
- private final Set<UUID> locked = Sets.newHashSet();
- private final Set<UUID> registering = Sets.newHashSet();
- private final RegisteredUserDatabase userDatabase;
- private final SpigotMessenger spigotMessenger;
- @Inject
- public UserRepository(RegisteredUserDatabase userDatabase, SpigotMessenger spigotMessenger) {
- this.userDatabase = userDatabase;
- this.spigotMessenger = spigotMessenger;
- }
- @EventHandler
- public void handlePlayerJoin(PlayerJoinEvent event) {
- Player player = event.getPlayer();
- locked.add(player.getUniqueId());
- player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 999999, 10));
- player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 999999, 10));
- userDatabase.loadUser(player.getUniqueId(), user -> {
- if (user == null) {
- registering.add(player.getUniqueId());
- player.sendMessage("§6Prosimy o wprowadzenie hasła na czacie, bez żadnych komend.");
- player.sendMessage("§eWybierz silne hasło! Nie odpowiadamy za włamania.");
- return;
- }
- player.sendMessage("§aWitaj ponownie na naszym serwerze!");
- player.sendMessage("§7Prosimy o wprowadzenie hasła do konta na czacie.");
- userCache.put(player.getUniqueId(), user);
- });
- }
- @EventHandler
- public void handlePlayerQuit(PlayerQuitEvent event) {
- removeAll(event.getPlayer());
- }
- @EventHandler
- public void handlePlayerMove(PlayerMoveEvent event) {
- Player player = event.getPlayer();
- if (!locked.contains(player.getUniqueId())) {
- return;
- }
- player.teleport(event.getFrom());
- }
- @EventHandler
- public void handleAsyncPlayerChat(AsyncPlayerChatEvent event) {
- Player player = event.getPlayer();
- String message = event.getMessage().replace("%", "%%");
- if (!locked.contains(player.getUniqueId())) {
- return;
- }
- event.setCancelled(true);
- if (firstPassword.containsKey(player.getUniqueId())) {
- String password = firstPassword.get(player.getUniqueId());
- if (!password.equals(message)) {
- ServerMainThread.RunParallel.run(() -> {
- player.kickPlayer("§cWprowadziłeś dwa różne hasła. Spróbuj ponownie.");
- });
- return;
- }
- player.sendMessage("§aPomyślnie utworzyłeś konto! Miłej gry :)");
- String salt = BCrypt.gensalt();
- userDatabase.registerUser(new RegisteredUser(
- player.getUniqueId(), player.getName(),
- premiumAccount.contains(player.getUniqueId()),
- salt,
- BCrypt.hashpw(password, salt)));
- removeAll(player);
- spigotMessenger.movePlayerToLobby(player);
- } else if (registering.contains(player.getUniqueId())) {
- firstPassword.put(player.getUniqueId(), message);
- player.sendMessage("§7Prosimy o powtórzenie hasła.");
- } else {
- RegisteredUser user = userCache.get(player.getUniqueId());
- if (BCrypt.checkpw(message, user.getHashedPassword())) {
- player.sendMessage("§aHasło przyjęte! Przenoszenie na ostatnią lokalizacje sektorów...");
- removeAll(player);
- spigotMessenger.movePlayerToLobby(player);
- return;
- }
- ServerMainThread.RunParallel.run(() -> {
- player.kickPlayer("§cWprowadzono błędne hasło. Spróbuj ponownie.");
- });
- }
- }
- private void removeAll(Player player) {
- ServerMainThread.RunParallel.run(() -> {
- for (PotionEffect potionEffect : player.getActivePotionEffects()) {
- player.removePotionEffect(potionEffect.getType());
- }
- });
- premiumAccount.remove(player.getUniqueId());
- userCache.remove(player.getUniqueId());
- firstPassword.remove(player.getUniqueId());
- registering.remove(player.getUniqueId());
- locked.remove(player.getUniqueId());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement