ソースを参照

Fix repair logic

nossr50 6 年 前
コミット
278efc8e37

+ 3 - 1
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;
 

+ 16 - 0
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);
+}

+ 8 - 1
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;
+    }
 }

+ 2 - 2
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();
     }
 

+ 0 - 30
src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairables/ConfigRepairables.java

@@ -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;
-
-}*/

+ 0 - 15
src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/ConfigRepairMastery.java

@@ -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;
-    }
-}

+ 25 - 0
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;
+    }
+}

+ 0 - 38
src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/RepairMasteryRetro.java

@@ -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;
-    }
-
-}

+ 0 - 32
src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/RepairMasterySettings.java

@@ -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;
-    }
-}

+ 0 - 29
src/main/java/com/gmail/nossr50/config/hocon/skills/repair/repairmastery/RepairMasteryStandard.java

@@ -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;
-}

+ 3 - 3
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;
     }
 

+ 30 - 2
src/main/java/com/gmail/nossr50/core/SkillPropertiesManager.java

@@ -20,12 +20,12 @@ public class SkillPropertiesManager {
     private HashMap<SubSkillType, Double> maxChanceMap;
     private HashMap<SubSkillType, Double> staticActivationChanceMap;
     private HashMap<SubSkillType, Integer> maxBonusLevelMap;
-    private HashMap<SubSkillType, Double> maxBonusPercentage;
+    private HashMap<SubSkillType, Double> 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 {

+ 0 - 19
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;
-    }
 }

+ 27 - 43
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;