Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.CGA1123;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Set;
- import java.util.UUID;
- import java.util.logging.Logger;
- import net.milkbowl.vault.permission.Permission;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.OfflinePlayer;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.PlayerJoinEvent;
- import org.bukkit.plugin.RegisteredServiceProvider;
- import org.bukkit.plugin.java.JavaPlugin;
- public class GroupMail extends JavaPlugin implements Listener{
- private static final Logger log = Bukkit.getLogger();
- public static Permission permission;
- private boolean setupPermissions(){
- RegisteredServiceProvider<Permission> permissionProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.permission.Permission.class);
- if (permissionProvider != null) {
- permission = permissionProvider.getProvider();
- }
- return (permission != null);
- }
- public boolean isInt(String s){
- try {
- Integer.parseInt(s);
- return true;
- } catch (NumberFormatException e) {
- return false;
- }
- }
- public void checkMail(Player p){
- //Check config if UUID is there.
- UUID id = p.getUniqueId();
- if(getConfig().getConfigurationSection("mails").getKeys(false).contains(id.toString())){
- int number = (this.getConfig().getConfigurationSection("mails."+id).getKeys(false)).size();
- p.sendMessage(prefix + "You have "+ ChatColor.GOLD + number+ChatColor.RESET + " unread message(s)");
- }
- }
- public String arrayToString(String[] message){
- StringBuilder builder = new StringBuilder();
- for (String string : message) {
- if (builder.length() > 0) {
- builder.append(" ");
- }
- builder.append(string);
- }
- return builder.toString();
- }
- public void displayMail(Player p){
- UUID id = p.getUniqueId();
- Set<String> allMails = this.getConfig().getConfigurationSection("mails."+id).getKeys(false);
- int number = (allMails).size();
- ArrayList<String> mails = new ArrayList<String>();
- p.sendMessage("===============" + prefix + "===============");
- p.sendMessage("You have "+ ChatColor.GOLD + number + ChatColor.RESET + " mail(s):");
- int i = 1;
- for(String s : allMails){
- mails.add("["+ i +"] "+ this.getConfig().getString("mails."+id+"."+s));
- i++;
- }
- for (String s : mails){
- p.sendMessage(ChatColor.translateAlternateColorCodes('ยง', s));
- }
- p.sendMessage("===============" + prefix + "===============");
- }
- public void sendGroupMessage(Player sender, String[] message, String group){
- String m = arrayToString(message);
- String senderName = sender.getDisplayName();
- String finalm = senderName + " => " + m;
- String world = sender.getWorld().getName();
- for(OfflinePlayer p1 : Bukkit.getServer().getOfflinePlayers()){
- if(permission.getPrimaryGroup(world, p1).equalsIgnoreCase(group)){
- //Player is in group
- //TODO If online send message saying received message, And add to config.
- UUID u = p1.getUniqueId();
- this.getConfig().set("mails."+u+"."+UUID.randomUUID(), finalm);
- if(p1.isOnline()){
- sender.sendMessage(prefix + "You have received a message.");
- }
- }
- }
- saveConfig();
- sender.sendMessage(prefix + "Message sent!");
- }
- @Override
- public void onEnable(){
- if (!setupPermissions()) {
- log.severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
- getServer().getPluginManager().disablePlugin(this);
- return;
- }
- setupPermissions();
- Bukkit.getServer().getPluginManager().registerEvents(this, this);
- this.getConfig().options().copyDefaults(true);
- saveDefaultConfig();
- }
- @Override
- public void onDisable() {
- saveDefaultConfig();
- }
- String prefix = ChatColor.translateAlternateColorCodes('&', this.getConfig().getString("prefix")) + ChatColor.RESET;
- String prefixraw = ChatColor.stripColor(prefix);
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
- if (cmd.getName().equalsIgnoreCase("gmail")) {
- if (!(sender instanceof Player)){
- log.info(prefixraw + "This is a player only command.");
- return true;
- }
- Player p = (Player) sender;
- String[] groups = permission.getGroups();
- if(args.length > 0){
- if (args[0].equalsIgnoreCase("read") || args[0].equalsIgnoreCase("send") || args[0].equalsIgnoreCase("del")){
- if(args[0].equalsIgnoreCase("send")){
- //Send
- if(args.length >= 3){
- String group = args[1];
- String[] message = args;
- message[0] = "";
- message[1] = "";
- if(Arrays.asList(groups).contains(group)){
- if (p.hasPermission("gmail.send."+ group.toLowerCase())){
- sendGroupMessage(p, message, group);
- return true;
- } else {
- p.sendMessage(prefix + "You do not have permission to send to that group.");
- }
- } else {
- p.sendMessage(prefix+"The group : " + group + ", does not exist.");
- return true;
- }
- } else {
- p.sendMessage(prefix + "Usage: /gmail send <Group> <Message>");
- return true;
- }
- } else if(args[0].equalsIgnoreCase("read")) {
- //Read
- UUID id = p.getUniqueId();
- if(getConfig().getConfigurationSection("mails").getKeys(false).contains(id.toString())){
- displayMail(p);
- return true;
- } else {
- //No Mail
- p.sendMessage(prefix + "You have no mail.");
- return true;
- }
- } else {
- //Delete
- UUID id = p.getUniqueId();
- if(getConfig().getConfigurationSection("mails").getKeys(false).contains(id.toString())){
- ArrayList<String> allMails = new ArrayList<String>();
- allMails.addAll(this.getConfig().getConfigurationSection("mails."+id).getKeys(false));
- if(args.length == 2){
- if(args[1].equalsIgnoreCase("all")){
- this.getConfig().set("mails."+id, null);
- saveConfig();
- p.sendMessage(prefix+ "All mails deleted");
- return true;
- } else if( isInt(args[1])){
- //Delete a single message
- int msg = Integer.parseInt(args[1]);
- if(allMails.size() >= msg){
- this.getConfig().set("mails."+id+"."+allMails.get(msg-1), null);
- p.sendMessage(prefix+ "Message deleted.");
- saveConfig();
- return true;
- } else {
- p.sendMessage(prefix + "That mail does not exist.");
- p.sendMessage(prefix + "Usage: /gmail del <all || #>");
- return true;
- }
- } else {
- p.sendMessage(prefix + "Usage: /gmail del <all || #>");
- return true;
- }
- } else {
- p.sendMessage(prefix + "Usage: /gmail del <all || #>");
- return true;
- }
- } else {
- p.sendMessage(prefix + "You have no messages.");
- return true;
- }
- }
- } else {
- p.sendMessage(prefix + "Usage:");
- p.sendMessage(prefix + "/gmail read");
- p.sendMessage(prefix +"/gmail send <Group> <Message>");
- return true;
- }
- } else {
- checkMail(p);
- p.sendMessage(prefix + "Usage:");
- p.sendMessage(prefix + "/gmail read");
- p.sendMessage(prefix + "/gmail send <Group> <Message>");
- return true;
- }
- }
- return false;
- }
- @EventHandler
- public void onJoin(PlayerJoinEvent e){
- checkMail(e.getPlayer());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement