@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);
 }
 @EventHandler(priority = EventPriority.HIGHEST)
 public void vipLogin(PlayerLoginEvent e) {
   if (e.getResult() != Result.KICK_FULL) return;
   if (!PConfManager.getPConfExists(e.getPlayer())) return;
   if (e.getPlayer().isBanned()) return;
   if (PConfManager.getPVal(e.getPlayer(), "vip") != null
       && PConfManager.getPValBoolean(e.getPlayer(), "vip")) e.allow();
 }
 @EventHandler
 public void displayNames(PlayerLoginEvent e) {
   if (e.getResult() != Result.ALLOWED) return;
   Player p = e.getPlayer();
   if (p == null) return;
   String dispname = PConfManager.getPValString(p, "dispname");
   if (dispname == null || dispname.equals("")) dispname = p.getName().trim();
   dispname = dispname.trim();
   if (dispname == null) return;
   p.setDisplayName(dispname);
   if (dispname.length() <= 16) p.setPlayerListName(dispname);
 }