소스 검색

Fixed a NPE with taming.

nossr50 5 년 전
부모
커밋
5f7f6fc55a
3개의 변경된 파일26개의 추가작업 그리고 14개의 파일을 삭제
  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) {