浏览代码

Fixed ricocheted arrows missing some data after bouncing
Fixes #5093

nossr50 7 月之前
父节点
当前提交
04eefaef79
共有 2 个文件被更改,包括 10 次插入2 次删除
  1. 1 0
      Changelog.txt
  2. 9 2
      src/main/java/com/gmail/nossr50/skills/crossbows/CrossbowsManager.java

+ 1 - 0
Changelog.txt

@@ -1,4 +1,5 @@
 Version 2.2.027
+    Fixed Ricocheted arrows losing some data after a ricochet
     Fixed concurrency issue with Folia regarding locale strings
     Fixed concurrency issue with Folia regarding COTW summons
 

+ 9 - 2
src/main/java/com/gmail/nossr50/skills/crossbows/CrossbowsManager.java

@@ -64,10 +64,17 @@ public class CrossbowsManager extends SkillManager {
 
         // Spawn new arrow with the reflected direction
         Arrow spawnedArrow = originalArrow.getWorld().spawnArrow(origin, reflectedDirection, 1, 1);
+        // copy some properties from the old arrow
+        spawnedArrow.setShooter(originalArrowShooter);
+        spawnedArrow.setCritical(originalArrow.isCritical());
+        spawnedArrow.setPierceLevel(originalArrow.getPierceLevel());
+        spawnedArrow.setPickupStatus(originalArrow.getPickupStatus());
+        spawnedArrow.setKnockbackStrength(originalArrow.getKnockbackStrength());
+
+        // copy metadata from old arrow
         ProjectileUtils.copyArrowMetadata(pluginRef, originalArrow, spawnedArrow);
         originalArrow.remove();
-        // copy metadata from old arrow
-        spawnedArrow.setShooter(originalArrowShooter);
+        // add important metadata to new arrow
         spawnedArrow.setMetadata(MetadataConstants.METADATA_KEY_BOUNCE_COUNT,
                 new FixedMetadataValue(pluginRef, bounceCount + 1));
         spawnedArrow.setMetadata(MetadataConstants.METADATA_KEY_SPAWNED_ARROW,