From da6b6841b71c17ff4a0c4b54600b849966ed7bac Mon Sep 17 00:00:00 2001 From: nossr50 Date: Mon, 14 Jan 2019 22:21:33 -0800 Subject: [PATCH] Prevent commands from setting players to negative levels --- Changelog.txt | 1 + src/main/java/com/gmail/nossr50/config/Config.java | 2 +- .../com/gmail/nossr50/datatypes/player/PlayerProfile.java | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Changelog.txt b/Changelog.txt index 29af58e82..94e7c3c1c 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -46,6 +46,7 @@ Version 2.1.0 - (Locale) Removed localizations with the following codes for being almost empty: id, HR_hr, et_EE, lv, lt, no, pl_PL, pt_PT, tr_TR - (Config) Removed SkillShot's IncreaseLevel & IncreasePercentage (replaced by RankDamageMultiplier) - (Config) Removed AxeMastery's MaxBonus & MaxBonusLevel (replaced by RankDamageMultiplier) + = (Experience) Fixed a bug where you could set a players levels into the negative and bad things would happen = (Plugin Compatibility) mcMMO now fires new custom events relating to changes it makes to player scoreboards, plugin authors can listen to these events to improve compatibility = (Items) Chimaera Wing now tracks cooldowns between sessions for players (no more disconnect abuse) = (Skills) Added missing mushroom blocks to experience.yml defaults diff --git a/src/main/java/com/gmail/nossr50/config/Config.java b/src/main/java/com/gmail/nossr50/config/Config.java index 0739b4070..edcc96908 100644 --- a/src/main/java/com/gmail/nossr50/config/Config.java +++ b/src/main/java/com/gmail/nossr50/config/Config.java @@ -245,7 +245,7 @@ public class Config extends AutoUpdateConfigLoader { /* General Settings */ - //Classic mode will default the value to true if the config file doesn't contain the entry (server is from a previous mcMMO install) + //Retro mode will default the value to true if the config file doesn't contain the entry (server is from a previous mcMMO install) public boolean getIsRetroMode() { return config.getBoolean("General.RetroMode", true); } //XP needed to level is multiplied by this when using classic mode diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java b/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java index 8c0464cb2..7332fbd8f 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java @@ -280,6 +280,10 @@ public class PlayerProfile { changed = true; + //Don't allow levels to be negative + if(level < 0) + level = 0; + skills.put(skill, level); skillsXp.put(skill, 0F); }