Exemple #1
0
  public void run(CommandSender sender, String[] args) {
    if (args.length < 3) {
      Util.invalidArgCount(
          sender,
          "Jail",
          "Send a player to a place where they cannot speak, place blocks, etc.",
          "/jail [player] [timestamp] [jail]",
          "/jail [player] [timestamp] [jail] <reason>",
          "/jail unjail [player]");
      return;
    }

    if (args[0].equalsIgnoreCase("unjail")) {
      if (args.length == 1) {
        Util.invalidArgCount(sender, "Jail", "Unjail a jailed player.", "/jail unjail [player]");
        return;
      }

      Player target = Bukkit.getPlayer(args[1]);
      if (target == null) {
        Util.offline(sender, "Jail", args[1]);
        return;
      }
      pd = new PlayerData(target.getUniqueId());

      if (!(Store.muted.contains(target.getName()))) {
        sender.sendMessage(
            "§cJail: §4The chosen player §o(" + target.getName() + ") §4is not jailed!");
        return;
      } else if (Store.muted.contains(target.getName())) {
        Store.muted.remove(target.getName());
        Bukkit.broadcastMessage(
            prefix + "§ePlayer §c" + sender.getName() + "§e unjailed §c" + target.getDisplayName());
      }

      target.teleport(pd.getLocation());
      return;
    }

    args[1] = args[1].toLowerCase();

    final Player target = Bukkit.getPlayer(args[0]);
    if (target == null) {
      Util.offline(sender, "Jail", args[0]);
      return;
    }

    if (target.isOp()) {
      Util.punishOps(sender, "Jail");
      return;
    }

    if (Store.jailed.contains(target.getName())) {
      sender.sendMessage(
          "§cJail: §4The selected player §o(" + target.getName() + ") §cis already jailed!");
      return;
    }

    String regex = "(?:(?<h>\\d+)h)?(?:(?<m>\\d+)m)?(?:(?<s>\\d+)s)?(?:(?<d>\\d+)d)?";

    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(args[1].toString());

    String timeValue = args[1].replaceFirst(".*?(\\d+).*", "$1");

    if (m.matches()) {
      if (m.group(1) != null) {
        long time = Integer.parseInt(timeValue) * 72000;
        Bukkit.getScheduler()
            .scheduleSyncDelayedTask(
                pl,
                new Runnable() {

                  @Override
                  public void run() {
                    Store.jailed.remove(target.getName());
                    target.teleport(pd.getLocation());
                    target.sendMessage("§cJail: §4You've been unjailed with a warning.");
                  }
                },
                time);
      } else if (m.group(2) != null) {
        long time = Integer.parseInt(timeValue) * 1200;
        Bukkit.getScheduler()
            .scheduleSyncDelayedTask(
                pl,
                new Runnable() {

                  @Override
                  public void run() {
                    Store.jailed.remove(target.getName());
                    target.teleport(pd.getLocation());
                    target.sendMessage("§cJail: §4You've been unjailed with a warning.");
                  }
                },
                time);
      } else if (m.group(3) != null) {
        long time = Integer.parseInt(timeValue) * 20;
        Bukkit.getScheduler()
            .scheduleSyncDelayedTask(
                pl,
                new Runnable() {

                  @Override
                  public void run() {
                    Store.jailed.remove(target.getName());
                    target.teleport(pd.getLocation());
                    target.sendMessage("§cJail: §4You've been unjailed with a warning.");
                  }
                },
                time);
      } else if (m.group(4) != null) {
        long time = Integer.parseInt(timeValue) * 1728000;
        Bukkit.getScheduler()
            .scheduleSyncDelayedTask(
                pl,
                new Runnable() {

                  @Override
                  public void run() {
                    Store.jailed.remove(target.getName());
                    target.teleport(pd.getLocation());
                    target.sendMessage("§cJail: §4You've been unjailed with a warning.");
                  }
                },
                time);
      }
    } else {
      Util.invalidTimestamp(sender, "Jail", args[1]);
      return;
    }

    if (j.getConfig().getConfigurationSection(args[2]) == null) {
      sender.sendMessage("§cJail: §4The jail §o(" + args[2] + ") §4does not exist!");
      if (j.getConfig().getStringList("existing").size() == 0) {
        sender.sendMessage("§4There are no existing jails, please create one!");
      } else {
        sender.sendMessage("§4Existing jails:");
        for (int i = 0; i < j.getConfig().getStringList("existing").size(); i++) {
          sender.sendMessage("§c- " + j.getConfig().getStringList("existing").get(i));
        }
      }
      return;
    }

    Location loc = j.getLocation(args[2]);
    target.teleport(loc);

    SimpleDateFormat sdf = new SimpleDateFormat("(z) dd/MM/yy hh:mm:ss a");
    Date date = new Date();

    if (args.length == 3) {
      pd = new PlayerData(target.getUniqueId());
      pd.addHistory(Types.JAIL, "Misconduct", sender.getName(), sdf.format(date), args[1]);

      Bukkit.broadcastMessage(
          prefix
              + "§ePlayer §c"
              + sender.getName()
              + " §ejailed §c"
              + pd.getDisplayName()
              + " §efor "
              + args[1]
              + "!");
    } else {
      String msg = "";
      for (int i = 3; i < args.length; i++) {
        msg = msg + args[i] + " ";
      }

      pd = new PlayerData(target.getUniqueId());
      pd.addHistory(Types.JAIL, msg.trim(), sender.getName(), sdf.format(date), args[1]);

      Bukkit.broadcastMessage(
          prefix
              + "§ePlayer §c"
              + sender.getName()
              + " §ejailed §c"
              + pd.getDisplayName()
              + " §efor "
              + args[1]
              + " because "
              + msg.trim()
              + "!");
    }

    Store.jailed.add(target.getName());

    Util.sendActionBar(target, prefix + "§eJail expires in " + args[1] + "!");
  }