示例#1
0
 @EventHandler(priority = EventPriority.HIGH)
 public void onJoinWhileReseting(AsyncPlayerPreLoginEvent event) {
   if (plugin.resetMode) {
     event.setKickMessage(ChatMessages.resetMessage);
     event.setLoginResult(Result.KICK_OTHER);
   }
 }
示例#2
0
  @EventHandler
  public void onAsyncPlayerPreLoginEvent(AsyncPlayerPreLoginEvent e) {
    if (Arcade.getMatches().getStatus() == ArcadeMatchStatus.RESTARTING) {
      e.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_WHITELIST);
      e.setKickMessage(Color.RED + "Serwer jest teraz restartowany...");
    }

    if (this.server.isFull()) {
      boolean allowed = false;
      // TODO Mongo query to check if the player is allowed to join this server

      if (!allowed) {
        e.disallow(
            AsyncPlayerPreLoginEvent.Result.KICK_FULL,
            Color.RED
                + "Ten serwer jest obecnie pelny. Spróbuj "
                + "polaczyc sie ponownie pózniej, lub wybierz inny "
                + "serwer. Tylko ranga "
                + Color.GOLD
                + Color.BOLD
                + "VIP"
                + Color.RESET
                + Color.RED
                + " moze dolaczac "
                + "na pelne serwery.");
      }
    }
  }
 @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
 public void onPlayerLogin(final AsyncPlayerPreLoginEvent event) {
   if (!server.getOnlineMode()) return;
   if (event.getLoginResult() == AsyncPlayerPreLoginEvent.Result.KICK_BANNED) return;
   logger.log(Level.FINER, "Received " + event.getEventName());
   final String playerName = event.getName();
   if (this.isPlayerBanned(playerName)) {
     final BanRecord record = this.playerRecordManager.find(playerName).getActiveBan();
     final String message = this.getKickMessage(record);
     event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_BANNED, message);
   }
 }
示例#4
0
  @EventHandler(priority = EventPriority.MONITOR)
  public void onJoin(AsyncPlayerPreLoginEvent event) {
    PlayerData player = new PlayerData(event.getUniqueId(), event.getName(), event.getAddress());

    try {
      plugin.getPlayerStorage().createOrUpdate(player);
    } catch (SQLException e) {
      PluginLogger.warn(e);
      return;
    }

    if (plugin.getConfiguration().isLogIpsEnabled()) {
      plugin.getPlayerHistoryStorage().create(player);
    }
  }
  public static void handlePlayerPreLogin(AsyncPlayerPreLoginEvent event) {
    final String ip = event.getAddress().getHostAddress().trim();
    final boolean isAdmin = TFM_AdminList.isSuperAdminSafe(null, ip);

    // Check if the player is already online
    for (Player onlinePlayer : TotalFreedomMod.server.getOnlinePlayers()) {
      if (!onlinePlayer.getName().equalsIgnoreCase(event.getName())) {
        continue;
      }

      if (!isAdmin) {
        event.disallow(
            AsyncPlayerPreLoginEvent.Result.KICK_OTHER,
            "Your username is already logged into this server.");
      } else {
        event.allow();
        TFM_Sync.playerKick(
            onlinePlayer, "An admin just logged in with the username you are using.");
      }
      return;
    }
  }
示例#6
0
 @SuppressWarnings("deprecation")
 @EventHandler(order = Order.EARLIEST)
 public void onPlayerPreLogin(PlayerPreLoginEvent event) {
   if (event.isCancelled()) {
     return;
   }
   // Do both events here because Spout login events are all async
   org.bukkit.event.player.AsyncPlayerPreLoginEvent asyncPreLogin =
       new org.bukkit.event.player.AsyncPlayerPreLoginEvent(event.getName(), event.getAddress());
   Bukkit.getPluginManager().callEvent(asyncPreLogin);
   if (asyncPreLogin.getLoginResult()
       != org.bukkit.event.player.AsyncPlayerPreLoginEvent.Result.ALLOWED) {
     toKick.put(asyncPreLogin.getName(), asyncPreLogin.getKickMessage());
     return;
   }
   org.bukkit.event.player.PlayerPreLoginEvent preLogin =
       new org.bukkit.event.player.PlayerPreLoginEvent(event.getName(), event.getAddress());
   Bukkit.getPluginManager().callEvent(preLogin);
   if (preLogin.getResult() != org.bukkit.event.player.PlayerPreLoginEvent.Result.ALLOWED) {
     toKick.put(preLogin.getName(), preLogin.getKickMessage());
     return;
   }
 }
示例#7
0
  @EventHandler(priority = EventPriority.HIGHEST)
  public void banCheck(final AsyncPlayerPreLoginEvent event) {
    if (plugin.getConfiguration().isCheckOnJoin()) {
      // Check for new bans/mutes
      if (!plugin.getIpBanStorage().isBanned(event.getAddress())) {
        try {
          IpBanData ban = plugin.getIpBanStorage().retrieveBan(IPUtils.toLong(event.getAddress()));

          if (ban != null) {
            plugin.getIpBanStorage().addBan(ban);
          }
        } catch (SQLException e) {
          PluginLogger.warn(e);
        }
      }

      if (!plugin.getPlayerBanStorage().isBanned(event.getUniqueId())) {
        try {
          PlayerBanData ban = plugin.getPlayerBanStorage().retrieveBan(event.getUniqueId());

          if (ban != null) {
            plugin.getPlayerBanStorage().addBan(ban);
          }
        } catch (SQLException e) {
          PluginLogger.warn(e);
        }
      }

      if (!plugin.getPlayerMuteStorage().isMuted(event.getUniqueId())) {
        try {
          PlayerMuteData mute = plugin.getPlayerMuteStorage().retrieveMute(event.getUniqueId());

          if (mute != null) {
            plugin.getPlayerMuteStorage().addMute(mute);
          }
        } catch (SQLException e) {
          PluginLogger.warn(e);
        }
      }
    }

    if (plugin.getIpRangeBanStorage().isBanned(event.getAddress())) {
      IpRangeBanData data = plugin.getIpRangeBanStorage().getBan(event.getAddress());

      if (data.hasExpired()) {
        try {
          plugin.getIpRangeBanStorage().unban(data, plugin.getPlayerStorage().getConsole());
        } catch (SQLException e) {
          PluginLogger.warn(e);
        }

        return;
      }

      Message message;

      if (data.getExpires() == 0) {
        message = Message.get("baniprange.ip.disallowed");
      } else {
        message = Message.get("tempbaniprange.ip.disallowed");
        message.set("expires", DateUtils.getDifferenceFormat(data.getExpires()));
      }

      message.set("ip", event.getAddress().toString());
      message.set("reason", data.getReason());
      message.set("actor", data.getActor().getName());

      event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_BANNED);
      event.setKickMessage(message.toString());
      return;
    }

    if (plugin.getIpBanStorage().isBanned(event.getAddress())) {
      IpBanData data = plugin.getIpBanStorage().getBan(event.getAddress());

      if (data.hasExpired()) {
        try {
          plugin.getIpBanStorage().unban(data, plugin.getPlayerStorage().getConsole());
        } catch (SQLException e) {
          PluginLogger.warn(e);
        }

        return;
      }

      Message message;

      if (data.getExpires() == 0) {
        message = Message.get("banip.ip.disallowed");
      } else {
        message = Message.get("tempbanip.ip.disallowed");
        message.set("expires", DateUtils.getDifferenceFormat(data.getExpires()));
      }

      message.set("ip", event.getAddress().toString());
      message.set("reason", data.getReason());
      message.set("actor", data.getActor().getName());

      event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_BANNED);
      event.setKickMessage(message.toString());
      handleJoinDeny(event.getAddress().toString(), data.getReason());
      return;
    }

    PlayerBanData data = plugin.getPlayerBanStorage().getBan(event.getUniqueId());

    if (data != null && data.hasExpired()) {
      try {
        plugin.getPlayerBanStorage().unban(data, plugin.getPlayerStorage().getConsole());
      } catch (SQLException e) {
        PluginLogger.warn(e);
      }

      return;
    }

    if (data == null) {
      return;
    }

    Message message;

    if (data.getExpires() == 0) {
      message = Message.get("ban.player.disallowed");
    } else {
      message = Message.get("tempban.player.disallowed");
      message.set("expires", DateUtils.getDifferenceFormat(data.getExpires()));
    }

    message.set("player", data.getPlayer().getName());
    message.set("reason", data.getReason());
    message.set("actor", data.getActor().getName());

    event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_BANNED);
    event.setKickMessage(message.toString());
    handleJoinDeny(data.getPlayer(), data.getReason());
  }