Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 26.42 KB | None | 0 0
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5.  
  6. package me.Ghappy.EstateRanker;
  7.  
  8. import com.iConomy.iConomy;
  9. import com.iConomy.system.Account;
  10. import com.iConomy.system.Holdings;
  11. import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
  12. import java.io.FileNotFoundException;
  13. import java.io.IOException;
  14. import java.util.ArrayList;
  15. import java.util.Arrays;
  16. import java.util.HashMap;
  17. import java.util.List;
  18. import com.sk89q.worldedit.Vector;
  19. import java.io.BufferedReader;
  20. import java.io.File;
  21. import java.io.FileReader;
  22. import java.io.FileWriter;
  23. import java.io.PrintWriter;
  24. import java.util.Iterator;
  25. import java.util.logging.Level;
  26. import java.util.logging.Logger;
  27. import me.Ghappy.EstateRanker.ERPlayer.Estate;
  28.  
  29. import org.bukkit.ChatColor;
  30. import org.bukkit.Material;
  31. import org.bukkit.World;
  32. import org.bukkit.block.Block;
  33. import org.bukkit.command.Command;
  34. import org.bukkit.command.CommandSender;
  35. import org.bukkit.entity.Player;
  36. import org.bukkit.inventory.ItemStack;
  37. import org.bukkit.plugin.Plugin;
  38. import org.bukkit.plugin.java.JavaPlugin;
  39. import org.bukkit.util.config.Configuration;
  40. import ru.tehkode.permissions.PermissionGroup;
  41. import ru.tehkode.permissions.PermissionManager;
  42. import ru.tehkode.permissions.bukkit.PermissionsEx;
  43.  
  44. /**
  45.  *
  46.  * @author Mathias
  47.  */
  48. public class EstateRanker extends JavaPlugin{
  49. private static final Logger log = Logger.getLogger("Minecraft");
  50. public String[] zoneIDs = {"officerestate" , "minerestate" , "builderestate" , "traderestate", "default"};
  51. private List<String> tmp = Arrays.asList("officer", "miner", "builder", "trader");
  52. public String[] strEstates = {"default", "trader", "banker", "entrepreneur", "treasurer", "miner", "driller", "explorer", "excavator", "officer", "sergeant", "captain", "enforcer", "builder", "constructor", "architect", "creator"};
  53. public String[] capsEstates = {"Default", "Trader", "Banker", "Entrepreneur", "Treasurer", "Miner", "Driller", "Explorer", "Excavator", "Officer", "Sergeant", "Captain", "Enforcer", "Builder", "Constructor", "Architect", "Creator"};
  54. public String[] strLvl4 = {"treasurer", "enforcer", "creator", "excavator"};
  55. public String[] strLvl3 = {"entrepreneur", "captain", "explorer", "architect"};
  56. public String[] strLvl2 = {"banker", "sergeant", "driller", "constructor"};
  57. public String[] strLvl1 = {"trader", "officer", "miner", "builder"};
  58. public String[] strOfficer = {"officer", "sergeant", "captain", "enforcer"};
  59. public String[] strMiner = {"miner", "driller", "explorer", "excavator"};
  60. public String[] strTrader = {"trader", "banker", "entrepreneur", "treasurer"};
  61. public String[] strBuilder = {"builder", "constructor", "architect", "creator"};
  62. public final HashMap<Player, ArrayList<Block>> CMUsers = new HashMap<Player, ArrayList<Block>>();
  63. public final HashMap<String, Boolean[]> quizMap = new HashMap<String, Boolean[]>();
  64. public WorldGuardPlugin worldguard = null;
  65. public iConomy iCon = null;
  66. public List<String> zIDs = Arrays.asList(zoneIDs);
  67. public List<String> lEst = Arrays.asList(strEstates);
  68. public List<String> cEst = Arrays.asList(capsEstates);
  69. public List<String> lvl4 = Arrays.asList(strLvl4);
  70. public List<String> lvl3 = Arrays.asList(strLvl3);
  71. public List<String> lvl2 = Arrays.asList(strLvl2);
  72. public List<String> lvl1 = Arrays.asList(strLvl1);
  73. public List<String> officer = Arrays.asList(strOfficer);
  74. public List<String> miner = Arrays.asList(strMiner);
  75. public List<String> trader = Arrays.asList(strTrader);
  76. public List<String> builder = Arrays.asList(strBuilder);
  77. public boolean canAfford = false;
  78. private Configuration config;
  79. PermissionManager Permissions;
  80.  
  81.  
  82.     private void setupPermissions() {
  83.         if(getServer().getPluginManager().getPlugin("PermissionsEx") != null){
  84.             Permissions = PermissionsEx.getPermissionManager();
  85.             log.info("[EstateRanker] PermissionsEx found!");
  86.         } else {
  87.             log.info("[EstateRanker] PermissionsEx not found!");
  88.         }
  89.     }
  90.  
  91.     private void setupWorldGuard(){
  92.         Plugin test = this.getServer().getPluginManager().getPlugin("WorldGuard");
  93.        
  94.         if(test != null){
  95.             worldguard = (WorldGuardPlugin)getServer().getPluginManager().getPlugin("WorldGuard");
  96.             log.info("[EstateRanker] WorldGuard detected :)!");
  97.         } else {
  98.             log.info("[EstateRanker] WorldGuard not found :(, Disabling plugin!");
  99.             this.setEnabled(false);
  100.         }
  101.     }
  102.     private void setupiConomy(){
  103.         Plugin test = this.getServer().getPluginManager().getPlugin("iConomy");
  104.         if(test != null){
  105.             iCon = (iConomy)getServer().getPluginManager().getPlugin("iConomy");
  106.             log.info("[EstateRanker] iConomy detected :)!");
  107.         } else {
  108.             log.info("[EstateRanker] iConomy not found :(");
  109.         }
  110.     }
  111.  
  112.     public void onDisable() {
  113.         writeFiles();
  114.         log.info("[EstateRanker] EstateRanker Disabled");
  115.     }
  116.  
  117.     public void onEnable() {
  118.         readFiles();
  119.         setupPermissions();
  120.         setupWorldGuard();
  121.         setupiConomy();
  122.         log.info("[EstateRanker] EstateRanker is now Enabled! :)");
  123.     }
  124.     @Override
  125.     public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
  126.         List<String> strIDs;
  127.         Player player = (Player)sender;
  128.        
  129.         if(cmd.getName().equalsIgnoreCase("rankup")){
  130.             ERPlayer newPlayer = new ERPlayer(player, this);
  131.             String thisEstate = newPlayer.getEstate();
  132.             if(!newPlayer.isAtGod()) return true;
  133.             if(args.length > 0){
  134.                 if(args[0].equalsIgnoreCase("accept")){
  135.                     if(newPlayer.canLevel()){
  136.                         levelUp(player, thisEstate, newPlayer.getNextEstate());
  137.                     } else {
  138.                         player.sendMessage("Please use " + ChatColor.GREEN + "/RankUp Info");
  139.                     }
  140.                 } else if(args[0].equalsIgnoreCase("decline")){
  141.                     return true;
  142.                 } else if(args[0].equalsIgnoreCase("info")){
  143.                     if(newPlayer.canLevel()){
  144.                         String cEstate = cEst.get(lEst.indexOf(thisEstate));
  145.                         player.sendMessage(ChatColor.DARK_AQUA + "~ Creation Nation RankUp ~");
  146.                         player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
  147.                         player.sendMessage("Your current estate is: " + newPlayer.EstateColor() + cEstate);
  148.                         player.sendMessage("The next level in your estate is: " + newPlayer.EstateColor() + cEst.get(lEst.indexOf(newPlayer.getNextEstate())));
  149.                         player.sendMessage("  ");
  150.                         player.sendMessage("LevelUp cost: " + ChatColor.YELLOW + newPlayer.rankUpPrice() + " CN");
  151.                         player.sendMessage("Current CN: " + ChatColor.YELLOW + newPlayer.getCurrentCN() + " CN");
  152.                         player.sendMessage("To accept the levelup, type " + ChatColor.GREEN + "/RankUp Accept" + ChatColor.WHITE + " and the cost will be automaticly charged");
  153.                         player.sendMessage("For info about changing Estates, visit the God of the given Estate");
  154.                         player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
  155.                         return true;
  156.                     } else {
  157.                         if(lvl4.contains(thisEstate)){
  158.                             player.sendMessage(ChatColor.DARK_AQUA + "~ Creation Nation RankUp ~");
  159.                             player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
  160.                             player.sendMessage("You are currently level 4 in your estate");
  161.                             player.sendMessage("Please speak to an Admin for information on leveling up further");
  162.                             player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
  163.                             return true;
  164.                         } else if(thisEstate.equalsIgnoreCase("default")){
  165.                             player.sendMessage(ChatColor.DARK_AQUA + "~ Creation Nation RankUp ~");
  166.                             player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
  167.                             player.sendMessage("You currently have no estate");
  168.                             player.sendMessage("You can choose from one of these 4 starter estates:");
  169.                             player.sendMessage(ChatColor.GREEN + "Miner" + ChatColor.WHITE + ", " + ChatColor.GOLD + "Trader" + ChatColor.WHITE + ", " + ChatColor.BLUE + "Officer" + ChatColor.WHITE + ", " + ChatColor.DARK_GRAY + "Builder");
  170.                             player.sendMessage("  ");
  171.                             player.sendMessage("Cost: " + ChatColor.YELLOW + newPlayer.rankUpPrice() + " CN & Estate quiz completion");
  172.                             player.sendMessage("Current CN: " + ChatColor.YELLOW + newPlayer.getCurrentCN() + " CN");
  173.                             player.sendMessage("To get your estate, type " + ChatColor.GREEN + "/RankUp Start <Estate>" + ChatColor.WHITE + " and the cost will be automaticly charged");
  174.                             player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
  175.                             return true;
  176.                         } else {
  177.                             player.sendMessage(ChatColor.DARK_RED + "Could not determine your current estate");
  178.                             return true;
  179.                         }
  180.                     }
  181.                 } else if(args[0].equalsIgnoreCase("start")){
  182.                     if(!thisEstate.equalsIgnoreCase("default")){
  183.                         player.sendMessage(ChatColor.DARK_RED + "This command is for people who dont yet have an Estate");
  184.                         return true;
  185.                     }
  186.                     if(args.length != 2){
  187.                         player.sendMessage("The syntax for this command is:");
  188.                         player.sendMessage(ChatColor.GREEN + "/RankUp Start <Builder/Trader/Miner/Officer>");
  189.                         return true;
  190.                     } else {
  191.                         if(lvl1.contains(args[1].toLowerCase())){
  192.                             if(!newPlayer.isAtSpecificGod(args[1].toLowerCase())){
  193.                                 player.sendMessage(ChatColor.RED + "You need to be in the presence of the " + cEst.get(lEst.indexOf(args[1])) + " Estate god to do this");
  194.                                 return true;
  195.                             }
  196.                             firstEstate(player, args[1].toLowerCase());
  197.                             return true;
  198.                         } else {
  199.                             player.sendMessage("The syntax for this command is:");
  200.                             player.sendMessage(ChatColor.GREEN + "/RankUp Start <Builder/Trader/Miner/Officer>");
  201.                             return true;
  202.                         }
  203.                     }
  204.                 }
  205.             } else {
  206.                 player.sendMessage("Use " + ChatColor.GREEN + "/RankUp Info " + ChatColor.WHITE + "for information on leveling up");
  207.                 return true;
  208.             }
  209.         } else if(cmd.getName().equalsIgnoreCase("qc")){
  210.             if(args.length < 1){
  211.                 player.sendMessage(ChatColor.RED + "Correct usage: /QC [Estate]");
  212.                 return true;
  213.             }
  214.             strIDs = null;
  215.             strIDs = worldguard.getGlobalRegionManager().get(player.getWorld()).getApplicableRegionsIDs(new Vector(player.getLocation().getX(), player.getLocation().getY(), player.getLocation().getZ()));
  216.             if(args[0].equalsIgnoreCase("trader")){
  217.                 if(strIDs.contains("traderquiz")){
  218.                     if(!quizMap.containsKey(player.getName().toLowerCase())){
  219.                         quizMap.put(player.getName().toLowerCase(), new Boolean[]{false, false, false, false});
  220.                     }
  221.                     if(quizMap.get(player.getName().toLowerCase())[0]){
  222.                         player.sendMessage(ChatColor.RED + "You have already completed this Quiz");
  223.                     }
  224.                     Boolean[] oldBool = quizMap.get(player.getName().toLowerCase());
  225.                     Boolean[] newBool = {true, oldBool[1], oldBool[2], oldBool[3]};
  226.                     quizMap.remove(player.getName().toLowerCase());
  227.                     quizMap.put(player.getName().toLowerCase(), newBool);
  228.                     player.sendMessage(ChatColor.YELLOW + "Congratulations! " + ChatColor.GOLD + "Trader" + ChatColor.WHITE + " quiz completed");
  229.                 }
  230.             } else if(args[0].equalsIgnoreCase("officer")){
  231.                 if(strIDs.contains("officerquiz")){
  232.                     if(!quizMap.containsKey(player.getName().toLowerCase())){
  233.                         quizMap.put(player.getName().toLowerCase(), new Boolean[]{false, false, false, false});
  234.                     }
  235.                     if(quizMap.get(player.getName().toLowerCase())[1]){
  236.                         player.sendMessage(ChatColor.RED + "You have already completed this Quiz");
  237.                     }
  238.                     Boolean[] oldBool = quizMap.get(player.getName().toLowerCase());
  239.                     Boolean[] newBool = {oldBool[0], true, oldBool[2], oldBool[3]};
  240.                     quizMap.remove(player.getName().toLowerCase());
  241.                     quizMap.put(player.getName().toLowerCase(), newBool);
  242.                     player.sendMessage(ChatColor.YELLOW + "Congratulations! " + ChatColor.BLUE + "Officer" + ChatColor.WHITE + " quiz completed");
  243.                 }
  244.             } else if(args[0].equalsIgnoreCase("miner")){
  245.                 if(strIDs.contains("minerquiz")){
  246.                     if(!quizMap.containsKey(player.getName().toLowerCase())){
  247.                         quizMap.put(player.getName().toLowerCase(), new Boolean[]{false, false, false, false});
  248.                     }
  249.                     if(quizMap.get(player.getName().toLowerCase())[2]){
  250.                         player.sendMessage(ChatColor.RED + "You have already completed this Quiz");
  251.                     }
  252.                     Boolean[] oldBool = quizMap.get(player.getName().toLowerCase());
  253.                     Boolean[] newBool = {oldBool[0], oldBool[1], true, oldBool[3]};
  254.                     quizMap.remove(player.getName().toLowerCase());
  255.                     quizMap.put(player.getName().toLowerCase(), newBool);
  256.                     player.sendMessage(ChatColor.YELLOW + "Congratulations! " + ChatColor.GREEN + "Miner" + ChatColor.WHITE + " quiz completed");
  257.                 }
  258.             } else if(args[0].equalsIgnoreCase("builder")){
  259.                 if(strIDs.contains("builderquiz")){
  260.                     if(!quizMap.containsKey(player.getName().toLowerCase())){
  261.                         quizMap.put(player.getName().toLowerCase(), new Boolean[]{false, false, false, false});
  262.                     }
  263.                     if(quizMap.get(player.getName().toLowerCase())[3]){
  264.                         player.sendMessage(ChatColor.RED + "You have already completed this Quiz");
  265.                     }
  266.                     Boolean[] oldBool = quizMap.get(player.getName().toLowerCase());
  267.                     Boolean[] newBool = {oldBool[0], oldBool[1], oldBool[2], true};
  268.                     quizMap.remove(player.getName().toLowerCase());
  269.                     quizMap.put(player.getName().toLowerCase(), newBool);
  270.                     player.sendMessage(ChatColor.YELLOW + "Congratulations! " + ChatColor.DARK_GRAY + "Builder" + ChatColor.WHITE + " quiz completed");
  271.                 }
  272.             } else if(args[0].equalsIgnoreCase("check")){
  273.                 if(args.length != 2){
  274.                     player.sendMessage(ChatColor.YELLOW + "Usage: /QC Check [Player]");
  275.                     return true;
  276.                 }
  277.                 if(quizMap.containsKey(args[1].toLowerCase())){
  278.                     player.sendMessage(ChatColor.YELLOW + "QuizCompletetions by " + ChatColor.DARK_AQUA + args[1] + ":");
  279.                     player.sendMessage(ChatColor.GOLD + "TraderQuiz: " + ChatColor.WHITE + quizMap.get(args[1].toLowerCase())[0].toString());
  280.                     player.sendMessage(ChatColor.BLUE + "OfficerQuiz: " + ChatColor.WHITE + quizMap.get(args[1].toLowerCase())[1].toString());
  281.                     player.sendMessage(ChatColor.GREEN + "MinerQuiz: " + ChatColor.WHITE + quizMap.get(args[1].toLowerCase())[2].toString());
  282.                     player.sendMessage(ChatColor.DARK_GRAY + "BuilderQuiz: " + ChatColor.WHITE + quizMap.get(args[1].toLowerCase())[3].toString());
  283.                 } else {
  284.                     player.sendMessage(ChatColor.YELLOW + "User: " + args[1] + " has not completed any quizzes");
  285.                 }
  286.                 return true;
  287.             }
  288.         } else if(cmd.getName().equalsIgnoreCase("RankChange")){
  289.             ERPlayer nPlayer = new ERPlayer(player, this);
  290.             if(!nPlayer.isAtGodExcept()){
  291.                 player.sendMessage(ChatColor.RED + "You need to be in the presence of the Estate god of the estate you wish to change into");
  292.             }
  293.             if(nPlayer.getEstate() == null || nPlayer.getEstate().equalsIgnoreCase("default")){
  294.                 player.sendMessage(ChatColor.RED + "Invalid estate for an estate change");
  295.                 return true;
  296.             }
  297.             if(args[0].equalsIgnoreCase("info")){
  298.                 if(nPlayer.getApplicableGod() != null){
  299.                     Estate god = nPlayer.getApplicableGod();
  300.                     if(nPlayer.hasUsedChange(god)){
  301.                         player.sendMessage(ChatColor.RED + "You have already used up your available changes to this god");
  302.                         return true;
  303.                     }
  304.                     player.sendMessage(ChatColor.DARK_AQUA + "~ Creation Nation RankChange ~");
  305.                     player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
  306.                     player.sendMessage("Your current Estate is: " + nPlayer.EstateColor() + cEst.get(lEst.indexOf(nPlayer.getEstate())));
  307.                     player.sendMessage("Your new Estate would be: " + nPlayer.EstateColor(god) + god.toString());
  308.                     player.sendMessage("   ");
  309.                     player.sendMessage("Cost: " + ChatColor.YELLOW + nPlayer.changePrice() + ChatColor.WHITE + " & Completion of the " + nPlayer.EstateColor(god) + god.toString() + ChatColor.WHITE + " Quiz");
  310.                     player.sendMessage("Current CN: " + ChatColor.YELLOW + nPlayer.getCurrentCN() + ChatColor.WHITE + " CN");
  311.                     player.sendMessage("To accept this change, type " + ChatColor.GREEN + "'/RankChange Accept'");
  312.                     player.sendMessage("For info about ranking up, use " + ChatColor.GREEN + "'/RankUp Info'");
  313.                     player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
  314.                 }
  315.             }
  316.         }
  317.  
  318.         return true;
  319.     }
  320.     public void levelUp(Player p, String Estate, String nextEstate){
  321.         ERPlayer erp = new ERPlayer(p, this);
  322.         Holdings acc = iCon.getAccount(p.getName()).getHoldings();
  323.         double costCN = erp.rankUpPrice();
  324.         if(acc.hasEnough(costCN) || acc.hasOver(costCN)){
  325.             acc.subtract(costCN);
  326.             List<PermissionGroup> newGroups = new ArrayList<PermissionGroup>();
  327.             PermissionGroup[] cGroups = Permissions.getUser(p.getName()).getGroups();
  328.             for(int i = 0; i < cGroups.length; i++){
  329.                 if(cGroups[i].getName().equalsIgnoreCase(Estate)){
  330.                     newGroups.add(Permissions.getGroup(nextEstate));
  331.                 } else {
  332.                     newGroups.add(cGroups[i]);
  333.                 }
  334.             }
  335.             PermissionGroup[] nGroups = (PermissionGroup[]) newGroups.toArray();
  336.             Permissions.getUser(p.getName()).setGroups(nGroups);
  337.             Permissions.getUser(p.getName()).save();
  338.             p.sendMessage("Congratulations, your rankUp was succesful");
  339.             p.sendMessage("Your new rank: " + erp.EstateColor() + cEst.get(lEst.indexOf(nextEstate)));
  340.             int CCode;
  341.             if(miner.contains(Estate)){
  342.                 CCode = ChatColor.GREEN.getCode();
  343.             } else if(officer.contains(Estate)){
  344.                 CCode = ChatColor.BLUE.getCode();
  345.             } else if(builder.contains(Estate)){
  346.                 CCode = ChatColor.DARK_GRAY.getCode();
  347.             } else if(trader.contains(Estate)){
  348.                 CCode = ChatColor.GOLD.getCode();
  349.             } else {
  350.                 CCode = ChatColor.DARK_AQUA.getCode();
  351.             }
  352.             getServer().broadcastMessage(ChatColor.GRAY + p.getName() + ChatColor.WHITE + "Just ranked up from " + ChatColor.getByCode(CCode) + cEst.get(lEst.indexOf(Estate)) + ChatColor.WHITE + " to " + ChatColor.getByCode(CCode) + cEst.get(lEst.indexOf(nextEstate)) + ChatColor.WHITE + "!");
  353.         } else {
  354.             p.sendMessage(ChatColor.DARK_RED + "Insufficient CN to level up");
  355.             return;
  356.         }
  357.         return;
  358.     }
  359.     public void firstEstate(Player player, String estate){
  360.         // officer, miner, builder, trader
  361.         ERPlayer newPlayer = new ERPlayer(player, this);
  362.         Holdings acc = iCon.getAccount(player.getName()).getHoldings();
  363.         int costCN = newPlayer.rankUpPrice();
  364.         if(!quizMap.containsKey(player.getName().toLowerCase())){
  365.             player.sendMessage(ChatColor.RED + "You need to complete your estates Quiz in order to do this");
  366.             return;
  367.         }
  368.             if(officer.contains(estate)){
  369.                 if(!quizMap.get(player.getName().toLowerCase())[1]){
  370.                     player.sendMessage(ChatColor.RED + "You must complete the officers quiz first");
  371.                     return;
  372.                 }
  373.                 if(!estate.equalsIgnoreCase(strOfficer[0])){
  374.                     player.sendMessage(ChatColor.DARK_RED + "You need to be in the " + estate + " RankUp area to do this");
  375.                     return;
  376.                 }
  377.             } else if (miner.contains(estate)) {
  378.                 if(!quizMap.get(player.getName().toLowerCase())[2]){
  379.                     player.sendMessage(ChatColor.RED + "You must complete the miners quiz first");
  380.                     return;
  381.                 }
  382.                 if(!estate.equalsIgnoreCase(strMiner[0])){
  383.                     player.sendMessage(ChatColor.DARK_RED + "You need to be in the " + estate + " RankUp area to do this");
  384.                     return;
  385.                 }
  386.             } else if (builder.contains(estate)) {
  387.                 if(!quizMap.get(player.getName().toLowerCase())[3]){
  388.                     player.sendMessage(ChatColor.RED + "You must complete the builders quiz first");
  389.                     return;
  390.                 }
  391.                 if(!estate.equalsIgnoreCase(strBuilder[0])){
  392.                     player.sendMessage(ChatColor.DARK_RED + "You need to be in the " + estate + " RankUp area to do this");
  393.                     return;
  394.                 }
  395.             } else if (trader.contains(estate)) {
  396.                 if(!quizMap.get(player.getName().toLowerCase())[0]){
  397.                     player.sendMessage(ChatColor.RED + "You must complete the traders quiz first");
  398.                     return;
  399.                 }
  400.                 if(!estate.equalsIgnoreCase(strTrader[0])){
  401.                     player.sendMessage(ChatColor.DARK_RED + "You need to be in the " + estate + " RankUp area to do this");
  402.                     return;
  403.                 }
  404.             }
  405.         if(!acc.hasEnough(costCN)){
  406.             player.sendMessage(ChatColor.DARK_RED + "Insufficient CN found");
  407.             return;
  408.         }
  409.         try{
  410.             Permissions.getUser(player.getName()).setGroups(new PermissionGroup[]{PermissionsEx.getPermissionManager().getGroup(estate)});
  411.             acc.subtract(costCN);
  412.             player.sendMessage(ChatColor.YELLOW + "Congratulations, your new estate is " + estate);
  413.         }catch(Exception ex){
  414.             player.sendMessage(ChatColor.RED + "Error occured while applying estate, please contact Happy_G or an Admin for help");
  415.         }
  416.         PermissionsEx.getPermissionManager().reset();
  417.     }
  418.     public void writeFiles(){
  419.         if(!this.getDataFolder().exists()) {
  420.             this.getDataFolder().mkdir();
  421.         }
  422.         String path = this.getDataFolder().getPath();
  423.         File qFile = new File(path + "\\quizCompletions.txt");
  424.         if(!qFile.exists()) try {
  425.             qFile.createNewFile();
  426.         } catch (IOException ex) {
  427.             log.log(Level.SEVERE, null, ex);
  428.         }
  429.         try {
  430.             FileWriter outFile = new FileWriter(qFile);
  431.             PrintWriter out = new PrintWriter(outFile);
  432.             Iterator it = quizMap.entrySet().iterator();
  433.             while(it.hasNext()){
  434.                 String Name;
  435.                 Name = it.next().toString().split("=")[0];
  436.                 out.println(Name + "=" + quizMap.get(Name)[0].toString() + "," + quizMap.get(Name)[1].toString() + "," + quizMap.get(Name)[2].toString() + "," + quizMap.get(Name)[3].toString());
  437.             }
  438.             out.flush();
  439.             out.close();
  440.         } catch (IOException ex) {
  441.             log.info("[EstateRanker] WARNING: Failed to write QuizCompletes to file");
  442.         }
  443.     }
  444.     public void readFiles(){
  445.         if(!this.getDataFolder().exists()){
  446.             this.getDataFolder().mkdir();
  447.             return;
  448.         }
  449.         BufferedReader BR = null;
  450.         File qFile = new File(this.getDataFolder().getPath() + "\\quizCompletions.txt");
  451.         if(!qFile.exists()){
  452.             return;
  453.         }
  454.         if(qFile.canRead()){
  455.             try {
  456.                 BR = new BufferedReader(new FileReader(qFile));
  457.                 String line;
  458.                 try {
  459.                     while ((line = BR.readLine()) != null) {
  460.                         String sBool = line.split("=")[1];
  461.                         Boolean[] bBool = {sBool.split(",")[0].equalsIgnoreCase("true"),sBool.split(",")[1].equalsIgnoreCase("true"),sBool.split(",")[2].equalsIgnoreCase("true"),sBool.split(",")[3].equalsIgnoreCase("true")};
  462.                         quizMap.put(line.split("=")[0], bBool);
  463.                     }
  464.                 } catch (IOException ex) {
  465.                     log.log(Level.SEVERE, null, ex);
  466.                 }
  467.             } catch (FileNotFoundException ex) {
  468.                 log.log(Level.SEVERE, null, ex);
  469.             }
  470.         }
  471.     }
  472. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement