Guest User

Untitled

a guest
Jan 18th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 23.22 KB | None | 0 0
  1. package me.Whatshiywl.heroesskilltree;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import java.util.logging.Level;
  9. import java.util.logging.Logger;
  10.  
  11. import org.bukkit.Bukkit;
  12. import org.bukkit.ChatColor;
  13. import org.bukkit.command.Command;
  14. import org.bukkit.command.CommandSender;
  15. import org.bukkit.configuration.ConfigurationSection;
  16. import org.bukkit.configuration.file.FileConfiguration;
  17. import org.bukkit.configuration.file.YamlConfiguration;
  18. import org.bukkit.entity.Player;
  19. import org.bukkit.plugin.PluginDescriptionFile;
  20. import org.bukkit.plugin.PluginManager;
  21. import org.bukkit.plugin.java.JavaPlugin;
  22.  
  23. import com.herocraftonline.heroes.Heroes;
  24. import com.herocraftonline.heroes.characters.Hero;
  25. import com.herocraftonline.heroes.characters.classes.HeroClass;
  26. import com.herocraftonline.heroes.characters.effects.Effect;
  27. import com.herocraftonline.heroes.characters.skill.Skill;
  28. import com.herocraftonline.heroes.characters.skill.SkillConfigManager;
  29.  
  30. public class HeroesSkillTree extends JavaPlugin {
  31.  
  32.     public final Logger logger = Logger.getLogger("Minecraft");
  33.     public final EventListener HEventListener = new EventListener(this);
  34.  
  35.     public HeroesSkillTree plugin;
  36.     public Heroes heroes = (Heroes)Bukkit.getServer().getPluginManager().getPlugin("Heroes");
  37.     public List<Skill> SkillStrongParents = new ArrayList<Skill>();
  38.     public List<Skill> SkillWeakParents = new ArrayList<Skill>();
  39.     public Boolean hasHeroes;
  40.  
  41.     private FileConfiguration playerConfig = null;
  42.     private FileConfiguration heroesClassConfig = null;
  43.     private File playerConfigFile = null;
  44.     private File heroesClassConfigFile = null;
  45.  
  46.     @Override
  47.     public void onDisable()
  48.     {
  49.         savePlayerConfig();
  50.         for(Player player : Bukkit.getServer().getOnlinePlayers()) savePlayer(player);
  51.         PluginDescriptionFile pdfFile = this.getDescription();
  52.         this.logger.info(pdfFile.getName() + " Has Been Disabled!");
  53.     }
  54.  
  55.     @Override
  56.     public void onEnable()
  57.     {
  58.         plugin = this;
  59.         PluginDescriptionFile pdfFile = this.getDescription();
  60.         this.logger.info("[" + pdfFile.getName() + "] Version " + pdfFile.getVersion() + " Has Been Enabled!");
  61.         PluginManager pm = getServer().getPluginManager();
  62.         getConfig().options().copyDefaults(true);
  63.         saveConfig();
  64.         getPlayerConfig().options().copyDefaults(true);
  65.         savePlayerConfig();
  66.         final Heroes heroes = (Heroes)plugin.getServer().getPluginManager().getPlugin("Heroes");
  67.         if(heroes.isEnabled())
  68.         {
  69.             pm.registerEvents(this.HEventListener, this);
  70.         }
  71.     }
  72.  
  73.     public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
  74.  
  75.         final Heroes heroes = (Heroes)plugin.getServer().getPluginManager().getPlugin("Heroes");
  76.         if(sender instanceof Player){
  77.             Player player = (Player) sender;
  78.             Hero hero = heroes.getCharacterManager().getHero(player);
  79.  
  80.             //SKILLUP
  81.             if(commandLabel.equalsIgnoreCase("skillup")){
  82.                 if(!player.hasPermission("skilltree.up")){
  83.                     player.sendMessage(ChatColor.RED + "You don't have enough permissions!");
  84.                     return false;
  85.                 }
  86.                 if(args.length > 0){
  87.                     if(hero.hasAccessToSkill(args[0])){
  88.                         Skill skill = heroes.getSkillManager().getSkill(args[0]);
  89.                         int i;
  90.                         if(args.length > 1) i = Integer.parseInt(args[1]);
  91.                         else i = 1;
  92.                         if(getPlayerPoints(hero) >= i){
  93.                             if(getSkillMaxLevel(hero, skill) >= getSkillLevel(hero, skill) + i){
  94.                                 if(isLocked(hero, skill)){
  95.                                     if(canUnlock(hero, skill)){
  96.                                         if(!player.hasPermission("skilltree.override.usepoints")) setPlayerPoints(hero, getPlayerPoints(hero) - i);
  97.                                         setSkillLevel(hero, skill, getSkillLevel(hero, skill) + i);
  98.                                         savePlayerConfig();
  99.                                         hero.addEffect(new Effect(skill, skill.getName()));
  100.                                         player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA + "You have unlocked " + skill.getName() + "! Level: " + getSkillLevel(hero, skill));
  101.                                     }
  102.                                     else player.sendMessage(ChatColor.RED + "You can't unlock this skill! /skillinfo (skill) to see requirements.");
  103.                                 }
  104.                                 else{
  105.                                     if(!player.hasPermission("skilltree.override.usepoints")) setPlayerPoints(hero, getPlayerPoints(hero) - i);
  106.                                     setSkillLevel(hero, skill, getSkillLevel(hero, skill) + i);
  107.                                     savePlayerConfig();
  108.                                     if(isMastered(hero, skill)) player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.GREEN + "You have mastered " + skill.getName() + " at level " + getSkillLevel(hero, skill) + "!");
  109.                                     else player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA + skill.getName() +
  110.                                             " leveled up: " + getSkillLevel(hero, skill) + "/" + getSkillMaxLevel(hero, skill));
  111.                                 }
  112.                             }
  113.                             else player.sendMessage(ChatColor.RED + "This skill has already been mastered.");
  114.                         }
  115.                         else player.sendMessage(ChatColor.RED + "You don't have enough SkillPoints.");
  116.                     }
  117.                     else if(heroes.getSkillManager().getSkills().contains(args[0])) player.sendMessage(ChatColor.RED + "You don't have this skill");
  118.                     else player.sendMessage(ChatColor.RED + "This skill doesn't exist");
  119.                 }
  120.                 else player.sendMessage(ChatColor.RED + "No skill given: /skillup (skill) [amount]");
  121.             }
  122.  
  123.             //SKILLDOWN
  124.             else if(commandLabel.equalsIgnoreCase("skilldown")){
  125.                 if(!player.hasPermission("skilltree.down")){
  126.                     player.sendMessage(ChatColor.RED + "You don't have enough permissions!");
  127.                     return false;
  128.                 }
  129.                 if(args.length > 0){
  130.                     if(hero.hasAccessToSkill(args[0])){
  131.                         Skill skill = heroes.getSkillManager().getSkill(args[0]);
  132.                         int i;
  133.                         if(args.length > 1) i = Integer.parseInt(args[1]);
  134.                         else i = 1;
  135.                         if(getSkillLevel(hero, skill) >= i){
  136.                             if(getSkillLevel(hero, skill) - i < 1){
  137.                                 if(!player.hasPermission("skilltree.lock")){
  138.                                     player.sendMessage(ChatColor.RED + "You don't have enough permissions!");
  139.                                     return false;
  140.                                 }
  141.                                 if(!player.hasPermission("skilltree.override.usepoints")) setPlayerPoints(hero, getPlayerPoints(hero) + i);
  142.                                 setSkillLevel(hero, skill, getSkillLevel(hero, skill) - i);
  143.                                 hero.removeEffect(hero.getEffect(skill.getName()));
  144.                                 savePlayerConfig();
  145.                                 player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA + "You have locked " + skill.getName() + "!");
  146.                             }
  147.                             else{
  148.                                 if(!player.hasPermission("skilltree.down")){
  149.                                     player.sendMessage(ChatColor.RED + "You don't have enough permissions!");
  150.                                     return false;
  151.                                 }
  152.                                 if(!player.hasPermission("skilltree.override.usepoints")) setPlayerPoints(hero, getPlayerPoints(hero) + i);
  153.                                 setSkillLevel(hero, skill, getSkillLevel(hero, skill) - i);
  154.                                 savePlayerConfig();
  155.                                 player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA + skill.getName() +
  156.                                         "leveled down: " + getSkillLevel(hero, skill) + "/" + getSkillMaxLevel(hero, skill));
  157.                             }
  158.                         }
  159.                         else player.sendMessage(ChatColor.RED + "This skill is not a high enough level");
  160.                     }
  161.                     else if(heroes.getSkillManager().getSkills().contains(args[0])) player.sendMessage(ChatColor.RED + "You don't have this skill");
  162.                     else player.sendMessage(ChatColor.RED + "This skill doesn't exist");
  163.                 }
  164.                 else player.sendMessage(ChatColor.RED + "No skill given: /skilldown (skill) [amount]");
  165.             }
  166.  
  167.             //SKILLINFO
  168.             else if(commandLabel.equalsIgnoreCase("skillinfo")){
  169.                 if(player.hasPermission("skilltree.info")){
  170.                     if(args.length > 0){
  171.                         if(hero.hasAccessToSkill(args[0])){
  172.                             Skill skill = heroes.getSkillManager().getSkill(args[0]);
  173.                             player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA + skill.getName() + "'s info:");
  174.                             if(isLocked(hero, skill)) player.sendMessage(ChatColor.RED + "This skill is currently locked!");
  175.                             else if(isMastered(hero, skill)) player.sendMessage(ChatColor.GREEN + "This skill has been mastered at level " + getSkillLevel(hero, skill) + "!");
  176.                             else{
  177.                                 player.sendMessage(ChatColor.AQUA + "Level: " + getSkillLevel(hero, skill) + "/" + getSkillMaxLevel(hero, skill));
  178.                             }
  179.                             if(isLocked(hero, skill)){
  180.                                 if(getStrongParentSkills(hero, skill) != null || getWeakParentSkills(hero, skill) != null){
  181.                                     player.sendMessage(ChatColor.AQUA + "Requirements:");
  182.                                     if(getStrongParentSkills(hero, skill) != null) player.sendMessage(ChatColor.AQUA + "Strong: " + getStrongParentSkills(hero, skill).toString());
  183.                                     if(getWeakParentSkills(hero, skill) != null) player.sendMessage(ChatColor.AQUA + "Weak: " + getWeakParentSkills(hero, skill).toString());
  184.                                 }
  185.                             }
  186.                             if(player.hasPermission("skilltree.points")) player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA + "You currently have " + getPlayerPoints(hero) + " SkillPoints.");
  187.                         }
  188.                         else if(heroes.getSkillManager().getSkills().contains(args[0])) player.sendMessage(ChatColor.RED + "You don't have this skill");
  189.                         else player.sendMessage(ChatColor.RED + "This skill doesn't exist");
  190.                     }
  191.                     else player.sendMessage(ChatColor.RED + "/skillinfo (skill)");
  192.                 }
  193.                 else player.sendMessage(ChatColor.RED + "You don't have enough permissions!");
  194.             }
  195.  
  196.             //SKILLPOINTS
  197.             else if(commandLabel.equalsIgnoreCase("skillpoints")){
  198.                 if(player.hasPermission("skilltree.points")) player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA + "You currently have " + getPlayerPoints(hero) + " SkillPoints.");
  199.                 else player.sendMessage(ChatColor.RED + "You don't have enough permissions!");
  200.             }
  201.  
  202.             //SKILLADMIN
  203.             else if(commandLabel.equalsIgnoreCase("skilladmin")){
  204.                 if(args.length > 0){
  205.                     if(args[0].equalsIgnoreCase("clear")){
  206.                         if(player.hasPermission("skilladmin.clear")){
  207.                             if(args.length == 2){
  208.                                 if(Bukkit.getPlayer(args[1]) != null){
  209.                                     Hero thero = heroes.getCharacterManager().getHero(Bukkit.getPlayer(args[1]));
  210.                                     setPlayerPoints(thero, 0);
  211.                                     player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA +
  212.                                             "You have cleared " + args[1] + "'s SkillPoints.");
  213.                                 }
  214.                                 else player.sendMessage(ChatColor.RED + "Sorry, " + args[1] + " is not online.");
  215.                             }
  216.                             else setPlayerPoints(hero, 0);
  217.                             player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA +
  218.                                     "You have reset " + args[1] + "'s SkillPoints.");
  219.                         }
  220.                         else player.sendMessage(ChatColor.RED + "You don't have enough permissions!");
  221.                     }
  222.                     else if(args[0].equalsIgnoreCase("reset")){
  223.                         if(player.hasPermission("skilladmin.reset")){
  224.                             if(args.length == 2){
  225.                                 if(Bukkit.getPlayer(args[1]) != null){
  226.                                     resetPlayer(Bukkit.getPlayer(args[1]));
  227.                                     player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA +
  228.                                             "You have reset " + args[1]);
  229.                                 }
  230.                                 else player.sendMessage(ChatColor.RED + "Sorry, " + args[1] + " is not online.");
  231.                             }
  232.                             else{
  233.                                 resetPlayer(player);
  234.                                 player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA + "You have reset yourself.");
  235.                             }
  236.                         }
  237.                         else player.sendMessage(ChatColor.RED + "You don't have enough permissions!");
  238.                     }
  239.                     else if(args.length > 1){
  240.                         if(args[0].equalsIgnoreCase("set")){
  241.                             if(player.hasPermission("skilladmin.set")){
  242.                                 if(args.length > 2){
  243.                                     if(Bukkit.getPlayer(args[2]) != null){
  244.                                         Hero thero = heroes.getCharacterManager().getHero(Bukkit.getPlayer(args[2]));
  245.                                         setPlayerPoints(thero, Integer.parseInt(args[1]));
  246.                                         player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA + "You have set " +
  247.                                                 args[2] + "'s SkillPoints to " + Integer.parseInt(args[1]) + ".");
  248.                                     }
  249.                                     else player.sendMessage(ChatColor.RED + "Sorry, " + args[2] + " is not online.");
  250.                                 }
  251.                                 else{
  252.                                     setPlayerPoints(hero, Integer.parseInt(args[1]));
  253.                                     player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA +
  254.                                             "You have set your SkillPoints to " + Integer.parseInt(args[1]) + ".");
  255.                                 }
  256.                             }
  257.                             else player.sendMessage(ChatColor.RED + "You don't have enough permissions!");
  258.                         }
  259.                         else if(args[0].equalsIgnoreCase("give")){
  260.                             if(player.hasPermission("skilladmin.give")){
  261.                                 if(args.length > 2){
  262.                                     if(Bukkit.getPlayer(args[2]) != null){
  263.                                         Hero thero = heroes.getCharacterManager().getHero(Bukkit.getPlayer(args[2]));
  264.                                         setPlayerPoints(thero, getPlayerPoints(thero) + Integer.parseInt(args[1]));
  265.                                         player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA + "You have given " +
  266.                                                 Integer.parseInt(args[1]) + " SkillPoint(s) to " + args[2] + ".");
  267.                                     }
  268.                                     else player.sendMessage(ChatColor.RED + "Sorry, " + args[2] + " is not online.");
  269.                                 }
  270.                                 else{
  271.                                     setPlayerPoints(hero, getPlayerPoints(hero) + Integer.parseInt(args[1]));
  272.                                     player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA + "You have removed " +
  273.                                             Integer.parseInt(args[1]) + " SkillPoint(s) to yourself.");
  274.                                 }
  275.                             }
  276.                             else player.sendMessage(ChatColor.RED + "You don't have enough permissions!");
  277.                         }
  278.                         else if(args[0].equalsIgnoreCase("remove")){
  279.                             if(player.hasPermission("skilladmin.remove")){
  280.                                 if(args.length > 2){
  281.                                     if(Bukkit.getPlayer(args[2]) != null){
  282.                                         Hero thero = heroes.getCharacterManager().getHero(Bukkit.getPlayer(args[2]));
  283.                                         setPlayerPoints(thero, getPlayerPoints(thero) - Integer.parseInt(args[1]));
  284.                                         player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA + "You have removed " +
  285.                                             Integer.parseInt(args[1]) + " SkillPoint(s) from " + args[2] + ".");
  286.                                     }
  287.                                     else player.sendMessage(ChatColor.RED + "Sorry, " + args[2] + " is not online.");
  288.                                 }
  289.                                 else{
  290.                                     setPlayerPoints(hero, getPlayerPoints(hero) - Integer.parseInt(args[1]));
  291.                                     player.sendMessage(ChatColor.GOLD + "[HST] " + ChatColor.AQUA + "You have removed " +
  292.                                             Integer.parseInt(args[1]) + " SkillPoint(s) from yourself.");
  293.                                 }
  294.                             }
  295.                             else player.sendMessage(ChatColor.RED + "You don't have enough permissions!");
  296.                         }
  297.                         else player.sendMessage(ChatColor.RED + "/skilladmin (set/give/remove/clear/reset)");
  298.                     }
  299.                     else player.sendMessage(ChatColor.RED + "Not enough arguments: /skilladmin <command> (amount) [player]");
  300.                 }
  301.                 else player.sendMessage(ChatColor.RED + "/skilladmin <command> (amount) [player]");
  302.             }
  303.         }
  304.         return false;
  305.     }
  306.  
  307.     public ConfigurationSection loadPlayer(Player player){
  308.         Hero hero = heroes.getCharacterManager().getHero(player);
  309.         //Creates new player section
  310.         if(!getPlayerConfig().contains(player.getName())) getPlayerConfig().createSection(player.getName());
  311.         //Creates new classes section
  312.         if(!getPlayerConfig().getConfigurationSection(player.getName()).contains("classes"))
  313.             getPlayerConfig().getConfigurationSection(player.getName()).createSection("classes");
  314.         //Creates new skills section
  315.         if(!getPlayerConfig().getConfigurationSection(player.getName()).contains("skills"))
  316.             getPlayerConfig().getConfigurationSection(player.getName()).createSection("skills");
  317.         //Creates new classes to player's class section
  318.         if(!getPlayerConfig().getConfigurationSection(player.getName() + ".classes").contains(hero.getHeroClass().getName())){
  319.             getPlayerConfig().getConfigurationSection(player.getName() + ".classes").set(hero.getHeroClass().getName(), hero.getLevel() - 1);
  320.         }//Creates new skills to player's section
  321.         for(Skill skill : heroes.getSkillManager().getSkills()){
  322.             if(hero.hasAccessToSkill(skill)){
  323.                 if(!getPlayerConfig().getConfigurationSection(player.getName() + ".skills").contains(skill.getName())){
  324.                     getPlayerConfig().getConfigurationSection(player.getName() + ".skills").set(skill.getName(), 0);
  325.                 }
  326.             }
  327.         }
  328.         savePlayerConfig();
  329.         return getPlayerConfig().getConfigurationSection(player.getName());
  330.     }
  331.  
  332.     public ConfigurationSection getPlayerClassConfig(Player player){
  333.         return loadPlayer(player).getConfigurationSection("classes");
  334.     }
  335.  
  336.     public ConfigurationSection getPlayerSkillConfig(Player player){
  337.         return loadPlayer(player).getConfigurationSection("skills");
  338.     }
  339.  
  340.     public void recalcPlayer(Player player, HeroClass heroclass){
  341.         Hero hero = heroes.getCharacterManager().getHero(player);
  342.         //If /hero reset
  343.         if(heroclass.isDefault()) resetPlayer(player);
  344.         //If the player already has that class
  345.         else if(!(hero.getLevel(heroclass) > 0)){
  346.             //If the class hasn't been registered yet, register it!
  347.             if(!getPlayerClassConfig(player).contains(heroclass.getName())){
  348.                 getPlayerClassConfig(player).createSection(heroclass.getName());
  349.                 int i = 0;
  350.                 for(Skill skill : heroes.getSkillManager().getSkills()) if(heroclass.hasSkill(skill.getName())){
  351.                     i += getSkillLevel(hero, skill);
  352.                 }
  353.                 if(hero.getLevel(heroclass) - 1 - i < 0) getPlayerClassConfig(player).set(heroclass.getName(), 0);
  354.                 else getPlayerClassConfig(player).set(heroclass.getName(), hero.getLevel(heroclass) - 1 - i);
  355.             }
  356.         }
  357.         //If it's a new class
  358.         else{
  359.             getPlayerClassConfig(player).createSection(heroclass.getName());
  360.             getPlayerClassConfig(player).set(heroclass.getName(), 0);
  361.             for(Skill skill : heroes.getSkillManager().getSkills()) if(heroclass.hasSkill(skill.getName())){
  362.                 if(!getPlayerSkillConfig(player).contains(skill.getName())){
  363.                     getPlayerConfig().getConfigurationSection(player.getName() + ".skills").set(skill.getName(), 0);
  364.                 }
  365.             }
  366.         }
  367.         savePlayerConfig();
  368.     }
  369.  
  370.     public void savePlayer(Player player){
  371.         Hero hero = heroes.getCharacterManager().getHero(player);
  372.         setPlayerPoints(hero, getPlayerPoints(hero));
  373.         for(Skill skill : heroes.getSkillManager().getSkills()){
  374.             if(hero.hasAccessToSkill(skill)){
  375.                 if(!getPlayerSkillConfig(player).contains(skill.getName())){
  376.                     //Creates new skills to player's section
  377.                     getPlayerSkillConfig(player).set(skill.getName(), 0);
  378.                 }
  379.             }
  380.         }
  381.         savePlayerConfig();
  382.     }
  383.  
  384.     public void resetPlayer(Player player){
  385.         for(Skill skill : heroes.getSkillManager().getSkills()){
  386.             if(getPlayerConfig().getConfigurationSection(player.getName() + ".skills").contains(skill.getName())){
  387.                 getPlayerConfig().getConfigurationSection(player.getName() + ".skills").set(skill.getName(), null);
  388.             }
  389.         }
  390.         for(HeroClass heroclass : heroes.getClassManager().getClasses()){
  391.             if(heroclass.isDefault()){
  392.                 getPlayerConfig().getConfigurationSection(player.getName() + ".classes").set(heroclass.getName(), 0);
  393.                 for(Skill skill : heroes.getSkillManager().getSkills()) if(heroclass.hasSkill(skill.getName())){
  394.                     getPlayerConfig().getConfigurationSection(player.getName() + ".skills").set(skill.getName(), 0);
  395.                 }
  396.             }
  397.             else if(getPlayerConfig().getConfigurationSection(player.getName() + ".classes").contains(heroclass.getName())){
  398.                 getPlayerConfig().getConfigurationSection(player.getName() + ".classes").set(heroclass.getName(), null);
  399.             }
  400.         }
  401.         savePlayerConfig();
  402.     }
  403.  
  404.     public int getPlayerPoints(Hero hero){
  405.         return getPlayerClassConfig(hero.getPlayer()).getInt(hero.getHeroClass().getName());
  406.     }
  407.  
  408.     public void setPlayerPoints(Hero hero, int i){
  409.         getPlayerClassConfig(hero.getPlayer()).set(hero.getHeroClass().getName(), i);
  410.         if(getPlayerPoints(hero) < 0) getPlayerClassConfig(hero.getPlayer()).set(hero.getHeroClass().getName(), 0);
  411.         savePlayerConfig();
  412.     }
  413.  
  414.     public int getSkillLevel(Hero hero, Skill skill){
  415.         return getPlayerSkillConfig(hero.getPlayer()).getInt(skill.getName());
  416.     }
  417.  
  418.     public void setSkillLevel(Hero hero, Skill skill, int i){
  419.         getPlayerSkillConfig(hero.getPlayer()).set(skill.getName(), i);
  420.         savePlayerConfig();
  421.     }
  422.  
  423.     public int getSkillMaxLevel(Hero hero, Skill skill){
  424.         return (int) SkillConfigManager.getUseSetting(hero, skill, "max-level", 1, false);
  425.     }
  426.  
  427.     public List<String> getStrongParentSkills(Hero hero, Skill skill){
  428.         if((getHeroesClassConfig(hero.getHeroClass()).getConfigurationSection("permitted-skills." + skill.getName()).contains("parents")) &&
  429.             (getHeroesClassConfig(hero.getHeroClass()).getConfigurationSection("permitted-skills." + skill.getName() + ".parents").contains("strong"))){
  430.                 return getHeroesClassConfig(hero.getHeroClass()).
  431.                         getConfigurationSection("permitted-skills." + skill.getName() + ".parents").getStringList("strong");
  432.         }
  433.         else return null;
  434.     }
  435.  
  436.     public List<String> getWeakParentSkills(Hero hero, Skill skill){
  437.         if((getHeroesClassConfig(hero.getHeroClass()).getConfigurationSection("permitted-skills." + skill.getName()).contains("parents")) &&
  438.             (getHeroesClassConfig(hero.getHeroClass()).getConfigurationSection("permitted-skills." + skill.getName() + ".parents").contains("weak"))){
  439.                 return getHeroesClassConfig(hero.getHeroClass()).
  440.                         getConfigurationSection("permitted-skills." + skill.getName() + ".parents").getStringList("weak");
  441.         }
  442.         else return null;
  443.     }
  444.  
  445.     public boolean isLocked(Hero hero, Skill skill){ if(hero.hasAccessToSkill(skill)) return (getSkillLevel(hero, skill) <= 0); return true;}
  446.  
  447.     public boolean isMastered(Hero hero, Skill skill){ if(hero.hasAccessToSkill(skill)) return (getSkillLevel(hero, skill) >= getSkillMaxLevel(hero, skill)); return false;}
  448.  
  449.     public boolean canUnlock(Hero hero, Skill skill){
  450.         if(hero.hasAccessToSkill(skill) && (hero.canUseSkill(skill))){
  451.             if(getStrongParentSkills(hero, skill) == null && getWeakParentSkills(hero, skill) == null) return true;
  452.             else{
  453.                 if(getStrongParentSkills(hero, skill) != null){
  454.                     for(String name : getStrongParentSkills(hero, skill)){ if(!isMastered(hero, heroes.getSkillManager().getSkill(name))) return false;}
  455.                     if(getWeakParentSkills(hero, skill) == null) return true;
  456.                 }
  457.                 if(getWeakParentSkills(hero, skill) != null){
  458.                     for(String name : getWeakParentSkills(hero, skill)) if(isMastered(hero, heroes.getSkillManager().getSkill(name)))return true;
  459.                 }
  460.             }
  461.         }
  462.         return false;
  463.     }
  464.  
  465.     public void reloadPlayerConfig() {
  466.         if (playerConfigFile == null) {
  467.             playerConfigFile = new File(getDataFolder(), "players.yml");
  468.         }
  469.         playerConfig = YamlConfiguration.loadConfiguration(playerConfigFile);
  470.  
  471.         // Look for defaults in the jar
  472.         InputStream defConfigStream = this.getResource("players.yml");
  473.         if (defConfigStream != null) {
  474.             YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
  475.             playerConfig.setDefaults(defConfig);
  476.         }
  477.     }
  478.  
  479.     public FileConfiguration getPlayerConfig() {
  480.         if (playerConfig == null) {
  481.             this.reloadPlayerConfig();
  482.         }
  483.         return playerConfig;
  484.     }
  485.  
  486.     public void savePlayerConfig() {
  487.         if (playerConfig == null || playerConfigFile == null) {
  488.         return;
  489.         }
  490.         try {
  491.             getPlayerConfig().save(playerConfigFile);
  492.         } catch (IOException ex) {
  493.             this.getLogger().log(Level.SEVERE, "Could not save config to " + playerConfigFile, ex);
  494.         }
  495.     }
  496.  
  497.     public void reloadHeroesClassConfig(HeroClass HClass) {
  498.         if (heroesClassConfigFile == null) {
  499.             heroesClassConfigFile = new File(heroes.getDataFolder() + "/classes", HClass.getName() + ".yml");
  500.         }
  501.         heroesClassConfig = YamlConfiguration.loadConfiguration(heroesClassConfigFile);
  502.     }
  503.  
  504.     public FileConfiguration getHeroesClassConfig(HeroClass HClass) {
  505.         if (heroesClassConfig == null) {
  506.             this.reloadHeroesClassConfig(HClass);
  507.         }
  508.         return heroesClassConfig;
  509.     }
  510. }
Add Comment
Please, Sign In to add comment