Advertisement
Guest User

Untitled

a guest
Aug 28th, 2014
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.83 KB | None | 0 0
  1. package com.sc.guilds.guild;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.UUID;
  7.  
  8. import org.bukkit.Bukkit;
  9. import org.bukkit.ChatColor;
  10. import org.bukkit.command.Command;
  11. import org.bukkit.command.CommandExecutor;
  12. import org.bukkit.command.CommandSender;
  13. import org.bukkit.configuration.file.FileConfiguration;
  14. import org.bukkit.entity.Player;
  15.  
  16. import com.sc.guilds.GuildsMain;
  17. import com.sc.guilds.LanguageData;
  18. import com.sc.guilds.util.Config;
  19. import com.sc.guilds.util.Invite;
  20. import com.sc.guilds.util.NameFetcher;
  21. import com.sc.guilds.util.Util;
  22.  
  23. public class GuildManager implements CommandExecutor {
  24.     private ArrayList<Guild> guilds = new ArrayList<Guild>();
  25.     private ArrayList<Invite> invites = new ArrayList<Invite>();
  26.  
  27.     public GuildManager() {
  28.         Bukkit.getPluginManager().registerEvents(new GuildListener(), GuildsMain.getMain());
  29.  
  30.         for(String guildName : GuildsMain.getData().getStringList("Guilds")) {
  31.             ArrayList<GuildMember> members = new ArrayList<GuildMember>();
  32.  
  33.             FileConfiguration config = Config.getConfig("/guilds/" + guildName.toLowerCase() + ".yml");
  34.  
  35.             List<String> players = config.getStringList("players");
  36.             List<UUID> uuids = new ArrayList<UUID>();
  37.             for(String uuidString : players) {
  38.                 uuids.add(UUID.fromString(uuidString.split(",")[0]));
  39.             }
  40.             Map<UUID, String> response = null;
  41.             try {
  42.                 response = new NameFetcher(uuids).call();
  43.             } catch(Exception e) {
  44.                 GuildsMain.getMain().getLogger().warning("Exception while running NameFetcher: " + e.getMessage());
  45.             }
  46.  
  47.             for(String player : players) {
  48.                 String[] info = player.split(",");
  49.                 UUID uuid = UUID.fromString(info[0]);
  50.                 members.add(
  51.                         new GuildMember(
  52.                                 Rank.valueOf(info[1].toUpperCase()),
  53.                                 response.get(uuid), uuid)
  54.                 );
  55.             }
  56.             guilds.add(new Guild(guildName, members, config));
  57.         };
  58.     }
  59.  
  60.     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
  61.         if(sender instanceof Player) {
  62.             Player p = (Player) sender;
  63.             try {
  64.                 switch (args[0].toLowerCase()) {
  65.  
  66.                     case "info":
  67.                         Guild infoGuild = findGuild(args[1]);
  68.                         if (infoGuild != null) {
  69.                             Util.giveGuildInfo(p, infoGuild, findGuild(p));
  70.                         } else {
  71.                             p.sendMessage(LanguageData.FAKE_GUILD);
  72.                         }
  73.                         break;
  74.                     case "accept":
  75.                     case "a":
  76.                     case "join":
  77.                         if (!inviteAccept(p, args[1])) {
  78.                             p.sendMessage(LanguageData.NO_INVITE);
  79.                         }
  80.                         break;
  81.                     case "create":
  82.                         Guild possNull = findGuild(p);
  83.                         Guild possNull2 = findGuild(args[1]);
  84.                         if(possNull == null) {
  85.                             if(possNull2 == null) {
  86.                                 createGuild(p, args[1], args[2]);
  87.                             } else {
  88.                                 p.sendMessage(LanguageData.NAME_TAKEN);
  89.                             }
  90.                         } else {
  91.                             p.sendMessage(LanguageData.IN_GUILD);
  92.                         }
  93.                         break;
  94.                        
  95.                     case "help":
  96.                         p.sendMessage(ChatColor.YELLOW + "" + ChatColor.STRIKETHROUGH + "----------------------" + ChatColor.AQUA + "[" + ChatColor.GOLD + "Guild Help" +  ChatColor.AQUA + "]" + ChatColor.YELLOW + ChatColor.STRIKETHROUGH + "----------------------");
  97.                         p.sendMessage(ChatColor.AQUA + " >>" + ChatColor.GREEN + " Create a guild? " + ChatColor.GOLD + "/guild create [Guildname] [Guildtag]");
  98.                         p.sendMessage(ChatColor.AQUA + " >>" + ChatColor.GREEN + " Want to invite a player to your guild? " + ChatColor.GOLD + "/guild invite [Name]");
  99.                         p.sendMessage(ChatColor.AQUA + " >>" + ChatColor.GREEN + " Want to kick a player from your guild " + ChatColor.GOLD + "/guild kick [Name]");
  100.                         p.sendMessage(ChatColor.AQUA + " >>" + ChatColor.GREEN + " Leave your current guild? " + ChatColor.GOLD + "/guild leave");
  101.                         p.sendMessage(ChatColor.AQUA + " >>" + ChatColor.GREEN + " Talk in guild chat? " + ChatColor.GOLD + "/gc [message]");
  102.                         p.sendMessage(ChatColor.AQUA + " >>" + ChatColor.GREEN + " Set the guild home? " + ChatColor.GOLD + "/guild sethome");
  103.                         p.sendMessage(ChatColor.AQUA + " >>" + ChatColor.GREEN + " Teleport to your guild home " + ChatColor.GOLD + " /guild home");
  104.                         p.sendMessage(ChatColor.AQUA + " >>" + ChatColor.GREEN + " Disband your guild? " + ChatColor.GOLD + " /guild disband");
  105.                         p.sendMessage(ChatColor.AQUA + " >>" + ChatColor.GREEN + " Rank a member in your guild? " + ChatColor.GOLD + " /guild ranking");
  106.                         p.sendMessage(ChatColor.AQUA + " >>" + ChatColor.GREEN + " Upgrade your guild bank (Coming Soon) " + ChatColor.GOLD + " /guild upgrade");
  107.                         p.sendMessage(ChatColor.AQUA + " >>" + ChatColor.GREEN + " Info about guild tiers? " + ChatColor.GOLD + " /guild tiers");
  108.                         break;
  109.                        
  110.                     case "tiers":
  111.                        
  112.                           p.sendMessage(ChatColor.YELLOW + "" + ChatColor.STRIKETHROUGH + "---------------------" + ChatColor.AQUA + "[" + ChatColor.GOLD + "Guild Tiers" + ChatColor.AQUA + "]" + ChatColor.YELLOW + ChatColor.STRIKETHROUGH + "---------------------");
  113.                           p.sendMessage(ChatColor.GREEN + "Guild Tiers are a great way to show the wealth of your guild and the guild gains great bonusses");
  114.                           p.sendMessage(ChatColor.GREEN + "Tier 1 -> 2    -    10,000");
  115.                           p.sendMessage(ChatColor.GREEN + "Tier 2 -> 3    -    20,000");
  116.                           p.sendMessage(ChatColor.GREEN + "Tier 3 -> 4    -    40,000");
  117.                           p.sendMessage(ChatColor.GREEN + "Tier 4 -> 5    -    100,000");
  118.                           p.sendMessage(ChatColor.GREEN + "Tier 5 -> 6    -    250,000");
  119.                           p.sendMessage(ChatColor.GREEN + "Tier 6 -> 7    -    600,000");
  120.                           p.sendMessage(ChatColor.GREEN + "Tier 7 -> 8    -    1,200,000");
  121.                           p.sendMessage(ChatColor.GREEN + "Tier 8 -> 9    -    2,000,000");
  122.                           p.sendMessage(ChatColor.GREEN + "Tier 9 -> 10   -    5,000,000");
  123.                           p.sendMessage(ChatColor.GREEN + "Rewards coming soon!");
  124.                           p.sendMessage(ChatColor.GREEN + "To upgrade your guild use " + ChatColor.GOLD + "/guild upgrade [Guild Name]");
  125.                          
  126.                     break;
  127.                        
  128.                     case "ranking":
  129.                         p.sendMessage(ChatColor.YELLOW + "" + ChatColor.STRIKETHROUGH + "---------------------" + ChatColor.AQUA + "[" + ChatColor.GOLD + "Guild Ranking" + ChatColor.AQUA + "]" + ChatColor.YELLOW + ChatColor.STRIKETHROUGH + "---------------------");
  130.                         p.sendMessage(ChatColor.GREEN + "In later versions of the guild system you will have the ability to setup permissions that will be linked in with guild ranks");
  131.                         p.sendMessage(ChatColor.GREEN + "for your guild, In this current release you can rank up members by doing the following command: " + ChatColor.GOLD + "/guild (knight/baron/council) [Name]");
  132.                     break;
  133.                     default:
  134.                         Guild guild = findGuild(p);
  135.                         if (guild != null) {
  136.                             guild.onCommand(p, args);
  137.                             return false;
  138.                         }
  139.                         p.sendMessage(LanguageData.CMD_NOT_FOUND);
  140.                 }
  141.             } catch(ArrayIndexOutOfBoundsException e) {
  142.                 p.sendMessage(LanguageData.NOT_ENOUGH_ARGUMENTS);
  143.             }
  144.         }
  145.         return false;
  146.     }
  147.  
  148.     public void addInvite(Invite i, Player p) {
  149.         for(Invite invite : invites) {
  150.             // For no repeats
  151.             if(invite.getInviter() == i.getInviter()
  152.                     && invite.getInvited() == i.getInvited()
  153.                     && invite.getGuild() == i.getGuild()) {
  154.                 return;
  155.             }
  156.         }
  157.         invites.add(i);
  158.         p.sendMessage(LanguageData.INVITE);
  159.     }
  160.  
  161.     public boolean inviteAccept(Player player, String inviter) {
  162.         if(findGuild(player) == null) {
  163.             for(Invite i : invites) {
  164.                 if(i.getInvited().equalsIgnoreCase(player.getName())) {
  165.                     if(i.getGuild().equalsIgnoreCase(inviter) || i.getInviter().equalsIgnoreCase(inviter)) {
  166.                         Guild l = findGuild(i.getGuild());
  167.                         l.addMember(player);
  168.                         invites.remove(i);
  169.                         return true;
  170.                     }
  171.                 }
  172.             }
  173.         } else {
  174.             player.sendMessage(LanguageData.IN_GUILD);
  175.             return true;
  176.         }
  177.         return false;
  178.     }
  179.  
  180.     public Guild findGuild(Player player) {
  181.         for(Guild guild : guilds) {
  182.             if(guild.getMember(player.getName()) != null) {
  183.                 return guild;
  184.             }
  185.         }
  186.         return null;
  187.     }
  188.  
  189.     public Guild findGuild(String guildName) {
  190.         for(Guild guild : guilds) {
  191.             if(guild.getName().equalsIgnoreCase(guildName)) {
  192.                 return guild;
  193.             }
  194.         }
  195.         return null;
  196.     }
  197.  
  198.     public Guild findGuild(UUID player) {
  199.         for(Guild guild : guilds) {
  200.             if(guild.getMember(player) != null) {
  201.                 return guild;
  202.             }
  203.         }
  204.         return null;
  205.     }
  206.  
  207.     private void createGuild(Player p, String guildName, String tag) {
  208.         guilds.add(Config.createGuild(p, guildName, tag));
  209.     }
  210.  
  211.     public void deleteGuild(Guild guild) {
  212.         guilds.remove(guild);
  213.         Config.deleteConfig("/guilds/" + guild.getName().toLowerCase() + ".yml");
  214.     }
  215.  
  216.     public void save() {
  217.         ArrayList<String> guildNames = new ArrayList<String>();
  218.         for(Guild guild : guilds) {
  219.             guildNames.add(guild.getName());
  220.             guild.save();
  221.         }
  222.         GuildsMain.getData().set("Guilds", guildNames);
  223.     }
  224. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement