Fixed ricocheted arrows missing some data after bouncing

Fixes #5093
This commit is contained in:
nossr50 2024-11-09 15:58:24 -08:00
parent b5ecd214ef
commit 04eefaef79
2 changed files with 10 additions and 2 deletions

View File

@ -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

View File

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