Browse Source

Add + Wire DiminishingReturn config values
Removed the experience multiplier from the xp conversion task, it just
seems like something very unecessary

nossr50 6 years ago
parent
commit
2e3f9b4a96

+ 2 - 1
Changelog.txt

@@ -138,7 +138,7 @@ Version 2.2.0
     Update_Check, Prefer_Beta, Ability_Activation_Level_Gate, Max_Tries_At_Same_Location, Prevent_AFK_Leveling, Items_Pickup_Disabled_Full_Inventory
     Update_Check, Prefer_Beta, Ability_Activation_Level_Gate, Max_Tries_At_Same_Location, Prevent_AFK_Leveling, Items_Pickup_Disabled_Full_Inventory
 
 
     Removed the following config settings for being unwanted
     Removed the following config settings for being unwanted
-    Config_Update_Overwrite, Tool_Mods_Enabled, Armor_Mods_Enabled, Block_Mods_Enabled, Entity_Mods_Enabled,
+    Config_Update_Overwrite, Tool_Mods_Enabled, Armor_Mods_Enabled, Block_Mods_Enabled, Entity_Mods_Enabled, ExperienceConversionMultiplier
 
 
     API Changes
     API Changes
     Config settings can now be found in the ConfigManager (getter for it in mcMMO.java)
     Config settings can now be found in the ConfigManager (getter for it in mcMMO.java)
@@ -150,6 +150,7 @@ Version 2.2.0
     Added API method to check if player parties are size capped
     Added API method to check if player parties are size capped
     Added API method to grab the level cap of a skill by its PrimarySkillType ENUM definition
     Added API method to grab the level cap of a skill by its PrimarySkillType ENUM definition
     Added API method to check if a skill was being level capped
     Added API method to check if a skill was being level capped
+    Added 'UndefinedSkillBehaviour' for trying to use a method that has no behaviour defined for the provided skill
 
 
 Version 2.1.58
 Version 2.1.58
     Fixed the wrong locale string being used for Mining Double Drops
     Fixed the wrong locale string being used for Mining Double Drops

+ 1 - 1
src/main/java/com/gmail/nossr50/api/ExperienceAPI.java

@@ -1092,7 +1092,7 @@ public final class ExperienceAPI {
         PrimarySkillType skill = PrimarySkillType.getSkill(skillType);
         PrimarySkillType skill = PrimarySkillType.getSkill(skillType);
 
 
         if (skill == null) {
         if (skill == null) {
-            throw new InvalidSkillException();
+            throw new InvalidSkillException(skillType);
         }
         }
 
 
         return skill;
         return skill;

+ 2 - 2
src/main/java/com/gmail/nossr50/api/exceptions/InvalidSkillException.java

@@ -3,7 +3,7 @@ package com.gmail.nossr50.api.exceptions;
 public class InvalidSkillException extends RuntimeException {
 public class InvalidSkillException extends RuntimeException {
     private static final long serialVersionUID = 942705284195791157L;
     private static final long serialVersionUID = 942705284195791157L;
 
 
-    public InvalidSkillException() {
-        super("That is not a valid skill.");
+    public InvalidSkillException(String s) {
+        super(s+" does not match a valid skill.");
     }
     }
 }
 }

+ 9 - 0
src/main/java/com/gmail/nossr50/api/exceptions/UndefinedSkillBehaviour.java

@@ -0,0 +1,9 @@
+package com.gmail.nossr50.api.exceptions;
+
+import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
+
+public class UndefinedSkillBehaviour extends RuntimeException {
+    public UndefinedSkillBehaviour(PrimarySkillType primarySkillType) {
+        super("Undefined behaviour for skill! - "+primarySkillType.toString());
+    }
+}

+ 0 - 1
src/main/java/com/gmail/nossr50/config/ConfigManager.java

@@ -50,7 +50,6 @@ import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.skills.repair.repairables.Repairable;
 import com.gmail.nossr50.skills.repair.repairables.Repairable;
 import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
 import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
-import com.google.common.collect.Maps;
 import com.google.common.reflect.TypeToken;
 import com.google.common.reflect.TypeToken;
 import ninja.leaping.configurate.objectmapping.serialize.TypeSerializerCollection;
 import ninja.leaping.configurate.objectmapping.serialize.TypeSerializerCollection;
 import ninja.leaping.configurate.objectmapping.serialize.TypeSerializers;
 import ninja.leaping.configurate.objectmapping.serialize.TypeSerializers;

+ 0 - 27
src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java

@@ -122,33 +122,6 @@ public class ExperienceConfig extends ConfigValidated {
         config.set(EXPERIENCE_FORMULA, MULTIPLIER, GLOBAL, value);
         config.set(EXPERIENCE_FORMULA, MULTIPLIER, GLOBAL, value);
     }*/
     }*/
 
 
-    /* Custom XP perk */
-    public double getCustomXpPerkBoost() {
-        return getDoubleValue(EXPERIENCE_FORMULA, CUSTOM_XP_PERK, BOOST);
-    }
-
-    /* Diminished Returns */
-    public float getDiminishedReturnsCap() {
-        return (float) getDoubleValue(DIMISHED_RETURNS, GUARANTEED_MINIMUM_PERCENTAGE);
-    }
-
-    public boolean getDiminishedReturnsEnabled() {
-        return getBooleanValue(DIMINISHED_RETURNS, ENABLED);
-    }
-
-    public int getDiminishedReturnsThreshold(PrimarySkillType skill) {
-        return getIntValue(DIMINISHED_RETURNS, THRESHOLD, StringUtils.getCapitalized(skill.toString()));
-    }
-
-    public int getDiminishedReturnsTimeInterval() {
-        return getIntValue(DIMINISHED_RETURNS, TIME_INTERVAL);
-    }
-
-    /* Conversion */
-    public double getExpModifier() {
-        return getDoubleValue(CONVERSION, EXP + MODIFIER);
-    }
-
     /*
     /*
      * XP SETTINGS
      * XP SETTINGS
      */
      */

+ 1 - 1
src/main/java/com/gmail/nossr50/config/hocon/CustomXPPerkSerializer.java

@@ -64,7 +64,7 @@ public class CustomXPPerkSerializer implements TypeSerializer<CustomXPPerk> {
                 return primarySkillType;
                 return primarySkillType;
         }
         }
 
 
-        throw new InvalidSkillException();
+        throw new InvalidSkillException(string);
     }
     }
 
 
     /*
     /*

+ 33 - 0
src/main/java/com/gmail/nossr50/config/hocon/playerleveling/ConfigLeveling.java

@@ -1,10 +1,14 @@
 package com.gmail.nossr50.config.hocon.playerleveling;
 package com.gmail.nossr50.config.hocon.playerleveling;
 
 
+import com.gmail.nossr50.api.exceptions.InvalidSkillException;
 import com.gmail.nossr50.datatypes.experience.FormulaType;
 import com.gmail.nossr50.datatypes.experience.FormulaType;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
+import com.gmail.nossr50.mcMMO;
 import ninja.leaping.configurate.objectmapping.Setting;
 import ninja.leaping.configurate.objectmapping.Setting;
 import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
 import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
 
 
+import java.util.HashMap;
+
 @ConfigSerializable
 @ConfigSerializable
 public class ConfigLeveling {
 public class ConfigLeveling {
 
 
@@ -27,10 +31,37 @@ public class ConfigLeveling {
     @Setting(value = "Experience-Formula")
     @Setting(value = "Experience-Formula")
     private ConfigExperienceFormula configExperienceFormula = new ConfigExperienceFormula();
     private ConfigExperienceFormula configExperienceFormula = new ConfigExperienceFormula();
 
 
+    @Setting(value = "Diminished-Returns", comment = "Penalize players for gaining XP too quickly in a given time period.")
+    private ConfigLevelingDiminishedReturns configLevelingDiminishedReturns = new ConfigLevelingDiminishedReturns();
+
     /*
     /*
      * GETTER BOILERPLATE
      * GETTER BOILERPLATE
      */
      */
 
 
+    public float getGuaranteedMinimums() {
+        return configLevelingDiminishedReturns.getGuaranteedMinimums();
+    }
+
+    public boolean isDiminishedReturnsEnabled() {
+        return configLevelingDiminishedReturns.isDiminishedReturnsEnabled();
+    }
+
+    public int getDimishedReturnTimeInterval() {
+        return configLevelingDiminishedReturns.getDimishedReturnTimeInterval();
+    }
+
+    public HashMap<PrimarySkillType, Integer> getSkillThresholds() {
+        return configLevelingDiminishedReturns.getSkillThresholds();
+    }
+
+    public int getSkillThreshold(PrimarySkillType primarySkillType) {
+        return configLevelingDiminishedReturns.getSkillThreshold(primarySkillType);
+    }
+
+    public ConfigLevelingDiminishedReturns getConfigLevelingDiminishedReturns() {
+        return configLevelingDiminishedReturns;
+    }
+
     public double getSkillXpFormulaModifier(PrimarySkillType primarySkillType) {
     public double getSkillXpFormulaModifier(PrimarySkillType primarySkillType) {
         return getConfigExperienceFormula().getSkillXpFormulaModifier(primarySkillType);
         return getConfigExperienceFormula().getSkillXpFormulaModifier(primarySkillType);
     }
     }
@@ -152,6 +183,7 @@ public class ConfigLeveling {
             case SALVAGE:
             case SALVAGE:
                 return configSectionLevelCaps.getConfigSectionSkillLevelCaps().getSalvage().getLevelCap();
                 return configSectionLevelCaps.getConfigSectionSkillLevelCaps().getSalvage().getLevelCap();
             default:
             default:
+                mcMMO.p.getLogger().severe("No defined level cap for "+primarySkillType.toString()+" - Contact the mcMMO dev team!");
                 return Integer.MAX_VALUE;
                 return Integer.MAX_VALUE;
         }
         }
     }
     }
@@ -189,6 +221,7 @@ public class ConfigLeveling {
             case SALVAGE:
             case SALVAGE:
                 return configSectionLevelCaps.getConfigSectionSkillLevelCaps().getSalvage().isLevelCapEnabled();
                 return configSectionLevelCaps.getConfigSectionSkillLevelCaps().getSalvage().isLevelCapEnabled();
             default:
             default:
+                mcMMO.p.getLogger().severe("No defined level cap for "+primarySkillType.toString()+" - Contact the mcMMO dev team!");
                 return false;
                 return false;
         }
         }
     }
     }

+ 86 - 0
src/main/java/com/gmail/nossr50/config/hocon/playerleveling/ConfigLevelingDiminishedReturns.java

@@ -0,0 +1,86 @@
+package com.gmail.nossr50.config.hocon.playerleveling;
+
+import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
+import ninja.leaping.configurate.objectmapping.Setting;
+import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
+
+import java.util.HashMap;
+
+import static com.gmail.nossr50.datatypes.skills.PrimarySkillType.*;
+
+@ConfigSerializable
+public class ConfigLevelingDiminishedReturns {
+
+    /*
+    Diminished_Returns:
+    #This is the minimum amount of XP a player will earn after reaching the timed threshold (this is to prevent punishing a player too hard for earning XP)
+    ## A value of 1 would mean that a player gets FULL XP, which defeats the purpose of diminished returns, the default value is 0.05 (5% minimum XP)
+    ### Set this value to 0 to turn it off
+    Guaranteed_Minimum_Percentage: 0.05
+    Enabled: false
+     */
+
+    private static final HashMap<PrimarySkillType, Integer> SKILL_THRESHOLDS_DEFAULT;
+    public static final float GURANTEED_MIN_DEFAULT = 0.05f;
+
+    static {
+        SKILL_THRESHOLDS_DEFAULT = new HashMap<>();
+        SKILL_THRESHOLDS_DEFAULT.put(ACROBATICS, 10000);
+        SKILL_THRESHOLDS_DEFAULT.put(ALCHEMY, 10000);
+        SKILL_THRESHOLDS_DEFAULT.put(ARCHERY, 10000);
+        SKILL_THRESHOLDS_DEFAULT.put(AXES, 10000);
+        SKILL_THRESHOLDS_DEFAULT.put(EXCAVATION, 10000);
+        SKILL_THRESHOLDS_DEFAULT.put(FISHING, 10000);
+        SKILL_THRESHOLDS_DEFAULT.put(HERBALISM, 10000);
+        SKILL_THRESHOLDS_DEFAULT.put(MINING, 10000);
+        SKILL_THRESHOLDS_DEFAULT.put(REPAIR, 10000);
+        SKILL_THRESHOLDS_DEFAULT.put(SWORDS, 10000);
+        SKILL_THRESHOLDS_DEFAULT.put(TAMING, 10000);
+        SKILL_THRESHOLDS_DEFAULT.put(UNARMED, 10000);
+        SKILL_THRESHOLDS_DEFAULT.put(WOODCUTTING, 10000);
+    }
+
+    private static final boolean DIMINISHED_RETURNS_DEFAULT = false;
+    private static final int DIMINISHED_TIME_DEFAULT = 10;
+
+    @Setting(value = "Enabled", comment = "Setting this to true will enable Diminished Returns on XP Gains." +
+            "\nDefault value: "+DIMINISHED_RETURNS_DEFAULT)
+    private boolean diminishedReturnsEnabled = DIMINISHED_RETURNS_DEFAULT;
+
+    @Setting(value = "Time-Interval-In-Minutes", comment = "The period of time in which to measure a players XP gain and reduce gains above a threshold during that time" +
+            "\nPlayers will be able to gain up to the threshold of XP in this time period before having their XP drastically reduced" +
+            "\nDefault value: "+DIMINISHED_TIME_DEFAULT)
+    private int dimishedReturnTimeInterval = DIMINISHED_TIME_DEFAULT;
+
+    @Setting(value = "Skill-Thresholds", comment = "The amount of XP that a player can gain without penalty in the defined time interval." +
+            "\nDefault value: 10000 for each skill, undefined skills will default to this value")
+    private HashMap<PrimarySkillType, Integer> skillThresholds = SKILL_THRESHOLDS_DEFAULT;
+
+    @Setting(value = "Guaranteed-Minimum", comment = "The multiplier applied to an XP gain when a player has reached diminishing returns to guarantee that some XP is still gained." +
+            "\nPlayers will gain (raw XP * guaranteedMinimum) if they are under sever enough diminishing return penalty (ie their XP would normally fall below this value)" +
+            "\nDefault value: ")
+    private float guaranteedMinimums = GURANTEED_MIN_DEFAULT;
+
+    public int getSkillThreshold(PrimarySkillType primarySkillType) {
+        if(skillThresholds.get(primarySkillType) == null)
+            return 10000;
+
+        return skillThresholds.get(primarySkillType);
+    }
+
+    public float getGuaranteedMinimums() {
+        return guaranteedMinimums;
+    }
+
+    public boolean isDiminishedReturnsEnabled() {
+        return diminishedReturnsEnabled;
+    }
+
+    public int getDimishedReturnTimeInterval() {
+        return dimishedReturnTimeInterval;
+    }
+
+    public HashMap<PrimarySkillType, Integer> getSkillThresholds() {
+        return skillThresholds;
+    }
+}

+ 0 - 5
src/main/java/com/gmail/nossr50/config/treasure/ExcavationTreasureConfig.java

@@ -5,12 +5,7 @@ import com.gmail.nossr50.config.ConfigConstants;
 import com.gmail.nossr50.config.UnsafeValueValidation;
 import com.gmail.nossr50.config.UnsafeValueValidation;
 import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
 import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.google.common.reflect.TypeToken;
-import ninja.leaping.configurate.ConfigurationNode;
-import ninja.leaping.configurate.objectmapping.ObjectMappingException;
-import org.bukkit.Material;
 
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 
 

+ 0 - 6
src/main/java/com/gmail/nossr50/config/treasure/HerbalismTreasureConfig.java

@@ -5,12 +5,6 @@ import com.gmail.nossr50.config.ConfigConstants;
 import com.gmail.nossr50.config.UnsafeValueValidation;
 import com.gmail.nossr50.config.UnsafeValueValidation;
 import com.gmail.nossr50.datatypes.treasure.HylianTreasure;
 import com.gmail.nossr50.datatypes.treasure.HylianTreasure;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.util.StringUtils;
-import com.google.common.reflect.TypeToken;
-import ninja.leaping.configurate.ConfigurationNode;
-import ninja.leaping.configurate.objectmapping.ObjectMappingException;
-import org.bukkit.Material;
-import org.bukkit.Tag;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashMap;

+ 1 - 0
src/main/java/com/gmail/nossr50/core/BonusDropManager.java

@@ -46,6 +46,7 @@ public class BonusDropManager {
         for (String material : materials) {
         for (String material : materials) {
             Material m = Material.matchMaterial(material);
             Material m = Material.matchMaterial(material);
             if (m == null) {
             if (m == null) {
+                //TODO: reduce to info level?
                 mcMMO.p.getLogger().severe("Error registering Bonus Drop -- Invalid Minecraft Name ID: " + material);
                 mcMMO.p.getLogger().severe("Error registering Bonus Drop -- Invalid Minecraft Name ID: " + material);
                 continue;
                 continue;
             }
             }

+ 2 - 1
src/main/java/com/gmail/nossr50/datatypes/experience/SkillXpGain.java

@@ -2,6 +2,7 @@ package com.gmail.nossr50.datatypes.experience;
 
 
 import com.gmail.nossr50.config.experience.ExperienceConfig;
 import com.gmail.nossr50.config.experience.ExperienceConfig;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
+import com.gmail.nossr50.mcMMO;
 
 
 import java.util.concurrent.Delayed;
 import java.util.concurrent.Delayed;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeUnit;
@@ -18,7 +19,7 @@ public class SkillXpGain implements Delayed {
     }
     }
 
 
     private static long getDuration() {
     private static long getDuration() {
-        return TimeUnit.MINUTES.toMillis(ExperienceConfig.getInstance().getDiminishedReturnsTimeInterval());
+        return TimeUnit.MINUTES.toMillis(mcMMO.getConfigManager().getConfigLeveling().getDimishedReturnTimeInterval());
     }
     }
 
 
     public PrimarySkillType getSkill() {
     public PrimarySkillType getSkill() {

+ 3 - 3
src/main/java/com/gmail/nossr50/listeners/SelfListener.java

@@ -99,9 +99,9 @@ public class SelfListener implements Listener {
             }
             }
         }
         }
 
 
-        int threshold = ExperienceConfig.getInstance().getDiminishedReturnsThreshold(primarySkillType);
+        int threshold = mcMMO.getConfigManager().getConfigLeveling().getSkillThreshold(primarySkillType);
 
 
-        if (threshold <= 0 || !ExperienceConfig.getInstance().getDiminishedReturnsEnabled()) {
+        if (threshold <= 0 || !mcMMO.getConfigManager().getConfigLeveling().getConfigLevelingDiminishedReturns().isDiminishedReturnsEnabled()) {
             // Diminished returns is turned off
             // Diminished returns is turned off
             return;
             return;
         }
         }
@@ -117,7 +117,7 @@ public class SelfListener implements Listener {
 
 
         final float rawXp = event.getRawXpGained();
         final float rawXp = event.getRawXpGained();
 
 
-        float guaranteedMinimum = ExperienceConfig.getInstance().getDiminishedReturnsCap() * rawXp;
+        float guaranteedMinimum = mcMMO.getConfigManager().getConfigLeveling().getGuaranteedMinimums() * rawXp;
 
 
         float modifiedThreshold = (float) (threshold / primarySkillType.getXpModifier() * mcMMO.getDynamicSettingsManager().getExperienceMapManager().getGlobalXpMult());
         float modifiedThreshold = (float) (threshold / primarySkillType.getXpModifier() * mcMMO.getDynamicSettingsManager().getExperienceMapManager().getGlobalXpMult());
         float difference = (mcMMOPlayer.getProfile().getRegisteredXpGain(primarySkillType) - modifiedThreshold) / modifiedThreshold;
         float difference = (mcMMOPlayer.getProfile().getRegisteredXpGain(primarySkillType) - modifiedThreshold) / modifiedThreshold;

+ 1 - 2
src/main/java/com/gmail/nossr50/mcMMO.java

@@ -51,7 +51,6 @@ import org.bukkit.plugin.java.JavaPlugin;
 
 
 import java.io.File;
 import java.io.File;
 import java.io.IOException;
 import java.io.IOException;
-import java.lang.reflect.Method;
 
 
 public class mcMMO extends JavaPlugin {
 public class mcMMO extends JavaPlugin {
     public static mcMMO p;
     public static mcMMO p;
@@ -564,7 +563,7 @@ public class mcMMO extends JavaPlugin {
         new PowerLevelUpdatingTask().runTaskTimer(this, 2 * Misc.TICK_CONVERSION_FACTOR, 2 * Misc.TICK_CONVERSION_FACTOR);
         new PowerLevelUpdatingTask().runTaskTimer(this, 2 * Misc.TICK_CONVERSION_FACTOR, 2 * Misc.TICK_CONVERSION_FACTOR);
 
 
         // Clear the registered XP data so players can earn XP again
         // Clear the registered XP data so players can earn XP again
-        if (ExperienceConfig.getInstance().getDiminishedReturnsEnabled()) {
+        if (mcMMO.getConfigManager().getConfigExperience().get) {
             new ClearRegisteredXPGainTask().runTaskTimer(this, 60, 60);
             new ClearRegisteredXPGainTask().runTaskTimer(this, 60, 60);
         }
         }
 
 

+ 1 - 1
src/main/java/com/gmail/nossr50/runnables/database/FormulaConversionTask.java

@@ -66,7 +66,7 @@ public class FormulaConversionTask extends BukkitRunnable {
                 continue;
                 continue;
             }
             }
 
 
-            int[] newExperienceValues = mcMMO.getFormulaManager().calculateNewLevel(primarySkillType, (int) Math.floor(totalOldXP / ExperienceConfig.getInstance().getExpModifier()), formulaType);
+            int[] newExperienceValues = mcMMO.getFormulaManager().calculateNewLevel(primarySkillType, (int) Math.floor(totalOldXP / 1.0), formulaType);
             int newLevel = newExperienceValues[0];
             int newLevel = newExperienceValues[0];
             int newXPlevel = newExperienceValues[1];
             int newXPlevel = newExperienceValues[1];
 
 

+ 4 - 4
src/main/java/com/gmail/nossr50/util/experience/ExperienceMapManager.java

@@ -1,6 +1,6 @@
 package com.gmail.nossr50.util.experience;
 package com.gmail.nossr50.util.experience;
 
 
-import com.gmail.nossr50.api.exceptions.InvalidSkillException;
+import com.gmail.nossr50.api.exceptions.UndefinedSkillBehaviour;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.mcMMO;
 import org.bukkit.Material;
 import org.bukkit.Material;
@@ -193,11 +193,11 @@ public class ExperienceMapManager {
      * @param primarySkillType target skill
      * @param primarySkillType target skill
      * @param material         target material
      * @param material         target material
      * @return XP value for breaking this block for said skill
      * @return XP value for breaking this block for said skill
-     * @throws InvalidSkillException for skills that don't give block break experience
+     * @throws UndefinedSkillBehaviour for skills that don't give block break experience
      * @deprecated its faster to use direct calls to get XP, for example getMiningXP(Material material) instead of using this method
      * @deprecated its faster to use direct calls to get XP, for example getMiningXP(Material material) instead of using this method
      */
      */
     @Deprecated
     @Deprecated
-    public float getBlockBreakXpValue(PrimarySkillType primarySkillType, Material material) throws InvalidSkillException {
+    public float getBlockBreakXpValue(PrimarySkillType primarySkillType, Material material) throws UndefinedSkillBehaviour {
         switch (primarySkillType) {
         switch (primarySkillType) {
             case MINING:
             case MINING:
                 return getMiningXp(material);
                 return getMiningXp(material);
@@ -208,7 +208,7 @@ public class ExperienceMapManager {
             case WOODCUTTING:
             case WOODCUTTING:
                 return getWoodcuttingXp(material);
                 return getWoodcuttingXp(material);
             default:
             default:
-                throw new InvalidSkillException();
+                throw new UndefinedSkillBehaviour(primarySkillType);
         }
         }
     }
     }