diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/axes/ConfigAxesCriticalStrikes.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/axes/ConfigAxesCriticalStrikes.java index 7e49e17cf..c297c0a28 100644 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/axes/ConfigAxesCriticalStrikes.java +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/axes/ConfigAxesCriticalStrikes.java @@ -1,7 +1,9 @@ package com.gmail.nossr50.config.hocon.skills.axes; import com.gmail.nossr50.config.ConfigConstants; -import com.gmail.nossr50.datatypes.skills.properties.*; +import com.gmail.nossr50.datatypes.skills.properties.AbstractDamageProperty; +import com.gmail.nossr50.datatypes.skills.properties.AbstractMaxBonusLevel; +import com.gmail.nossr50.datatypes.skills.properties.DamageProperty; import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/mining/ConfigMiningDoubleDrops.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/mining/ConfigMiningDoubleDrops.java new file mode 100644 index 000000000..67cf9cd8e --- /dev/null +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/mining/ConfigMiningDoubleDrops.java @@ -0,0 +1,16 @@ +package com.gmail.nossr50.config.hocon.skills.mining; + +import com.gmail.nossr50.config.ConfigConstants; +import com.gmail.nossr50.datatypes.skills.properties.AbstractMaxBonusLevel; +import com.gmail.nossr50.datatypes.skills.properties.MaxBonusLevel; +import ninja.leaping.configurate.objectmapping.Setting; +import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; + +@ConfigSerializable +public class ConfigMiningDoubleDrops { + @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = ConfigConstants.MAX_CHANCE_FIELD_DESCRIPTION) + private double maxChance = 100.0; + + @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME) + private MaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(100); +} diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/mining/ConfigMiningSubskills.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/mining/ConfigMiningSubskills.java index 115ae0e09..79fad7b0f 100644 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/mining/ConfigMiningSubskills.java +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/mining/ConfigMiningSubskills.java @@ -7,9 +7,16 @@ import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; public class ConfigMiningSubskills { @Setting(value = "Blast-Mining", comment = "Settings for Blast Mining") - public ConfigMiningBlastMining blastMining = new ConfigMiningBlastMining(); + private ConfigMiningBlastMining blastMining = new ConfigMiningBlastMining(); + + @Setting(value = "Double-Drops") + private ConfigMiningDoubleDrops doubleDrops = new ConfigMiningDoubleDrops(); public ConfigMiningBlastMining getBlastMining() { return blastMining; } + + public ConfigMiningDoubleDrops getDoubleDrops() { + return doubleDrops; + } } \ No newline at end of file diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/ConfigRepair.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/ConfigRepair.java index 5f5af48f2..a97c5b929 100644 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/ConfigRepair.java +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/ConfigRepair.java @@ -2,7 +2,7 @@ package com.gmail.nossr50.config.hocon.skills.repair; import com.gmail.nossr50.config.ConfigConstants; import com.gmail.nossr50.config.hocon.skills.repair.general.ConfigRepairGeneral; -import com.gmail.nossr50.config.hocon.skills.repair.repairmastery.ConfigRepairMastery; +import com.gmail.nossr50.config.hocon.skills.repair.repairmastery.ConfigRepairRepairMastery; import com.gmail.nossr50.config.hocon.skills.repair.subskills.ConfigRepairSubSkills; import com.gmail.nossr50.skills.repair.repairables.Repairable; import ninja.leaping.configurate.objectmapping.Setting; @@ -98,7 +98,7 @@ public class ConfigRepair { return repairSubSkills; } - public ConfigRepairMastery getRepairMastery() { + public ConfigRepairRepairMastery getRepairMastery() { return repairSubSkills.getRepairMastery(); } diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairables/ConfigRepairables.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairables/ConfigRepairables.java deleted file mode 100644 index 17420af63..000000000 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairables/ConfigRepairables.java +++ /dev/null @@ -1,30 +0,0 @@ -/* -package com.gmail.nossr50.config.hocon.skills.repair.repairables; - -import com.gmail.nossr50.datatypes.skills.ItemType; -import ninja.leaping.configurate.objectmapping.Setting; -import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; -import org.bukkit.Material; - -@ConfigSerializable -public class ConfigRepairables { - - @Setting(value = "Item-Material") - private Material itemMaterial; - - @Setting(value = "Item-Used-To-Repair") - private Material repairMaterial; - - @Setting(value = "Minimum-Quantity-Required-For-Repair") - private int minimumQuantity; - - @Setting(value = "Minimum-Level-Required-For-Repair") - private int minimumLevel; - - @Setting(value = "Repair-Item-Category") - private ItemType repairItemType; - - @Setting(value = "XP-Multiplier") - private double xpMultiplier; - -}*/ diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/ConfigRepairMastery.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/ConfigRepairMastery.java deleted file mode 100644 index c59495859..000000000 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/ConfigRepairMastery.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gmail.nossr50.config.hocon.skills.repair.repairmastery; - -import ninja.leaping.configurate.objectmapping.Setting; -import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; - -@ConfigSerializable -public class ConfigRepairMastery { - - @Setting(value = "Settings") - private RepairMasterySettings settings = new RepairMasterySettings(); - - public RepairMasterySettings getSettings() { - return settings; - } -} \ No newline at end of file diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/ConfigRepairRepairMastery.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/ConfigRepairRepairMastery.java new file mode 100644 index 000000000..d59122a00 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/ConfigRepairRepairMastery.java @@ -0,0 +1,25 @@ +package com.gmail.nossr50.config.hocon.skills.repair.repairmastery; + +import com.gmail.nossr50.config.ConfigConstants; +import com.gmail.nossr50.datatypes.skills.properties.AbstractMaxBonusLevel; +import com.gmail.nossr50.datatypes.skills.properties.MaxBonusLevel; +import ninja.leaping.configurate.objectmapping.Setting; +import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; + +@ConfigSerializable +public class ConfigRepairRepairMastery { + + @Setting(value = ConfigConstants.MAX_BONUS_PERCENTAGE_FIELD_NAME) + private double maxBonusPercentage = 200.0D; + + @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME, comment = ConfigConstants.MAX_BONUS_LEVEL_DESCRIPTION) + private MaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(100); + + public double getMaxBonusPercentage() { + return maxBonusPercentage; + } + + public MaxBonusLevel getMaxBonusLevel() { + return maxBonusLevel; + } +} \ No newline at end of file diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/RepairMasteryRetro.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/RepairMasteryRetro.java deleted file mode 100644 index 2297f7433..000000000 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/RepairMasteryRetro.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.gmail.nossr50.config.hocon.skills.repair.repairmastery; - -import ninja.leaping.configurate.objectmapping.Setting; -import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; - -@ConfigSerializable -public class RepairMasteryRetro { - - public static final int MAX_BONUS_LEVEL_DEFAULT = 1000; - public static final double MAX_BONUS_PERCENTAGE = 200.0D; - public static final String PLAYER_LEVEL_FIFTY_PERCENT_EXAMPLE = "500"; - public static final String MAX_BONUS_LEVEL_EXAMPLE = "1000"; - public static final String BONUS_PERCENTAGE_EXAMPLE = "100%"; - - @Setting(value = "Max-Bonus-Level", comment = "At the max bonus level a player will have full benefits from this scaling skill." + - "\nSkills dynamically adjust their rewards to match the max bonus level, you can think of it as a curve that calculates what bonuses " + - "\n a player should have based on how far they are from the max bonus level value, and the other parameters used for the scaling of the sub-skill." + - "\n-- NOTE: This setting is only valid for retro level scaling. --" + - "\nDefault value: " + MAX_BONUS_LEVEL_DEFAULT) - private int maxBonusLevel = MAX_BONUS_LEVEL_DEFAULT; - - @Setting(value = "Max-Bonus-Percentage", comment = "This is the maximum benefit for additional repair amount from this skill when the player reaches \"Max-Bonus-Level\"." + - "\nRepair Mastery's bonus to repair is dynamically adjusted based on the players level difference from the \"Max-Bonus-Level\", you can think of it as a curve where reaching \"Max-Bonus-Level\" is the peak." + - "\nAs an example, imagine \"Standard-Mode-Max-Bonus-Percentage\" was set to " + MAX_BONUS_PERCENTAGE + " and the \"Max-Bonus-Level\" was " + MAX_BONUS_LEVEL_EXAMPLE + "," + - "\n and the player was level " + PLAYER_LEVEL_FIFTY_PERCENT_EXAMPLE + " for this skill, that would give the player " + BONUS_PERCENTAGE_EXAMPLE + "% added to the repair amount on the item before other bonuses." + - "\n-- NOTE: This setting is only valid for retro level scaling. --" + - "\nDefault value: " + MAX_BONUS_PERCENTAGE) - private double maxBonusPercentage = MAX_BONUS_PERCENTAGE; - - public int getMaxBonusLevel() { - return maxBonusLevel; - } - - public double getMaxBonusPercentage() { - return maxBonusPercentage; - } - -} \ No newline at end of file diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/RepairMasterySettings.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/RepairMasterySettings.java deleted file mode 100644 index d36bd824e..000000000 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/RepairMasterySettings.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.gmail.nossr50.config.hocon.skills.repair.repairmastery; - -import ninja.leaping.configurate.objectmapping.Setting; -import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; - -@ConfigSerializable -public class RepairMasterySettings { - - @Setting(value = "Standard-Mode-Scaling-Settings", comment = "Standard mode is the new default level scaling for mcMMO" + - "\nMost skills in standard mode scale from 1-100, maxing out at 100." + - "\nStandard scaling is fairly new, and it replaced the previous scaling method which is now known as RetroMode scaling." + - "\nYou are either using Standard or Retro mode on your server, which one you are using is setup in the leveling config file." + - "\nSettings from here are only applied when using Standard mode scaling.") - private RepairMasteryStandard standard = new RepairMasteryStandard(); - - @Setting(value = "Retro-Mode-Scaling-Settings", comment = "Retro mode is the optional level scaling for mcMMO, which was replaced by Standard scaling." + - "\nMost skills in retro mode scale from 1-1000, maxing out at 1000." + - "\nRetro scaling was the main method of scaling in mcMMO for almost 8 years," + - "\n and it was replaced in 2.1 with the new 1-100 scaling method which is known as Standard mode scaling." + - "\nYou can still use Retro Mode scaling, it will never be removed from mcMMO so do not worry about using it!" + - "\nYou are either using Standard or Retro mode on your server, which one you are using is setup in the leveling config file." + - "\nSettings from here are only applied when using Retro mode scaling.") - private RepairMasteryRetro retro = new RepairMasteryRetro(); - - public RepairMasteryStandard getStandard() { - return standard; - } - - public RepairMasteryRetro getRetro() { - return retro; - } -} \ No newline at end of file diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/RepairMasteryStandard.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/RepairMasteryStandard.java deleted file mode 100644 index 896d0426b..000000000 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/RepairMasteryStandard.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gmail.nossr50.config.hocon.skills.repair.repairmastery; - -import ninja.leaping.configurate.objectmapping.Setting; -import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; - -@ConfigSerializable -public class RepairMasteryStandard { - - public static final int MAX_BONUS_LEVEL_DEFAULT = 100; - public static final double MAX_BONUS_PERCENTAGE = 200.0D; - public static final String PLAYER_LEVEL_FIFTY_PERCENT_EXAMPLE = "50"; - public static final String MAX_BONUS_LEVEL_EXAMPLE = "100"; - public static final String BONUS_PERCENTAGE_EXAMPLE = "100%"; - - @Setting(value = "Max-Bonus-Level", comment = "At the max bonus level a player will have full benefits from this scaling skill." + - "\nSkills dynamically adjust their rewards to match the max bonus level, you can think of it as a curve that calculates what bonuses " + - "\n a player should have based on how far they are from the max bonus level value, and the other parameters used for the scaling of the sub-skill." + - "\n-- NOTE: This setting is only valid for standard level scaling. --" + - "\nDefault value: " + MAX_BONUS_LEVEL_DEFAULT) - public int maxBonusLevel = MAX_BONUS_LEVEL_DEFAULT; - - @Setting(value = "Max-Bonus-Percentage", comment = "This is the maximum benefit for additional repair amount from this skill when the player reaches \"Max-Bonus-Level\"." + - "\nRepair Mastery's bonus to repair is dynamically adjusted based on the players level difference from the \"Max-Bonus-Level\", you can think of it as a curve where reaching \"Max-Bonus-Level\" is the peak." + - "\nAs an example, imagine \"Standard-Mode-Max-Bonus-Percentage\" was set to " + MAX_BONUS_PERCENTAGE + " and the \"Max-Bonus-Level\" was " + MAX_BONUS_LEVEL_EXAMPLE + "," + - "\n and the player was level " + PLAYER_LEVEL_FIFTY_PERCENT_EXAMPLE + " for this skill, that would give the player " + BONUS_PERCENTAGE_EXAMPLE + "% added to the repair amount on the item before other bonuses." + - "\n-- NOTE: This setting is only valid for standard level scaling. --" + - "\nDefault value: " + MAX_BONUS_PERCENTAGE) - public double maxBonusPercentage = MAX_BONUS_PERCENTAGE; -} \ No newline at end of file diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/subskills/ConfigRepairSubSkills.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/subskills/ConfigRepairSubSkills.java index b9869c159..94a173244 100644 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/subskills/ConfigRepairSubSkills.java +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/repair/subskills/ConfigRepairSubSkills.java @@ -2,7 +2,7 @@ package com.gmail.nossr50.config.hocon.skills.repair.subskills; import com.gmail.nossr50.config.hocon.skills.repair.ConfigRepairArcaneForging; import com.gmail.nossr50.config.hocon.skills.repair.ConfigRepairSuperRepair; -import com.gmail.nossr50.config.hocon.skills.repair.repairmastery.ConfigRepairMastery; +import com.gmail.nossr50.config.hocon.skills.repair.repairmastery.ConfigRepairRepairMastery; import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; @@ -10,7 +10,7 @@ import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; public class ConfigRepairSubSkills { @Setting(value = "Repair-Mastery", comment = "Settings related to the repair mastery subskill") - private ConfigRepairMastery repairMastery = new ConfigRepairMastery(); + private ConfigRepairRepairMastery repairMastery = new ConfigRepairRepairMastery(); @Setting(value = "Super-Repair", comment = "Settings related to the super repair subskill") private ConfigRepairSuperRepair superRepair = new ConfigRepairSuperRepair(); @@ -18,7 +18,7 @@ public class ConfigRepairSubSkills { @Setting(value = "Arcane-Forging", comment = "Settings related to the arcane forging subskill") private ConfigRepairArcaneForging arcaneForging = new ConfigRepairArcaneForging(); - public ConfigRepairMastery getRepairMastery() { + public ConfigRepairRepairMastery getRepairMastery() { return repairMastery; } diff --git a/src/main/java/com/gmail/nossr50/core/SkillPropertiesManager.java b/src/main/java/com/gmail/nossr50/core/SkillPropertiesManager.java index 3d960f612..bc7c55e5e 100644 --- a/src/main/java/com/gmail/nossr50/core/SkillPropertiesManager.java +++ b/src/main/java/com/gmail/nossr50/core/SkillPropertiesManager.java @@ -20,12 +20,12 @@ public class SkillPropertiesManager { private HashMap maxChanceMap; private HashMap staticActivationChanceMap; private HashMap maxBonusLevelMap; - private HashMap maxBonusPercentage; + private HashMap maxBonusMap; public SkillPropertiesManager() { maxChanceMap = new HashMap<>(); maxBonusLevelMap = new HashMap<>(); - maxBonusPercentage = new HashMap<>(); + maxBonusMap = new HashMap<>(); staticActivationChanceMap = new HashMap<>(); } @@ -33,14 +33,30 @@ public class SkillPropertiesManager { maxBonusLevelMap.put(subSkillType, mcMMO.isRetroModeEnabled() ? maxBonusLevel.getRetroScaleValue() : maxBonusLevel.getStandardScaleValue()); } + public void registerMaxBonus(SubSkillType subSkillType, double maxBonus) { + this.maxBonusMap.put(subSkillType, maxBonus); + } + public void registerMaxChance(SubSkillType subSkillType, double maxChance) { maxChanceMap.put(subSkillType, maxChance); } + public void registerStaticChance(SubSkillType subSkillType, double staticChance) { + maxChanceMap.put(subSkillType, staticChance); + } + public double getMaxChance(SubSkillType subSkillType) { return maxChanceMap.get(subSkillType); } + public double getStaticChance(SubSkillType subSkillType) { + return staticActivationChanceMap.get(subSkillType); + } + + public double getMaxBonus(SubSkillType subSkillType) { + return maxBonusMap.get(subSkillType); + } + public double getMaxBonusLevel(SubSkillType subSkillType) { return maxBonusLevelMap.get(subSkillType); } @@ -135,11 +151,23 @@ public class SkillPropertiesManager { } private void attemptRegisterStaticChance(SubSkillType subSkillType, CommentedConfigurationNode childNode) { + try { + mcMMO.p.getLogger().info("Registering Static Chance for "+subSkillType.toString()); + Double staticChance = childNode.getValue(TypeToken.of(Double.class)); + registerStaticChance(subSkillType, staticChance); + } catch (ObjectMappingException e) { + } } private void attemptRegisterMaxBonusPercentage(SubSkillType subSkillType, CommentedConfigurationNode childNode) { + try { + mcMMO.p.getLogger().info("Registering MaxBonus for "+subSkillType.toString()); + Double maxChance = childNode.getValue(TypeToken.of(Double.class)); + registerMaxBonus(subSkillType, maxChance); + } catch (ObjectMappingException e) { + } } public double getStaticChanceProperty(SubSkillType subSkillType) throws InvalidStaticChance { diff --git a/src/main/java/com/gmail/nossr50/skills/repair/Repair.java b/src/main/java/com/gmail/nossr50/skills/repair/Repair.java index 6917283c9..97a8c2713 100644 --- a/src/main/java/com/gmail/nossr50/skills/repair/Repair.java +++ b/src/main/java/com/gmail/nossr50/skills/repair/Repair.java @@ -6,20 +6,9 @@ import org.bukkit.Material; public class Repair { private static Repair instance; private Material anvilMaterial; - private double repairMasteryMaxBonus; - private double repairMasteryMaxBonusLevel; public Repair() { anvilMaterial = mcMMO.getConfigManager().getConfigRepair().getRepairGeneral().getRepairAnvilMaterial(); - - //TODO: Replace this horrid shit - if (mcMMO.isRetroModeEnabled()) { - repairMasteryMaxBonus = mcMMO.getConfigManager().getConfigRepair().getRepairSubSkills().getRepairMastery().getSettings().getRetro().getMaxBonusPercentage(); - repairMasteryMaxBonusLevel = mcMMO.getConfigManager().getConfigRepair().getRepairSubSkills().getRepairMastery().getSettings().getRetro().getMaxBonusLevel(); - } else { - repairMasteryMaxBonus = mcMMO.getConfigManager().getConfigRepair().getRepairSubSkills().getRepairMastery().getSettings().getStandard().maxBonusPercentage; - repairMasteryMaxBonusLevel = mcMMO.getConfigManager().getConfigRepair().getRepairSubSkills().getRepairMastery().getSettings().getStandard().maxBonusLevel; - } } public static Repair getInstance() { @@ -32,12 +21,4 @@ public class Repair { public Material getAnvilMaterial() { return anvilMaterial; } - - public double getRepairMasteryMaxBonus() { - return repairMasteryMaxBonus; - } - - public double getRepairMasteryMaxBonusLevel() { - return repairMasteryMaxBonusLevel; - } } diff --git a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java index 56f137f72..44ba4f9c6 100644 --- a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java +++ b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java @@ -1,6 +1,5 @@ package com.gmail.nossr50.skills.repair; -import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; @@ -64,7 +63,7 @@ public class RepairManager extends SkillManager { Player player = getPlayer(); Repairable repairable = mcMMO.getRepairableManager().getRepairable(item.getType()); - if (item.getItemMeta().isUnbreakable()) { + if(item.getItemMeta() != null && item.getItemMeta().isUnbreakable()) { mcMMO.getNotificationManager().sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE_FAILED, "Anvil.Unbreakable"); return; } @@ -96,12 +95,31 @@ public class RepairManager extends SkillManager { //Find the first compatible repair material for (Material repairMaterialCandidate : repairable.getRepairMaterials()) { for (ItemStack is : player.getInventory().getContents()) { + if(is == null) + continue; //Ignore IntelliJ this can be null + + //Match to repair material if (is.getType() == repairMaterialCandidate) { - if (is.getItemMeta().getLore().isEmpty()) { + //Check for item meta + if(is.getItemMeta() != null) { + //Check for lore + if(is.getItemMeta().getLore() != null) { + if(is.getItemMeta().getLore().isEmpty()) { + //Lore is empty so this item is fine + repairMaterial = repairMaterialCandidate; + break; + } else { + foundNonBasicMaterial = true; + } + } else { + //No lore so this item is fine + repairMaterial = repairMaterialCandidate; + break; + } + } else { + //No Item Meta so this item is fine repairMaterial = repairMaterialCandidate; break; - } else { - foundNonBasicMaterial = true; } } } @@ -203,7 +221,7 @@ public class RepairManager extends SkillManager { * @return The chance of keeping the enchantment */ public double getKeepEnchantChance() { - return AdvancedConfig.getInstance().getArcaneForgingKeepEnchantsChance(getArcaneForgingRank()); + return mcMMO.getConfigManager().getConfigRepair().getArcaneForging().getKeepEnchantChanceMap().get(getArcaneForgingRank()); } /** @@ -212,43 +230,9 @@ public class RepairManager extends SkillManager { * @return The chance of the enchantment being downgraded */ public double getDowngradeEnchantChance() { - return AdvancedConfig.getInstance().getArcaneForgingDowngradeChance(getArcaneForgingRank()); + return mcMMO.getConfigManager().getConfigRepair().getArcaneForging().getDowngradeChanceMap().get(getArcaneForgingRank()); } - /** - * Gets chance of keeping enchantment during repair. - * - * @return The chance of keeping the enchantment - */ - /*public double getKeepEnchantChance() { - int skillLevel = getSkillLevel(); - - for (Tier tier : Tier.values()) { - if (skillLevel >= tier.getLevel()) { - return tier.getKeepEnchantChance(); - } - } - - return 0; - }*/ - - /** - * Gets chance of enchantment being downgraded during repair. - * - * @return The chance of the enchantment being downgraded - */ - /*public double getDowngradeEnchantChance() { - int skillLevel = getSkillLevel(); - - for (Tier tier : Tier.values()) { - if (skillLevel >= tier.getLevel()) { - return tier.getDowngradeEnchantChance(); - } - } - - return 100; - }*/ - /** * Computes repair bonuses. * @@ -262,8 +246,8 @@ public class RepairManager extends SkillManager { if (Permissions.isSubSkillEnabled(player, SubSkillType.REPAIR_REPAIR_MASTERY) && RankUtils.hasUnlockedSubskill(getPlayer(), SubSkillType.REPAIR_REPAIR_MASTERY)) { - double maxBonusCalc = Repair.getInstance().getRepairMasteryMaxBonus() / 100.0D; - double skillLevelBonusCalc = (Repair.getInstance().getRepairMasteryMaxBonus() / Repair.getInstance().getRepairMasteryMaxBonusLevel()) * (getSkillLevel() / 100.0D); + double maxBonusCalc = mcMMO.getDynamicSettingsManager().getSkillPropertiesManager().getMaxBonus(SubSkillType.REPAIR_REPAIR_MASTERY) / 100.0D; + double skillLevelBonusCalc = (maxBonusCalc / mcMMO.getDynamicSettingsManager().getSkillPropertiesManager().getMaxBonusLevel(SubSkillType.REPAIR_REPAIR_MASTERY)) * (getSkillLevel() / 100.0D); double bonus = repairAmount * Math.min(skillLevelBonusCalc, maxBonusCalc); repairAmount += bonus;