Beispiel #1
0
 public void msgFall(PrefixType type, String msg, String... vars) {
   for (Player p : activePlayers) {
     msgmgr.sendFMessage(type, msg, p, vars);
   }
   for (String ps : spectators) {
     Player p = Bukkit.getServer().getPlayer(ps);
     if (p != null) {
       msgmgr.sendFMessage(type, msg, p, vars);
     }
   }
 }
  public void addKill(Player p, Player killed, int arenaid) {
    PlayerStatsSession s = arenas.get(arenaid).get(p);

    int kslevel = s.addKill(killed);
    if (kslevel > 3) {
      msgmgr.broadcastFMessage(
          PrefixType.INFO,
          "killstreak.level" + ((kslevel > 5) ? 5 : kslevel),
          "player-" + p.getName());
    } else if (kslevel > 0) {
      for (Player pl : GameManager.getInstance().getGame(arenaid).getAllPlayers()) {
        msgmgr.sendFMessage(
            PrefixType.INFO,
            "killstreak.level" + ((kslevel > 5) ? 5 : kslevel),
            pl,
            "player-" + p.getName());
      }
    }
  }
  @Override
  public boolean onCommand(CommandSender sender, Command cmd1, String commandLabel, String[] args) {
    PluginDescriptionFile pdfFile = plugin.getDescription();
    if (!(sender instanceof Player)) {
      msgmgr.logMessage(
          PrefixType.WARNING, "Only in-game players can use SurvivalGames commands! ");
      return true;
    }

    Player player = (Player) sender;

    if (SurvivalGames.config_todate == false) {
      msgmgr.sendMessage(
          PrefixType.WARNING,
          "The config file is out of date. Please tell an administrator to reset the config.",
          player);
      return true;
    }

    if (SurvivalGames.dbcon == false) {
      msgmgr.sendMessage(
          PrefixType.WARNING, "Could not connect to server. Plugin disabled.", player);
      return true;
    }

    if (cmd1.getName().equalsIgnoreCase("survivalgames")) {
      if (args == null || args.length < 1) {
        msgmgr.sendMessage(
            PrefixType.INFO, "Version " + pdfFile.getVersion() + " by Double0negative", player);
        msgmgr.sendMessage(
            PrefixType.INFO,
            "Type /sg help <player | staff | admin> for command information",
            player);
        return true;
      }
      if (args[0].equalsIgnoreCase("help")) {
        if (args.length == 1) {
          help(player, 1);
        } else {
          if (args[1].toLowerCase().startsWith("player")) {
            help(player, 1);
            return true;
          }
          if (args[1].toLowerCase().startsWith("staff")) {
            help(player, 2);
            return true;
          }
          if (args[1].toLowerCase().startsWith("admin")) {
            help(player, 3);
            return true;
          } else {
            msgmgr.sendMessage(
                PrefixType.WARNING,
                args[1] + " is not a valid page! Valid pages are Player, Staff, and Admin.",
                player);
          }
        }
        return true;
      }
      String sub = args[0];
      Vector<String> l = new Vector<String>();
      l.addAll(Arrays.asList(args));
      l.remove(0);
      args = (String[]) l.toArray(new String[0]);
      if (!commands.containsKey(sub)) {
        msgmgr.sendMessage(PrefixType.WARNING, "Command doesn't exist.", player);
        msgmgr.sendMessage(PrefixType.INFO, "Type /sg help for command information", player);
        return true;
      }
      try {
        commands.get(sub).onCommand(player, args);
      } catch (Exception e) {
        e.printStackTrace();
        msgmgr.sendFMessage(
            PrefixType.ERROR,
            "error.command",
            player,
            "command-[" + sub + "] " + Arrays.toString(args));
        msgmgr.sendMessage(PrefixType.INFO, "Type /sg help for command information", player);
      }
      return true;
    }
    return false;
  }
Beispiel #4
0
  /*
   *
   * ################################################
   *
   * 				START GAME
   *
   * ################################################
   *
   *
   */
  public void startGame() {
    if (mode == GameMode.INGAME) {
      return;
    }

    if (activePlayers.size() <= 0) {
      for (Player pl : activePlayers) {
        msgmgr.sendMessage(PrefixType.WARNING, "Not enough players!", pl);
        mode = GameMode.WAITING;
        LobbyManager.getInstance().updateWall(gameID);
      }
      return;
    } else {
      // Remove all entities in the world
      for (Entity entity : this.arena.getMax().getWorld().getEntities()) {
        if (entity instanceof Player) continue;
        entity.remove();
      }
      startTime = new Date().getTime();
      for (Player pl : activePlayers) {
        pl.setHealth(pl.getMaxHealth());
        msgmgr.sendFMessage(PrefixType.INFO, "game.goodluck", pl);
        scoreBoard.playerLiving(pl);
      }
      if (config.getBoolean("restock-chest")) {
        SettingsManager.getGameWorld(gameID).setTime(0);
        gcount++;
        tasks.add(
            Bukkit.getScheduler()
                .scheduleSyncDelayedTask(
                    GameManager.getInstance().getPlugin(), new NightChecker(), 14400));
      }
      if (config.getInt("grace-period") != 0) {
        for (Player play : activePlayers) {
          msgmgr.sendMessage(
              PrefixType.INFO,
              "You have a " + config.getInt("grace-period") + " second grace period!",
              play);
        }
        Bukkit.getServer()
            .getScheduler()
            .scheduleSyncDelayedTask(
                GameManager.getInstance().getPlugin(),
                new Runnable() {
                  public void run() {
                    for (Player play : activePlayers) {
                      msgmgr.sendMessage(PrefixType.INFO, "Grace period has ended!", play);
                    }
                  }
                },
                config.getInt("grace-period") * 20);
      }
      if (config.getBoolean("deathmatch.enabled")) {
        SurvivalGames.$("Launching deathmatch timer...");
        dmTaskID =
            Bukkit.getScheduler()
                .scheduleSyncRepeatingTask(
                    GameManager.getInstance().getPlugin(), new DeathMatchTimer(), 40L, 20L);
        tasks.add(dmTaskID);
      }
    }

    mode = GameMode.INGAME;
    LobbyManager.getInstance().updateWall(gameID);
    MessageManager.getInstance()
        .broadcastFMessage(PrefixType.INFO, "broadcast.gamestarted", "arena-" + gameID);
  }
Beispiel #5
0
  @SuppressWarnings("deprecation")
  public boolean addPlayer(final Player p) {
    if (SettingsManager.getInstance().getLobbySpawn() == null) {
      msgmgr.sendFMessage(PrefixType.WARNING, "error.nolobbyspawn", p);
      return false;
    }
    if (!p.hasPermission("sg.arena.join." + gameID)) {
      debug("permission needed to join arena: " + "sg.arena.join." + gameID);
      msgmgr.sendFMessage(PrefixType.WARNING, "game.nopermission", p, "arena-" + gameID);
      return false;
    }
    HookManager.getInstance()
        .runHook(
            "GAME_PRE_ADDPLAYER",
            "arena-" + gameID,
            "player-" + p.getName(),
            "maxplayers-" + spawns.size(),
            "players-" + activePlayers.size());

    GameManager.getInstance().removeFromOtherQueues(p, gameID);

    if (GameManager.getInstance().getPlayerGameId(p) != -1) {
      if (GameManager.getInstance().isPlayerActive(p)) {
        msgmgr.sendMessage(PrefixType.ERROR, "Cannot join multiple games!", p);
        return false;
      }
    }
    if (p.isInsideVehicle()) {
      p.leaveVehicle();
    }
    if (spectators.contains(p)) removeSpectator(p);
    if (mode == GameMode.WAITING || mode == GameMode.STARTING) {
      if (activePlayers.size() < SettingsManager.getInstance().getSpawnCount(gameID)) {
        msgmgr.sendMessage(PrefixType.INFO, "Joining Arena '" + name + "'", p);
        PlayerJoinArenaEvent joinarena =
            new PlayerJoinArenaEvent(p, GameManager.getInstance().getGame(gameID));
        Bukkit.getServer().getPluginManager().callEvent(joinarena);
        if (joinarena.isCancelled()) return false;
        boolean placed = false;
        int spawnCount = SettingsManager.getInstance().getSpawnCount(gameID);

        for (int a = 1; a <= spawnCount; a++) {
          if (spawns.get(a) == null) {
            placed = true;
            spawns.put(a, p);
            p.setGameMode(org.bukkit.GameMode.SURVIVAL);

            // p.teleport(SettingsManager.getInstance().getLobbySpawn());
            p.teleport(SettingsManager.getInstance().getSpawnPoint(gameID, a));

            p.setHealth(p.getMaxHealth());
            p.setFoodLevel(20);
            p.getInventory().clear();
            p.getEquipment().setArmorContents(null);
            p.updateInventory();

            p.setFlying(false);
            p.setAllowFlight(false);
            p.setWalkSpeed(0.2F);
            p.setFireTicks(0);

            activePlayers.add(p);
            sm.addPlayer(p, gameID);

            scoreBoard.addPlayer(p);

            hookvars.put("activeplayers", activePlayers.size() + "");
            LobbyManager.getInstance().updateWall(gameID);
            HookManager.getInstance()
                .runHook("GAME_POST_ADDPLAYER", "activePlayers-" + activePlayers.size());

            if (spawnCount == activePlayers.size()) {
              countdown(5);
            }

            Bukkit.getServer()
                .getScheduler()
                .scheduleSyncDelayedTask(
                    GameManager.getInstance().getPlugin(),
                    new Runnable() {
                      public void run() {
                        p.setFlying(false);
                        p.setAllowFlight(false);
                        p.setWalkSpeed(0.2F);
                        p.setFireTicks(0);

                        p.getInventory().clear();
                        p.getEquipment().setArmorContents(null);
                        p.updateInventory();
                        showMenu(p);

                        for (PotionEffect effect : p.getActivePotionEffects()) {
                          p.removePotionEffect(effect.getType());
                        }
                      }
                    },
                    1L);

            break;
          }
        }
        if (!placed) {
          msgmgr.sendFMessage(PrefixType.ERROR, "error.gamefull", p, "arena-" + gameID);
          return false;
        }

      } else if (SettingsManager.getInstance().getSpawnCount(gameID) == 0) {
        msgmgr.sendMessage(PrefixType.WARNING, "No spawns set for Arena " + gameID + "!", p);
        return false;
      } else {
        msgmgr.sendFMessage(PrefixType.WARNING, "error.gamefull", p, "arena-" + gameID);
        return false;
      }
      msgFall(
          PrefixType.INFO,
          "game.playerjoingame",
          "player-" + p.getName(),
          "activeplayers-" + getActivePlayers(),
          "maxplayers-" + SettingsManager.getInstance().getSpawnCount(gameID));
      if (activePlayers.size() >= config.getInt("auto-start-players") && !countdownRunning)
        countdown(config.getInt("auto-start-time"));
      return true;
    } else {
      if (config.getBoolean("enable-player-queue")) {
        if (!queue.contains(p)) {
          queue.add(p);
          msgmgr.sendFMessage(
              PrefixType.INFO, "game.playerjoinqueue", p, "queuesize-" + queue.size());
        }
        int a = 1;
        for (Player qp : queue) {
          if (qp == p) {
            msgmgr.sendFMessage(PrefixType.INFO, "game.playercheckqueue", p, "queuepos-" + a);
            break;
          }
          a++;
        }
      }
    }
    if (mode == GameMode.INGAME) msgmgr.sendFMessage(PrefixType.WARNING, "error.alreadyingame", p);
    else if (mode == GameMode.DISABLED)
      msgmgr.sendFMessage(PrefixType.WARNING, "error.gamedisabled", p, "arena-" + gameID);
    else if (mode == GameMode.RESETING)
      msgmgr.sendFMessage(PrefixType.WARNING, "error.gamereseting", p);
    else msgmgr.sendMessage(PrefixType.INFO, "Cannot join game!", p);
    LobbyManager.getInstance().updateWall(gameID);
    return false;
  }