Add linear/exponential formula config options to defaults

This commit is contained in:
nossr50 2019-04-24 22:11:11 -07:00
parent 9d9b5464c3
commit 9fcedcad76
6 changed files with 150 additions and 10 deletions

View File

@ -8,7 +8,7 @@ public class SkillConfigFactory {
protected static SerializedConfigLoader initSkillConfig(PrimarySkillType primarySkillType, Class<?> clazz)
{
return new SerializedConfigLoader<>(clazz,
return new SerializedConfigLoader(clazz,
primarySkillType.toString().toLowerCase() + ".conf",
StringUtils.getCapitalized(primarySkillType.toString()),
null);

View File

@ -0,0 +1,53 @@
package com.gmail.nossr50.config.hocon.playerleveling;
import com.gmail.nossr50.datatypes.experience.FormulaType;
import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
@ConfigSerializable
public class ConfigExperienceFormula {
@Setting(value = "Player-XP-Formula-Type", comment = "Determines which formula is used to determine XP needed to level" +
"\nDefault value: LINEAR")
private FormulaType formulaType = FormulaType.LINEAR;
@Setting(value = "Linear-Formula-Settings", comment = "These settings are only used if you have your formula type set to Linear" +
"LINEAR Formula: base + (level * multiplier)")
private ConfigExperienceFormulaLinear configExperienceFormulaLinear = new ConfigExperienceFormulaLinear();
@Setting(value = "Exponential-Formula-Settings", comment = "These settings are only used if you have your formula type set to Exponential" +
"\nEXPONENTIAL Formula: multiplier * level ^ exponent + base")
private ConfigExperienceFormulaExponential configExperienceFormulaExponential = new ConfigExperienceFormulaExponential();
public FormulaType getFormulaType() {
return formulaType;
}
public ConfigExperienceFormulaLinear getConfigExperienceFormulaLinear() {
return configExperienceFormulaLinear;
}
public ConfigExperienceFormulaExponential getConfigExperienceFormulaExponential() {
return configExperienceFormulaExponential;
}
public int getExponentialBaseModifier() {
return configExperienceFormulaExponential.getExponentialBaseModifier();
}
public double getExponentialMultiplier() {
return configExperienceFormulaExponential.getExponentialMultiplier();
}
public double getExponentialExponent() {
return configExperienceFormulaExponential.getExponentialExponent();
}
public int getLinearBaseModifier() {
return configExperienceFormulaLinear.getLinearBaseModifier();
}
public double getLinearMultiplier() {
return configExperienceFormulaLinear.getLinearMultiplier();
}
}

View File

@ -0,0 +1,36 @@
package com.gmail.nossr50.config.hocon.playerleveling;
import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
@ConfigSerializable
public class ConfigExperienceFormulaExponential {
private static final int BASE_DEFAULT = 2000;
private static final double MULTIPLIER_DEFAULT = 0.1;
private static final double EXPONENT_DEFAULT = 1.80;
@Setting(value = "Base-Amount", comment = "" +
"\nDefault value: "+BASE_DEFAULT)
private int baseModifier = BASE_DEFAULT;
@Setting(value = "Multiplier", comment = "" +
"\nDefault value: "+MULTIPLIER_DEFAULT)
private double multiplier = MULTIPLIER_DEFAULT;
@Setting(value = "Exponent", comment = "" +
"\nDefault value: "+EXPONENT_DEFAULT)
private double exponent = EXPONENT_DEFAULT;
public int getExponentialBaseModifier() {
return baseModifier;
}
public double getExponentialMultiplier() {
return multiplier;
}
public double getExponentialExponent() {
return exponent;
}
}

View File

@ -0,0 +1,28 @@
package com.gmail.nossr50.config.hocon.playerleveling;
import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
@ConfigSerializable
public class ConfigExperienceFormulaLinear {
private static final int BASE_DEFAULT = 1020;
private static final double MULTIPLIER_DEFAULT = 20.0D;
@Setting(value = "Base-Amount", comment = "The formula for Linear adds the base amount without any modifications to the level requirement for every level." +
"\nDefault value: "+BASE_DEFAULT)
private int baseModifier = BASE_DEFAULT;
@Setting(value = "Multiplier", comment = "The multiplier is multiplied against the players level and then added to the base amount to determine the amount of XP to the next level" +
"\nDefault value: "+MULTIPLIER_DEFAULT)
private double multiplier = MULTIPLIER_DEFAULT;
public int getLinearBaseModifier() {
return baseModifier;
}
public double getLinearMultiplier() {
return multiplier;
}
}

View File

@ -20,6 +20,9 @@ public class ConfigLeveling {
@Setting(value = "General", comment = "Settings for player leveling that don't fall into other categories")
private ConfigSectionLevelingGeneral configSectionLevelingGeneral = new ConfigSectionLevelingGeneral();
@Setting(value = "Experience-Formula")
private ConfigExperienceFormula configExperienceFormula = new ConfigExperienceFormula();
/*
* GETTER BOILERPLATE
*/
@ -41,13 +44,41 @@ public class ConfigLeveling {
}
public FormulaType getFormulaType() {
return configSectionLevelingGeneral.getFormulaType();
return configExperienceFormula.getFormulaType();
}
public boolean isRetroModeEnabled() {
return getConfigSectionLevelScaling().isRetroModeEnabled();
}
public ConfigExperienceFormulaLinear getConfigExperienceFormulaLinear() {
return configExperienceFormula.getConfigExperienceFormulaLinear();
}
public ConfigExperienceFormulaExponential getConfigExperienceFormulaExponential() {
return configExperienceFormula.getConfigExperienceFormulaExponential();
}
public int getExponentialBaseModifier() {
return configExperienceFormula.getExponentialBaseModifier();
}
public double getExponentialMultiplier() {
return configExperienceFormula.getExponentialMultiplier();
}
public double getExponentialExponent() {
return configExperienceFormula.getExponentialExponent();
}
public int getLinearBaseModifier() {
return configExperienceFormula.getLinearBaseModifier();
}
public double getLinearMultiplier() {
return configExperienceFormula.getLinearMultiplier();
}
/*
* HELPER METHODS
*/

View File

@ -34,10 +34,6 @@ public class ConfigSectionLevelingGeneral {
"\nDefault value: "+STARTING_LEVEL_DEFAULT)
private int startingLevel = STARTING_LEVEL_DEFAULT;
@Setting(value = "Player-XP-Formula", comment = "Determines which formula is used to determine XP needed to level" +
"\nDefault value: LINEAR")
private FormulaType formulaType = FormulaType.LINEAR;
/*
* GETTER BOILERPLATE
*/
@ -49,8 +45,4 @@ public class ConfigSectionLevelingGeneral {
public ConfigSectionLevelScaling getConfigSectionLevelScaling() {
return configSectionLevelScaling;
}
public FormulaType getFormulaType() {
return formulaType;
}
}