Parcourir la source

Fixed a NPE with taming.

nossr50 il y a 6 ans
Parent
commit
5f7f6fc55a
3 fichiers modifiés avec 26 ajouts et 14 suppressions
  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) {