diff --git a/Changelog.txt b/Changelog.txt
index 7f67c15e8..2b1ac3612 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -1,5 +1,5 @@
Version 2.1.147
-
+ Fixed a bug where players below the level threshold on a hardcore mode enabled server would gain levels on death in certain circumstances
Version 2.1.146
A bug where players would disconnect from mcMMO messages has been fixed (thanks kashike / read notes)
diff --git a/pom.xml b/pom.xml
index a3d6c5776..b0125040b 100755
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
4.0.0
com.gmail.nossr50.mcMMO
mcMMO
- 2.1.147-SNAPSHOT
+ 2.1.147
mcMMO
https://github.com/mcMMO-Dev/mcMMO
diff --git a/src/main/java/com/gmail/nossr50/util/EventUtils.java b/src/main/java/com/gmail/nossr50/util/EventUtils.java
index 3065bc5cb..b75dcd197 100644
--- a/src/main/java/com/gmail/nossr50/util/EventUtils.java
+++ b/src/main/java/com/gmail/nossr50/util/EventUtils.java
@@ -331,16 +331,18 @@ public class EventUtils {
for (PrimarySkillType primarySkillType : PrimarySkillType.NON_CHILD_SKILLS) {
String skillName = primarySkillType.toString();
int playerSkillLevel = playerProfile.getSkillLevel(primarySkillType);
+ int threshold = Config.getInstance().getHardcoreDeathStatPenaltyLevelThreshold();
+ if(playerSkillLevel > threshold) {
+ playerProfile.modifySkill(primarySkillType, Math.max(threshold, playerSkillLevel - levelChanged.get(skillName)));
+ playerProfile.removeXp(primarySkillType, experienceChanged.get(skillName));
- playerProfile.modifySkill(primarySkillType, Math.max(Config.getInstance().getHardcoreDeathStatPenaltyLevelThreshold(), playerSkillLevel - levelChanged.get(skillName)));
- playerProfile.removeXp(primarySkillType, experienceChanged.get(skillName));
+ if (playerProfile.getSkillXpLevel(primarySkillType) < 0) {
+ playerProfile.setSkillXpLevel(primarySkillType, 0);
+ }
- if (playerProfile.getSkillXpLevel(primarySkillType) < 0) {
- playerProfile.setSkillXpLevel(primarySkillType, 0);
- }
-
- if (playerProfile.getSkillLevel(primarySkillType) < 0) {
- playerProfile.modifySkill(primarySkillType, 0);
+ if (playerProfile.getSkillLevel(primarySkillType) < 0) {
+ playerProfile.modifySkill(primarySkillType, 0);
+ }
}
}
}