瀏覽代碼

Fix bleed tasks invoking ruptures

Also, made the mcmmo custom damage checks handle nested calls
Shane Freeder 5 年之前
父節點
當前提交
e8165321e1
共有 1 個文件被更改,包括 7 次插入1 次删除
  1. 7 1
      src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java

+ 7 - 1
src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java

@@ -539,7 +539,11 @@ public final class CombatUtils {
 
         if(newHealth == 0)
         {
+            // TODO: This is horrible, but there is no cleaner way to do this without potentially breaking existing code right now
+            boolean wasMetaSet = target.getMetadata(mcMMO.CUSTOM_DAMAGE_METAKEY).size() != 0;
+            target.setMetadata(mcMMO.CUSTOM_DAMAGE_METAKEY, mcMMO.metadataValue);
             target.damage(9999, attacker);
+            if (!wasMetaSet) target.removeMetadata(mcMMO.CUSTOM_DAMAGE_METAKEY, mcMMO.p);
         }
         else
             target.setHealth(newHealth);
@@ -550,9 +554,11 @@ public final class CombatUtils {
             return;
         }
 
+        // This is horrible, but there is no cleaner way to do this without potentially breaking existing code
+        boolean wasMetaSet = target.getMetadata(mcMMO.CUSTOM_DAMAGE_METAKEY).size() != 0;
         target.setMetadata(mcMMO.CUSTOM_DAMAGE_METAKEY, mcMMO.metadataValue);
         target.damage(damage, attacker);
-        target.removeMetadata(mcMMO.CUSTOM_DAMAGE_METAKEY, mcMMO.p);
+        if (!wasMetaSet) target.removeMetadata(mcMMO.CUSTOM_DAMAGE_METAKEY, mcMMO.p);
 
 //        //IFrame storage
 ////        int noDamageTicks = target.getNoDamageTicks();