Parcourir la source

Fixed ricocheted arrows missing some data after bouncing
Fixes #5093

nossr50 il y a 7 mois
Parent
commit
04eefaef79

+ 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,