Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package me.Ghappy.EstateRanker;
- import com.iConomy.iConomy;
- import com.iConomy.system.Account;
- import com.iConomy.system.Holdings;
- import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.HashMap;
- import java.util.List;
- import com.sk89q.worldedit.Vector;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.PrintWriter;
- import java.util.Iterator;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import me.Ghappy.EstateRanker.ERPlayer.Estate;
- import org.bukkit.ChatColor;
- import org.bukkit.Material;
- import org.bukkit.World;
- import org.bukkit.block.Block;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.plugin.Plugin;
- import org.bukkit.plugin.java.JavaPlugin;
- import org.bukkit.util.config.Configuration;
- import ru.tehkode.permissions.PermissionGroup;
- import ru.tehkode.permissions.PermissionManager;
- import ru.tehkode.permissions.bukkit.PermissionsEx;
- /**
- *
- * @author Mathias
- */
- public class EstateRanker extends JavaPlugin{
- private static final Logger log = Logger.getLogger("Minecraft");
- public String[] zoneIDs = {"officerestate" , "minerestate" , "builderestate" , "traderestate", "default"};
- private List<String> tmp = Arrays.asList("officer", "miner", "builder", "trader");
- public String[] strEstates = {"default", "trader", "banker", "entrepreneur", "treasurer", "miner", "driller", "explorer", "excavator", "officer", "sergeant", "captain", "enforcer", "builder", "constructor", "architect", "creator"};
- public String[] capsEstates = {"Default", "Trader", "Banker", "Entrepreneur", "Treasurer", "Miner", "Driller", "Explorer", "Excavator", "Officer", "Sergeant", "Captain", "Enforcer", "Builder", "Constructor", "Architect", "Creator"};
- public String[] strLvl4 = {"treasurer", "enforcer", "creator", "excavator"};
- public String[] strLvl3 = {"entrepreneur", "captain", "explorer", "architect"};
- public String[] strLvl2 = {"banker", "sergeant", "driller", "constructor"};
- public String[] strLvl1 = {"trader", "officer", "miner", "builder"};
- public String[] strOfficer = {"officer", "sergeant", "captain", "enforcer"};
- public String[] strMiner = {"miner", "driller", "explorer", "excavator"};
- public String[] strTrader = {"trader", "banker", "entrepreneur", "treasurer"};
- public String[] strBuilder = {"builder", "constructor", "architect", "creator"};
- public final HashMap<Player, ArrayList<Block>> CMUsers = new HashMap<Player, ArrayList<Block>>();
- public final HashMap<String, Boolean[]> quizMap = new HashMap<String, Boolean[]>();
- public WorldGuardPlugin worldguard = null;
- public iConomy iCon = null;
- public List<String> zIDs = Arrays.asList(zoneIDs);
- public List<String> lEst = Arrays.asList(strEstates);
- public List<String> cEst = Arrays.asList(capsEstates);
- public List<String> lvl4 = Arrays.asList(strLvl4);
- public List<String> lvl3 = Arrays.asList(strLvl3);
- public List<String> lvl2 = Arrays.asList(strLvl2);
- public List<String> lvl1 = Arrays.asList(strLvl1);
- public List<String> officer = Arrays.asList(strOfficer);
- public List<String> miner = Arrays.asList(strMiner);
- public List<String> trader = Arrays.asList(strTrader);
- public List<String> builder = Arrays.asList(strBuilder);
- public boolean canAfford = false;
- private Configuration config;
- PermissionManager Permissions;
- private void setupPermissions() {
- if(getServer().getPluginManager().getPlugin("PermissionsEx") != null){
- Permissions = PermissionsEx.getPermissionManager();
- log.info("[EstateRanker] PermissionsEx found!");
- } else {
- log.info("[EstateRanker] PermissionsEx not found!");
- }
- }
- private void setupWorldGuard(){
- Plugin test = this.getServer().getPluginManager().getPlugin("WorldGuard");
- if(test != null){
- worldguard = (WorldGuardPlugin)getServer().getPluginManager().getPlugin("WorldGuard");
- log.info("[EstateRanker] WorldGuard detected :)!");
- } else {
- log.info("[EstateRanker] WorldGuard not found :(, Disabling plugin!");
- this.setEnabled(false);
- }
- }
- private void setupiConomy(){
- Plugin test = this.getServer().getPluginManager().getPlugin("iConomy");
- if(test != null){
- iCon = (iConomy)getServer().getPluginManager().getPlugin("iConomy");
- log.info("[EstateRanker] iConomy detected :)!");
- } else {
- log.info("[EstateRanker] iConomy not found :(");
- }
- }
- public void onDisable() {
- writeFiles();
- log.info("[EstateRanker] EstateRanker Disabled");
- }
- public void onEnable() {
- readFiles();
- setupPermissions();
- setupWorldGuard();
- setupiConomy();
- log.info("[EstateRanker] EstateRanker is now Enabled! :)");
- }
- @Override
- public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
- List<String> strIDs;
- Player player = (Player)sender;
- if(cmd.getName().equalsIgnoreCase("rankup")){
- ERPlayer newPlayer = new ERPlayer(player, this);
- String thisEstate = newPlayer.getEstate();
- if(!newPlayer.isAtGod()) return true;
- if(args.length > 0){
- if(args[0].equalsIgnoreCase("accept")){
- if(newPlayer.canLevel()){
- levelUp(player, thisEstate, newPlayer.getNextEstate());
- } else {
- player.sendMessage("Please use " + ChatColor.GREEN + "/RankUp Info");
- }
- } else if(args[0].equalsIgnoreCase("decline")){
- return true;
- } else if(args[0].equalsIgnoreCase("info")){
- if(newPlayer.canLevel()){
- String cEstate = cEst.get(lEst.indexOf(thisEstate));
- player.sendMessage(ChatColor.DARK_AQUA + "~ Creation Nation RankUp ~");
- player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
- player.sendMessage("Your current estate is: " + newPlayer.EstateColor() + cEstate);
- player.sendMessage("The next level in your estate is: " + newPlayer.EstateColor() + cEst.get(lEst.indexOf(newPlayer.getNextEstate())));
- player.sendMessage(" ");
- player.sendMessage("LevelUp cost: " + ChatColor.YELLOW + newPlayer.rankUpPrice() + " CN");
- player.sendMessage("Current CN: " + ChatColor.YELLOW + newPlayer.getCurrentCN() + " CN");
- player.sendMessage("To accept the levelup, type " + ChatColor.GREEN + "/RankUp Accept" + ChatColor.WHITE + " and the cost will be automaticly charged");
- player.sendMessage("For info about changing Estates, visit the God of the given Estate");
- player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
- return true;
- } else {
- if(lvl4.contains(thisEstate)){
- player.sendMessage(ChatColor.DARK_AQUA + "~ Creation Nation RankUp ~");
- player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
- player.sendMessage("You are currently level 4 in your estate");
- player.sendMessage("Please speak to an Admin for information on leveling up further");
- player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
- return true;
- } else if(thisEstate.equalsIgnoreCase("default")){
- player.sendMessage(ChatColor.DARK_AQUA + "~ Creation Nation RankUp ~");
- player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
- player.sendMessage("You currently have no estate");
- player.sendMessage("You can choose from one of these 4 starter estates:");
- player.sendMessage(ChatColor.GREEN + "Miner" + ChatColor.WHITE + ", " + ChatColor.GOLD + "Trader" + ChatColor.WHITE + ", " + ChatColor.BLUE + "Officer" + ChatColor.WHITE + ", " + ChatColor.DARK_GRAY + "Builder");
- player.sendMessage(" ");
- player.sendMessage("Cost: " + ChatColor.YELLOW + newPlayer.rankUpPrice() + " CN & Estate quiz completion");
- player.sendMessage("Current CN: " + ChatColor.YELLOW + newPlayer.getCurrentCN() + " CN");
- player.sendMessage("To get your estate, type " + ChatColor.GREEN + "/RankUp Start <Estate>" + ChatColor.WHITE + " and the cost will be automaticly charged");
- player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
- return true;
- } else {
- player.sendMessage(ChatColor.DARK_RED + "Could not determine your current estate");
- return true;
- }
- }
- } else if(args[0].equalsIgnoreCase("start")){
- if(!thisEstate.equalsIgnoreCase("default")){
- player.sendMessage(ChatColor.DARK_RED + "This command is for people who dont yet have an Estate");
- return true;
- }
- if(args.length != 2){
- player.sendMessage("The syntax for this command is:");
- player.sendMessage(ChatColor.GREEN + "/RankUp Start <Builder/Trader/Miner/Officer>");
- return true;
- } else {
- if(lvl1.contains(args[1].toLowerCase())){
- if(!newPlayer.isAtSpecificGod(args[1].toLowerCase())){
- player.sendMessage(ChatColor.RED + "You need to be in the presence of the " + cEst.get(lEst.indexOf(args[1])) + " Estate god to do this");
- return true;
- }
- firstEstate(player, args[1].toLowerCase());
- return true;
- } else {
- player.sendMessage("The syntax for this command is:");
- player.sendMessage(ChatColor.GREEN + "/RankUp Start <Builder/Trader/Miner/Officer>");
- return true;
- }
- }
- }
- } else {
- player.sendMessage("Use " + ChatColor.GREEN + "/RankUp Info " + ChatColor.WHITE + "for information on leveling up");
- return true;
- }
- } else if(cmd.getName().equalsIgnoreCase("qc")){
- if(args.length < 1){
- player.sendMessage(ChatColor.RED + "Correct usage: /QC [Estate]");
- return true;
- }
- strIDs = null;
- strIDs = worldguard.getGlobalRegionManager().get(player.getWorld()).getApplicableRegionsIDs(new Vector(player.getLocation().getX(), player.getLocation().getY(), player.getLocation().getZ()));
- if(args[0].equalsIgnoreCase("trader")){
- if(strIDs.contains("traderquiz")){
- if(!quizMap.containsKey(player.getName().toLowerCase())){
- quizMap.put(player.getName().toLowerCase(), new Boolean[]{false, false, false, false});
- }
- if(quizMap.get(player.getName().toLowerCase())[0]){
- player.sendMessage(ChatColor.RED + "You have already completed this Quiz");
- }
- Boolean[] oldBool = quizMap.get(player.getName().toLowerCase());
- Boolean[] newBool = {true, oldBool[1], oldBool[2], oldBool[3]};
- quizMap.remove(player.getName().toLowerCase());
- quizMap.put(player.getName().toLowerCase(), newBool);
- player.sendMessage(ChatColor.YELLOW + "Congratulations! " + ChatColor.GOLD + "Trader" + ChatColor.WHITE + " quiz completed");
- }
- } else if(args[0].equalsIgnoreCase("officer")){
- if(strIDs.contains("officerquiz")){
- if(!quizMap.containsKey(player.getName().toLowerCase())){
- quizMap.put(player.getName().toLowerCase(), new Boolean[]{false, false, false, false});
- }
- if(quizMap.get(player.getName().toLowerCase())[1]){
- player.sendMessage(ChatColor.RED + "You have already completed this Quiz");
- }
- Boolean[] oldBool = quizMap.get(player.getName().toLowerCase());
- Boolean[] newBool = {oldBool[0], true, oldBool[2], oldBool[3]};
- quizMap.remove(player.getName().toLowerCase());
- quizMap.put(player.getName().toLowerCase(), newBool);
- player.sendMessage(ChatColor.YELLOW + "Congratulations! " + ChatColor.BLUE + "Officer" + ChatColor.WHITE + " quiz completed");
- }
- } else if(args[0].equalsIgnoreCase("miner")){
- if(strIDs.contains("minerquiz")){
- if(!quizMap.containsKey(player.getName().toLowerCase())){
- quizMap.put(player.getName().toLowerCase(), new Boolean[]{false, false, false, false});
- }
- if(quizMap.get(player.getName().toLowerCase())[2]){
- player.sendMessage(ChatColor.RED + "You have already completed this Quiz");
- }
- Boolean[] oldBool = quizMap.get(player.getName().toLowerCase());
- Boolean[] newBool = {oldBool[0], oldBool[1], true, oldBool[3]};
- quizMap.remove(player.getName().toLowerCase());
- quizMap.put(player.getName().toLowerCase(), newBool);
- player.sendMessage(ChatColor.YELLOW + "Congratulations! " + ChatColor.GREEN + "Miner" + ChatColor.WHITE + " quiz completed");
- }
- } else if(args[0].equalsIgnoreCase("builder")){
- if(strIDs.contains("builderquiz")){
- if(!quizMap.containsKey(player.getName().toLowerCase())){
- quizMap.put(player.getName().toLowerCase(), new Boolean[]{false, false, false, false});
- }
- if(quizMap.get(player.getName().toLowerCase())[3]){
- player.sendMessage(ChatColor.RED + "You have already completed this Quiz");
- }
- Boolean[] oldBool = quizMap.get(player.getName().toLowerCase());
- Boolean[] newBool = {oldBool[0], oldBool[1], oldBool[2], true};
- quizMap.remove(player.getName().toLowerCase());
- quizMap.put(player.getName().toLowerCase(), newBool);
- player.sendMessage(ChatColor.YELLOW + "Congratulations! " + ChatColor.DARK_GRAY + "Builder" + ChatColor.WHITE + " quiz completed");
- }
- } else if(args[0].equalsIgnoreCase("check")){
- if(args.length != 2){
- player.sendMessage(ChatColor.YELLOW + "Usage: /QC Check [Player]");
- return true;
- }
- if(quizMap.containsKey(args[1].toLowerCase())){
- player.sendMessage(ChatColor.YELLOW + "QuizCompletetions by " + ChatColor.DARK_AQUA + args[1] + ":");
- player.sendMessage(ChatColor.GOLD + "TraderQuiz: " + ChatColor.WHITE + quizMap.get(args[1].toLowerCase())[0].toString());
- player.sendMessage(ChatColor.BLUE + "OfficerQuiz: " + ChatColor.WHITE + quizMap.get(args[1].toLowerCase())[1].toString());
- player.sendMessage(ChatColor.GREEN + "MinerQuiz: " + ChatColor.WHITE + quizMap.get(args[1].toLowerCase())[2].toString());
- player.sendMessage(ChatColor.DARK_GRAY + "BuilderQuiz: " + ChatColor.WHITE + quizMap.get(args[1].toLowerCase())[3].toString());
- } else {
- player.sendMessage(ChatColor.YELLOW + "User: " + args[1] + " has not completed any quizzes");
- }
- return true;
- }
- } else if(cmd.getName().equalsIgnoreCase("RankChange")){
- ERPlayer nPlayer = new ERPlayer(player, this);
- if(!nPlayer.isAtGodExcept()){
- player.sendMessage(ChatColor.RED + "You need to be in the presence of the Estate god of the estate you wish to change into");
- }
- if(nPlayer.getEstate() == null || nPlayer.getEstate().equalsIgnoreCase("default")){
- player.sendMessage(ChatColor.RED + "Invalid estate for an estate change");
- return true;
- }
- if(args[0].equalsIgnoreCase("info")){
- if(nPlayer.getApplicableGod() != null){
- Estate god = nPlayer.getApplicableGod();
- if(nPlayer.hasUsedChange(god)){
- player.sendMessage(ChatColor.RED + "You have already used up your available changes to this god");
- return true;
- }
- player.sendMessage(ChatColor.DARK_AQUA + "~ Creation Nation RankChange ~");
- player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
- player.sendMessage("Your current Estate is: " + nPlayer.EstateColor() + cEst.get(lEst.indexOf(nPlayer.getEstate())));
- player.sendMessage("Your new Estate would be: " + nPlayer.EstateColor(god) + god.toString());
- player.sendMessage(" ");
- player.sendMessage("Cost: " + ChatColor.YELLOW + nPlayer.changePrice() + ChatColor.WHITE + " & Completion of the " + nPlayer.EstateColor(god) + god.toString() + ChatColor.WHITE + " Quiz");
- player.sendMessage("Current CN: " + ChatColor.YELLOW + nPlayer.getCurrentCN() + ChatColor.WHITE + " CN");
- player.sendMessage("To accept this change, type " + ChatColor.GREEN + "'/RankChange Accept'");
- player.sendMessage("For info about ranking up, use " + ChatColor.GREEN + "'/RankUp Info'");
- player.sendMessage(ChatColor.GOLD + "--------------------------------------------");
- }
- }
- }
- return true;
- }
- public void levelUp(Player p, String Estate, String nextEstate){
- ERPlayer erp = new ERPlayer(p, this);
- Holdings acc = iCon.getAccount(p.getName()).getHoldings();
- double costCN = erp.rankUpPrice();
- if(acc.hasEnough(costCN) || acc.hasOver(costCN)){
- acc.subtract(costCN);
- List<PermissionGroup> newGroups = new ArrayList<PermissionGroup>();
- PermissionGroup[] cGroups = Permissions.getUser(p.getName()).getGroups();
- for(int i = 0; i < cGroups.length; i++){
- if(cGroups[i].getName().equalsIgnoreCase(Estate)){
- newGroups.add(Permissions.getGroup(nextEstate));
- } else {
- newGroups.add(cGroups[i]);
- }
- }
- PermissionGroup[] nGroups = (PermissionGroup[]) newGroups.toArray();
- Permissions.getUser(p.getName()).setGroups(nGroups);
- Permissions.getUser(p.getName()).save();
- p.sendMessage("Congratulations, your rankUp was succesful");
- p.sendMessage("Your new rank: " + erp.EstateColor() + cEst.get(lEst.indexOf(nextEstate)));
- int CCode;
- if(miner.contains(Estate)){
- CCode = ChatColor.GREEN.getCode();
- } else if(officer.contains(Estate)){
- CCode = ChatColor.BLUE.getCode();
- } else if(builder.contains(Estate)){
- CCode = ChatColor.DARK_GRAY.getCode();
- } else if(trader.contains(Estate)){
- CCode = ChatColor.GOLD.getCode();
- } else {
- CCode = ChatColor.DARK_AQUA.getCode();
- }
- 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 + "!");
- } else {
- p.sendMessage(ChatColor.DARK_RED + "Insufficient CN to level up");
- return;
- }
- return;
- }
- public void firstEstate(Player player, String estate){
- // officer, miner, builder, trader
- ERPlayer newPlayer = new ERPlayer(player, this);
- Holdings acc = iCon.getAccount(player.getName()).getHoldings();
- int costCN = newPlayer.rankUpPrice();
- if(!quizMap.containsKey(player.getName().toLowerCase())){
- player.sendMessage(ChatColor.RED + "You need to complete your estates Quiz in order to do this");
- return;
- }
- if(officer.contains(estate)){
- if(!quizMap.get(player.getName().toLowerCase())[1]){
- player.sendMessage(ChatColor.RED + "You must complete the officers quiz first");
- return;
- }
- if(!estate.equalsIgnoreCase(strOfficer[0])){
- player.sendMessage(ChatColor.DARK_RED + "You need to be in the " + estate + " RankUp area to do this");
- return;
- }
- } else if (miner.contains(estate)) {
- if(!quizMap.get(player.getName().toLowerCase())[2]){
- player.sendMessage(ChatColor.RED + "You must complete the miners quiz first");
- return;
- }
- if(!estate.equalsIgnoreCase(strMiner[0])){
- player.sendMessage(ChatColor.DARK_RED + "You need to be in the " + estate + " RankUp area to do this");
- return;
- }
- } else if (builder.contains(estate)) {
- if(!quizMap.get(player.getName().toLowerCase())[3]){
- player.sendMessage(ChatColor.RED + "You must complete the builders quiz first");
- return;
- }
- if(!estate.equalsIgnoreCase(strBuilder[0])){
- player.sendMessage(ChatColor.DARK_RED + "You need to be in the " + estate + " RankUp area to do this");
- return;
- }
- } else if (trader.contains(estate)) {
- if(!quizMap.get(player.getName().toLowerCase())[0]){
- player.sendMessage(ChatColor.RED + "You must complete the traders quiz first");
- return;
- }
- if(!estate.equalsIgnoreCase(strTrader[0])){
- player.sendMessage(ChatColor.DARK_RED + "You need to be in the " + estate + " RankUp area to do this");
- return;
- }
- }
- if(!acc.hasEnough(costCN)){
- player.sendMessage(ChatColor.DARK_RED + "Insufficient CN found");
- return;
- }
- try{
- Permissions.getUser(player.getName()).setGroups(new PermissionGroup[]{PermissionsEx.getPermissionManager().getGroup(estate)});
- acc.subtract(costCN);
- player.sendMessage(ChatColor.YELLOW + "Congratulations, your new estate is " + estate);
- }catch(Exception ex){
- player.sendMessage(ChatColor.RED + "Error occured while applying estate, please contact Happy_G or an Admin for help");
- }
- PermissionsEx.getPermissionManager().reset();
- }
- public void writeFiles(){
- if(!this.getDataFolder().exists()) {
- this.getDataFolder().mkdir();
- }
- String path = this.getDataFolder().getPath();
- File qFile = new File(path + "\\quizCompletions.txt");
- if(!qFile.exists()) try {
- qFile.createNewFile();
- } catch (IOException ex) {
- log.log(Level.SEVERE, null, ex);
- }
- try {
- FileWriter outFile = new FileWriter(qFile);
- PrintWriter out = new PrintWriter(outFile);
- Iterator it = quizMap.entrySet().iterator();
- while(it.hasNext()){
- String Name;
- Name = it.next().toString().split("=")[0];
- out.println(Name + "=" + quizMap.get(Name)[0].toString() + "," + quizMap.get(Name)[1].toString() + "," + quizMap.get(Name)[2].toString() + "," + quizMap.get(Name)[3].toString());
- }
- out.flush();
- out.close();
- } catch (IOException ex) {
- log.info("[EstateRanker] WARNING: Failed to write QuizCompletes to file");
- }
- }
- public void readFiles(){
- if(!this.getDataFolder().exists()){
- this.getDataFolder().mkdir();
- return;
- }
- BufferedReader BR = null;
- File qFile = new File(this.getDataFolder().getPath() + "\\quizCompletions.txt");
- if(!qFile.exists()){
- return;
- }
- if(qFile.canRead()){
- try {
- BR = new BufferedReader(new FileReader(qFile));
- String line;
- try {
- while ((line = BR.readLine()) != null) {
- String sBool = line.split("=")[1];
- Boolean[] bBool = {sBool.split(",")[0].equalsIgnoreCase("true"),sBool.split(",")[1].equalsIgnoreCase("true"),sBool.split(",")[2].equalsIgnoreCase("true"),sBool.split(",")[3].equalsIgnoreCase("true")};
- quizMap.put(line.split("=")[0], bBool);
- }
- } catch (IOException ex) {
- log.log(Level.SEVERE, null, ex);
- }
- } catch (FileNotFoundException ex) {
- log.log(Level.SEVERE, null, ex);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement