@EventHandler(priority = EventPriority.HIGH)
 public void onPlayerLogin(PlayerLoginEvent event) {
   if (event.getResult() != Result.ALLOWED) return;
   // Define the player
   Player p = event.getPlayer();
   // Pretty sure this isn't even necessary, but I just can't figure out wtf is throwing the NPE
   if (p == null) return;
   // Check if player is banned
   if (!p.isBanned()) return;
   // Check to see that they have a bantime, and that if they do, if the timestamp is invalid.
   if (PConfManager.getPVal(p, "bantime") != null && !RUtils.isTimeStampValid(p, "bantime")) {
     // Set them unbanned
     p.setBanned(false);
     // Stop the method
     return;
   }
   // Get the banreason from the player's userdata file
   String kickMessage = PConfManager.getPValString(p, "banreason"); // Returns string or null
   // Check if there was none, and if there wasn't, set it to default ban message.
   if (kickMessage == null) kickMessage = plugin.banMessage;
   // Set the kick message to the ban reason
   event.setKickMessage(kickMessage);
   // Disallow the event
   event.disallow(Result.KICK_BANNED, kickMessage);
 }
Пример #2
0
  @Override
  public boolean onCommand(
      CommandSender sender, Command command, String commandLabel, String[] args) {
    ConsoleCommandSender consoleSender = sender.getServer().getConsoleSender();
    String prefix =
        (ChatColor.BOLD + (ChatColor.BLUE + "["))
            + (ChatColor.RESET + (ChatColor.YELLOW + "Kustom Warn"))
            + (ChatColor.BOLD + (ChatColor.BLUE + "]"))
            + ChatColor.RESET;
    String kickMessage = plugin.getConfig().getString("Kick Message");
    String banMessage = plugin.getConfig().getString("Ban Message");
    String reason = " ";
    for (int i = 1; i < args.length; i++) {
      reason += args[i] + " ";
    }
    if (commandLabel.equalsIgnoreCase("kwarn")) {
      if (!(sender instanceof Player)) {
        if (args.length == 0) {
          consoleSender.sendMessage(prefix + ChatColor.RED + "Not enough arguments!");
          consoleSender.sendMessage(prefix + ChatColor.RED + "Usage: /kwarn [player] (reason)");
          return true;
        } else if (args.length == 1) {
          Player targetPlayer = consoleSender.getServer().getPlayer(args[0]);
          if (targetPlayer != null) {
            List warnings =
                plugin
                    .getDatabase()
                    .find(Warnings.class)
                    .where()
                    .ieq("playerName", targetPlayer.getName())
                    .findList();
            if (plugin.getConfig().getBoolean("Alert Admins")) {
              Command.broadcastCommandMessage(
                  sender,
                  prefix
                      + ChatColor.AQUA
                      + targetPlayer.getName()
                      + " has been warned by a console user");
            }
            if ((warnings.size() + 1) >= plugin.getConfig().getInt("Kick After")) {
              targetPlayer.setPlayerListName(ChatColor.AQUA + targetPlayer.getName());
            } else if ((warnings.size() + 1) >= plugin.getConfig().getInt("Ban After"))
              if (warnings.size() != 0) {
                consoleSender.sendMessage(
                    prefix
                        + ChatColor.AQUA
                        + targetPlayer.getName()
                        + " has been warned "
                        + String.valueOf(warnings.size() + 1)
                        + " times");
              } else {
                consoleSender.sendMessage(
                    prefix
                        + ChatColor.AQUA
                        + "This is "
                        + targetPlayer.getName()
                        + "\'s first warning");
              }
            targetPlayer.sendMessage(
                prefix + ChatColor.RED + plugin.getConfig().getString("Warning Message"));
            Warnings warning =
                plugin
                    .getDatabase()
                    .find(Warnings.class)
                    .where()
                    .ieq("playerName", targetPlayer.getName())
                    .ieq("warningNumber", String.valueOf(warnings.size() + 1))
                    .findUnique();
            if (warnings.size() < plugin.getConfig().getInt("Ban After")) {
              warning = new Warnings();
              warning.setWarningNumber(String.valueOf(warnings.size() + 1));
              warning.setPlayerName(targetPlayer.getName());
              warning.setAdminName("console user");
            }
            plugin.getDatabase().save(warning);

            if ((warnings.size() + 1) == plugin.getConfig().getInt("Kick After")) {
              targetPlayer.kickPlayer(plugin.getConfig().getString("Kick Message"));
            } else if ((warnings.size() + 1) == plugin.getConfig().getInt("Ban After")) {
              targetPlayer.kickPlayer(plugin.getConfig().getString("Ban Message"));
              targetPlayer.setBanned(true);
            }
            return true;
          } else {
            consoleSender.sendMessage(prefix + ChatColor.RED + "Player not found!");
            return true;
          }
        } else if (args.length >= 2) {
          Player targetPlayer = consoleSender.getServer().getPlayer(args[0]);
          if (targetPlayer != null) {
            List warnings =
                plugin
                    .getDatabase()
                    .find(Warnings.class)
                    .where()
                    .ieq("playerName", targetPlayer.getName())
                    .findList();
            if (plugin.getConfig().getBoolean("Alert Admins")) {
              Command.broadcastCommandMessage(
                  sender,
                  prefix
                      + ChatColor.AQUA
                      + targetPlayer.getName()
                      + " has been warned by a console user for "
                      + reason);
            }
            if (warnings.size() != 0) {
              consoleSender.sendMessage(
                  prefix
                      + ChatColor.AQUA
                      + targetPlayer.getName()
                      + " has been warned "
                      + String.valueOf(warnings.size() + 1)
                      + " times");
            } else {
              consoleSender.sendMessage(
                  prefix
                      + ChatColor.AQUA
                      + "This is "
                      + targetPlayer.getName()
                      + "\'s first warning");
            }
            if (plugin.getConfig().getBoolean("Alert Admins")) {
              Command.broadcastCommandMessage(
                  sender,
                  prefix
                      + ChatColor.AQUA
                      + targetPlayer.getName()
                      + " has been warned by a console user");
            }
            if ((warnings.size() + 1) >= plugin.getConfig().getInt("Kick After")) {
              targetPlayer.setPlayerListName(ChatColor.AQUA + targetPlayer.getName());
            }
            targetPlayer.sendMessage(
                prefix
                    + ChatColor.RED
                    + plugin.getConfig().getString("Warning For")
                    + " "
                    + reason);
            Warnings warning =
                plugin
                    .getDatabase()
                    .find(Warnings.class)
                    .where()
                    .ieq("playerName", targetPlayer.getName())
                    .ieq("warningNumber", String.valueOf(warnings.size() + 1))
                    .findUnique();
            if (warnings.size() < plugin.getConfig().getInt("Ban After")) {
              warning = new Warnings();
              warning.setWarningNumber(String.valueOf(warnings.size() + 1));
              warning.setPlayerName(targetPlayer.getName());
              warning.setAdminName("console user");
              warning.setWarningReason(reason);
            }
            plugin.getDatabase().save(warning);

            if ((warnings.size() + 1) == plugin.getConfig().getInt("Kick After")) {
              targetPlayer.kickPlayer(plugin.getConfig().getString("Kick Message"));
            } else if ((warnings.size() + 1) == plugin.getConfig().getInt("Ban After")) {
              targetPlayer.kickPlayer(plugin.getConfig().getString("Ban Message"));
              targetPlayer.setBanned(true);
            }
            return true;
          }
        }
      } else {
        Player player = (Player) sender;
        if (player.hasPermission("kustomwarn.warn") || player.isOp()) {
          if (args.length == 0) {
            if (plugin == null) {
              player.sendMessage(prefix + "Plugin is null");
            }
            player.sendMessage(prefix + ChatColor.RED + "Not enough arguments!");
            player.sendMessage(prefix + ChatColor.RED + "Usage: /kwarn [player] (reason)");
            return true;
          } else if (args.length == 1) {
            Player targetPlayer = player.getServer().getPlayer(args[0]);
            if (targetPlayer != null) {
              List warnings =
                  plugin
                      .getDatabase()
                      .find(Warnings.class)
                      .where()
                      .ieq("playerName", targetPlayer.getName())
                      .findList();
              if (plugin.getConfig().getBoolean("Alert Admins")) {
                Command.broadcastCommandMessage(
                    sender,
                    prefix
                        + ChatColor.AQUA
                        + targetPlayer.getName()
                        + " has been warned by "
                        + player.getName());
              }
              if (warnings.size() != 0) {
                player.sendMessage(
                    prefix
                        + ChatColor.AQUA
                        + targetPlayer.getName()
                        + " has been warned "
                        + String.valueOf(warnings.size() + 1)
                        + " times");
              } else {
                player.sendMessage(
                    prefix
                        + ChatColor.AQUA
                        + "This is "
                        + targetPlayer.getName()
                        + "\'s first warning");
              }
              targetPlayer.sendMessage(
                  prefix + ChatColor.RED + plugin.getConfig().getString("Warning Message"));
              Warnings warning =
                  plugin
                      .getDatabase()
                      .find(Warnings.class)
                      .where()
                      .ieq("playerName", targetPlayer.getName())
                      .ieq("warningNumber", String.valueOf(warnings.size() + 1))
                      .findUnique();
              if (warnings.size() < plugin.getConfig().getInt("Ban After")) {
                warning = new Warnings();
                warning.setWarningNumber(String.valueOf(warnings.size() + 1));
                warning.setPlayerName(targetPlayer.getName());
                warning.setAdminName(player.getName());
              }
              plugin.getDatabase().save(warning);

              if ((warnings.size() + 1) == plugin.getConfig().getInt("Kick After")) {
                targetPlayer.kickPlayer(plugin.getConfig().getString("Kick Message"));
              } else if ((warnings.size() + 1) == plugin.getConfig().getInt("Ban After")) {
                targetPlayer.kickPlayer(plugin.getConfig().getString("Ban Message"));
                targetPlayer.setBanned(true);
              }
              if (plugin.getConfig().getBoolean("Alert Admins")) {
                Command.broadcastCommandMessage(
                    sender,
                    prefix
                        + ChatColor.AQUA
                        + targetPlayer.getName()
                        + " has been warned by a console user");
              }
              if ((warnings.size() + 1) >= plugin.getConfig().getInt("Kick After")) {
                targetPlayer.setPlayerListName(ChatColor.AQUA + targetPlayer.getName());
              }
              return true;
            } else {
              player.sendMessage(prefix + ChatColor.RED + "Player not found!");
              return true;
            }
          } else if (args.length >= 2) {
            Player targetPlayer = player.getServer().getPlayer(args[0]);
            if (targetPlayer != null) {
              List warnings =
                  plugin
                      .getDatabase()
                      .find(Warnings.class)
                      .where()
                      .ieq("playerName", targetPlayer.getName())
                      .findList();
              if (plugin.getConfig().getBoolean("Alert Admins")) {
                Command.broadcastCommandMessage(
                    sender,
                    prefix
                        + ChatColor.AQUA
                        + targetPlayer.getName()
                        + " has been warned by "
                        + player.getName()
                        + " for "
                        + reason);
              }
              if (warnings.size() != 0) {
                player.sendMessage(
                    prefix
                        + ChatColor.AQUA
                        + targetPlayer.getName()
                        + " has been warned "
                        + String.valueOf(warnings.size() + 1)
                        + " times");
              }
              if (setKicked(targetPlayer.getName())) {
                targetPlayer.kickPlayer(plugin);
              } else {
                player.sendMessage(
                    prefix
                        + ChatColor.AQUA
                        + "This is "
                        + targetPlayer.getName()
                        + "\'s first warning");
              }
              targetPlayer.sendMessage(
                  prefix
                      + ChatColor.RED
                      + plugin.getConfig().getString("Warning For")
                      + " "
                      + reason);
              Warnings warning =
                  plugin
                      .getDatabase()
                      .find(Warnings.class)
                      .where()
                      .ieq("playerName", targetPlayer.getName())
                      .ieq("warningNumber", String.valueOf(warnings.size() + 1))
                      .findUnique();
              if (warnings.size() < plugin.getConfig().getInt("Ban After")) {
                warning = new Warnings();
                warning.setWarningNumber(String.valueOf(warnings.size() + 1));
                warning.setPlayerName(targetPlayer.getName());
                warning.setAdminName(player.getName());
                warning.setWarningReason(reason);
              }
              plugin.getDatabase().save(warning);

              if (plugin.getConfig().getBoolean("Alert Admins")) {
                Command.broadcastCommandMessage(
                    sender,
                    prefix
                        + ChatColor.AQUA
                        + targetPlayer.getName()
                        + " has been warned by a console user");
              }
              return true;
            } else {
              player.sendMessage(prefix + ChatColor.RED + "Player not found");
              return true;
            }
          }
        }
      }
    }
    return true;
  }
Пример #3
0
 @Override
 public void setBanned(boolean ban) {
   caller.setBanned(ban);
 }