Advertisement
Guest User

GroupMail v1.0

a guest
Sep 4th, 2014
2,808
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.60 KB | None | 0 0
  1. package me.CGA1123;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.Set;
  6. import java.util.UUID;
  7. import java.util.logging.Logger;
  8.  
  9. import net.milkbowl.vault.permission.Permission;
  10.  
  11. import org.bukkit.Bukkit;
  12. import org.bukkit.ChatColor;
  13. import org.bukkit.OfflinePlayer;
  14. import org.bukkit.command.Command;
  15. import org.bukkit.command.CommandSender;
  16. import org.bukkit.entity.Player;
  17. import org.bukkit.event.EventHandler;
  18. import org.bukkit.event.Listener;
  19. import org.bukkit.event.player.PlayerJoinEvent;
  20. import org.bukkit.plugin.RegisteredServiceProvider;
  21. import org.bukkit.plugin.java.JavaPlugin;
  22.  
  23. public class GroupMail extends JavaPlugin implements Listener{
  24.    
  25.     private static final Logger log = Bukkit.getLogger();
  26.     public static Permission permission;
  27.     private boolean setupPermissions(){
  28.         RegisteredServiceProvider<Permission> permissionProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.permission.Permission.class);
  29.         if (permissionProvider != null) {
  30.             permission = permissionProvider.getProvider();
  31.         }
  32.         return (permission != null);
  33.     }
  34.    
  35.     public boolean isInt(String s){
  36.         try {
  37.               Integer.parseInt(s);
  38.               return true;
  39.         } catch (NumberFormatException e) {
  40.              return false;
  41.         }
  42.     }
  43.     public void checkMail(Player p){
  44.         //Check config if UUID is there.
  45.         UUID id = p.getUniqueId();
  46.         if(getConfig().getConfigurationSection("mails").getKeys(false).contains(id.toString())){
  47.             int number = (this.getConfig().getConfigurationSection("mails."+id).getKeys(false)).size();
  48.             p.sendMessage(prefix + "You have "+ ChatColor.GOLD + number+ChatColor.RESET + " unread message(s)");
  49.         }
  50.        
  51.     }
  52.    
  53.     public String arrayToString(String[] message){
  54.         StringBuilder builder = new StringBuilder();
  55.  
  56.         for (String string : message) {
  57.             if (builder.length() > 0) {
  58.                 builder.append(" ");
  59.             }
  60.             builder.append(string);
  61.         }
  62.  
  63.         return builder.toString();
  64.     }
  65.     public void displayMail(Player p){
  66.         UUID id = p.getUniqueId();
  67.         Set<String> allMails = this.getConfig().getConfigurationSection("mails."+id).getKeys(false);
  68.         int number = (allMails).size();
  69.         ArrayList<String> mails = new ArrayList<String>();
  70.         p.sendMessage("===============" + prefix + "===============");
  71.         p.sendMessage("You have "+  ChatColor.GOLD + number + ChatColor.RESET + " mail(s):");
  72.         int i = 1;
  73.         for(String s : allMails){
  74.             mails.add("["+ i +"] "+ this.getConfig().getString("mails."+id+"."+s));
  75.             i++;
  76.         }
  77.        
  78.         for (String s : mails){
  79.             p.sendMessage(ChatColor.translateAlternateColorCodes('ยง', s));
  80.         }
  81.         p.sendMessage("===============" + prefix + "===============");
  82.        
  83.        
  84.     }
  85.     public void sendGroupMessage(Player sender, String[] message, String group){
  86.         String m = arrayToString(message);
  87.         String senderName = sender.getDisplayName();
  88.         String finalm = senderName + " => " + m;
  89.        
  90.         String world = sender.getWorld().getName();
  91.         for(OfflinePlayer p1 : Bukkit.getServer().getOfflinePlayers()){
  92.             if(permission.getPrimaryGroup(world, p1).equalsIgnoreCase(group)){
  93.                 //Player is in group
  94.                 //TODO If online send message saying received message, And add to config.
  95.                 UUID u = p1.getUniqueId();
  96.                 this.getConfig().set("mails."+u+"."+UUID.randomUUID(), finalm);
  97.                 if(p1.isOnline()){
  98.                     sender.sendMessage(prefix + "You have received a message.");
  99.                 }
  100.             }
  101.         }
  102.         saveConfig();
  103.         sender.sendMessage(prefix + "Message sent!");
  104.     }
  105.    
  106.     @Override
  107.     public void onEnable(){
  108.         if (!setupPermissions()) {
  109.             log.severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
  110.             getServer().getPluginManager().disablePlugin(this);
  111.             return;
  112.         }
  113.         setupPermissions();
  114.         Bukkit.getServer().getPluginManager().registerEvents(this, this);
  115.         this.getConfig().options().copyDefaults(true);
  116.         saveDefaultConfig();
  117.        
  118.     }
  119.    
  120.     @Override
  121.     public void onDisable() {
  122.         saveDefaultConfig();
  123.     }
  124.     String prefix = ChatColor.translateAlternateColorCodes('&', this.getConfig().getString("prefix")) + ChatColor.RESET;
  125.     String prefixraw = ChatColor.stripColor(prefix);
  126.        
  127.     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
  128.        
  129.         if (cmd.getName().equalsIgnoreCase("gmail")) {
  130.             if (!(sender instanceof Player)){
  131.                 log.info(prefixraw + "This is a player only command.");
  132.                 return true;
  133.             }
  134.             Player p = (Player) sender;
  135.             String[] groups = permission.getGroups();
  136.             if(args.length > 0){
  137.                 if (args[0].equalsIgnoreCase("read") || args[0].equalsIgnoreCase("send") || args[0].equalsIgnoreCase("del")){
  138.                     if(args[0].equalsIgnoreCase("send")){
  139.                         //Send
  140.                         if(args.length >= 3){
  141.                             String group = args[1];
  142.                             String[] message = args;
  143.                             message[0] = "";
  144.                             message[1] = "";
  145.                             if(Arrays.asList(groups).contains(group)){
  146.                                 if (p.hasPermission("gmail.send."+ group.toLowerCase())){
  147.                                     sendGroupMessage(p, message, group);
  148.                                     return true;
  149.                                 } else {
  150.                                     p.sendMessage(prefix + "You do not have permission to send to that group.");
  151.                                 }
  152.                             } else {
  153.                                 p.sendMessage(prefix+"The group : " + group + ", does not exist.");
  154.                                 return true;
  155.                             }
  156.                            
  157.                         } else {
  158.                             p.sendMessage(prefix + "Usage: /gmail send <Group> <Message>");
  159.                             return true;
  160.                         }
  161.                     } else if(args[0].equalsIgnoreCase("read")) {
  162.                         //Read
  163.                         UUID id = p.getUniqueId();
  164.                         if(getConfig().getConfigurationSection("mails").getKeys(false).contains(id.toString())){
  165.                             displayMail(p);
  166.                             return true;
  167.                         } else {
  168.                             //No Mail
  169.                             p.sendMessage(prefix + "You have no mail.");
  170.                             return true;
  171.                         }
  172.                     } else {
  173.                         //Delete
  174.                         UUID id = p.getUniqueId();
  175.                         if(getConfig().getConfigurationSection("mails").getKeys(false).contains(id.toString())){
  176.                             ArrayList<String> allMails = new ArrayList<String>();
  177.                             allMails.addAll(this.getConfig().getConfigurationSection("mails."+id).getKeys(false));
  178.                             if(args.length == 2){
  179.                                 if(args[1].equalsIgnoreCase("all")){
  180.                                     this.getConfig().set("mails."+id, null);
  181.                                     saveConfig();
  182.                                     p.sendMessage(prefix+ "All mails deleted");
  183.                                     return true;
  184.                                 } else if( isInt(args[1])){
  185.                                     //Delete a single message
  186.                                     int msg = Integer.parseInt(args[1]);
  187.                                     if(allMails.size() >= msg){
  188.                                         this.getConfig().set("mails."+id+"."+allMails.get(msg-1), null);
  189.                                         p.sendMessage(prefix+ "Message deleted.");
  190.                                         saveConfig();
  191.                                         return true;
  192.                                     } else {
  193.                                         p.sendMessage(prefix + "That mail does not exist.");
  194.                                         p.sendMessage(prefix + "Usage: /gmail del <all || #>");
  195.                                         return true;
  196.                                     }
  197.                                 } else {
  198.                                     p.sendMessage(prefix + "Usage: /gmail del <all || #>");
  199.                                     return true;
  200.                                 }
  201.                             } else {
  202.                                 p.sendMessage(prefix + "Usage: /gmail del <all || #>");
  203.                                 return true;
  204.                             }
  205.                         } else {
  206.                             p.sendMessage(prefix + "You have no messages.");
  207.                             return true;
  208.                         }
  209.                     }
  210.                 } else {
  211.                     p.sendMessage(prefix + "Usage:");
  212.                     p.sendMessage(prefix + "/gmail read");
  213.                     p.sendMessage(prefix +"/gmail send <Group> <Message>");
  214.                     return true;
  215.                 }
  216.             } else {
  217.                 checkMail(p);
  218.                 p.sendMessage(prefix + "Usage:");
  219.                 p.sendMessage(prefix + "/gmail read");
  220.                 p.sendMessage(prefix + "/gmail send <Group> <Message>");
  221.                 return true;
  222.                
  223.             }
  224.            
  225.         }
  226.        
  227.         return false;
  228.     }
  229.    
  230.     @EventHandler
  231.     public void onJoin(PlayerJoinEvent e){
  232.         checkMail(e.getPlayer());
  233.     }
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement