Put special combat xp multipliers in their own section

This commit is contained in:
nossr50 2019-04-29 21:34:29 -07:00
parent ff8baecb54
commit 7f64fe11b8
5 changed files with 45 additions and 58 deletions

View File

@ -115,57 +115,6 @@ public class ExperienceConfig extends ConfigValidated {
public List<String> validateKeys() {
List<String> reason = new ArrayList<>();
/*
* FORMULA SETTINGS
*/
/* Global modifier */
if (getExperienceGainsGlobalMultiplier() <= 0) {
reason.add(EXPERIENCE_FORMULA + "." + MULTIPLIER + "." + GLOBAL + " should be greater than 0!");
}
/* PVP modifier */
if (getPlayerVersusPlayerXP() < 0) {
reason.add(EXPERIENCE_FORMULA + "." + MULTIPLIER + "." + PVP + " should be at least 0!");
}
/* Spawned Mob modifier */
if (getSpawnedMobXpMultiplier() < 0) {
reason.add(EXPERIENCE_FORMULA + "." + MOBSPAWNERS + "." + MULTIPLIER + " should be at least 0!");
}
/* Bred Mob modifier */
if (getBredMobXpMultiplier() < 0) {
reason.add(EXPERIENCE_FORMULA + "." + BREEDING + "." + MULTIPLIER + " should be at least 0!");
}
/* Conversion */
if (getExpModifier() <= 0) {
reason.add(CONVERSION + "." + EXP + MODIFIER + " should be greater than 0!");
}
/*
* XP SETTINGS
*/
/* Combat XP Multipliers */
if (getAnimalsXP() < 0) {
reason.add(EXPERIENCE + "." + COMBAT + "." + MULTIPLIER + "." + ANIMALS + " should be at least 0!");
}
/* Repair */
if (getRepairXPBase() <= 0) {
reason.add(EXPERIENCE + "." + REPAIR + "." + BASE1 + " should be greater than 0!");
}
/* Taming */
if (getTamingXP(EntityType.WOLF) <= 0) {
reason.add(EXPERIENCE + "." + TAMING + "." + ANIMAL_TAMING + "." + WOLF + " should be greater than 0!");
}
if (getTamingXP(EntityType.OCELOT) <= 0) {
reason.add(EXPERIENCE + "." + TAMING + "." + ANIMAL_TAMING + "." + OCELOT + " should be greater than 0!");
}
return reason;
}
@ -173,11 +122,6 @@ public class ExperienceConfig extends ConfigValidated {
* FORMULA SETTINGS
*/
/* Curve settings */
public boolean getCumulativeCurveEnabled() {
return getBooleanValue(EXPERIENCE_FORMULA, CUMULATIVE + CURVE);
}
/* Global modifier */
public double getExperienceGainsGlobalMultiplier() {
return getDoubleValue(EXPERIENCE_FORMULA, MULTIPLIER, GLOBAL);

View File

@ -191,4 +191,16 @@ public class ConfigExperience {
public int getShakeXP() {
return experienceFishing.getShakeXP();
}
public double getMobSpawnerXPMult() {
return experienceCombat.getMobSpawnerXPMult();
}
public double getPVPXPMult() {
return experienceCombat.getPVPXPMult();
}
public double getAnimalsXPMult() {
return experienceCombat.getAnimalsXPMult();
}
}

View File

@ -9,12 +9,13 @@ import java.util.HashMap;
public class ConfigExperienceCombat {
private static final HashMap<String, Double> COMBAT_EXPERIENCE_DEFAULT;
private static final HashMap<String, Double> SPECIAL_COMBAT_EXPERIENCE_DEFAULT;
private static final boolean PVP_XP_ENABLED_DEFAULT = false;
static {
COMBAT_EXPERIENCE_DEFAULT = new HashMap<>();
COMBAT_EXPERIENCE_DEFAULT.put("animals", 1.0D); //TODO: this seems like a dumb config option
COMBAT_EXPERIENCE_DEFAULT.put("creeper", 4.0D);
COMBAT_EXPERIENCE_DEFAULT.put("cat", 1.0D);
COMBAT_EXPERIENCE_DEFAULT.put("fox", 1.0D);
@ -72,11 +73,20 @@ public class ConfigExperienceCombat {
COMBAT_EXPERIENCE_DEFAULT.put("drowned", 1.0D);
COMBAT_EXPERIENCE_DEFAULT.put("dolphin", 1.0D);
COMBAT_EXPERIENCE_DEFAULT.put("phantom", 4.0D);
//SPECIAL
SPECIAL_COMBAT_EXPERIENCE_DEFAULT = new HashMap<>();
SPECIAL_COMBAT_EXPERIENCE_DEFAULT.put("animals", 1.0D); //TODO: this seems like a dumb config option
SPECIAL_COMBAT_EXPERIENCE_DEFAULT.put("mobspawners", 0.0D);
SPECIAL_COMBAT_EXPERIENCE_DEFAULT.put("pvp", 1.0D);
}
@Setting(value = "Combat-XP-Multipliers")
private HashMap<String, Double> combatExperienceMap = COMBAT_EXPERIENCE_DEFAULT;
@Setting(value = "Special-Combat-XP-Multipliers")
private HashMap<String, Double> specialCombatExperienceMap = COMBAT_EXPERIENCE_DEFAULT;
@Setting(value = "PVP-XP", comment = "If true, players will gain XP from PVP interactions." +
"\nBe careful turning this on as this can potentially allow for unwanted behaviour from players." +
"\nDefault value: " + PVP_XP_ENABLED_DEFAULT)
@ -89,4 +99,16 @@ public class ConfigExperienceCombat {
public HashMap<String, Double> getCombatExperienceMap() {
return combatExperienceMap;
}
public double getMobSpawnerXPMult() {
return specialCombatExperienceMap.get("mobspawners");
}
public double getPVPXPMult() {
return specialCombatExperienceMap.get("pvp");
}
public double getAnimalsXPMult() {
return specialCombatExperienceMap.get("animals");
}
}

View File

@ -7,6 +7,8 @@ import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
@ConfigSerializable
public class ConfigExperienceFormula {
public static final boolean CUMULATIVE_CURVE_DEFAULT = false;
@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;
@ -19,6 +21,9 @@ public class ConfigExperienceFormula {
"\nEXPONENTIAL Formula: multiplier * level ^ exponent + base")
private ConfigExperienceFormulaExponential configExperienceFormulaExponential = new ConfigExperienceFormulaExponential();
@Setting(value = "Use-Cumulative-XP-Curve", comment = "")
private boolean cumulativeCurveEnabled = CUMULATIVE_CURVE_DEFAULT;
public FormulaType getFormulaType() {
return formulaType;
}
@ -27,6 +32,10 @@ public class ConfigExperienceFormula {
return configExperienceFormulaLinear;
}
public boolean isCumulativeCurveEnabled() {
return cumulativeCurveEnabled;
}
public ConfigExperienceFormulaExponential getConfigExperienceFormulaExponential() {
return configExperienceFormulaExponential;
}

View File

@ -390,7 +390,7 @@ public class PlayerProfile {
* @return the total amount of Xp until next level
*/
public int getXpToLevel(PrimarySkillType primarySkillType) {
int level = (ExperienceConfig.getInstance().getCumulativeCurveEnabled()) ? UserManager.getPlayer(playerName).getPowerLevel() : skills.get(primarySkillType);
int level = (mcMMO.getConfigManager().getConfigLeveling().getConfigExperienceFormula().isCumulativeCurveEnabled()) ? UserManager.getPlayer(playerName).getPowerLevel() : skills.get(primarySkillType);
FormulaType formulaType = mcMMO.getConfigManager().getConfigLeveling().getFormulaType();
return mcMMO.getFormulaManager().getCachedXpToLevel(level, formulaType);