Browse Source

Fixed a NPE with taming.

nossr50 6 years ago
parent
commit
5f7f6fc55a
3 changed files with 26 additions and 14 deletions
  1. 3 0
      Changelog.txt
  2. 1 1
      pom.xml
  3. 22 13
      src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java

+ 3 - 0
Changelog.txt

@@ -1,3 +1,6 @@
+Version 2.1.97
+    Fixed a NPE that could occur if a pet participated in combat and its master's mcMMO data was not available
+
 Version 2.1.96
 Version 2.1.96
     Added the setting 'Skills.General.LimitBreak.AllowPVE' to advanced.yml to allow Limit Break damage bonus to apply in PVE again, defaults to false
     Added the setting 'Skills.General.LimitBreak.AllowPVE' to advanced.yml to allow Limit Break damage bonus to apply in PVE again, defaults to false
     Updated Limit Break locale strings
     Updated Limit Break locale strings

+ 1 - 1
pom.xml

@@ -2,7 +2,7 @@
     <modelVersion>4.0.0</modelVersion>
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.gmail.nossr50.mcMMO</groupId>
     <groupId>com.gmail.nossr50.mcMMO</groupId>
     <artifactId>mcMMO</artifactId>
     <artifactId>mcMMO</artifactId>
-    <version>2.1.96</version>
+    <version>2.1.97-SNAPSHOT</version>
     <name>mcMMO</name>
     <name>mcMMO</name>
     <url>https://github.com/mcMMO-Dev/mcMMO</url>
     <url>https://github.com/mcMMO-Dev/mcMMO</url>
     <scm>
     <scm>

+ 22 - 13
src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java

@@ -173,25 +173,34 @@ public final class CombatUtils {
         double initialDamage = event.getDamage();
         double initialDamage = event.getDamage();
         double finalDamage = initialDamage;
         double finalDamage = initialDamage;
 
 
-        McMMOPlayer mcMMOPlayer = UserManager.getPlayer(master);
-        TamingManager tamingManager = mcMMOPlayer.getTamingManager();
+        if(master != null && !master.isOnline() && master.isValid()) {
+            McMMOPlayer mcMMOPlayer = UserManager.getPlayer(master);
 
 
-        if (tamingManager.canUseFastFoodService()) {
-            tamingManager.fastFoodService(wolf, event.getDamage());
-        }
+            //Make sure the profiles been loaded
+            if(mcMMOPlayer == null) {
+                return;
+            }
 
 
-        tamingManager.pummel(target, wolf);
+            TamingManager tamingManager = mcMMOPlayer.getTamingManager();
 
 
-        if (tamingManager.canUseSharpenedClaws()) {
-            finalDamage+=tamingManager.sharpenedClaws();
-        }
+            if (tamingManager.canUseFastFoodService()) {
+                tamingManager.fastFoodService(wolf, event.getDamage());
+            }
+
+            tamingManager.pummel(target, wolf);
 
 
-        if (tamingManager.canUseGore()) {
-            finalDamage+=tamingManager.gore(target, initialDamage);
+            if (tamingManager.canUseSharpenedClaws()) {
+                finalDamage+=tamingManager.sharpenedClaws();
+            }
+
+            if (tamingManager.canUseGore()) {
+                finalDamage+=tamingManager.gore(target, initialDamage);
+            }
+
+            applyScaledModifiers(initialDamage, finalDamage, event);
+            startGainXp(mcMMOPlayer, target, PrimarySkillType.TAMING);
         }
         }
 
 
-        applyScaledModifiers(initialDamage, finalDamage, event);
-        startGainXp(mcMMOPlayer, target, PrimarySkillType.TAMING);
     }
     }
 
 
     private static void processArcheryCombat(LivingEntity target, Player player, EntityDamageByEntityEvent event, Arrow arrow) {
     private static void processArcheryCombat(LivingEntity target, Player player, EntityDamageByEntityEvent event, Arrow arrow) {