public void startGame() {
    state = State.IN_GAME;

    for (Tribute t : ServerGames.tributes) {
      t.player.setHealth(20);
      t.player.setFoodLevel(20);
      clearItems(t.player);
      if (!t.player.isOnline()) {
        ServerGames.tributes.remove(t);
      }
    }

    loaded.clear();
    Chests.resetChests();

    bets.clear();

    clearAll();
    load();

    for (Player p : getCorn().getWorld().getPlayers()) {
      p.setCompassTarget(getCorn());
    }

    server.broadcastMessage(GOLD + "[ServerGames]" + GREEN + " Let the game begin!");

    game = new Game(this);

    startTimer();
  }
Beispiel #2
0
 public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
   Gamer gamer = pm.getGamer(sender.getName());
   if (!gamer.isAlive()) {
     pm.sendToSpawn(gamer);
     return true;
   } else {
     ((Player) sender).setCompassTarget(HungergamesApi.getHungergames().world.getSpawnLocation());
     gamer.getPlayer().sendMessage(cm.getCommandSpawnPointingToSpawn());
   }
   return true;
 }
Beispiel #3
0
  public void restore(Player player) {
    if (player.getName().equals(name)) {
      player.getInventory().clear();

      player.teleport(originLoc);
      player.setCompassTarget(compassTarget);

      player.setHealth(health);
      player.setFoodLevel(food);
      player.setSaturation(saturation);

      player.getInventory().setContents(inv);
      player.getInventory().setArmorContents(armor);

      player.setTotalExperience(exp);
    }
  }
  /**
   * @param sender
   * @param cmd
   * @param commandLabel
   * @param args
   * @return
   */
  @Override
  public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    if (cmd.getName().equalsIgnoreCase("vote")) {
      sender.sendMessage(plugin.strings.get("voteinfo"));
      for (String s : plugin.voteSites.split("~")) {
        sender.sendMessage(ChatColor.GREEN + s);
        return true;
      }
    } else if (cmd.getName().equalsIgnoreCase("money")) {
      if (args.length == 0) {
        sender.sendMessage(
            ChatColor.GREEN
                + sender.getName()
                + "'s balance is "
                + plugin.db.getMoney(sender.getName())
                + "");
        return true;
      } else {
        sender.sendMessage(
            ChatColor.GREEN + args[0] + "'s balance is " + plugin.db.getMoney(args[0]));
        return true;
      }
    } else if (cmd.getName().equalsIgnoreCase("who")
        || cmd.getName().equalsIgnoreCase("online")
        || cmd.getName().equalsIgnoreCase("players")) {
      String outputAlive = "";
      int alive = 0;
      String outputSpec = "";
      int spec = 0;
      for (Player p : plugin.getServer().getOnlinePlayers()) {
        if (plugin.serverwide.getArcherByPlayer(p).getPlaying()) {
          outputAlive += p.getDisplayName() + ", ";
          alive++;
        } else {
          spec++;
          outputSpec += p.getDisplayName() + ", ";
        }
      }
      sender.sendMessage(
          ChatColor.GRAY + "" + alive + ChatColor.DARK_GRAY + " Archers are currently playing: ");
      sender.sendMessage(outputAlive);
      sender.sendMessage(
          ChatColor.GRAY
              + ""
              + spec
              + ChatColor.DARK_GRAY
              + " Spectators are currently watching: ");
      sender.sendMessage(outputSpec);
      return true;
    } else if (cmd.getName().equalsIgnoreCase("kit") || cmd.getName().equalsIgnoreCase("kits")) {
      if (args.length != 0) {
        if (ScheduledTasks.gameStatus != 1) {
          sender.sendMessage(plugin.strings.get("alreadystartedkits"));
        } else {
          Kit selectedKit = new Kit();
          Boolean isOkay = false;
          for (Kit kit : plugin.kits) {
            if (args[0].equalsIgnoreCase(kit.getName())) {
              isOkay = true;
              selectedKit = kit;
            }
          }
          if (isOkay) {
            if (plugin.serverwide.getArcherByName(sender.getName()).getPlaying()) {
              sender.sendMessage(
                  String.format(
                      plugin.strings.get("alreadyselected"),
                      plugin.serverwide.getArcherByName(sender.getName()).getKit().getName()));
            }
            if (sender.hasPermission(selectedKit.getPermission())) {
              plugin.serverwide.joinGame(sender.getName(), selectedKit);
              sender.sendMessage(
                  String.format(plugin.strings.get("kitgiven"), selectedKit.getName()));
            } else {
              sender.sendMessage(ChatColor.RED + "You do not have permission to use this kit.");
            }
          } else {
            sender.sendMessage(ChatColor.RED + "That is not a valid kit.");
          }
        }
      } else {
        sender.sendMessage(ChatColor.AQUA + "Use /kit (kitname) to select a kit.");
        sender.sendMessage(ChatColor.DARK_GREEN + plugin.strings.get("kitinfo"));
        String kits = "";
        String kitsNo = "";
        for (Kit kit : plugin.kits) {
          if (sender.hasPermission(kit.getPermission())) {
            kits += kit.getName() + ", ";
          } else {
            kitsNo += kit.getName() + ", ";
          }
        }
        sender.sendMessage(ChatColor.GREEN + kits);
        sender.sendMessage(ChatColor.DARK_RED + plugin.strings.get("kitnoaccessible"));
        sender.sendMessage(ChatColor.RED + kitsNo);
      }
      return true;
    } else if (cmd.getName().equalsIgnoreCase("chunk")) {
      if (sender instanceof Player) {
        Player player = (Player) sender;
        player.getWorld().unloadChunk(player.getLocation().getChunk());
        player.getWorld().loadChunk(player.getLocation().getChunk());
        player.teleport(player.getLocation());
        player.sendMessage(ChatColor.GREEN + "Chunk Reloaded.");
        return true;
      } else {
        return false;
      }
    } else if (cmd.getName().equalsIgnoreCase("pay")) {
      if (args.length != 0) {
        if (args.length != 1) {
          try {
            if (Double.parseDouble(args[1]) > 0) {
              if (plugin.db.hasMoney(sender.getName(), Double.parseDouble(args[1]))) {
                plugin.db.takeMoney(sender.getName(), Double.parseDouble(args[1]));
                plugin.db.addMoney(args[0], Double.parseDouble(args[1]));
              } else {
                sender.sendMessage("You cannot afford to send this amount of money!");
              }

              sender.sendMessage(ChatColor.GREEN + "$" + args[0] + " paid to " + args[0]);
            }
          } catch (Exception e) {
            return false;
          }
        } else {
          return false;
        }
      } else {
        return false;
      }
    } else if (cmd.getName().equalsIgnoreCase("time")) {
      if (!(ScheduledTasks.gameStatus >= 2)) {
        sender.sendMessage(
            ChatColor.GREEN
                + ((String.format(
                    plugin.strings.get("starttimeleft"),
                    ((plugin.scheduler.preGameCountdown - plugin.scheduler.currentLoop) / 60
                        + " minute"
                        + (((plugin.scheduler.preGameCountdown - plugin.scheduler.currentLoop) / 60)
                                == 1
                            ? ""
                            : "s")
                        + ", "
                        + ((plugin.scheduler.preGameCountdown - plugin.scheduler.currentLoop) % 60)
                        + " second"
                        + ((plugin.scheduler.preGameCountdown - plugin.scheduler.currentLoop != 1)
                            ? "s"
                            : ""))))));
      } else if (!(ScheduledTasks.gameStatus >= 3)) {
        sender.sendMessage(
            ChatColor.GREEN
                + ((String.format(
                    plugin.strings.get("invincibilityend"),
                    ((plugin.scheduler.gameInvincibleCountdown - plugin.scheduler.currentLoop) / 60
                        + " minute"
                        + (((plugin.scheduler.gameInvincibleCountdown
                                        - plugin.scheduler.currentLoop)
                                    / 60)
                                == 1
                            ? ""
                            : "s")
                        + ", "
                        + ((plugin.scheduler.gameInvincibleCountdown - plugin.scheduler.currentLoop)
                            % 60)
                        + " second"
                        + ((plugin.scheduler.gameInvincibleCountdown - plugin.scheduler.currentLoop
                                != 1)
                            ? "s"
                            : ""))))));
      } else if (!(ScheduledTasks.gameStatus >= 4)) {
        sender.sendMessage(
            ChatColor.GREEN
                + ((plugin.scheduler.gameOvertimeCountdown - plugin.scheduler.currentLoop) % 60 == 0
                    ? (plugin.scheduler.gameOvertimeCountdown - plugin.scheduler.currentLoop) / 60
                        + " minutes until overtime starts"
                    : (plugin.scheduler.gameOvertimeCountdown - plugin.scheduler.currentLoop) / 60
                        + " minutes and "
                        + (plugin.scheduler.gameOvertimeCountdown - plugin.scheduler.currentLoop)
                            % 60
                        + " seconds until overtime starts."));
      } else {
        sender.sendMessage(ChatColor.RED + "Nothing to time!");
      }
      return true;
    } else if (cmd.getName().equalsIgnoreCase("timer")) {
      if (args.length != 0) {
        if (sender.hasPermission("ArcherGames.admin")) {
          try {
            plugin.scheduler.preGameCountdown = Integer.parseInt(args[0]);
            plugin.scheduler.currentLoop = 0;
            sender.sendMessage(
                ChatColor.GREEN + "Time left to start set to " + args[0] + " seconds left.");
            return true;
          } catch (Exception e) {
            sender.sendMessage(ChatColor.RED + "Time could not be set.");
            return true;
          }
        }
      }
    } else if (plugin.debug && cmd.getName().equalsIgnoreCase("ArcherGames")) {

      if (args[0].equalsIgnoreCase("startGame")) {
        ScheduledTasks.gameStatus = 2;
        sender.sendMessage(ChatColor.GREEN + "Game started.");
        plugin.log.info("[ArcherGames/Debug]: Game force-started by " + sender.getName());
        return true;
      }

    } else if (cmd.getName().equalsIgnoreCase("lockdown")) {
      if (sender.hasPermission("archergames.admin")) {
        plugin
            .getConfig()
            .set(
                "ArcherGames.toggles.lockdownMode",
                !plugin.configToggles.get("ArcherGames.toggles.lockdownMode"));
        plugin.saveConfig();
        sender.sendMessage(ChatColor.GREEN + "LockDown mode toggled.");
        return true;
      } else {
        return false;
      }
    } else if (cmd.getName().equalsIgnoreCase("credtop")) {
      sender.sendMessage(
          ChatColor.GREEN + "Here are the top credit amounts on ArcherGames currently:");
      HashMap<String, Integer> credits = plugin.db.getTopPoints();
      int i = 1;
      for (String playerName : credits.keySet()) {
        sender.sendMessage(
            ChatColor.GREEN + "" + i + ": " + playerName + " | " + credits.get(playerName));
        i++;
      }
      return true;
    } else if (cmd.getName().equalsIgnoreCase("baltop")) {
      sender.sendMessage(
          ChatColor.GREEN + "Here are the top balance amounts on ArcherGames currently:");
      HashMap<String, Integer> balances = plugin.db.getTopPoints();
      int i = 1;
      for (String playerName : balances.keySet()) {
        sender.sendMessage(
            ChatColor.GREEN + "" + i + ": " + playerName + " | " + balances.get(playerName));
        i++;
      }
      return true;
    } else if (cmd.getName().equalsIgnoreCase("wintop")) {
      sender.sendMessage(
          ChatColor.GREEN + "Here are the top amounts of won games on ArcherGames currently:");
      HashMap<String, Integer> wins = plugin.db.getTopWinners();
      int i = 1;
      for (String playerName : wins.keySet()) {
        sender.sendMessage(
            ChatColor.GREEN + "" + i + ": " + playerName + " | " + wins.get(playerName));
        i++;
      }
      return true;
    } else if (cmd.getName().equalsIgnoreCase("stats")) {
      String lookup = args.length == 0 ? sender.getName() : args[0];

      sender.sendMessage(ChatColor.GREEN + lookup + "'s Statistics:");
      sender.sendMessage(ChatColor.GREEN + "Wins: " + plugin.db.getWins(lookup));
      sender.sendMessage(ChatColor.GREEN + "Games played: " + plugin.db.getPlays(lookup));
      sender.sendMessage(ChatColor.GREEN + "Credits: " + plugin.db.getPoints(lookup));
      sender.sendMessage(ChatColor.GREEN + "Deaths: " + plugin.db.getDeaths(lookup));
      sender.sendMessage(ChatColor.GREEN + "Time Played: " + plugin.db.getPlayTime(lookup));
      return true;
    } else if (cmd.getName().equalsIgnoreCase("credits")) {
      String lookup = args.length == 0 ? sender.getName() : args[0];
      sender.sendMessage(
          ChatColor.GREEN + "" + lookup + " has " + plugin.db.getPoints(lookup) + " credits.");

      return true;
    } else if (cmd.getName().equalsIgnoreCase("track")) {
      if (sender.hasPermission("ArcherGames.donor.track")) {
        if (sender instanceof Player) {
          if (args.length != 0) {
            Player player = (Player) sender;
            if (!player.getInventory().contains(Material.COMPASS)) {
              player.getInventory().addItem(new ItemStack(Material.COMPASS));
            }
            for (Player p : plugin.getServer().getOnlinePlayers()) {
              if (p.getName().contains(args[0])) {
                player.setCompassTarget(plugin.getServer().getPlayer(args[0]).getLocation());
                player.sendMessage(ChatColor.GREEN + "Compass set to point to " + args[0]);
                break;
              }
            }
          } else {
            sender.sendMessage(
                ChatColor.RED + "You need to sepcify a player to point your compass at!");
            return true;
          }
        } else {
          sender.sendMessage(ChatColor.RED + "You must be a player to execute that command!");
          return true;
        }
      } else {
        sender.sendMessage(ChatColor.RED + "You do not have permission to use this command!");
        return true;
      }
    } else if (cmd.getName().equalsIgnoreCase("ride")) {
      if (sender instanceof Player) {
        if (!plugin.serverwide.ridingPlayers.contains(sender.getName())) {
          plugin.serverwide.ridingPlayers.add(sender.getName());
          sender.sendMessage(ChatColor.GREEN + "You are now able to right click and ride players.");
        } else {
          plugin.serverwide.ridingPlayers.remove(sender.getName());
          sender.sendMessage(
              ChatColor.GREEN + "You are no longer able to right click and ride players.");
        }
      } else {
        sender.sendMessage(ChatColor.RED + "You must be a player to execute that command.");
        return true;
      }
    } else if (cmd.getName().equalsIgnoreCase("help")) {
      if (sender instanceof Player) {
        Player player = (Player) sender;
        if (!player.getInventory().contains(Material.WRITTEN_BOOK)) {
          BookItem bi = new BookItem(new ItemStack(387, 1));
          bi.setAuthor(plugin.getConfig().getString("ArcherGames.startbook.author"));
          bi.setTitle(plugin.getConfig().getString("ArcherGames.startbook.Title"));
          String[] pages =
              plugin
                  .getConfig()
                  .getStringList("ArcherGames.startbook.pages")
                  .toArray(new String[11]);
          bi.setPages(pages);
          player.getInventory().addItem(bi.getItemStack());
          return true;
        } else {
          sender.sendMessage(ChatColor.RED + "You already have a help book! Check your inventory!");
          return true;
        }
      } else {
        sender.sendMessage(ChatColor.RED + "You must be a player to execute that command!");
        return true;
      }
    } else if (cmd.getName().equalsIgnoreCase("commands")) {
      sendHelp(sender, "kit [kitname]", "Pick or list the kits, depending on arguements.");
      sendHelp(sender, "vote", "List the sites you can vote for the server on.");
      sendHelp(sender, "money [player]", "Show either your or another player's money balance.");
      sendHelp(sender, "stats [player]", "Show either your or another player's stats.");
      sendHelp(sender, "chunk", "Reload your current chunk to fix a loading issue");
      sendHelp(
          sender, "pay (player) (amt)", "Send the specified player the specified amount of money");
      sendHelp(
          sender,
          "time",
          "Show the amount of time before the next event happens (Game start, Overtime, etc.)");
      sendHelp(sender, "timer (time)", "Set the amount of time left to the start of the game.");
      sendHelp(sender, "who/online/players", "See the players online and who is alive.");
      sendHelp(sender, "credtop", "Show the top players for credits earned.");
      sendHelp(sender, "baltop", "Show the top players for money earned.");
      sendHelp(sender, "wintop", "Show the top players for games won.");
      sendHelp(sender, "stats [player]", "Show the specified player, or your, stats.");
      sendHelp(sender, "track (player)", "Use a compass to point at onother player. (Donor only)");
      sendHelp(sender, "ride", "Toggle the ability to right click players and 'ride' them");
      sendHelp(sender, "help", "Give yourself a help book.");
      sendHelp(sender, "commands", "Show this help page.");
      sendHelp(sender, "goto (player)", "Teleport to another player while spectating.");
      return true;
    } else if (cmd.getName().equalsIgnoreCase("goto")) {
      if (args.length != 0) {
        Player p = null;
        for (Player player : plugin.getServer().getOnlinePlayers()) {
          if (player.getName().contains(args[0])) {
            p = player;
          }
        }
        if (p != null) {
          if (sender instanceof Player) {
            if (!plugin.serverwide.getArcherByName(sender.getName()).getPlaying()) {
              ((Player) sender).teleport(p);
              sender.sendMessage(ChatColor.GREEN + "You have been teleported to " + p.getName());
              return true;
            } else {
              sender.sendMessage("You must be dead to use that command!");
              return true;
            }
          } else {
            sender.sendMessage(ChatColor.RED + "You must be a player to execute that command!");
            return true;
          }
        } else {
          sender.sendMessage(ChatColor.RED + "That is not a valid player!");
          return true;
        }
      }
    }

    return false;
  }
Beispiel #5
0
 @Override
 public void setCompassTarget(Location loc) {
   caller.setCompassTarget(loc);
 }
  private boolean orientPlayer(Player player, String[] args, Iterator<Location> it) {
    final int bone;
    try {
      bone = Integer.parseInt(args[0], 10);
    } catch (NumberFormatException e) {
      return false;
    }

    if (bone == 0) {
      player.sendMessage("There is no bone 0.");
      return true;
    }

    int i = 0;
    Location loc = null;
    while (i < bone) {
      if (it.hasNext()) {
        loc = it.next();
        ++i;
      } else {
        player.sendMessage("I only know about " + i + " bone" + (i == 1 ? "" : "s") + " for you");
        return true;
      }
    }

    loc = loc.clone();

    final List<String> argsList = Arrays.asList(args);
    final boolean tracking;

    if (argsList.indexOf("compass") != -1) {
      if (plugin.checkPermission(player, "com.mouthpunch.bones.track")) {
        player.setCompassTarget(loc);
        player.sendMessage("Your compass will lead the way to your" + " bones.");
        tracking = true;
      } else {
        player.sendMessage("You don't have permission to track bones.");
        tracking = true;
      }
    } else {
      tracking = false;
    }

    if (!plugin.checkPermission(player, "com.mouthpunch.bones.orient")) {
      if (!tracking) {
        player.sendMessage("You don't have permission to orient" + " yourself towards bones.");
      }
      return true;
    }

    final Vector n = loc.subtract(player.getEyeLocation()).toVector().normalize();

    float pitch = (float) Math.toDegrees(Math.asin(n.getY()));
    pitch = -pitch;

    float yaw = (float) Math.toDegrees(Math.atan2(n.getZ(), n.getX()));
    yaw -= 90f;

    final Location playerLoc = player.getLocation();
    playerLoc.setPitch(pitch);
    playerLoc.setYaw(yaw);

    player.teleport(playerLoc);

    return true;
  }