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; }
/* * * ################################################ * * 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); }
@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; }