mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-26 07:06:45 +01:00
Move experience related settings from config.yml to experience.yml
This commit is contained in:
parent
490bc195d8
commit
964b2636fb
@ -8,7 +8,8 @@ Key:
|
|||||||
- Removal
|
- Removal
|
||||||
|
|
||||||
Version 1.4.07-dev
|
Version 1.4.07-dev
|
||||||
+ Added new experienceFormula config file! Has support for EXPONENTIAL formula curves.
|
+ Added new experience.yml config file! Moved all experience related settings from config.yml to experience.yml
|
||||||
|
+ Added support for EXPONENTIAL formula curves to experience.yml
|
||||||
+ Added new /mcconvert command to convert players levels and experience from one formula curve to another.
|
+ Added new /mcconvert command to convert players levels and experience from one formula curve to another.
|
||||||
+ Added snow to excavation
|
+ Added snow to excavation
|
||||||
+ Added new experience curve option. Cumulative curve, calculates experience needed for next level using power level.
|
+ Added new experience curve option. Cumulative curve, calculates experience needed for next level using power level.
|
||||||
@ -30,7 +31,6 @@ Version 1.4.07-dev
|
|||||||
! Vampirism can now be enabled without having Skill Death Penalty enabled
|
! Vampirism can now be enabled without having Skill Death Penalty enabled
|
||||||
! Admin and Party chat prefixes are now customizable
|
! Admin and Party chat prefixes are now customizable
|
||||||
! Changed the color of party leader names in Party chat
|
! Changed the color of party leader names in Party chat
|
||||||
! Moved all experience formula related settings from config.yml to experienceFormula.yml (This includes skill modifiers and curve modifiers)
|
|
||||||
! Improved profile saving
|
! Improved profile saving
|
||||||
! Improved partial name matcher
|
! Improved partial name matcher
|
||||||
! Slightly improved update checker feedback
|
! Slightly improved update checker feedback
|
||||||
|
@ -8,6 +8,7 @@ import com.gmail.nossr50.mcMMO;
|
|||||||
import com.gmail.nossr50.api.exceptions.InvalidPlayerException;
|
import com.gmail.nossr50.api.exceptions.InvalidPlayerException;
|
||||||
import com.gmail.nossr50.api.exceptions.InvalidSkillException;
|
import com.gmail.nossr50.api.exceptions.InvalidSkillException;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.skills.child.FamilyTree;
|
import com.gmail.nossr50.skills.child.FamilyTree;
|
||||||
@ -90,7 +91,7 @@ public final class ExperienceAPI {
|
|||||||
* @throws InvalidSkillException if the given skill is not valid
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
*/
|
*/
|
||||||
public static void addMultipliedXP(Player player, String skillType, int XP) {
|
public static void addMultipliedXP(Player player, String skillType, int XP) {
|
||||||
UserManager.getPlayer(player).applyXpGain(getSkillType(skillType), (int) (XP * Config.getInstance().getExperienceGainsGlobalMultiplier()));
|
UserManager.getPlayer(player).applyXpGain(getSkillType(skillType), (int) (XP * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -106,7 +107,7 @@ public final class ExperienceAPI {
|
|||||||
* @throws InvalidPlayerException if the given player does not exist in the database
|
* @throws InvalidPlayerException if the given player does not exist in the database
|
||||||
*/
|
*/
|
||||||
public static void addMultipliedXPOffline(String playerName, String skillType, int XP) {
|
public static void addMultipliedXPOffline(String playerName, String skillType, int XP) {
|
||||||
addOfflineXP(playerName, getSkillType(skillType), (int) (XP * Config.getInstance().getExperienceGainsGlobalMultiplier()));
|
addOfflineXP(playerName, getSkillType(skillType), (int) (XP * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -123,7 +124,7 @@ public final class ExperienceAPI {
|
|||||||
public static void addModifiedXP(Player player, String skillType, int XP) {
|
public static void addModifiedXP(Player player, String skillType, int XP) {
|
||||||
SkillType skill = getSkillType(skillType);
|
SkillType skill = getSkillType(skillType);
|
||||||
|
|
||||||
UserManager.getPlayer(player).applyXpGain(skill, (int) (XP / skill.getXpModifier() * Config.getInstance().getExperienceGainsGlobalMultiplier()));
|
UserManager.getPlayer(player).applyXpGain(skill, (int) (XP / skill.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -141,7 +142,7 @@ public final class ExperienceAPI {
|
|||||||
public static void addModifiedXPOffline(String playerName, String skillType, int XP) {
|
public static void addModifiedXPOffline(String playerName, String skillType, int XP) {
|
||||||
SkillType skill = getSkillType(skillType);
|
SkillType skill = getSkillType(skillType);
|
||||||
|
|
||||||
addOfflineXP(playerName, skill, (int) (XP / skill.getXpModifier() * Config.getInstance().getExperienceGainsGlobalMultiplier()));
|
addOfflineXP(playerName, skill, (int) (XP / skill.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -9,7 +9,7 @@ import org.bukkit.command.TabExecutor;
|
|||||||
import org.bukkit.util.StringUtil;
|
import org.bukkit.util.StringUtil;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
@ -21,7 +21,7 @@ public class XprateCommand implements TabExecutor {
|
|||||||
private double originalRate;
|
private double originalRate;
|
||||||
|
|
||||||
public XprateCommand() {
|
public XprateCommand() {
|
||||||
originalRate = Config.getInstance().getExperienceGainsGlobalMultiplier();
|
originalRate = ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -42,7 +42,7 @@ public class XprateCommand implements TabExecutor {
|
|||||||
mcMMO.p.toggleXpEventEnabled();
|
mcMMO.p.toggleXpEventEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
Config.getInstance().setExperienceGainsGlobalMultiplier(originalRate);
|
ExperienceConfig.getInstance().setExperienceGainsGlobalMultiplier(originalRate);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
@ -66,7 +66,7 @@ public class XprateCommand implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int newXpRate = Integer.parseInt(args[0]);
|
int newXpRate = Integer.parseInt(args[0]);
|
||||||
Config.getInstance().setExperienceGainsGlobalMultiplier(newXpRate);
|
ExperienceConfig.getInstance().setExperienceGainsGlobalMultiplier(newXpRate);
|
||||||
|
|
||||||
if (mcMMO.p.isXPEventEnabled()) {
|
if (mcMMO.p.isXPEventEnabled()) {
|
||||||
mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Commands.xprate.started.0"));
|
mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Commands.xprate.started.0"));
|
||||||
|
@ -11,7 +11,6 @@ import org.bukkit.entity.EntityType;
|
|||||||
import com.gmail.nossr50.datatypes.MobHealthbarType;
|
import com.gmail.nossr50.datatypes.MobHealthbarType;
|
||||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.skills.repair.RepairMaterialType;
|
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
|
|
||||||
public class Config extends AutoUpdateConfigLoader {
|
public class Config extends AutoUpdateConfigLoader {
|
||||||
@ -136,9 +135,6 @@ public class Config extends AutoUpdateConfigLoader {
|
|||||||
reason.add("Abilities.Limits.Tree_Feller_Threshold should be greater than 0!");
|
reason.add("Abilities.Limits.Tree_Feller_Threshold should be greater than 0!");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getFishingBaseXP() <= 0) {
|
|
||||||
reason.add("Experience.Fishing.Base should be greater than 0!");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getDetonatorItemID() < 1) {
|
if (getDetonatorItemID() < 1) {
|
||||||
reason.add("Skills.Mining.Detonator_ID should be at least 1!");
|
reason.add("Skills.Mining.Detonator_ID should be at least 1!");
|
||||||
@ -172,26 +168,6 @@ public class Config extends AutoUpdateConfigLoader {
|
|||||||
reason.add("Skills.Taming.Call_Of_The_Wild.Wolf_Amount should be greater than 0!");
|
reason.add("Skills.Taming.Call_Of_The_Wild.Wolf_Amount should be greater than 0!");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getExperienceGainsGlobalMultiplier() <= 0) {
|
|
||||||
reason.add("Experience.Gains.Multiplier.Global should be greater than 0!");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getPlayerVersusPlayerXP() < 0) {
|
|
||||||
reason.add("Experience.Gains.Multiplier.PVP should be at least 0!");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getAnimalsXP() < 0) {
|
|
||||||
reason.add("Experience.Gains.Multiplier.Animals should be at least 0!");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getWitherSkeletonXP() < 0) {
|
|
||||||
reason.add("Experience.Gains.Multiplier.Wither_Skeleton should be at least 0!");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getSpawnedMobXpMultiplier() < 0) {
|
|
||||||
reason.add("Experience.Gains.Mobspawners.Multiplier should be at least 0!");
|
|
||||||
}
|
|
||||||
|
|
||||||
return noErrorsInConfig(reason);
|
return noErrorsInConfig(reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -366,8 +342,6 @@ public class Config extends AutoUpdateConfigLoader {
|
|||||||
/*
|
/*
|
||||||
* SKILL SETTINGS
|
* SKILL SETTINGS
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public int getXp(SkillType skill, Material material) { return config.getInt("Experience." + StringUtils.getCapitalized(skill.toString()) + "." + StringUtils.getPrettyItemString(material).replace(" ", "_")); }
|
|
||||||
public boolean getDoubleDropsEnabled(SkillType skill, Material material) { return config.getBoolean("Double_Drops." + StringUtils.getCapitalized(skill.toString()) + "." + StringUtils.getPrettyItemString(material).replace(" ", "_")); }
|
public boolean getDoubleDropsEnabled(SkillType skill, Material material) { return config.getBoolean("Double_Drops." + StringUtils.getCapitalized(skill.toString()) + "." + StringUtils.getPrettyItemString(material).replace(" ", "_")); }
|
||||||
|
|
||||||
public boolean getDoubleDropsDisabled(SkillType skill) {
|
public boolean getDoubleDropsDisabled(SkillType skill) {
|
||||||
@ -391,16 +365,12 @@ public class Config extends AutoUpdateConfigLoader {
|
|||||||
public boolean getPreventXPAfterTeleport() { return config.getBoolean("Skills.Acrobatics.Prevent_XP_After_Teleport", true); }
|
public boolean getPreventXPAfterTeleport() { return config.getBoolean("Skills.Acrobatics.Prevent_XP_After_Teleport", true); }
|
||||||
|
|
||||||
/* Fishing */
|
/* Fishing */
|
||||||
public int getFishingBaseXP() { return config.getInt("Experience.Fishing.Base", 800); }
|
|
||||||
public boolean getFishingDropsEnabled() { return config.getBoolean("Skills.Fishing.Drops_Enabled", true); }
|
public boolean getFishingDropsEnabled() { return config.getBoolean("Skills.Fishing.Drops_Enabled", true); }
|
||||||
|
|
||||||
/* Mining */
|
/* Mining */
|
||||||
public int getDetonatorItemID() { return config.getInt("Skills.Mining.Detonator_ID", 259); }
|
public int getDetonatorItemID() { return config.getInt("Skills.Mining.Detonator_ID", 259); }
|
||||||
|
|
||||||
/* Repair */
|
/* Repair */
|
||||||
public double getRepairXPBase() { return config.getDouble("Experience.Repair.Base", 1000.0); }
|
|
||||||
public double getRepairXP(RepairMaterialType repairMaterialType) { return config.getDouble("Experience.Repair." + StringUtils.getCapitalized(repairMaterialType.toString())); }
|
|
||||||
|
|
||||||
public boolean getRepairAnvilMessagesEnabled() { return config.getBoolean("Skills.Repair.Anvil_Messages", true); }
|
public boolean getRepairAnvilMessagesEnabled() { return config.getBoolean("Skills.Repair.Anvil_Messages", true); }
|
||||||
public int getRepairAnvilId() { return config.getInt("Skills.Repair.Anvil_ID", 42); }
|
public int getRepairAnvilId() { return config.getInt("Skills.Repair.Anvil_ID", 42); }
|
||||||
public int getSalvageAnvilId() { return config.getInt("Skills.Repair.Salvage_Anvil_ID", 41); }
|
public int getSalvageAnvilId() { return config.getInt("Skills.Repair.Salvage_Anvil_ID", 41); }
|
||||||
@ -412,8 +382,6 @@ public class Config extends AutoUpdateConfigLoader {
|
|||||||
public boolean getUnarmedBlockCrackerSmoothbrickToCracked() { return config.getBoolean("Skills.Unarmed.Block_Cracker.SmoothBrick_To_CrackedBrick", true); }
|
public boolean getUnarmedBlockCrackerSmoothbrickToCracked() { return config.getBoolean("Skills.Unarmed.Block_Cracker.SmoothBrick_To_CrackedBrick", true); }
|
||||||
|
|
||||||
/* Taming */
|
/* Taming */
|
||||||
public int getTamingXPWolf() { return config.getInt("Experience.Taming.Animal_Taming.Wolf", 250); }
|
|
||||||
public int getTamingXPOcelot() { return config.getInt("Experience.Taming.Animal_Taming.Ocelot", 500); }
|
|
||||||
public int getTamingCOTWWolfCost() { return config.getInt("Skills.Taming.Call_Of_The_Wild.Bones_Required", 10); }
|
public int getTamingCOTWWolfCost() { return config.getInt("Skills.Taming.Call_Of_The_Wild.Bones_Required", 10); }
|
||||||
public int getTamingCOTWOcelotCost() { return config.getInt("Skills.Taming.Call_Of_The_Wild.Fish_Required", 10); }
|
public int getTamingCOTWOcelotCost() { return config.getInt("Skills.Taming.Call_Of_The_Wild.Fish_Required", 10); }
|
||||||
public double getTamingCOTWRange() { return config.getDouble("Skills.Taming.Call_Of_The_Wild.Range", 40); }
|
public double getTamingCOTWRange() { return config.getDouble("Skills.Taming.Call_Of_The_Wild.Range", 40); }
|
||||||
@ -431,13 +399,6 @@ public class Config extends AutoUpdateConfigLoader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Woodcutting */
|
/* Woodcutting */
|
||||||
public int getWoodcuttingXPOak() { return config.getInt("Experience.Woodcutting.Oak", 70); }
|
|
||||||
public int getWoodcuttingXPBirch() { return config.getInt("Experience.Woodcutting.Birch", 90); }
|
|
||||||
public int getWoodcuttingXPSpruce() { return config.getInt("Experience.Woodcutting.Spruce", 80); }
|
|
||||||
public int getWoodcuttingXPJungle() { return config.getInt("Experience.Woodcutting.Jungle", 100); }
|
|
||||||
public int getWoodcuttingXPHugeBrownMushroom() { return config.getInt("Experience.Woodcutting.Huge_Mushroom_Brown", 70); }
|
|
||||||
public int getWoodcuttingXPHugeRedMushroom() { return config.getInt("Experience.Woodcutting.Huge_Mushroom_Red", 70); }
|
|
||||||
|
|
||||||
public boolean getOakDoubleDropsEnabled() { return config.getBoolean("Double_Drops.Woodcutting.Oak", true); }
|
public boolean getOakDoubleDropsEnabled() { return config.getBoolean("Double_Drops.Woodcutting.Oak", true); }
|
||||||
public boolean getBirchDoubleDropsEnabled() { return config.getBoolean("Double_Drops.Woodcutting.Birch", true); }
|
public boolean getBirchDoubleDropsEnabled() { return config.getBoolean("Double_Drops.Woodcutting.Birch", true); }
|
||||||
public boolean getSpruceDoubleDropsEnabled() { return config.getBoolean("Double_Drops.Woodcutting.Spruce", true); }
|
public boolean getSpruceDoubleDropsEnabled() { return config.getBoolean("Double_Drops.Woodcutting.Spruce", true); }
|
||||||
@ -461,23 +422,4 @@ public class Config extends AutoUpdateConfigLoader {
|
|||||||
/* PVP & PVE Settings */
|
/* PVP & PVE Settings */
|
||||||
public boolean getPVPEnabled(SkillType skill) { return config.getBoolean("Skills." + StringUtils.getCapitalized(skill.toString()) + ".Enabled_For_PVP", true); }
|
public boolean getPVPEnabled(SkillType skill) { return config.getBoolean("Skills." + StringUtils.getCapitalized(skill.toString()) + ".Enabled_For_PVP", true); }
|
||||||
public boolean getPVEEnabled(SkillType skill) { return config.getBoolean("Skills." + StringUtils.getCapitalized(skill.toString()) + ".Enabled_For_PVE", true); }
|
public boolean getPVEEnabled(SkillType skill) { return config.getBoolean("Skills." + StringUtils.getCapitalized(skill.toString()) + ".Enabled_For_PVE", true); }
|
||||||
|
|
||||||
/*
|
|
||||||
* XP SETTINGS
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* General Settings */
|
|
||||||
public boolean getExperienceGainsPlayerVersusPlayerEnabled() { return config.getBoolean("Experience.PVP.Rewards", true); }
|
|
||||||
|
|
||||||
public double getExperienceGainsGlobalMultiplier() { return config.getDouble("Experience.Gains.Multiplier.Global", 1.0); }
|
|
||||||
public void setExperienceGainsGlobalMultiplier(double value) { config.set("Experience.Gains.Multiplier.Global", value); }
|
|
||||||
|
|
||||||
/* Combat XP Multipliers */
|
|
||||||
public double getPlayerVersusPlayerXP() { return config.getDouble("Experience.Gains.Multiplier.PVP", 1.0); }
|
|
||||||
public double getCombatXP(EntityType entity) { return config.getDouble("Experience.Combat.Multiplier." + StringUtils.getPrettyEntityTypeString(entity).replace(" ", "_")); }
|
|
||||||
|
|
||||||
public double getAnimalsXP() { return config.getDouble("Experience.Combat.Multiplier.Animals", 1.0); }
|
|
||||||
public double getWitherSkeletonXP() { return config.getDouble("Experience.Combat.Multiplier.Wither_Skeleton", 4.0); }
|
|
||||||
|
|
||||||
public double getSpawnedMobXpMultiplier() { return config.getDouble("Experience.Gains.Mobspawners.Multiplier", 0.0); }
|
|
||||||
}
|
}
|
||||||
|
@ -3,16 +3,20 @@ package com.gmail.nossr50.config.experience;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.AutoUpdateConfigLoader;
|
import com.gmail.nossr50.config.AutoUpdateConfigLoader;
|
||||||
import com.gmail.nossr50.datatypes.experience.FormulaType;
|
import com.gmail.nossr50.datatypes.experience.FormulaType;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
|
import com.gmail.nossr50.skills.repair.RepairMaterialType;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
|
|
||||||
public class ExperienceConfig extends AutoUpdateConfigLoader {
|
public class ExperienceConfig extends AutoUpdateConfigLoader {
|
||||||
private static ExperienceConfig instance;
|
private static ExperienceConfig instance;
|
||||||
|
|
||||||
private ExperienceConfig() {
|
private ExperienceConfig() {
|
||||||
super("experienceFormula.yml");
|
super("experience.yml");
|
||||||
validate();
|
validate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,10 +35,11 @@ public class ExperienceConfig extends AutoUpdateConfigLoader {
|
|||||||
protected boolean validateKeys() {
|
protected boolean validateKeys() {
|
||||||
List<String> reason = new ArrayList<String>();
|
List<String> reason = new ArrayList<String>();
|
||||||
|
|
||||||
if (getExpModifier() <= 0) {
|
/*
|
||||||
reason.add("Conversion.Exp_Modifier should be greater than 0!");
|
* FORMULA SETTINGS
|
||||||
}
|
*/
|
||||||
|
|
||||||
|
/* Curve values */
|
||||||
if (getMultiplier(FormulaType.EXPONENTIAL) <= 0) {
|
if (getMultiplier(FormulaType.EXPONENTIAL) <= 0) {
|
||||||
reason.add("Experience_Formula.Exponential_Values.multiplier should be greater than 0!");
|
reason.add("Experience_Formula.Exponential_Values.multiplier should be greater than 0!");
|
||||||
}
|
}
|
||||||
@ -47,10 +52,91 @@ public class ExperienceConfig extends AutoUpdateConfigLoader {
|
|||||||
reason.add("Experience_Formula.Exponential_Values.exponent should be greater than 0!");
|
reason.add("Experience_Formula.Exponential_Values.exponent should be greater than 0!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 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!");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 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!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getWitherSkeletonXP() < 0) {
|
||||||
|
reason.add("Experience.Combat.Multiplier.Wither_Skeleton should be at least 0!");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fishing */
|
||||||
|
if (getFishingBaseXP() <= 0) {
|
||||||
|
reason.add("Experience.Fishing.Base should be greater than 0!");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Repair */
|
||||||
|
if (getRepairXPBase() <= 0) {
|
||||||
|
reason.add("Experience.Repair.Base should be greater than 0!");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Taming */
|
||||||
|
if (getTamingXPWolf() <= 0) {
|
||||||
|
reason.add("Experience.Taming.Animal_Taming.Wolf should be greater than 0!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getTamingXPOcelot() <= 0) {
|
||||||
|
reason.add("Experience.Taming.Animal_Taming.Ocelot should be greater than 0!");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Woodcutting */
|
||||||
|
if (getWoodcuttingXPOak() <= 0) {
|
||||||
|
reason.add("Experience.Woodcutting.Oak should be greater than 0!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getWoodcuttingXPBirch() <= 0) {
|
||||||
|
reason.add("Experience.Woodcutting.Birch should be greater than 0!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getWoodcuttingXPSpruce() <= 0) {
|
||||||
|
reason.add("Experience.Woodcutting.Spruce should be greater than 0!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getWoodcuttingXPJungle() <= 0) {
|
||||||
|
reason.add("Experience.Woodcutting.Jungle should be greater than 0!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getWoodcuttingXPHugeBrownMushroom() <= 0) {
|
||||||
|
reason.add("Experience.Woodcutting.Huge_Mushroom_Brown should be greater than 0!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getWoodcuttingXPHugeRedMushroom() <= 0) {
|
||||||
|
reason.add("Experience.Woodcutting.Huge_Mushroom_Red should be greater than 0!");
|
||||||
|
}
|
||||||
|
|
||||||
return noErrorsInConfig(reason);
|
return noErrorsInConfig(reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XP Formula Multiplier */
|
/*
|
||||||
|
* FORMULA SETTINGS
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Curve settings */
|
||||||
public FormulaType getFormulaType() { return FormulaType.getFormulaType(config.getString("Experience_Formula.Curve")); }
|
public FormulaType getFormulaType() { return FormulaType.getFormulaType(config.getString("Experience_Formula.Curve")); }
|
||||||
public boolean getCumulativeCurveEnabled() { return config.getBoolean("Experience_Formula.Cumulative_Curve", false); }
|
public boolean getCumulativeCurveEnabled() { return config.getBoolean("Experience_Formula.Cumulative_Curve", false); }
|
||||||
|
|
||||||
@ -59,9 +145,53 @@ public class ExperienceConfig extends AutoUpdateConfigLoader {
|
|||||||
public int getBase(FormulaType type) { return config.getInt("Experience_Formula." + StringUtils.getCapitalized(type.toString()) + "_Values.base"); }
|
public int getBase(FormulaType type) { return config.getInt("Experience_Formula." + StringUtils.getCapitalized(type.toString()) + "_Values.base"); }
|
||||||
public double getExponent(FormulaType type) { return config.getDouble("Experience_Formula." + StringUtils.getCapitalized(type.toString()) +"_Values.exponent"); }
|
public double getExponent(FormulaType type) { return config.getDouble("Experience_Formula." + StringUtils.getCapitalized(type.toString()) +"_Values.exponent"); }
|
||||||
|
|
||||||
|
/* Global modifier */
|
||||||
|
public double getExperienceGainsGlobalMultiplier() { return config.getDouble("Experience_Formula.Multiplier.Global", 1.0); }
|
||||||
|
public void setExperienceGainsGlobalMultiplier(double value) { config.set("Experience_Formula.Multiplier.Global", value); }
|
||||||
|
|
||||||
|
/* PVP modifier */
|
||||||
|
public double getPlayerVersusPlayerXP() { return config.getDouble("Experience_Formula.Multiplier.PVP", 1.0); }
|
||||||
|
|
||||||
|
/* Spawned Mob modifier */
|
||||||
|
public double getSpawnedMobXpMultiplier() { return config.getDouble("Experience_Formula.Mobspawners.Multiplier", 0.0); }
|
||||||
|
|
||||||
/* Skill modifiers */
|
/* Skill modifiers */
|
||||||
public double getFormulaSkillModifier(SkillType skill) { return config.getDouble("Experience_Formula.Modifier." + StringUtils.getCapitalized(skill.toString())); }
|
public double getFormulaSkillModifier(SkillType skill) { return config.getDouble("Experience_Formula.Modifier." + StringUtils.getCapitalized(skill.toString())); }
|
||||||
|
|
||||||
/* Conversion */
|
/* Conversion */
|
||||||
public double getExpModifier() { return config.getDouble("Conversion.Exp_Modifier", 1); }
|
public double getExpModifier() { return config.getDouble("Conversion.Exp_Modifier", 1); }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XP SETTINGS
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* General Settings */
|
||||||
|
public boolean getExperienceGainsPlayerVersusPlayerEnabled() { return config.getBoolean("Experience.PVP.Rewards", true); }
|
||||||
|
|
||||||
|
/* Combat XP Multipliers */
|
||||||
|
public double getCombatXP(EntityType entity) { return config.getDouble("Experience.Combat.Multiplier." + StringUtils.getPrettyEntityTypeString(entity).replace(" ", "_")); }
|
||||||
|
public double getAnimalsXP() { return config.getDouble("Experience.Combat.Multiplier.Animals", 1.0); }
|
||||||
|
public double getWitherSkeletonXP() { return config.getDouble("Experience.Combat.Multiplier.Wither_Skeleton", 4.0); }
|
||||||
|
|
||||||
|
/* Materials */
|
||||||
|
public int getXp(SkillType skill, Material material) { return config.getInt("Experience." + StringUtils.getCapitalized(skill.toString()) + "." + StringUtils.getPrettyItemString(material).replace(" ", "_")); }
|
||||||
|
|
||||||
|
/* Fishing */
|
||||||
|
public int getFishingBaseXP() { return config.getInt("Experience.Fishing.Base", 800); }
|
||||||
|
|
||||||
|
/* Repair */
|
||||||
|
public double getRepairXPBase() { return config.getDouble("Experience.Repair.Base", 1000.0); }
|
||||||
|
public double getRepairXP(RepairMaterialType repairMaterialType) { return config.getDouble("Experience.Repair." + StringUtils.getCapitalized(repairMaterialType.toString())); }
|
||||||
|
|
||||||
|
/* Taming */
|
||||||
|
public int getTamingXPWolf() { return config.getInt("Experience.Taming.Animal_Taming.Wolf", 250); }
|
||||||
|
public int getTamingXPOcelot() { return config.getInt("Experience.Taming.Animal_Taming.Ocelot", 500); }
|
||||||
|
|
||||||
|
/* Woodcutting */
|
||||||
|
public int getWoodcuttingXPOak() { return config.getInt("Experience.Woodcutting.Oak", 70); }
|
||||||
|
public int getWoodcuttingXPBirch() { return config.getInt("Experience.Woodcutting.Birch", 90); }
|
||||||
|
public int getWoodcuttingXPSpruce() { return config.getInt("Experience.Woodcutting.Spruce", 80); }
|
||||||
|
public int getWoodcuttingXPJungle() { return config.getInt("Experience.Woodcutting.Jungle", 100); }
|
||||||
|
public int getWoodcuttingXPHugeBrownMushroom() { return config.getInt("Experience.Woodcutting.Huge_Mushroom_Brown", 70); }
|
||||||
|
public int getWoodcuttingXPHugeRedMushroom() { return config.getInt("Experience.Woodcutting.Huge_Mushroom_Red", 70); }
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import org.bukkit.entity.Player;
|
|||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.datatypes.mods.CustomTool;
|
import com.gmail.nossr50.datatypes.mods.CustomTool;
|
||||||
import com.gmail.nossr50.datatypes.party.Party;
|
import com.gmail.nossr50.datatypes.party.Party;
|
||||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||||
@ -695,7 +696,7 @@ public class McMMOPlayer {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
xp = (float) (xp / skillType.getXpModifier() * Config.getInstance().getExperienceGainsGlobalMultiplier());
|
xp = (float) (xp / skillType.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier());
|
||||||
|
|
||||||
if (Config.getInstance().getToolModsEnabled()) {
|
if (Config.getInstance().getToolModsEnabled()) {
|
||||||
CustomTool tool = ModUtils.getToolFromItemStack(player.getItemInHand());
|
CustomTool tool = ModUtils.getToolFromItemStack(player.getItemInHand());
|
||||||
|
@ -31,6 +31,7 @@ import com.gmail.nossr50.chat.ChatManager;
|
|||||||
import com.gmail.nossr50.chat.ChatManagerFactory;
|
import com.gmail.nossr50.chat.ChatManagerFactory;
|
||||||
import com.gmail.nossr50.chat.PartyChatManager;
|
import com.gmail.nossr50.chat.PartyChatManager;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.datatypes.chat.ChatMode;
|
import com.gmail.nossr50.datatypes.chat.ChatMode;
|
||||||
import com.gmail.nossr50.datatypes.party.Party;
|
import com.gmail.nossr50.datatypes.party.Party;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
@ -365,7 +366,7 @@ public class PlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (plugin.isXPEventEnabled()) {
|
if (plugin.isXPEventEnabled()) {
|
||||||
player.sendMessage(LocaleLoader.getString("XPRate.Event", Config.getInstance().getExperienceGainsGlobalMultiplier()));
|
player.sendMessage(LocaleLoader.getString("XPRate.Event", ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Permissions.updateNotifications(player) && plugin.isUpdateAvailable()) {
|
if (Permissions.updateNotifications(player) && plugin.isUpdateAvailable()) {
|
||||||
|
@ -191,7 +191,7 @@ public class MetricsManager {
|
|||||||
// GlobalMultiplier Graph
|
// GlobalMultiplier Graph
|
||||||
Graph globalMultiplierGraph = metrics.createGraph("Global Multiplier Graph");
|
Graph globalMultiplierGraph = metrics.createGraph("Global Multiplier Graph");
|
||||||
|
|
||||||
globalMultiplierGraph.addPlotter(new Metrics.Plotter(Config.getInstance().getExperienceGainsGlobalMultiplier() + "") {
|
globalMultiplierGraph.addPlotter(new Metrics.Plotter(ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier() + "") {
|
||||||
@Override
|
@Override
|
||||||
public int getValue() {
|
public int getValue() {
|
||||||
return 1;
|
return 1;
|
||||||
@ -211,7 +211,7 @@ public class MetricsManager {
|
|||||||
// GlobalMultiplierGraph Fuzzy Logic Numbers
|
// GlobalMultiplierGraph Fuzzy Logic Numbers
|
||||||
Graph globalMultiplierGraphFuzzy = metrics.createGraph("Global Multiplier Fuzz");
|
Graph globalMultiplierGraphFuzzy = metrics.createGraph("Global Multiplier Fuzz");
|
||||||
|
|
||||||
if (Config.getInstance().getExperienceGainsGlobalMultiplier() > 1.0) {
|
if (ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier() > 1.0) {
|
||||||
globalMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Higher") {
|
globalMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Higher") {
|
||||||
@Override
|
@Override
|
||||||
public int getValue() {
|
public int getValue() {
|
||||||
@ -219,7 +219,7 @@ public class MetricsManager {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (Config.getInstance().getExperienceGainsGlobalMultiplier() < 1.0) {
|
else if (ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier() < 1.0) {
|
||||||
globalMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Lower") {
|
globalMultiplierGraphFuzzy.addPlotter(new Metrics.Plotter("Lower") {
|
||||||
@Override
|
@Override
|
||||||
public int getValue() {
|
public int getValue() {
|
||||||
|
@ -5,7 +5,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.config.treasure.TreasureConfig;
|
import com.gmail.nossr50.config.treasure.TreasureConfig;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
|
import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
|
||||||
@ -47,7 +47,7 @@ public class Excavation {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected static int getBlockXP(BlockState blockState) {
|
protected static int getBlockXP(BlockState blockState) {
|
||||||
int xp = Config.getInstance().getXp(SkillType.EXCAVATION, blockState.getType());
|
int xp = ExperienceConfig.getInstance().getXp(SkillType.EXCAVATION, blockState.getType());
|
||||||
|
|
||||||
if (xp == 0 && ModUtils.isCustomExcavationBlock(blockState)) {
|
if (xp == 0 && ModUtils.isCustomExcavationBlock(blockState)) {
|
||||||
xp = ModUtils.getCustomBlock(blockState).getXpGain();
|
xp = ModUtils.getCustomBlock(blockState).getXpGain();
|
||||||
|
@ -33,6 +33,7 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.config.treasure.TreasureConfig;
|
import com.gmail.nossr50.config.treasure.TreasureConfig;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
@ -340,7 +341,7 @@ public class FishingManager extends SkillManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
applyXpGain(Config.getInstance().getFishingBaseXP() + treasureXp);
|
applyXpGain(ExperienceConfig.getInstance().getFishingBaseXP() + treasureXp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -8,6 +8,7 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
@ -58,7 +59,7 @@ public enum HerbalismBlock {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getXpGain() {
|
public int getXpGain() {
|
||||||
return Config.getInstance().getXp(SkillType.HERBALISM, blockType);
|
return ExperienceConfig.getInstance().getXp(SkillType.HERBALISM, blockType);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canDoubleDrop() {
|
public boolean canDoubleDrop() {
|
||||||
|
@ -7,6 +7,7 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.datatypes.mods.CustomBlock;
|
import com.gmail.nossr50.datatypes.mods.CustomBlock;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.util.Misc;
|
import com.gmail.nossr50.util.Misc;
|
||||||
@ -23,10 +24,10 @@ public class Mining {
|
|||||||
*/
|
*/
|
||||||
protected static int getBlockXp(BlockState blockState) {
|
protected static int getBlockXp(BlockState blockState) {
|
||||||
Material blockType = blockState.getType();
|
Material blockType = blockState.getType();
|
||||||
int xp = Config.getInstance().getXp(SkillType.MINING, blockType);
|
int xp = ExperienceConfig.getInstance().getXp(SkillType.MINING, blockType);
|
||||||
|
|
||||||
if (blockType == Material.GLOWING_REDSTONE_ORE) {
|
if (blockType == Material.GLOWING_REDSTONE_ORE) {
|
||||||
xp = Config.getInstance().getXp(SkillType.MINING, Material.REDSTONE_ORE);
|
xp = ExperienceConfig.getInstance().getXp(SkillType.MINING, Material.REDSTONE_ORE);
|
||||||
}
|
}
|
||||||
else if (xp == 0 && ModUtils.isCustomMiningBlock(blockState)) {
|
else if (xp == 0 && ModUtils.isCustomMiningBlock(blockState)) {
|
||||||
xp = ModUtils.getCustomBlock(blockState).getXpGain();
|
xp = ModUtils.getCustomBlock(blockState).getXpGain();
|
||||||
|
@ -13,6 +13,7 @@ import org.bukkit.inventory.PlayerInventory;
|
|||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.events.skills.repair.McMMOPlayerRepairCheckEvent;
|
import com.gmail.nossr50.events.skills.repair.McMMOPlayerRepairCheckEvent;
|
||||||
@ -155,7 +156,7 @@ public class RepairManager extends SkillManager {
|
|||||||
Repair.removeOneFrom(inventory, repairItemLocation);
|
Repair.removeOneFrom(inventory, repairItemLocation);
|
||||||
|
|
||||||
// Give out XP like candy
|
// Give out XP like candy
|
||||||
applyXpGain((float) ((getPercentageRepaired(startDurability, newDurability, repairable.getMaximumDurability()) * repairable.getXpMultiplier()) * Config.getInstance().getRepairXPBase() * Config.getInstance().getRepairXP(repairable.getRepairMaterialType())));
|
applyXpGain((float) ((getPercentageRepaired(startDurability, newDurability, repairable.getMaximumDurability()) * repairable.getXpMultiplier()) * ExperienceConfig.getInstance().getRepairXPBase() * ExperienceConfig.getInstance().getRepairXP(repairable.getRepairMaterialType())));
|
||||||
|
|
||||||
// BWONG BWONG BWONG
|
// BWONG BWONG BWONG
|
||||||
player.playSound(player.getLocation(), Sound.ANVIL_USE, Misc.ANVIL_USE_VOLUME, Misc.ANVIL_USE_PITCH);
|
player.playSound(player.getLocation(), Sound.ANVIL_USE, Misc.ANVIL_USE_VOLUME, Misc.ANVIL_USE_PITCH);
|
||||||
|
@ -3,7 +3,7 @@ package com.gmail.nossr50.skills.smelting;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
|
|
||||||
public class Smelting {
|
public class Smelting {
|
||||||
@ -49,10 +49,10 @@ public class Smelting {
|
|||||||
public static double fluxMiningChance = AdvancedConfig.getInstance().getFluxMiningChance();
|
public static double fluxMiningChance = AdvancedConfig.getInstance().getFluxMiningChance();
|
||||||
|
|
||||||
protected static int getResourceXp(Material resourceType) {
|
protected static int getResourceXp(Material resourceType) {
|
||||||
int xp = Config.getInstance().getXp(SkillType.SMELTING, resourceType);
|
int xp = ExperienceConfig.getInstance().getXp(SkillType.SMELTING, resourceType);
|
||||||
|
|
||||||
if (resourceType == Material.GLOWING_REDSTONE_ORE) {
|
if (resourceType == Material.GLOWING_REDSTONE_ORE) {
|
||||||
xp = Config.getInstance().getXp(SkillType.SMELTING, Material.REDSTONE_ORE);
|
xp = ExperienceConfig.getInstance().getXp(SkillType.SMELTING, Material.REDSTONE_ORE);
|
||||||
}
|
}
|
||||||
|
|
||||||
return xp;
|
return xp;
|
||||||
|
@ -8,7 +8,7 @@ import org.bukkit.entity.Tameable;
|
|||||||
import org.bukkit.entity.Wolf;
|
import org.bukkit.entity.Wolf;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
|
||||||
public class Taming {
|
public class Taming {
|
||||||
@ -32,8 +32,8 @@ public class Taming {
|
|||||||
public static int thickFurUnlockLevel = AdvancedConfig.getInstance().getThickFurUnlock();
|
public static int thickFurUnlockLevel = AdvancedConfig.getInstance().getThickFurUnlock();
|
||||||
public static int thickFurModifier = AdvancedConfig.getInstance().getThickFurModifier();
|
public static int thickFurModifier = AdvancedConfig.getInstance().getThickFurModifier();
|
||||||
|
|
||||||
public static int wolfXp = Config.getInstance().getTamingXPWolf();
|
public static int wolfXp = ExperienceConfig.getInstance().getTamingXPWolf();
|
||||||
public static int ocelotXp = Config.getInstance().getTamingXPOcelot();
|
public static int ocelotXp = ExperienceConfig.getInstance().getTamingXPOcelot();
|
||||||
|
|
||||||
public static boolean canPreventDamage(Tameable pet, AnimalTamer owner) {
|
public static boolean canPreventDamage(Tameable pet, AnimalTamer owner) {
|
||||||
return pet.isTamed() && owner instanceof Player && pet instanceof Wolf;
|
return pet.isTamed() && owner instanceof Player && pet instanceof Wolf;
|
||||||
|
@ -13,6 +13,7 @@ import org.bukkit.material.Tree;
|
|||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.datatypes.mods.CustomBlock;
|
import com.gmail.nossr50.datatypes.mods.CustomBlock;
|
||||||
import com.gmail.nossr50.util.BlockUtils;
|
import com.gmail.nossr50.util.BlockUtils;
|
||||||
import com.gmail.nossr50.util.Misc;
|
import com.gmail.nossr50.util.Misc;
|
||||||
@ -43,10 +44,10 @@ public final class Woodcutting {
|
|||||||
// Mushrooms aren't trees so we could never get species data from them
|
// Mushrooms aren't trees so we could never get species data from them
|
||||||
switch (blockState.getType()) {
|
switch (blockState.getType()) {
|
||||||
case HUGE_MUSHROOM_1:
|
case HUGE_MUSHROOM_1:
|
||||||
return Config.getInstance().getWoodcuttingXPHugeBrownMushroom();
|
return ExperienceConfig.getInstance().getWoodcuttingXPHugeBrownMushroom();
|
||||||
|
|
||||||
case HUGE_MUSHROOM_2:
|
case HUGE_MUSHROOM_2:
|
||||||
return Config.getInstance().getWoodcuttingXPHugeRedMushroom();
|
return ExperienceConfig.getInstance().getWoodcuttingXPHugeRedMushroom();
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -58,16 +59,16 @@ public final class Woodcutting {
|
|||||||
|
|
||||||
switch (((Tree) blockState.getData()).getSpecies()) {
|
switch (((Tree) blockState.getData()).getSpecies()) {
|
||||||
case GENERIC:
|
case GENERIC:
|
||||||
return Config.getInstance().getWoodcuttingXPOak();
|
return ExperienceConfig.getInstance().getWoodcuttingXPOak();
|
||||||
|
|
||||||
case REDWOOD:
|
case REDWOOD:
|
||||||
return Config.getInstance().getWoodcuttingXPSpruce();
|
return ExperienceConfig.getInstance().getWoodcuttingXPSpruce();
|
||||||
|
|
||||||
case BIRCH:
|
case BIRCH:
|
||||||
return Config.getInstance().getWoodcuttingXPBirch();
|
return ExperienceConfig.getInstance().getWoodcuttingXPBirch();
|
||||||
|
|
||||||
case JUNGLE:
|
case JUNGLE:
|
||||||
int xp = Config.getInstance().getWoodcuttingXPJungle();
|
int xp = ExperienceConfig.getInstance().getWoodcuttingXPJungle();
|
||||||
|
|
||||||
if (experienceGainMethod == ExperienceGainMethod.TREE_FELLER) {
|
if (experienceGainMethod == ExperienceGainMethod.TREE_FELLER) {
|
||||||
xp *= 0.5;
|
xp *= 0.5;
|
||||||
|
@ -19,6 +19,7 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent;
|
import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent;
|
||||||
@ -460,14 +461,14 @@ public final class CombatUtils {
|
|||||||
double baseXP = 0;
|
double baseXP = 0;
|
||||||
|
|
||||||
if (target instanceof Player) {
|
if (target instanceof Player) {
|
||||||
if (!Config.getInstance().getExperienceGainsPlayerVersusPlayerEnabled()) {
|
if (!ExperienceConfig.getInstance().getExperienceGainsPlayerVersusPlayerEnabled()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Player defender = (Player) target;
|
Player defender = (Player) target;
|
||||||
|
|
||||||
if (defender.isOnline() && System.currentTimeMillis() >= UserManager.getPlayer(defender).getRespawnATS() + 5) {
|
if (defender.isOnline() && System.currentTimeMillis() >= UserManager.getPlayer(defender).getRespawnATS() + 5) {
|
||||||
baseXP = 20 * Config.getInstance().getPlayerVersusPlayerXP();
|
baseXP = 20 * ExperienceConfig.getInstance().getPlayerVersusPlayerXP();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -476,7 +477,7 @@ public final class CombatUtils {
|
|||||||
baseXP = ModUtils.getCustomEntity(target).getXpMultiplier();
|
baseXP = ModUtils.getCustomEntity(target).getXpMultiplier();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
baseXP = Config.getInstance().getAnimalsXP();
|
baseXP = ExperienceConfig.getInstance().getAnimalsXP();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -484,7 +485,7 @@ public final class CombatUtils {
|
|||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case BAT:
|
case BAT:
|
||||||
baseXP = Config.getInstance().getAnimalsXP();
|
baseXP = ExperienceConfig.getInstance().getAnimalsXP();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BLAZE:
|
case BLAZE:
|
||||||
@ -499,7 +500,7 @@ public final class CombatUtils {
|
|||||||
case SLIME:
|
case SLIME:
|
||||||
case SPIDER:
|
case SPIDER:
|
||||||
case ZOMBIE:
|
case ZOMBIE:
|
||||||
baseXP = Config.getInstance().getCombatXP(type);
|
baseXP = ExperienceConfig.getInstance().getCombatXP(type);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Temporary workaround for custom entities
|
// Temporary workaround for custom entities
|
||||||
@ -510,17 +511,17 @@ public final class CombatUtils {
|
|||||||
case SKELETON:
|
case SKELETON:
|
||||||
switch (((Skeleton) target).getSkeletonType()) {
|
switch (((Skeleton) target).getSkeletonType()) {
|
||||||
case WITHER:
|
case WITHER:
|
||||||
baseXP = Config.getInstance().getWitherSkeletonXP();
|
baseXP = ExperienceConfig.getInstance().getWitherSkeletonXP();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
baseXP = Config.getInstance().getCombatXP(type);
|
baseXP = ExperienceConfig.getInstance().getCombatXP(type);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IRON_GOLEM:
|
case IRON_GOLEM:
|
||||||
if (!((IronGolem) target).isPlayerCreated()) {
|
if (!((IronGolem) target).isPlayerCreated()) {
|
||||||
baseXP = Config.getInstance().getCombatXP(type);
|
baseXP = ExperienceConfig.getInstance().getCombatXP(type);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -533,7 +534,7 @@ public final class CombatUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (target.hasMetadata(mcMMO.entityMetadataKey)) {
|
if (target.hasMetadata(mcMMO.entityMetadataKey)) {
|
||||||
baseXP *= Config.getInstance().getSpawnedMobXpMultiplier();
|
baseXP *= ExperienceConfig.getInstance().getSpawnedMobXpMultiplier();
|
||||||
}
|
}
|
||||||
|
|
||||||
baseXP *= 10;
|
baseXP *= 10;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# For advanced users only! There is no need to change anything here.
|
# For advanced users only! There is no need to change anything here.
|
||||||
#
|
#
|
||||||
# You can customize almost every aspect of every skill here.
|
# You can customize almost every aspect of every skill here.
|
||||||
# Its mainly here if you've changed "Experience.Formula.Curve_Modifier"
|
# Its mainly here if you've customized the experience formula.
|
||||||
# Configure at what level you get better with certain abilities.
|
# Configure at what level you get better with certain abilities.
|
||||||
#
|
#
|
||||||
#####
|
#####
|
||||||
|
@ -303,114 +303,6 @@ Double_Drops:
|
|||||||
Spruce: true
|
Spruce: true
|
||||||
Jungle: true
|
Jungle: true
|
||||||
|
|
||||||
#
|
|
||||||
# Settings for XP distribution
|
|
||||||
###
|
|
||||||
Experience:
|
|
||||||
Gains:
|
|
||||||
# Experience gained from mobs not naturally spawned will get multiplied by this value. 0 by default.
|
|
||||||
Mobspawners:
|
|
||||||
Multiplier: 0
|
|
||||||
|
|
||||||
# Experience gained in every skill will get multiplied by this value. 1.0 by default, 2.0 means two times as much
|
|
||||||
Multiplier:
|
|
||||||
PVP: 1.0
|
|
||||||
Global: 1.0
|
|
||||||
PVP:
|
|
||||||
Rewards: true
|
|
||||||
Fishing:
|
|
||||||
Base: 800
|
|
||||||
Excavation:
|
|
||||||
Clay: 40
|
|
||||||
Dirt: 40
|
|
||||||
Grass: 40
|
|
||||||
Gravel: 40
|
|
||||||
Mycel: 40
|
|
||||||
Sand: 40
|
|
||||||
Snow: 20
|
|
||||||
Snow_Block: 40
|
|
||||||
Soul_Sand: 40
|
|
||||||
Woodcutting:
|
|
||||||
Oak: 70
|
|
||||||
Spruce: 80
|
|
||||||
Birch: 90
|
|
||||||
Jungle: 100
|
|
||||||
Huge_Mushroom_Red: 70
|
|
||||||
Huge_Mushroom_Brown: 70
|
|
||||||
Herbalism:
|
|
||||||
Brown_Mushroom: 150
|
|
||||||
Cactus: 30
|
|
||||||
Carrot: 50
|
|
||||||
Cocoa: 30
|
|
||||||
Crops: 50
|
|
||||||
Melon_Block: 20
|
|
||||||
Nether_Warts: 50
|
|
||||||
Potato: 50
|
|
||||||
Pumpkin: 20
|
|
||||||
Red_Mushroom: 150
|
|
||||||
Red_Rose: 100
|
|
||||||
Sugar_Cane_Block: 30
|
|
||||||
Vine: 10
|
|
||||||
Water_Lily: 100
|
|
||||||
Yellow_Flower: 100
|
|
||||||
Mining:
|
|
||||||
Coal_Ore: 100
|
|
||||||
Diamond_Ore: 750
|
|
||||||
Emerald_Ore: 1000
|
|
||||||
Ender_Stone: 150
|
|
||||||
Glowstone: 30
|
|
||||||
Gold_Ore: 350
|
|
||||||
Iron_Ore: 250
|
|
||||||
Lapis_Ore: 400
|
|
||||||
Mossy_Cobblestone: 30
|
|
||||||
Netherrack: 30
|
|
||||||
Obsidian: 150
|
|
||||||
Quartz_Ore: 250
|
|
||||||
Redstone_Ore: 150
|
|
||||||
Sandstone: 30
|
|
||||||
Stone: 30
|
|
||||||
Repair:
|
|
||||||
Base: 1000.0
|
|
||||||
Wood: 0.6
|
|
||||||
Stone: 1.3
|
|
||||||
Iron: 2.5
|
|
||||||
Gold: 0.3
|
|
||||||
Diamond: 5.0
|
|
||||||
Leather: 1.6
|
|
||||||
String: 1.8
|
|
||||||
Other: 1.5
|
|
||||||
Smelting:
|
|
||||||
Coal_Ore: 10
|
|
||||||
Diamond_Ore: 75
|
|
||||||
Emerald_Ore: 100
|
|
||||||
Gold_Ore: 35
|
|
||||||
Iron_Ore: 25
|
|
||||||
Lapis_Ore: 40
|
|
||||||
Quartz_Ore: 25
|
|
||||||
Redstone_Ore: 15
|
|
||||||
Taming:
|
|
||||||
Animal_Taming:
|
|
||||||
Wolf: 250
|
|
||||||
Ocelot: 500
|
|
||||||
Combat:
|
|
||||||
Multiplier:
|
|
||||||
Animals: 1.0
|
|
||||||
Creeper: 4.0
|
|
||||||
Skeleton: 3.0
|
|
||||||
Spider: 2.0
|
|
||||||
Giant: 4.0
|
|
||||||
Zombie: 2.0
|
|
||||||
Slime: 2.0
|
|
||||||
Ghast: 3.0
|
|
||||||
Pig_Zombie: 3.0
|
|
||||||
Enderman: 1.0
|
|
||||||
Cave_Spider: 3.0
|
|
||||||
Silverfish: 3.0
|
|
||||||
Blaze: 3.0
|
|
||||||
Magma_Cube: 2.0
|
|
||||||
Iron_Golem: 2.0
|
|
||||||
Wither_Skeleton: 4.0
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Settings for commands
|
# Settings for commands
|
||||||
###
|
###
|
||||||
|
159
src/main/resources/experience.yml
Normal file
159
src/main/resources/experience.yml
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
#
|
||||||
|
# Experience configuration
|
||||||
|
#
|
||||||
|
# Configure the experience formula and experience settings here.
|
||||||
|
#
|
||||||
|
#####
|
||||||
|
|
||||||
|
#
|
||||||
|
# Settings for XP formula
|
||||||
|
###
|
||||||
|
Experience_Formula:
|
||||||
|
# Valid values are: LINEAR and EXPONENTIAL
|
||||||
|
# If an invalid value is entered, this will reset to the default setting, which is LINEAR
|
||||||
|
# LINEAR: base + (level * multiplier)
|
||||||
|
# EXPONENTIAL: multiplier * level ^ exponent + base
|
||||||
|
Curve: LINEAR
|
||||||
|
|
||||||
|
# If invalid values are entered mcMMO will use the default values instead and print an error in the console
|
||||||
|
Linear_Values:
|
||||||
|
base: 1020
|
||||||
|
multiplier: 20
|
||||||
|
Exponential_Values:
|
||||||
|
multiplier: 0.1
|
||||||
|
exponent: 1.80
|
||||||
|
base: 2000
|
||||||
|
|
||||||
|
# Cumulative experience curves will use a players power level instead of their skill level,
|
||||||
|
# players with high power levels will have to gain a lot more experience to reach the next level in every skill.
|
||||||
|
Cumulative_Curve: false
|
||||||
|
|
||||||
|
# Experience gained in every skill will get multiplied by this value. 1.0 by default, 2.0 means two times as much
|
||||||
|
Multiplier:
|
||||||
|
Global: 1.0
|
||||||
|
PVP: 1.0
|
||||||
|
|
||||||
|
# Experience gained from mobs not naturally spawned will get multiplied by this value. 0 by default.
|
||||||
|
Mobspawners:
|
||||||
|
Multiplier: 0
|
||||||
|
|
||||||
|
# Experience gained will get divided by these values. 1.0 by default, 2.0 means two times lower
|
||||||
|
Modifier:
|
||||||
|
Swords: 1.0
|
||||||
|
Taming: 1.0
|
||||||
|
Acrobatics: 1.0
|
||||||
|
Excavation: 1.0
|
||||||
|
Herbalism: 1.0
|
||||||
|
Unarmed: 1.0
|
||||||
|
Woodcutting: 1.0
|
||||||
|
Mining: 1.0
|
||||||
|
Archery: 1.0
|
||||||
|
Axes: 1.0
|
||||||
|
Repair: 1.0
|
||||||
|
Fishing: 1.0
|
||||||
|
|
||||||
|
#
|
||||||
|
# Settings for XP conversion with '/mcconvert experience'
|
||||||
|
###
|
||||||
|
Conversion:
|
||||||
|
# Old experience will get divided by this modifier
|
||||||
|
Exp_Modifier: 1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Settings for XP distribution
|
||||||
|
###
|
||||||
|
Experience:
|
||||||
|
PVP:
|
||||||
|
Rewards: true
|
||||||
|
Fishing:
|
||||||
|
Base: 800
|
||||||
|
Excavation:
|
||||||
|
Clay: 40
|
||||||
|
Dirt: 40
|
||||||
|
Grass: 40
|
||||||
|
Gravel: 40
|
||||||
|
Mycel: 40
|
||||||
|
Sand: 40
|
||||||
|
Snow: 20
|
||||||
|
Snow_Block: 40
|
||||||
|
Soul_Sand: 40
|
||||||
|
Woodcutting:
|
||||||
|
Oak: 70
|
||||||
|
Spruce: 80
|
||||||
|
Birch: 90
|
||||||
|
Jungle: 100
|
||||||
|
Huge_Mushroom_Red: 70
|
||||||
|
Huge_Mushroom_Brown: 70
|
||||||
|
Herbalism:
|
||||||
|
Brown_Mushroom: 150
|
||||||
|
Cactus: 30
|
||||||
|
Carrot: 50
|
||||||
|
Cocoa: 30
|
||||||
|
Crops: 50
|
||||||
|
Melon_Block: 20
|
||||||
|
Nether_Warts: 50
|
||||||
|
Potato: 50
|
||||||
|
Pumpkin: 20
|
||||||
|
Red_Mushroom: 150
|
||||||
|
Red_Rose: 100
|
||||||
|
Sugar_Cane_Block: 30
|
||||||
|
Vine: 10
|
||||||
|
Water_Lily: 100
|
||||||
|
Yellow_Flower: 100
|
||||||
|
Mining:
|
||||||
|
Coal_Ore: 100
|
||||||
|
Diamond_Ore: 750
|
||||||
|
Emerald_Ore: 1000
|
||||||
|
Ender_Stone: 150
|
||||||
|
Glowstone: 30
|
||||||
|
Gold_Ore: 350
|
||||||
|
Iron_Ore: 250
|
||||||
|
Lapis_Ore: 400
|
||||||
|
Mossy_Cobblestone: 30
|
||||||
|
Netherrack: 30
|
||||||
|
Obsidian: 150
|
||||||
|
Quartz_Ore: 250
|
||||||
|
Redstone_Ore: 150
|
||||||
|
Sandstone: 30
|
||||||
|
Stone: 30
|
||||||
|
Repair:
|
||||||
|
Base: 1000.0
|
||||||
|
Wood: 0.6
|
||||||
|
Stone: 1.3
|
||||||
|
Iron: 2.5
|
||||||
|
Gold: 0.3
|
||||||
|
Diamond: 5.0
|
||||||
|
Leather: 1.6
|
||||||
|
String: 1.8
|
||||||
|
Other: 1.5
|
||||||
|
Smelting:
|
||||||
|
Coal_Ore: 10
|
||||||
|
Diamond_Ore: 75
|
||||||
|
Emerald_Ore: 100
|
||||||
|
Gold_Ore: 35
|
||||||
|
Iron_Ore: 25
|
||||||
|
Lapis_Ore: 40
|
||||||
|
Quartz_Ore: 25
|
||||||
|
Redstone_Ore: 15
|
||||||
|
Taming:
|
||||||
|
Animal_Taming:
|
||||||
|
Wolf: 250
|
||||||
|
Ocelot: 500
|
||||||
|
Combat:
|
||||||
|
Multiplier:
|
||||||
|
Animals: 1.0
|
||||||
|
Creeper: 4.0
|
||||||
|
Skeleton: 3.0
|
||||||
|
Spider: 2.0
|
||||||
|
Giant: 4.0
|
||||||
|
Zombie: 2.0
|
||||||
|
Slime: 2.0
|
||||||
|
Ghast: 3.0
|
||||||
|
Pig_Zombie: 3.0
|
||||||
|
Enderman: 1.0
|
||||||
|
Cave_Spider: 3.0
|
||||||
|
Silverfish: 3.0
|
||||||
|
Blaze: 3.0
|
||||||
|
Magma_Cube: 2.0
|
||||||
|
Iron_Golem: 2.0
|
||||||
|
Wither_Skeleton: 4.0
|
@ -1,38 +0,0 @@
|
|||||||
Experience_Formula:
|
|
||||||
# Valid values are: LINEAR and EXPONENTIAL
|
|
||||||
# If an invalid value is entered, this will reset to the default setting, which is LINEAR
|
|
||||||
# LINEAR: base + (level * multiplier)
|
|
||||||
# EXPONENTIAL: multiplier * level ^ exponent + base
|
|
||||||
Curve: LINEAR
|
|
||||||
|
|
||||||
# If invalid values are entered mcMMO will use the default values instead and print an error in the console
|
|
||||||
Linear_Values:
|
|
||||||
base: 1020
|
|
||||||
multiplier: 20
|
|
||||||
Exponential_Values:
|
|
||||||
multiplier: 0.1
|
|
||||||
exponent: 1.80
|
|
||||||
base: 2000
|
|
||||||
|
|
||||||
# Cumulative experience curves will use a players power level instead of their skill level,
|
|
||||||
# players with high power levels will have to gain a lot more experience to reach the next level in every skill.
|
|
||||||
Cumulative_Curve: false
|
|
||||||
|
|
||||||
# Experience gained will get divided by these values. 1.0 by default, 2.0 means two times lower
|
|
||||||
Modifier:
|
|
||||||
Swords: 1.0
|
|
||||||
Taming: 1.0
|
|
||||||
Acrobatics: 1.0
|
|
||||||
Excavation: 1.0
|
|
||||||
Herbalism: 1.0
|
|
||||||
Unarmed: 1.0
|
|
||||||
Woodcutting: 1.0
|
|
||||||
Mining: 1.0
|
|
||||||
Archery: 1.0
|
|
||||||
Axes: 1.0
|
|
||||||
Repair: 1.0
|
|
||||||
Fishing: 1.0
|
|
||||||
|
|
||||||
Conversion:
|
|
||||||
# Old experience will get divided by this modifier
|
|
||||||
Exp_Modifier: 1
|
|
Loading…
Reference in New Issue
Block a user