diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/ConfigManager.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/ConfigManager.java index 0bbedea78..5dbf72d81 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/ConfigManager.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/ConfigManager.java @@ -51,7 +51,6 @@ import com.gmail.nossr50.datatypes.experience.FormulaType; import com.gmail.nossr50.datatypes.party.PartyFeature; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.properties.DamageProperty; -import com.gmail.nossr50.datatypes.skills.properties.MaxBonusLevel; import com.gmail.nossr50.datatypes.skills.subskills.taming.CallOfTheWildType; import com.gmail.nossr50.datatypes.skills.subskills.taming.TamingSummon; import com.gmail.nossr50.mcMMO; @@ -266,7 +265,6 @@ public final class ConfigManager { customSerializers.registerType(TypeToken.of(CustomXPPerk.class), new CustomXPPerkSerializer()); customSerializers.registerType(TypeToken.of(DamageProperty.class), new DamagePropertySerializer()); customSerializers.registerType(TypeToken.of(SkillRankProperty.class), new SkillRankPropertySerializer()); - customSerializers.registerType(TypeToken.of(MaxBonusLevel.class), new MaxBonusLevelSerializer()); customSerializers.registerType(TypeToken.of(PlayerNotificationSettings.class), new PlayerNotificationSerializer()); customSerializers.registerType(TypeToken.of(SoundSetting.class), new SoundSettingSerializer()); // customSerializers.registerType(TypeToken.of(ItemWildcards.class), new ItemWildcardSerializer()); @@ -483,17 +481,6 @@ public final class ConfigManager { return configRanks.getRootNode(); } - /** - * Checks if this plugin is using retro mode - * Retro mode is a 0-1000 skill system - * Standard mode is scaled for 1-100 - * - * @return true if retro mode is enabled - */ - public boolean isRetroMode() { - return getConfigLeveling().getConfigSectionLevelingGeneral().getConfigSectionLevelScaling().isRetroModeEnabled(); - } - public ConfigExperience getConfigExperience() { return configExperience.getConfig(); } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/serializers/MaxBonusLevelSerializer.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/serializers/MaxBonusLevelSerializer.java deleted file mode 100644 index 5345d65fb..000000000 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/serializers/MaxBonusLevelSerializer.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gmail.nossr50.config.serializers; - -import com.gmail.nossr50.datatypes.skills.properties.AbstractMaxBonusLevel; -import com.gmail.nossr50.datatypes.skills.properties.MaxBonusLevel; -import com.google.common.reflect.TypeToken; -import ninja.leaping.configurate.ConfigurationNode; -import ninja.leaping.configurate.objectmapping.ObjectMappingException; -import ninja.leaping.configurate.objectmapping.serialize.TypeSerializer; -import org.checkerframework.checker.nullness.qual.NonNull; -import org.checkerframework.checker.nullness.qual.Nullable; - -public class MaxBonusLevelSerializer implements TypeSerializer { - - public static final String STANDARD_NODE = "Standard-Max-Bonus-Level"; - public static final String RETRO_NODE = "Retro-Max-Bonus-Level"; - - @Nullable - @Override - public MaxBonusLevel deserialize(@NonNull TypeToken type, @NonNull ConfigurationNode value) throws ObjectMappingException { - int standard = value.getNode(STANDARD_NODE).getValue(TypeToken.of(Integer.class)); - int retro = value.getNode(RETRO_NODE).getValue(TypeToken.of(Integer.class)); - - AbstractMaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(standard, retro); - return maxBonusLevel; - } - - @Override - public void serialize(@NonNull TypeToken type, @Nullable MaxBonusLevel obj, @NonNull ConfigurationNode value) throws ObjectMappingException { - value.getNode(STANDARD_NODE).setValue(obj.getStandardScaleValue()); - value.getNode(RETRO_NODE).setValue(obj.getRetroScaleValue()); - } - -} diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/serializers/SkillRankPropertySerializer.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/serializers/SkillRankPropertySerializer.java index df55e4fa8..fc3608d42 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/serializers/SkillRankPropertySerializer.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/serializers/SkillRankPropertySerializer.java @@ -13,21 +13,17 @@ import java.util.Map; public class SkillRankPropertySerializer implements TypeSerializer { - private static final String STANDARD_RANK_UNLOCK_LEVEL_REQUIREMENTS = "Standard-Rank-Unlock-Level-Requirements"; - private static final String RETRO_RANK_UNLOCK_LEVEL_REQUIREMENTS = "Retro-Rank-Unlock-Level-Requirements"; + private static final String RANK_UNLOCK_LEVEL_REQUIREMENTS = "Standard-Rank-Unlock-Level-Requirements"; @Nullable @Override public SkillRankProperty deserialize(@NonNull TypeToken type, @NonNull ConfigurationNode value) throws ObjectMappingException { HashMap standardHashMap; - HashMap retroHashMap; try { - Map standardMap = value.getNode(STANDARD_RANK_UNLOCK_LEVEL_REQUIREMENTS).getValue(new TypeToken>() {}); - Map retroMap = value.getNode(RETRO_RANK_UNLOCK_LEVEL_REQUIREMENTS).getValue(new TypeToken>() {}); + Map standardMap = value.getNode(RANK_UNLOCK_LEVEL_REQUIREMENTS).getValue(new TypeToken>() {}); standardHashMap = new HashMap<>(standardMap); - retroHashMap = new HashMap<>(retroMap); } catch (ObjectMappingException e) { System.out.println("[mcMMO Deserializer Debug] Unable to deserialize rank property information from the config, make sure the ranks are correctly set in the config. You can delete the rank config to generate a new one if problems persist."); @@ -35,15 +31,13 @@ public class SkillRankPropertySerializer implements TypeSerializer type, @Nullable SkillRankProperty obj, @NonNull ConfigurationNode value) throws ObjectMappingException { - value.getNode(STANDARD_RANK_UNLOCK_LEVEL_REQUIREMENTS).setValue(obj.getStandardRanks()); - value.getNode(RETRO_RANK_UNLOCK_LEVEL_REQUIREMENTS).setValue(obj.getRetroRanks()); + value.getNode(RANK_UNLOCK_LEVEL_REQUIREMENTS).setValue(obj.getRanks()); } } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/ConfigMaxLevel.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/ConfigMaxLevel.java index 55170d36f..0d648ad66 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/ConfigMaxLevel.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/ConfigMaxLevel.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.skills; 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; @@ -11,9 +9,9 @@ public class ConfigMaxLevel { @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME, comment = "Max bonus level is the level a player needs to reach in this skill to receive maximum benefits, such as better RNG odds or otherwise." + "\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.") - private MaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(100); + private int maxBonusLevel = 1000; - public MaxBonusLevel getMaxBonusLevel() { + public int getMaxBonusLevel() { return maxBonusLevel; } } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/acrobatics/dodge/ConfigDodge.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/acrobatics/dodge/ConfigDodge.java index 2c0becdbf..f3ea06d03 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/acrobatics/dodge/ConfigDodge.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/acrobatics/dodge/ConfigDodge.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.skills.acrobatics.dodge; 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; @@ -22,25 +20,11 @@ public class ConfigDodge { "\nDefault value: " + DAMAGE_REDUCTION_DIVISOR_DEFAULT) private double damageReductionDivisor = DAMAGE_REDUCTION_DIVISOR_DEFAULT; - @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME, comment = "Max bonus level is the level a player needs to reach in this skill to receive maximum benefits, such as better RNG odds or otherwise." + - "\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.") - private MaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(100); - - @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = "The maximum success chance for this Sub-Skill." + - "\nA value of 100.0 would be equivalent to 100% chance of success." + - "\nPlayers only have Max-Success-Chance when their skill level has reached the maximum bonus level." + - "\nMax skill chance 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 \""+ConfigConstants.MAX_CHANCE_FIELD_NAME+"\" was set to " + FIFTY_PERCENT_EXAMPLE + " and the \""+ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME+"\" was " + MAX_BONUS_LEVEL_EXAMPLE + "," + - "\n and the player was level " + FIFTY_PERCENT_EXAMPLE + " for this skill, that would give the player " + ODDS_PERCENTAGE_EXAMPLE + " odds to succeed with this skill.") - private double chanceAtMaxSkill = CHANCE_AT_MAX_SKILL_DEFAULT; - - public MaxBonusLevel getMaxBonusLevel() { - return maxBonusLevel; - } + @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = ConfigConstants.MAX_CHANCE_FIELD_DESCRIPTION) + private double maxChance = 100.0; public double getChanceAtMaxSkill() { - return chanceAtMaxSkill; + return maxChance; } public double getDamageReductionDivisor() { diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/acrobatics/roll/ConfigRoll.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/acrobatics/roll/ConfigRoll.java index d13bcfeed..e32901511 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/acrobatics/roll/ConfigRoll.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/acrobatics/roll/ConfigRoll.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.skills.acrobatics.roll; 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; @@ -10,9 +8,6 @@ import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; public class ConfigRoll { public static final double ROLL_DAMAGE_THRESHOLD_DEFAULT = 7.0D; - public static final String FIFTY_PERCENT_EXAMPLE = "50"; - public static final String MAX_BONUS_LEVEL_EXAMPLE = "100"; - public static final String ODDS_PERCENTAGE_EXAMPLE = "25%"; public static final double CHANCE_AT_MAX_SKILL_DEFAULT = 100.0D; @Setting(value = "Damage-Threshold", comment = "Rolling will reduce up to this much damage." + @@ -24,24 +19,10 @@ public class ConfigRoll { return damageTheshold; } - @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME, comment = "Max bonus level is the level a player needs to reach in this skill to receive maximum benefits, such as better RNG odds or otherwise." + - "\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.") - private MaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(100); - - @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = "The maximum success chance for this Sub-Skill." + - "\nA value of 100.0 would be equivalent to 100% chance of success." + - "\nPlayers only have Max-Success-Chance when their skill level has reached the maximum bonus level." + - "\nMax skill chance 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 \""+ConfigConstants.MAX_CHANCE_FIELD_NAME+"\" was set to " + FIFTY_PERCENT_EXAMPLE + " and the \""+ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME+"\" was " + MAX_BONUS_LEVEL_EXAMPLE + "," + - "\n and the player was level " + FIFTY_PERCENT_EXAMPLE + " for this skill, that would give the player " + ODDS_PERCENTAGE_EXAMPLE + " odds to succeed with this skill.") - private double chanceAtMaxSkill = CHANCE_AT_MAX_SKILL_DEFAULT; - - public MaxBonusLevel getMaxBonusLevel() { - return maxBonusLevel; - } + @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = ConfigConstants.MAX_CHANCE_FIELD_DESCRIPTION) + private double maxChance = 100.0D; public double getChanceAtMaxSkill() { - return chanceAtMaxSkill; + return maxChance; } } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/archery/ConfigArcheryArrowRetrieval.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/archery/ConfigArcheryArrowRetrieval.java index cf0749122..7556df7ef 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/archery/ConfigArcheryArrowRetrieval.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/archery/ConfigArcheryArrowRetrieval.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.skills.archery; 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; @@ -12,14 +10,7 @@ public class ConfigArcheryArrowRetrieval { @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = ConfigConstants.MAX_CHANCE_FIELD_DESCRIPTION) private double maxChance = 100.0D; - @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME) - private MaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(100); - public double getMaxChance() { return maxChance; } - - public MaxBonusLevel getMaxBonusLevel() { - return maxBonusLevel; - } } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/archery/ConfigArcheryDaze.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/archery/ConfigArcheryDaze.java index 844c78301..b9845c86b 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/archery/ConfigArcheryDaze.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/archery/ConfigArcheryDaze.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.skills.archery; 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; @@ -15,9 +13,6 @@ public class ConfigArcheryDaze { + "\nDefault value: "+DAZE_MAX_CHANCE_DEFAULT) private double maxChance = DAZE_MAX_CHANCE_DEFAULT; - @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME) - private MaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(100); - @Setting(value = "Bonus-Damage", comment = "How much bonus damage is applied when daze is applied to a target." + "\nDefault value: "+DAZE_BONUS_DMG_DEFAULT) private double bonusDamage = DAZE_BONUS_DMG_DEFAULT; @@ -26,10 +21,6 @@ public class ConfigArcheryDaze { return maxChance; } - public MaxBonusLevel getMaxBonusLevel() { - return maxBonusLevel; - } - public double getDazeBonusDamage() { return bonusDamage; } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/axes/ConfigAxesCriticalStrikes.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/axes/ConfigAxesCriticalStrikes.java index 9c1d267a7..f72729318 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/axes/ConfigAxesCriticalStrikes.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/axes/ConfigAxesCriticalStrikes.java @@ -2,7 +2,6 @@ package com.gmail.nossr50.config.skills.axes; import com.gmail.nossr50.config.ConfigConstants; 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; @@ -12,18 +11,14 @@ public class ConfigAxesCriticalStrikes { private static final double MAX_ACTIVATION_CHANCE_DEFAULT = 37.50D; - @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = "This is max percentage chance that is used to determine whether or not the ability is successful." + - "\nA value of 50.0 would mean at most the ability can only have a 50% chance to work at max skill level.") - private double maxActivationChance = MAX_ACTIVATION_CHANCE_DEFAULT; - - @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME, comment = ConfigConstants.MAX_BONUS_LEVEL_DESCRIPTION) - private AbstractMaxBonusLevel maximumProgressionLevel = new AbstractMaxBonusLevel(100); + @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = ConfigConstants.MAX_CHANCE_FIELD_DESCRIPTION) + private double maxChance = MAX_ACTIVATION_CHANCE_DEFAULT; @Setting(value = "Damage-Modifiers", comment = "Damage dealt is multiplied by these values when this skill is successfully activated.") private DamageProperty damageProperty = new AbstractDamageProperty(1.5, 2.0); public double getMaxActivationChance() { - return maxActivationChance; + return maxChance; } public DamageProperty getDamageProperty() { diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismDoubleDrops.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismDoubleDrops.java index f286d0f08..078877171 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismDoubleDrops.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismDoubleDrops.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.skills.herbalism; 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; @@ -11,8 +9,4 @@ public class ConfigHerbalismDoubleDrops { @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/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismGreenThumb.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismGreenThumb.java index 5bd7f9bec..8dfa44de9 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismGreenThumb.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismGreenThumb.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.skills.herbalism; 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; @@ -11,8 +9,4 @@ public class ConfigHerbalismGreenThumb { @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/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismHylianLuck.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismHylianLuck.java index 46291e22f..af546136a 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismHylianLuck.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismHylianLuck.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.skills.herbalism; 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; @@ -11,8 +9,4 @@ public class ConfigHerbalismHylianLuck { @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = ConfigConstants.MAX_CHANCE_FIELD_DESCRIPTION) private double maxChance = 10.0; - - @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME) - private MaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(100); - } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismShroomThumb.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismShroomThumb.java index c7b37be90..36fe0d105 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismShroomThumb.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/herbalism/ConfigHerbalismShroomThumb.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.skills.herbalism; 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; @@ -12,7 +10,4 @@ public class ConfigHerbalismShroomThumb { @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = ConfigConstants.MAX_CHANCE_FIELD_DESCRIPTION) private double maxChance = 50.0; - @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME) - private MaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(100); - } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/mining/ConfigMiningDoubleDrops.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/mining/ConfigMiningDoubleDrops.java index 66be8fa93..cec0ddd12 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/mining/ConfigMiningDoubleDrops.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/mining/ConfigMiningDoubleDrops.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.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; @@ -11,9 +9,6 @@ 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); - @Setting(value = "Silk-Touch-Double-Drops", comment = "Allow silk touch to benefit from double drops.") private boolean allowSilkTouchDoubleDrops = true; diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/ranks/SkillRankProperty.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/ranks/SkillRankProperty.java index 819750803..96220ee83 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/ranks/SkillRankProperty.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/ranks/SkillRankProperty.java @@ -2,13 +2,14 @@ package com.gmail.nossr50.config.skills.ranks; import com.gmail.nossr50.api.exceptions.MissingSkillPropertyDefinition; import com.gmail.nossr50.datatypes.skills.properties.SkillProperty; +import com.gmail.nossr50.mcMMO; +import org.apache.logging.log4j.Level; import java.util.HashMap; public class SkillRankProperty implements SkillProperty { - private HashMap standardRanks; - private HashMap retroRanks; + private HashMap ranks; public SkillRankProperty(Integer... rankDefinitions) { initRankMaps(); @@ -16,88 +17,59 @@ public class SkillRankProperty implements SkillProperty { for(int x = 0; x < rankDefinitions.length; x++) { int curRank = x+1; - addStandardAndRetroRank(curRank, rankDefinitions[x]); + addRank(curRank, rankDefinitions[x]); } } - public SkillRankProperty(HashMap standardRanks, HashMap retroRanks) { - this.standardRanks = standardRanks; - this.retroRanks = retroRanks; + public SkillRankProperty(HashMap ranks) { + this.ranks = ranks; } /** - * Convenience method to add Standard and Retro at the same time for default initialization of values - * Only requires standard values be passed + * Fill in the rank map and mutate it by the cosmetic modifier * @param curRank the rank to fill in the value for - * @param standardValue the value of the rank in Standard + * @param rankValue the value of the rank in Standard */ - private void addStandardAndRetroRank(int curRank, int standardValue) { - //Retro will be equal to standards rank requirement multiplied by 10 unless that value is 1, in which case it will also be 1 - int retroValue = standardValue == 1 ? 1 : standardValue * 10; - + private void addRank(int curRank, int rankValue) { //Avoid negative numbers - if(standardValue < 0) { - standardRanks.put(curRank, 0); - retroRanks.put(curRank, 0); - } else { - standardRanks.put(curRank, standardValue); - retroRanks.put(curRank, retroValue); - } - } + rankValue = Math.max(0, rankValue); - /** - * Convenience method to add Standard and Retro at the same time - * @param curRank the rank to fill in the value for - * @param standardValue the value of the rank in Standard - * @param retroValue the value of the rank in Retro - */ - private void addStandardAndRetroRank(int curRank, int standardValue, int retroValue) { - //Avoid negative numbers - standardValue = Math.max(0, standardValue); - retroValue = Math.max(0, retroValue); - - standardRanks.put(curRank, standardValue); - retroRanks.put(curRank, retroValue); + ranks.put(curRank, rankValue); } private void initRankMaps() { - standardRanks = new HashMap<>(); - retroRanks = new HashMap<>(); + ranks = new HashMap<>(); } /** * Gets the unlock level for this skill as defined by this SkillRankProperty - * @param retroMode whether or not mcMMO is using RetroMode, true for if it is * @param targetRank the rank to get the unlock level for * @return the unlock level for target rank */ - public int getUnlockLevel(boolean retroMode, int targetRank) throws MissingSkillPropertyDefinition { - if(retroMode) { - if(retroRanks.get(targetRank) == null) { - throw new MissingSkillPropertyDefinition("No definition found for rank:"+targetRank+" using Retro scaling"); - } - return retroRanks.get(targetRank); - } else { - if(standardRanks.get(targetRank) == null) { - throw new MissingSkillPropertyDefinition("No definition found for rank:"+targetRank+" using Standard scaling"); - } - return standardRanks.get(targetRank); + public int getUnlockLevel(mcMMO pluginRef, int targetRank) throws MissingSkillPropertyDefinition { + if(ranks.get(targetRank) == null) { + throw new MissingSkillPropertyDefinition("No definition found for rank:"+targetRank+" using Standard scaling"); } + + //Avoid zero or lower + int cosmeticModifier = Math.max(1, pluginRef.getPlayerLevelingSettings().getCosmeticLevelScaleModifier()); + + if(cosmeticModifier == 1) + return ranks.get(targetRank); + + //Mutate rank + int rankValue = ranks.get(targetRank); + rankValue = rankValue / cosmeticModifier; + + return rankValue; } - public void setStandardRanks(HashMap standardRanks) { - this.standardRanks = standardRanks; + public void setRanks(HashMap ranks) { + this.ranks = ranks; } - public void setRetroRanks(HashMap retroRanks) { - this.retroRanks = retroRanks; + public HashMap getRanks() { + return ranks; } - public HashMap getStandardRanks() { - return standardRanks; - } - - public HashMap getRetroRanks() { - return retroRanks; - } } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/repair/ConfigRepairSuperRepair.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/repair/ConfigRepairSuperRepair.java index cabddd2c0..ec6f94de0 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/repair/ConfigRepairSuperRepair.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/repair/ConfigRepairSuperRepair.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.skills.repair; 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; @@ -14,17 +12,7 @@ public class ConfigRepairSuperRepair { private static final String ODDS_PERCENTAGE_EXAMPLE = "25%"; private static final double CHANCE_AT_MAX_SKILL_DEFAULT = 100.0D; - @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME, comment = "Max bonus level is the level a player needs to reach in this skill to receive maximum benefits, such as better RNG odds or otherwise." + - "\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.") - private MaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(100); - - @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = "The maximum success chance for this Sub-Skill." + - "\nA value of 100.0 would be equivalent to 100% chance of success." + - "\nPlayers only have Max-Success-Chance when their skill level has reached the maximum bonus level." + - "\nMax skill chance 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 \""+ConfigConstants.MAX_CHANCE_FIELD_NAME+"\" was set to " + FIFTY_PERCENT_EXAMPLE + " and the \""+ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME+"\" was " + MAX_BONUS_LEVEL_EXAMPLE + "," + - "\n and the player was level " + FIFTY_PERCENT_EXAMPLE + " for this skill, that would give the player " + ODDS_PERCENTAGE_EXAMPLE + " odds to succeed with this skill.") - private double chanceAtMaxSkill = CHANCE_AT_MAX_SKILL_DEFAULT; + @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = ConfigConstants.MAX_CHANCE_FIELD_DESCRIPTION) + private double maxChance = 100.0; } \ No newline at end of file diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/repair/repairmastery/ConfigRepairRepairMastery.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/repair/repairmastery/ConfigRepairRepairMastery.java index 3f019124f..aab83a678 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/repair/repairmastery/ConfigRepairRepairMastery.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/repair/repairmastery/ConfigRepairRepairMastery.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.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; @@ -12,14 +10,7 @@ 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/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/smelting/ConfigSmelting.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/smelting/ConfigSmelting.java index 8d64d2448..abc06412e 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/smelting/ConfigSmelting.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/smelting/ConfigSmelting.java @@ -1,7 +1,6 @@ package com.gmail.nossr50.config.skills.smelting; import com.gmail.nossr50.config.ConfigConstants; -import com.gmail.nossr50.datatypes.skills.properties.MaxBonusLevel; import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; @@ -13,7 +12,7 @@ public class ConfigSmelting { @Setting(value = ConfigConstants.SUB_SKILL_NODE) private ConfigSmeltingSubSkills subskills = new ConfigSmeltingSubSkills(); - public ConfigSmeltingSubSkills getSubskills() { + public ConfigSmeltingSubSkills getSubSkills() { return subskills; } @@ -26,10 +25,6 @@ public class ConfigSmelting { return subskills.getMaxChance(); } - public MaxBonusLevel getMaxBonusLevel() { - return subskills.getMaxBonusLevel(); - } - public HashMap getXpMultiplierTable() { return subskills.getXpMultiplierTable(); } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/smelting/ConfigSmeltingSecondSmelt.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/smelting/ConfigSmeltingSecondSmelt.java index a673fbb44..8bf52605a 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/smelting/ConfigSmeltingSecondSmelt.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/smelting/ConfigSmeltingSecondSmelt.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.skills.smelting; 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; @@ -28,17 +26,10 @@ public class ConfigSmeltingSecondSmelt { @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = ConfigConstants.MAX_CHANCE_FIELD_DESCRIPTION) private double maxChance = 50.0; - @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME, comment = ConfigConstants.MAX_BONUS_LEVEL_DESCRIPTION) - private MaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(100); - public double getMaxChance() { return maxChance; } - public MaxBonusLevel getMaxBonusLevel() { - return maxBonusLevel; - } - @Setting(value = "XP-Multiplier-Per-Rank") private HashMap xpMultiplierTable = XP_MULT_MAP_DEFAULT; diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/smelting/ConfigSmeltingSubSkills.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/smelting/ConfigSmeltingSubSkills.java index 26e25a850..4caa53c32 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/smelting/ConfigSmeltingSubSkills.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/smelting/ConfigSmeltingSubSkills.java @@ -1,6 +1,5 @@ package com.gmail.nossr50.config.skills.smelting; -import com.gmail.nossr50.datatypes.skills.properties.MaxBonusLevel; import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; @@ -20,10 +19,6 @@ public class ConfigSmeltingSubSkills { return smeltingSecondSmelt.getMaxChance(); } - public MaxBonusLevel getMaxBonusLevel() { - return smeltingSecondSmelt.getMaxBonusLevel(); - } - public HashMap getXpMultiplierTable() { return smeltingSecondSmelt.getXpMultiplierTable(); } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwords.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwords.java index 498097fb5..85e032dfb 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwords.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwords.java @@ -1,7 +1,6 @@ package com.gmail.nossr50.config.skills.swords; import com.gmail.nossr50.config.ConfigConstants; -import com.gmail.nossr50.datatypes.skills.properties.MaxBonusLevel; import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; @@ -31,10 +30,6 @@ public class ConfigSwords { return subSkills.getCounterAttackMaxChance(); } - public MaxBonusLevel getCounterAttackMaxBonusLevel() { - return subSkills.getCounterAttackMaxBonusLevel(); - } - public double getCounterAttackDamageModifier() { return subSkills.getCounterAttackDamageModifier(); } @@ -47,10 +42,6 @@ public class ConfigSwords { return subSkills.getRuptureMaxChance(); } - public MaxBonusLevel getRuptureMaxBonusLevel() { - return subSkills.getRuptureMaxBonusLevel(); - } - public double getRuptureDamagePlayer() { return subSkills.getRuptureDamagePlayer(); } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwordsCounterAttack.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwordsCounterAttack.java index c67c873bb..b047173ec 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwordsCounterAttack.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwordsCounterAttack.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.skills.swords; 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; @@ -14,9 +12,6 @@ public class ConfigSwordsCounterAttack { @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = ConfigConstants.MAX_CHANCE_FIELD_DESCRIPTION) private double maxChance = 30.0; - @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME, comment = ConfigConstants.MAX_BONUS_LEVEL_DESCRIPTION) - private MaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(100); - @Setting(value = "Damage-Modifier", comment = "The damage returned from Counter-Attack will be equal to the damage dealt divided by this number." + "\nDefault value: "+DAMAGE_MODIFIER_DEFAULT) private double damageModifier = DAMAGE_MODIFIER_DEFAULT; @@ -25,10 +20,6 @@ public class ConfigSwordsCounterAttack { return maxChance; } - public MaxBonusLevel getCounterAttackMaxBonusLevel() { - return maxBonusLevel; - } - public double getCounterAttackDamageModifier() { return damageModifier; } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwordsRupture.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwordsRupture.java index 027470292..3323488f4 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwordsRupture.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwordsRupture.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.skills.swords; 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; @@ -17,9 +15,6 @@ public class ConfigSwordsRupture { @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = ConfigConstants.MAX_CHANCE_FIELD_DESCRIPTION) private double maxChance = MAX_CHANCE_DEFAULT; - @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME) - private MaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(100); - @Setting(value = "Damage-Per-Tick-PVP") private double damagePlayer = DAMAGE_PVP_DEFAULT; @@ -35,10 +30,6 @@ public class ConfigSwordsRupture { return maxChance; } - public MaxBonusLevel getRuptureMaxBonusLevel() { - return maxBonusLevel; - } - public double getRuptureDamagePlayer() { return damagePlayer; } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwordsSubSkills.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwordsSubSkills.java index 97290467e..dd9689dc4 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwordsSubSkills.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/swords/ConfigSwordsSubSkills.java @@ -1,6 +1,5 @@ package com.gmail.nossr50.config.skills.swords; -import com.gmail.nossr50.datatypes.skills.properties.MaxBonusLevel; import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; @@ -35,10 +34,6 @@ public class ConfigSwordsSubSkills { return counterAttack.getCounterAttackMaxChance(); } - public MaxBonusLevel getCounterAttackMaxBonusLevel() { - return counterAttack.getCounterAttackMaxBonusLevel(); - } - public double getCounterAttackDamageModifier() { return counterAttack.getCounterAttackDamageModifier(); } @@ -51,10 +46,6 @@ public class ConfigSwordsSubSkills { return rupture.getRuptureMaxChance(); } - public MaxBonusLevel getRuptureMaxBonusLevel() { - return rupture.getRuptureMaxBonusLevel(); - } - public double getRuptureDamagePlayer() { return rupture.getRuptureDamagePlayer(); } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/taming/ConfigTamingGore.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/taming/ConfigTamingGore.java index e261e1d4e..67e5b0552 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/taming/ConfigTamingGore.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/taming/ConfigTamingGore.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.skills.taming; 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; @@ -15,9 +13,6 @@ public class ConfigTamingGore { @Setting(value = "Gore-Bleed-Tick-Length", comment = "How many times to apply the bleed DOT from gore before it wears off.") private int goreBleedTicks = 2; - @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME, comment = ConfigConstants.MAX_BONUS_LEVEL_DESCRIPTION) - private MaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(100); - @Setting(value = "Gore-Damage-Modifier") private double goreMofifier = 2.0; @@ -25,10 +20,6 @@ public class ConfigTamingGore { return maxChance; } - public MaxBonusLevel getMaxBonusLevel() { - return maxBonusLevel; - } - public double getGoreMofifier() { return goreMofifier; } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/woodcutting/ConfigWoodcuttingHarvest.java b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/woodcutting/ConfigWoodcuttingHarvest.java index 57e1796d7..71386205e 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/woodcutting/ConfigWoodcuttingHarvest.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/config/skills/woodcutting/ConfigWoodcuttingHarvest.java @@ -1,8 +1,6 @@ package com.gmail.nossr50.config.skills.woodcutting; 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; @@ -14,15 +12,8 @@ public class ConfigWoodcuttingHarvest { @Setting(value = ConfigConstants.MAX_CHANCE_FIELD_NAME, comment = ConfigConstants.MAX_CHANCE_FIELD_DESCRIPTION) private double maxChance = MAX_CHANCE_DEFAULT; - @Setting(value = ConfigConstants.MAX_BONUS_LEVEL_FIELD_NAME) - private MaxBonusLevel maxBonusLevel = new AbstractMaxBonusLevel(100); - public double getMaxChance() { return maxChance; } - public MaxBonusLevel getMaxBonusLevel() { - return maxBonusLevel; - } - } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/core/SkillPropertiesManager.java b/mcmmo-core/src/main/java/com/gmail/nossr50/core/SkillPropertiesManager.java index 7e1df84c9..3d1a1fd75 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/core/SkillPropertiesManager.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/core/SkillPropertiesManager.java @@ -3,7 +3,6 @@ package com.gmail.nossr50.core; import com.gmail.nossr50.config.ConfigConstants; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; -import com.gmail.nossr50.datatypes.skills.properties.MaxBonusLevel; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.util.random.InvalidStaticChance; import com.google.common.reflect.TypeToken; @@ -31,8 +30,8 @@ public class SkillPropertiesManager { staticActivationChanceMap = new HashMap<>(); } - public void registerMaxBonusLevel(SubSkillType subSkillType, MaxBonusLevel maxBonusLevel) { - maxBonusLevelMap.put(subSkillType, pluginRef.isRetroModeEnabled() ? maxBonusLevel.getRetroScaleValue() : maxBonusLevel.getStandardScaleValue()); + public void registerMaxBonusLevel(SubSkillType subSkillType, int maxBonusLevel) { + maxBonusLevelMap.put(subSkillType, maxBonusLevel); } public void registerMaxBonus(SubSkillType subSkillType, double maxBonus) { @@ -133,13 +132,9 @@ public class SkillPropertiesManager { } private void attemptRegisterMaxBonusLevel(SubSkillType subSkillType, CommentedConfigurationNode childNode) { - try { - pluginRef.getLogger().info("Registering MaxBonusLevel for "+subSkillType.toString()); - MaxBonusLevel maxBonusLevel = childNode.getValue(TypeToken.of(MaxBonusLevel.class)); - registerMaxBonusLevel(subSkillType, maxBonusLevel); - } catch (ObjectMappingException e) { - //This time a silent exception is fine - } + pluginRef.getLogger().info("Registering MaxBonusLevel for "+subSkillType.toString()); + int maxBonusLevel = childNode.getInt(); + registerMaxBonusLevel(subSkillType, maxBonusLevel); } private void attemptRegisterMaxChance(SubSkillType subSkillType, CommentedConfigurationNode childNode) { diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/properties/AbstractMaxBonusLevel.java b/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/properties/AbstractMaxBonusLevel.java deleted file mode 100644 index 0de9d10ca..000000000 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/properties/AbstractMaxBonusLevel.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gmail.nossr50.datatypes.skills.properties; - -public class AbstractMaxBonusLevel implements MaxBonusLevel { - - private int retro; - private int standard; - - public AbstractMaxBonusLevel(int standard, int retro) { - this.standard = standard; - this.retro = retro; - } - - public AbstractMaxBonusLevel(int standard) { - this.standard = standard; - this.retro = standard * 10; - } - - @Override - public int getRetroScaleValue() { - return retro; - } - - @Override - public int getStandardScaleValue() { - return standard; - } - - public void setRetro(int retro) { - this.retro = retro; - } - - public void setStandard(int standard) { - this.standard = standard; - } -} diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/properties/AbstractScalingProperty.java b/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/properties/AbstractScalingProperty.java deleted file mode 100644 index be43b6dab..000000000 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/properties/AbstractScalingProperty.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.gmail.nossr50.datatypes.skills.properties; - -import com.gmail.nossr50.datatypes.skills.SubSkillType; - -public abstract class AbstractScalingProperty implements ScalingProperty { - public SubSkillType subSkillType; - - public AbstractScalingProperty(SubSkillType subSkillType) { - super(); - this.subSkillType = subSkillType; - } - - @Override - public String toString() { - return "AbstractScalingProperty{" + - "subSkillType=" + subSkillType + - '}'; - } -} diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/properties/MaxBonusLevel.java b/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/properties/MaxBonusLevel.java deleted file mode 100644 index 990f5d12a..000000000 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/properties/MaxBonusLevel.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.gmail.nossr50.datatypes.skills.properties; - -public interface MaxBonusLevel { - - /** - * Get the max level for this skill for Retro scaling - * @return Retro Mode max bonus level - */ - int getRetroScaleValue(); - - /** - * Get the max level for this skill for Standard scaling - * @return Standard Mode max bonus level - */ - int getStandardScaleValue(); - -} diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/properties/ScalingProperty.java b/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/properties/ScalingProperty.java deleted file mode 100644 index 88b2a09ed..000000000 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/properties/ScalingProperty.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.gmail.nossr50.datatypes.skills.properties; - -public interface ScalingProperty extends SkillProperty { - /** - * Returns the appropriate value for this scaling property whether it is Standard or Retro - * - * @return the value used in scaling calculations for this ScalingProperty - */ - double getValue(); -} diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/subskills/acrobatics/Roll.java b/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/subskills/acrobatics/Roll.java index a6b016f25..bf5802055 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/subskills/acrobatics/Roll.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/datatypes/skills/subskills/acrobatics/Roll.java @@ -372,7 +372,7 @@ public class Roll extends AcrobaticsSubSkill { //Chance to roll at half max skill RandomChanceSkill rollHalfMaxSkill = new RandomChanceSkill(pluginRef, null, subSkillType); - int halfMaxSkillValue = pluginRef.isRetroModeEnabled() ? 500 : 50; + int halfMaxSkillValue = (int) pluginRef.getDynamicSettingsManager().getSkillMaxBonusLevel(subSkillType) / 2; rollHalfMaxSkill.setSkillLevel(halfMaxSkillValue); //Chance to graceful roll at full skill diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/mcMMO.java b/mcmmo-core/src/main/java/com/gmail/nossr50/mcMMO.java index 5a78ebbd3..e6d317a82 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/mcMMO.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/mcMMO.java @@ -236,10 +236,14 @@ public class mcMMO extends JavaPlugin { metrics = new Metrics(this); metrics.addCustomChart(new Metrics.SimplePie("version", () -> getDescription().getVersion())); - if (!configManager.getConfigLeveling().getConfigSectionLevelingGeneral().getConfigSectionLevelScaling().isRetroModeEnabled()) + int levelScaleModifier = configManager.getConfigLeveling().getConfigSectionLevelingGeneral().getConfigSectionLevelScaling().getCosmeticLevelScaleModifier(); + + if (levelScaleModifier == 10) metrics.addCustomChart(new Metrics.SimplePie("scaling", () -> "Standard")); - else + else if (levelScaleModifier == 1) metrics.addCustomChart(new Metrics.SimplePie("scaling", () -> "Retro")); + else + metrics.addCustomChart(new Metrics.SimplePie("scaling", () -> "Custom")); } } catch (Throwable t) { getLogger().severe("There was an error while enabling mcMMO!"); @@ -510,17 +514,6 @@ public class mcMMO extends JavaPlugin { return healthBarPluginEnabled; } - /** - * Checks if this plugin is using retro mode - * Retro mode is a 0-1000 skill system - * Standard mode is scaled for 1-100 - * - * @return true if retro mode is enabled - */ - public boolean isRetroModeEnabled() { - return configManager.isRetroMode(); - } - public ConfigManager getConfigManager() { return configManager; } diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/util/experience/FormulaManager.java b/mcmmo-core/src/main/java/com/gmail/nossr50/util/experience/FormulaManager.java index 9611f1a7f..b90ce6de0 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/util/experience/FormulaManager.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/util/experience/FormulaManager.java @@ -9,10 +9,10 @@ import java.util.Map; public class FormulaManager { // Experience needed to reach a level, cached values for speed - private Map experienceNeededRetroLinear; - private Map experienceNeededStandardLinear; - private Map experienceNeededRetroExponential; - private Map experienceNeededStandardExponential; + private Map experienceNeededCosmeticLinear; + private Map experienceNeededLinear; + private Map experienceNeededCosmeticExponential; + private Map experienceNeededExponential; private FormulaType currentFormula; private final mcMMO pluginRef; @@ -27,10 +27,10 @@ public class FormulaManager { * Initialize maps used for XP to next level */ private void initExperienceNeededMaps() { - experienceNeededRetroLinear = new HashMap<>(); - experienceNeededRetroExponential = new HashMap<>(); - experienceNeededStandardLinear = new HashMap<>(); - experienceNeededStandardExponential = new HashMap<>(); + experienceNeededCosmeticLinear = new HashMap<>(); + experienceNeededCosmeticExponential = new HashMap<>(); + experienceNeededLinear = new HashMap<>(); + experienceNeededExponential = new HashMap<>(); } /** @@ -120,34 +120,21 @@ public class FormulaManager { return processXPToNextLevel(level, currentFormula); } - /** - * Gets the value of XP needed for the next level based on the level Scaling, the level, and the formula type - * @param level target level - * @param formulaType target formulaType - */ - private int processXPToNextLevel(int level, FormulaType formulaType) { - if(pluginRef.isRetroModeEnabled()) - { - return processXPRetroToNextLevel(level, formulaType); - } else { - return processStandardXPToNextLevel(level, formulaType); - } - } - /** * Calculate the XP needed for the next level for the linear formula for Standard scaling (1-100) * @param level target level * @return raw xp needed to reach the next level */ - private int processStandardXPToNextLevel(int level, FormulaType formulaType) { - Map experienceMapRef = formulaType == FormulaType.LINEAR ? experienceNeededStandardLinear : experienceNeededStandardExponential; + private int processXPToNextLevel(int level, FormulaType formulaType) { + Map experienceMapRef = formulaType == FormulaType.LINEAR ? experienceNeededLinear : experienceNeededExponential; if(!experienceMapRef.containsKey(level)) { + int cosmeticScaleMod = pluginRef.getPlayerLevelingSettings().getCosmeticLevelScaleModifier(); int experienceSum = 0; - int retroIndex = (level * 10) + 1; + int cosmeticIndex = (level * cosmeticScaleMod) + 1; //Sum the range of levels in Retro that this Standard level would represent - for(int x = retroIndex; x < (retroIndex + 10); x++) { + for(int x = cosmeticIndex; x < (cosmeticIndex + cosmeticScaleMod); x++) { //calculateXPNeeded doesn't cache results so we use that instead of invoking the Retro XP methods to avoid memory bloat experienceSum += calculateXPNeeded(x, formulaType); } @@ -166,7 +153,7 @@ public class FormulaManager { * @return raw xp needed to reach the next level based on formula type */ private int processXPRetroToNextLevel(int level, FormulaType formulaType) { - Map experienceMapRef = formulaType == FormulaType.LINEAR ? experienceNeededRetroLinear : experienceNeededRetroExponential; + Map experienceMapRef = formulaType == FormulaType.LINEAR ? experienceNeededCosmeticLinear : experienceNeededCosmeticExponential; if (!experienceMapRef.containsKey(level)) { int experience = calculateXPNeeded(level, formulaType); diff --git a/mcmmo-core/src/main/java/com/gmail/nossr50/util/skills/RankTools.java b/mcmmo-core/src/main/java/com/gmail/nossr50/util/skills/RankTools.java index 0f0a6135f..4c084daae 100644 --- a/mcmmo-core/src/main/java/com/gmail/nossr50/util/skills/RankTools.java +++ b/mcmmo-core/src/main/java/com/gmail/nossr50/util/skills/RankTools.java @@ -392,7 +392,7 @@ public class RankTools { .getNode(subSkillType.getHoconFriendlyConfigName()) .getValue(TypeToken.of(SkillRankProperty.class)); - int unlockLevel = skillRankProperty.getUnlockLevel(pluginRef.isRetroModeEnabled(), rank); + int unlockLevel = skillRankProperty.getUnlockLevel(pluginRef, rank); return unlockLevel; } catch (ObjectMappingException | MissingSkillPropertyDefinition | NullPointerException e) {