mirror of
				https://github.com/mcMMO-Dev/mcMMO.git
				synced 2025-11-04 11:03:43 +01:00 
			
		
		
		
	Fix repair logic
This commit is contained in:
		@@ -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;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
}
 | 
			
		||||
@@ -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,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();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 | 
			
		||||
}*/
 | 
			
		||||
@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -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;
 | 
			
		||||
}
 | 
			
		||||
@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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,12 +151,24 @@ 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 {
 | 
			
		||||
        if(staticActivationChanceMap.get(subSkillType) == null)
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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,13 +95,32 @@ 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;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user