@Override public void onPluginMessageReceived(String channel, Player player, byte[] message) { SFPlayer sfp = SFPlayer.getSFPlayer(player); if (channel.equalsIgnoreCase("simplefeatures")) { JSONObject json = (JSONObject) JSONValue.parse(new String(message)); String id = ((String) json.get("id")); if (id.equalsIgnoreCase("login")) { double version = (Double) json.get("version"); String lang = (String) json.get("lang"); if (lang == null) { lang = "en_US"; } SFPlugin.clientAddons.put(player.getName(), version); SFPlugin.playerLangs.put(player.getName(), lang); SFPlugin.log( Level.INFO, player.getName() + " has the SFClientMod version " + version + ", using language " + lang); } else if (id.equalsIgnoreCase("sendmail")) { if (!player.hasPermission(new Permission("sfp.msg", PermissionDefault.TRUE))) { player.sendMessage(ChatColor.RED + sfp.translateString("general.nopermission")); return; } String pname = ((String) json.get("to")); OfflinePlayer target = SFPlugin.getOfflinePlayer(player, pname, plugin); if (target != null) { player.sendMessage( sfp.translateStringFormat("Mail sent to %s: %s", target.getName(), json.get("mail"))); SFMail save = new SFMail(); save.newMail(player.getName(), target.getName(), ((String) json.get("mail"))); plugin.getDatabase().save(save); Player p = plugin.getServer().getPlayer(target.getName()); if (p != null) { p.sendMessage( ChatColor.AQUA + SFPlayer.getSFPlayer(p).translateString("mail.newmailnotify")); } return; } } else if (id.equalsIgnoreCase("clearmailbox")) { List<SFMail> msgs; msgs = plugin .getDatabase() .find(SFMail.class) .where() .ieq("toPlayer", player.getName()) .findList(); if (msgs.isEmpty()) { player.sendMessage(ChatColor.RED + sfp.translateString("clear.nothingtoclear")); return; } else { int i = 0; for (SFMail msg : msgs) { plugin.getDatabase().delete(msg); i++; } player.sendMessage(ChatColor.YELLOW + sfp.translateStringFormat("clear.success", i)); return; } } else if (id.equalsIgnoreCase("deletemail")) { SFMail msg = plugin .getDatabase() .find(SFMail.class) .where() .ieq("toPlayer", player.getName()) .ieq("id", json.get("mailid").toString()) .findUnique(); if (msg == null) { player.sendMessage(ChatColor.RED + sfp.translateString("delete.nothingtodelete")); return; } else { player.sendMessage( ChatColor.YELLOW + sfp.translateStringFormat("delete.success", msg.getFromPlayer())); plugin.getDatabase().delete(msg); return; } } else { SFPlugin.log(Level.INFO, "Unknown SFPacket! Contents: " + new String(message)); } } }