示例#1
0
  @SuppressWarnings("deprecation")
  public void joinGame(Player player, String name) {

    int rank = 1;

    try {
      rank =
          HyperPVP.getStorage()
              .readInt32("SELECT rank FROM users WHERE username = '******'");
    } catch (SQLException e) {
      e.printStackTrace();
    }

    if (this.type == GameType.FFA) {

      List<Session> first = this.getTeamMembers(this.teams.get(0).getColor());

      if (first.size() >= this.maxPlayers && rank == 1) {

        System.out.println(this.maxPlayers);
        player.sendMessage(
            ChatColor.RED
                + "Teams full - "
                + ChatColor.GOLD
                + "hyperpvp.us/shop"
                + ChatColor.GREEN
                + " to join full teams or view other servers at "
                + ChatColor.GREEN
                + "hyperpvp.us/servers");
        return;
      }

    } else {

      List<Session> first = this.getTeamMembers(this.teams.get(0).getColor());
      List<Session> second = this.getTeamMembers(this.teams.get(1).getColor());

      if ((first.size() + second.size()) >= this.maxPlayers && rank == 1) {

        System.out.println(this.maxPlayers);
        player.sendMessage(
            ChatColor.RED
                + "Teams full - "
                + ChatColor.GOLD
                + "hyperpvp.us/shop"
                + ChatColor.GREEN
                + " to join full teams or view other servers at "
                + ChatColor.GREEN
                + "hyperpvp.us/servers");
        return;
      }
    }

    for (PotionEffect effect : player.getActivePotionEffects()) {
      player.removePotionEffect(effect.getType());
    }

    if (HyperPVP.hasMatchBeenAnnounced()) {
      player.setGameMode(GameMode.SURVIVAL);
    } else {
      player.setGameMode(GameMode.CREATIVE);
    }

    player.getInventory().clear();
    player.updateInventory();

    Session session = new Session(player);

    HyperPVP.getSpectators().remove(player.getName());
    CycleUtil.addGameSession(player, session);

    if (this.type == GameType.FFA) {
      session.setTeam(this.teams.get(0));
    } else {

      if (name != null) {

        TeamMap team = this.getTeamByName(name);
        session.setTeam(team);

      } else {

        List<Session> first = this.getTeamMembers(this.teams.get(0).getColor());
        List<Session> second = this.getTeamMembers(this.teams.get(1).getColor());

        if (first.size() == second.size()) {
          session.setTeam(this.teams.get(0));
        } else {

          if (first.size() > second.size()) {
            session.setTeam(this.teams.get(1));

          } else session.setTeam(this.teams.get(0));
        }
      }
    }

    /*if (HyperPVP.hasMatchBeenAnnounced()) {
    	player.sendMessage(this.matchInfoToString(player));
    }*/

    player.sendMessage(
        ChatColor.GRAY
            + "You joined the "
            + session.getTeam().getColor()
            + HyperPVP.capitalize(
                session
                    .getTeam()
                    .getColor()
                    .name()
                    .toLowerCase()
                    .replace("_", " ")
                    .replace("dark ", ""))
            + " Team");

    HyperPVP.setListName(session.getTeam().getColor(), player);

    TagAPI.refreshPlayer(player);

    player.setFallDistance(0F);

    if (HyperPVP.hasMatchBeenAnnounced()) {

      CycleUtil.hidePlayerWhereAppropriate(player, true);
      player.teleport(this.getRandomSpawn(player));
    }

    if (!HyperPVP.hasMatchBeenAnnounced()) {
      player.getInventory().clear();
      player.getInventory().addItem(new ItemStack(Material.COMPASS, 1));
      player.updateInventory();
      player.closeInventory();
    }

    try {
      HyperPVP.getStorage()
          .executeQuery(
              "UPDATE servers SET team_one = '"
                  + this.getTeamMembers(this.teams.get(0).getColor()).size()
                  + "' WHERE bungee_name = '"
                  + HyperPVP.getConfiguration().getConfig().getString("Server").toLowerCase()
                  + "'");

      if (this.type != GameType.FFA) {
        HyperPVP.getStorage()
            .executeQuery(
                "UPDATE servers SET team_two = '"
                    + this.getTeamMembers(this.teams.get(1).getColor()).size()
                    + "' WHERE bungee_name = '"
                    + HyperPVP.getConfiguration().getConfig().getString("Server").toLowerCase()
                    + "'");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }

    System.out.println(session.toValue());
  }