From 964b2636fb9901ec52e9d95891bc8ed1daaa293c Mon Sep 17 00:00:00 2001 From: TfT_02 Date: Fri, 23 Aug 2013 10:16:22 +0200 Subject: [PATCH] Move experience related settings from config.yml to experience.yml --- Changelog.txt | 4 +- .../com/gmail/nossr50/api/ExperienceAPI.java | 9 +- .../gmail/nossr50/commands/XprateCommand.java | 8 +- .../java/com/gmail/nossr50/config/Config.java | 58 ------- .../config/experience/ExperienceConfig.java | 140 ++++++++++++++- .../nossr50/datatypes/player/McMMOPlayer.java | 3 +- .../nossr50/listeners/PlayerListener.java | 3 +- .../gmail/nossr50/metrics/MetricsManager.java | 6 +- .../nossr50/skills/excavation/Excavation.java | 4 +- .../skills/fishing/FishingManager.java | 3 +- .../skills/herbalism/HerbalismBlock.java | 3 +- .../gmail/nossr50/skills/mining/Mining.java | 5 +- .../nossr50/skills/repair/RepairManager.java | 3 +- .../nossr50/skills/smelting/Smelting.java | 6 +- .../gmail/nossr50/skills/taming/Taming.java | 6 +- .../skills/woodcutting/Woodcutting.java | 13 +- .../nossr50/util/skills/CombatUtils.java | 19 ++- src/main/resources/advanced.yml | 2 +- src/main/resources/config.yml | 108 ------------ src/main/resources/experience.yml | 159 ++++++++++++++++++ src/main/resources/experienceFormula.yml | 38 ----- 21 files changed, 347 insertions(+), 253 deletions(-) create mode 100644 src/main/resources/experience.yml delete mode 100644 src/main/resources/experienceFormula.yml diff --git a/Changelog.txt b/Changelog.txt index 22b99a1b6..576b67e01 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -8,7 +8,8 @@ Key: - Removal 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 snow to excavation + 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 ! Admin and Party chat prefixes are now customizable ! 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 partial name matcher ! Slightly improved update checker feedback diff --git a/src/main/java/com/gmail/nossr50/api/ExperienceAPI.java b/src/main/java/com/gmail/nossr50/api/ExperienceAPI.java index b817bc15b..d3273fa0e 100644 --- a/src/main/java/com/gmail/nossr50/api/ExperienceAPI.java +++ b/src/main/java/com/gmail/nossr50/api/ExperienceAPI.java @@ -8,6 +8,7 @@ import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.api.exceptions.InvalidPlayerException; import com.gmail.nossr50.api.exceptions.InvalidSkillException; 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.skills.SkillType; import com.gmail.nossr50.skills.child.FamilyTree; @@ -90,7 +91,7 @@ public final class ExperienceAPI { * @throws InvalidSkillException if the given skill is not valid */ 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 */ 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) { 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) { SkillType skill = getSkillType(skillType); - addOfflineXP(playerName, skill, (int) (XP / skill.getXpModifier() * Config.getInstance().getExperienceGainsGlobalMultiplier())); + addOfflineXP(playerName, skill, (int) (XP / skill.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier())); } /** diff --git a/src/main/java/com/gmail/nossr50/commands/XprateCommand.java b/src/main/java/com/gmail/nossr50/commands/XprateCommand.java index 84193834d..2a4845374 100644 --- a/src/main/java/com/gmail/nossr50/commands/XprateCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/XprateCommand.java @@ -9,7 +9,7 @@ import org.bukkit.command.TabExecutor; import org.bukkit.util.StringUtil; 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.util.Permissions; import com.gmail.nossr50.util.StringUtils; @@ -21,7 +21,7 @@ public class XprateCommand implements TabExecutor { private double originalRate; public XprateCommand() { - originalRate = Config.getInstance().getExperienceGainsGlobalMultiplier(); + originalRate = ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier(); } @Override @@ -42,7 +42,7 @@ public class XprateCommand implements TabExecutor { mcMMO.p.toggleXpEventEnabled(); } - Config.getInstance().setExperienceGainsGlobalMultiplier(originalRate); + ExperienceConfig.getInstance().setExperienceGainsGlobalMultiplier(originalRate); return true; case 2: @@ -66,7 +66,7 @@ public class XprateCommand implements TabExecutor { } int newXpRate = Integer.parseInt(args[0]); - Config.getInstance().setExperienceGainsGlobalMultiplier(newXpRate); + ExperienceConfig.getInstance().setExperienceGainsGlobalMultiplier(newXpRate); if (mcMMO.p.isXPEventEnabled()) { mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Commands.xprate.started.0")); diff --git a/src/main/java/com/gmail/nossr50/config/Config.java b/src/main/java/com/gmail/nossr50/config/Config.java index e525d642c..9fc3b404b 100644 --- a/src/main/java/com/gmail/nossr50/config/Config.java +++ b/src/main/java/com/gmail/nossr50/config/Config.java @@ -11,7 +11,6 @@ import org.bukkit.entity.EntityType; import com.gmail.nossr50.datatypes.MobHealthbarType; import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.datatypes.skills.SkillType; -import com.gmail.nossr50.skills.repair.RepairMaterialType; import com.gmail.nossr50.util.StringUtils; 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!"); } - if (getFishingBaseXP() <= 0) { - reason.add("Experience.Fishing.Base should be greater than 0!"); - } if (getDetonatorItemID() < 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!"); } - 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); } @@ -366,8 +342,6 @@ public class Config extends AutoUpdateConfigLoader { /* * 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 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); } /* Fishing */ - public int getFishingBaseXP() { return config.getInt("Experience.Fishing.Base", 800); } public boolean getFishingDropsEnabled() { return config.getBoolean("Skills.Fishing.Drops_Enabled", true); } /* Mining */ public int getDetonatorItemID() { return config.getInt("Skills.Mining.Detonator_ID", 259); } /* 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 int getRepairAnvilId() { return config.getInt("Skills.Repair.Anvil_ID", 42); } 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); } /* 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 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); } @@ -431,13 +399,6 @@ public class Config extends AutoUpdateConfigLoader { } /* 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 getBirchDoubleDropsEnabled() { return config.getBoolean("Double_Drops.Woodcutting.Birch", true); } public boolean getSpruceDoubleDropsEnabled() { return config.getBoolean("Double_Drops.Woodcutting.Spruce", true); } @@ -461,23 +422,4 @@ public class Config extends AutoUpdateConfigLoader { /* PVP & PVE Settings */ 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); } - - /* - * 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); } } diff --git a/src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java b/src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java index c6973f92b..61162ae21 100644 --- a/src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java +++ b/src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java @@ -3,16 +3,20 @@ package com.gmail.nossr50.config.experience; import java.util.ArrayList; import java.util.List; +import org.bukkit.Material; +import org.bukkit.entity.EntityType; + import com.gmail.nossr50.config.AutoUpdateConfigLoader; import com.gmail.nossr50.datatypes.experience.FormulaType; import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.skills.repair.RepairMaterialType; import com.gmail.nossr50.util.StringUtils; public class ExperienceConfig extends AutoUpdateConfigLoader { private static ExperienceConfig instance; private ExperienceConfig() { - super("experienceFormula.yml"); + super("experience.yml"); validate(); } @@ -31,10 +35,11 @@ public class ExperienceConfig extends AutoUpdateConfigLoader { protected boolean validateKeys() { List reason = new ArrayList(); - if (getExpModifier() <= 0) { - reason.add("Conversion.Exp_Modifier should be greater than 0!"); - } + /* + * FORMULA SETTINGS + */ + /* Curve values */ if (getMultiplier(FormulaType.EXPONENTIAL) <= 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!"); } + /* 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); } - /* XP Formula Multiplier */ + /* + * FORMULA SETTINGS + */ + + /* Curve settings */ public FormulaType getFormulaType() { return FormulaType.getFormulaType(config.getString("Experience_Formula.Curve")); } 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 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 */ public double getFormulaSkillModifier(SkillType skill) { return config.getDouble("Experience_Formula.Modifier." + StringUtils.getCapitalized(skill.toString())); } /* Conversion */ 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); } } diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java b/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java index 723ee97f6..ce51a77d1 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java @@ -10,6 +10,7 @@ import org.bukkit.entity.Player; import com.gmail.nossr50.mcMMO; 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.party.Party; import com.gmail.nossr50.datatypes.skills.AbilityType; @@ -695,7 +696,7 @@ public class McMMOPlayer { return 0; } - xp = (float) (xp / skillType.getXpModifier() * Config.getInstance().getExperienceGainsGlobalMultiplier()); + xp = (float) (xp / skillType.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()); if (Config.getInstance().getToolModsEnabled()) { CustomTool tool = ModUtils.getToolFromItemStack(player.getItemInHand()); diff --git a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java index b81a82d56..f47c1ba8c 100644 --- a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java @@ -31,6 +31,7 @@ import com.gmail.nossr50.chat.ChatManager; import com.gmail.nossr50.chat.ChatManagerFactory; import com.gmail.nossr50.chat.PartyChatManager; 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.party.Party; import com.gmail.nossr50.datatypes.player.McMMOPlayer; @@ -365,7 +366,7 @@ public class PlayerListener implements Listener { } 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()) { diff --git a/src/main/java/com/gmail/nossr50/metrics/MetricsManager.java b/src/main/java/com/gmail/nossr50/metrics/MetricsManager.java index 08b2b60bb..05349160d 100644 --- a/src/main/java/com/gmail/nossr50/metrics/MetricsManager.java +++ b/src/main/java/com/gmail/nossr50/metrics/MetricsManager.java @@ -191,7 +191,7 @@ public class MetricsManager { // GlobalMultiplier 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 public int getValue() { return 1; @@ -211,7 +211,7 @@ public class MetricsManager { // GlobalMultiplierGraph Fuzzy Logic Numbers 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") { @Override 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") { @Override public int getValue() { diff --git a/src/main/java/com/gmail/nossr50/skills/excavation/Excavation.java b/src/main/java/com/gmail/nossr50/skills/excavation/Excavation.java index 689603751..a83ce807a 100644 --- a/src/main/java/com/gmail/nossr50/skills/excavation/Excavation.java +++ b/src/main/java/com/gmail/nossr50/skills/excavation/Excavation.java @@ -5,7 +5,7 @@ import java.util.List; 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.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure; @@ -47,7 +47,7 @@ public class Excavation { } 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)) { xp = ModUtils.getCustomBlock(blockState).getXpGain(); diff --git a/src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java b/src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java index 54ca47528..2a34c287e 100644 --- a/src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java +++ b/src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java @@ -33,6 +33,7 @@ import org.bukkit.inventory.ItemStack; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; +import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.config.treasure.TreasureConfig; import com.gmail.nossr50.datatypes.player.McMMOPlayer; 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); } /** diff --git a/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismBlock.java b/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismBlock.java index 32a644b99..8e78bad67 100644 --- a/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismBlock.java +++ b/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismBlock.java @@ -8,6 +8,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import com.gmail.nossr50.config.Config; +import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.util.Permissions; import com.google.common.collect.Maps; @@ -58,7 +59,7 @@ public enum HerbalismBlock { } public int getXpGain() { - return Config.getInstance().getXp(SkillType.HERBALISM, blockType); + return ExperienceConfig.getInstance().getXp(SkillType.HERBALISM, blockType); } public boolean canDoubleDrop() { diff --git a/src/main/java/com/gmail/nossr50/skills/mining/Mining.java b/src/main/java/com/gmail/nossr50/skills/mining/Mining.java index 3200c034e..b7b5dd60e 100644 --- a/src/main/java/com/gmail/nossr50/skills/mining/Mining.java +++ b/src/main/java/com/gmail/nossr50/skills/mining/Mining.java @@ -7,6 +7,7 @@ import org.bukkit.inventory.ItemStack; import com.gmail.nossr50.config.AdvancedConfig; 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.skills.SkillType; import com.gmail.nossr50.util.Misc; @@ -23,10 +24,10 @@ public class Mining { */ protected static int getBlockXp(BlockState blockState) { 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) { - 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)) { xp = ModUtils.getCustomBlock(blockState).getXpGain(); diff --git a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java index f6777885d..431687281 100644 --- a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java +++ b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java @@ -13,6 +13,7 @@ import org.bukkit.inventory.PlayerInventory; import com.gmail.nossr50.mcMMO; 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.skills.SkillType; import com.gmail.nossr50.events.skills.repair.McMMOPlayerRepairCheckEvent; @@ -155,7 +156,7 @@ public class RepairManager extends SkillManager { Repair.removeOneFrom(inventory, repairItemLocation); // 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 player.playSound(player.getLocation(), Sound.ANVIL_USE, Misc.ANVIL_USE_VOLUME, Misc.ANVIL_USE_PITCH); diff --git a/src/main/java/com/gmail/nossr50/skills/smelting/Smelting.java b/src/main/java/com/gmail/nossr50/skills/smelting/Smelting.java index 05bd3f0d0..ff0a9186a 100644 --- a/src/main/java/com/gmail/nossr50/skills/smelting/Smelting.java +++ b/src/main/java/com/gmail/nossr50/skills/smelting/Smelting.java @@ -3,7 +3,7 @@ package com.gmail.nossr50.skills.smelting; import org.bukkit.Material; 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; public class Smelting { @@ -49,10 +49,10 @@ public class Smelting { public static double fluxMiningChance = AdvancedConfig.getInstance().getFluxMiningChance(); 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) { - xp = Config.getInstance().getXp(SkillType.SMELTING, Material.REDSTONE_ORE); + xp = ExperienceConfig.getInstance().getXp(SkillType.SMELTING, Material.REDSTONE_ORE); } return xp; diff --git a/src/main/java/com/gmail/nossr50/skills/taming/Taming.java b/src/main/java/com/gmail/nossr50/skills/taming/Taming.java index eb0f0f017..8b40b3eae 100644 --- a/src/main/java/com/gmail/nossr50/skills/taming/Taming.java +++ b/src/main/java/com/gmail/nossr50/skills/taming/Taming.java @@ -8,7 +8,7 @@ import org.bukkit.entity.Tameable; import org.bukkit.entity.Wolf; 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; public class Taming { @@ -32,8 +32,8 @@ public class Taming { public static int thickFurUnlockLevel = AdvancedConfig.getInstance().getThickFurUnlock(); public static int thickFurModifier = AdvancedConfig.getInstance().getThickFurModifier(); - public static int wolfXp = Config.getInstance().getTamingXPWolf(); - public static int ocelotXp = Config.getInstance().getTamingXPOcelot(); + public static int wolfXp = ExperienceConfig.getInstance().getTamingXPWolf(); + public static int ocelotXp = ExperienceConfig.getInstance().getTamingXPOcelot(); public static boolean canPreventDamage(Tameable pet, AnimalTamer owner) { return pet.isTamed() && owner instanceof Player && pet instanceof Wolf; diff --git a/src/main/java/com/gmail/nossr50/skills/woodcutting/Woodcutting.java b/src/main/java/com/gmail/nossr50/skills/woodcutting/Woodcutting.java index ed5520923..7f7832d64 100644 --- a/src/main/java/com/gmail/nossr50/skills/woodcutting/Woodcutting.java +++ b/src/main/java/com/gmail/nossr50/skills/woodcutting/Woodcutting.java @@ -13,6 +13,7 @@ import org.bukkit.material.Tree; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; +import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.datatypes.mods.CustomBlock; import com.gmail.nossr50.util.BlockUtils; 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 switch (blockState.getType()) { case HUGE_MUSHROOM_1: - return Config.getInstance().getWoodcuttingXPHugeBrownMushroom(); + return ExperienceConfig.getInstance().getWoodcuttingXPHugeBrownMushroom(); case HUGE_MUSHROOM_2: - return Config.getInstance().getWoodcuttingXPHugeRedMushroom(); + return ExperienceConfig.getInstance().getWoodcuttingXPHugeRedMushroom(); default: break; @@ -58,16 +59,16 @@ public final class Woodcutting { switch (((Tree) blockState.getData()).getSpecies()) { case GENERIC: - return Config.getInstance().getWoodcuttingXPOak(); + return ExperienceConfig.getInstance().getWoodcuttingXPOak(); case REDWOOD: - return Config.getInstance().getWoodcuttingXPSpruce(); + return ExperienceConfig.getInstance().getWoodcuttingXPSpruce(); case BIRCH: - return Config.getInstance().getWoodcuttingXPBirch(); + return ExperienceConfig.getInstance().getWoodcuttingXPBirch(); case JUNGLE: - int xp = Config.getInstance().getWoodcuttingXPJungle(); + int xp = ExperienceConfig.getInstance().getWoodcuttingXPJungle(); if (experienceGainMethod == ExperienceGainMethod.TREE_FELLER) { xp *= 0.5; diff --git a/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java b/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java index 75990de8e..16cfeaf73 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java +++ b/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java @@ -19,6 +19,7 @@ import org.bukkit.inventory.ItemStack; import com.gmail.nossr50.mcMMO; 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.skills.SkillType; import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent; @@ -460,14 +461,14 @@ public final class CombatUtils { double baseXP = 0; if (target instanceof Player) { - if (!Config.getInstance().getExperienceGainsPlayerVersusPlayerEnabled()) { + if (!ExperienceConfig.getInstance().getExperienceGainsPlayerVersusPlayerEnabled()) { return; } Player defender = (Player) target; if (defender.isOnline() && System.currentTimeMillis() >= UserManager.getPlayer(defender).getRespawnATS() + 5) { - baseXP = 20 * Config.getInstance().getPlayerVersusPlayerXP(); + baseXP = 20 * ExperienceConfig.getInstance().getPlayerVersusPlayerXP(); } } else { @@ -476,7 +477,7 @@ public final class CombatUtils { baseXP = ModUtils.getCustomEntity(target).getXpMultiplier(); } else { - baseXP = Config.getInstance().getAnimalsXP(); + baseXP = ExperienceConfig.getInstance().getAnimalsXP(); } } else { @@ -484,7 +485,7 @@ public final class CombatUtils { switch (type) { case BAT: - baseXP = Config.getInstance().getAnimalsXP(); + baseXP = ExperienceConfig.getInstance().getAnimalsXP(); break; case BLAZE: @@ -499,7 +500,7 @@ public final class CombatUtils { case SLIME: case SPIDER: case ZOMBIE: - baseXP = Config.getInstance().getCombatXP(type); + baseXP = ExperienceConfig.getInstance().getCombatXP(type); break; // Temporary workaround for custom entities @@ -510,17 +511,17 @@ public final class CombatUtils { case SKELETON: switch (((Skeleton) target).getSkeletonType()) { case WITHER: - baseXP = Config.getInstance().getWitherSkeletonXP(); + baseXP = ExperienceConfig.getInstance().getWitherSkeletonXP(); break; default: - baseXP = Config.getInstance().getCombatXP(type); + baseXP = ExperienceConfig.getInstance().getCombatXP(type); break; } break; case IRON_GOLEM: if (!((IronGolem) target).isPlayerCreated()) { - baseXP = Config.getInstance().getCombatXP(type); + baseXP = ExperienceConfig.getInstance().getCombatXP(type); } break; @@ -533,7 +534,7 @@ public final class CombatUtils { } if (target.hasMetadata(mcMMO.entityMetadataKey)) { - baseXP *= Config.getInstance().getSpawnedMobXpMultiplier(); + baseXP *= ExperienceConfig.getInstance().getSpawnedMobXpMultiplier(); } baseXP *= 10; diff --git a/src/main/resources/advanced.yml b/src/main/resources/advanced.yml index 1785a4c41..d753cc9e7 100644 --- a/src/main/resources/advanced.yml +++ b/src/main/resources/advanced.yml @@ -4,7 +4,7 @@ # For advanced users only! There is no need to change anything 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. # ##### diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 5eeacac87..9704b6320 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -303,114 +303,6 @@ Double_Drops: Spruce: 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 ### diff --git a/src/main/resources/experience.yml b/src/main/resources/experience.yml new file mode 100644 index 000000000..8d7817657 --- /dev/null +++ b/src/main/resources/experience.yml @@ -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 diff --git a/src/main/resources/experienceFormula.yml b/src/main/resources/experienceFormula.yml deleted file mode 100644 index 216d01ad3..000000000 --- a/src/main/resources/experienceFormula.yml +++ /dev/null @@ -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