From ac29c51d6ecba088c0cc0846959b061a0cfe739b Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Mon, 29 Jul 2019 18:41:28 +0100 Subject: [PATCH] Fixed an NPE that may occur with random chances on a player without loaded data Also correct changelog version --- Changelog.txt | 7 +++---- .../nossr50/util/random/RandomChanceSkill.java | 17 +++++++++++------ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 4999d70fe..9ba45b09f 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,9 +1,8 @@ -Version 2.1.101 - mcnotify command now checks that it's being executed by a player - Fixed some concurrency concerns around BleedTasks - Version 2.1.100 Corrected some mistakes made in the updated Russian locale (thanks myfbone!) + mcnotify command now checks that it's being executed by a player + Fixed some concurrency concerns around BleedTasks + Fixed an NPE that may occur with random chances on a player without loaded data Version 2.1.99 MASSIVE update to the Russian locale (ru) credit to myfbone diff --git a/src/main/java/com/gmail/nossr50/util/random/RandomChanceSkill.java b/src/main/java/com/gmail/nossr50/util/random/RandomChanceSkill.java index 3502e84bc..0bf2cd32a 100644 --- a/src/main/java/com/gmail/nossr50/util/random/RandomChanceSkill.java +++ b/src/main/java/com/gmail/nossr50/util/random/RandomChanceSkill.java @@ -1,6 +1,7 @@ package com.gmail.nossr50.util.random; import com.gmail.nossr50.config.AdvancedConfig; +import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.util.Permissions; @@ -21,10 +22,12 @@ public class RandomChanceSkill implements RandomChanceExecution { this.subSkillType = subSkillType; this.probabilityCap = RandomChanceUtil.LINEAR_CURVE_VAR; - if(player != null) - this.skillLevel = UserManager.getPlayer(player).getSkillLevel(primarySkillType); - else + final McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); + if (player != null && mcMMOPlayer != null) { + this.skillLevel = mcMMOPlayer.getSkillLevel(primarySkillType); + } else { this.skillLevel = 0; + } if(player != null) isLucky = Permissions.lucky(player, primarySkillType); @@ -42,10 +45,12 @@ public class RandomChanceSkill implements RandomChanceExecution { this.primarySkillType = subSkillType.getParentSkill(); this.subSkillType = subSkillType; - if(player != null) - this.skillLevel = UserManager.getPlayer(player).getSkillLevel(primarySkillType); - else + final McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); + if (player != null && mcMMOPlayer != null) { + this.skillLevel = mcMMOPlayer.getSkillLevel(primarySkillType); + } else { this.skillLevel = 0; + } if(player != null) isLucky = Permissions.lucky(player, primarySkillType);