Use PersistentDataContainer to identify flying bows

This commit is contained in:
NotAlexNoyle committed 2026-05-25 17:31:41 -04:00
1 parent 6583391cd5
commit cc1c71dad9
1 file changed
+16 -2
@@ -32,9 +32,18 @@ public class OnEntityShootBowEvent implements Listener {
// Only react to players shooting arrows with our Flying Bow.
if (!(event.getEntity() instanceof Player player))
return;
if (!(event.getProjectile() instanceof Arrow arrow))
FlyingBowOG.getPlugin().getLogger().info("[FB-DEBUG] shoot by player " + player.getName());
if (!(event.getProjectile() instanceof Arrow arrow)) {
FlyingBowOG.getPlugin().getLogger()
.info("[FB-DEBUG] projectile NOT Arrow: " + event.getProjectile().getType());
return;
}
ItemStack bow = player.getInventory().getItemInMainHand();
FlyingBowOG.getPlugin().getLogger().info("[FB-DEBUG] mainhand=" + bow.getType() + " flags=" + bow.getItemFlags()
+ " isFlyingBow=" + isFlyingBow(bow));
if (!isFlyingBow(bow))
return;
@@ -71,10 +80,15 @@ public class OnEntityShootBowEvent implements Listener {
boolean sameWorld = shooter.getWorld().getKey().toString().equals(worldKey);
FlyingBowOG.getPlugin().getLogger().info("[FB-DEBUG] mount tick: sameWorld=" + sameWorld + " dead="
+ rideArrow.isDead() + " valid=" + rideArrow.isValid());
if (!sameWorld || rideArrow.isDead() || !rideArrow.isValid())
return;
rideArrow.addPassenger(shooter);
boolean mounted = rideArrow.addPassenger(shooter);
FlyingBowOG.getPlugin().getLogger()
.info("[FB-DEBUG] addPassenger returned " + mounted + " passengers=" + rideArrow.getPassengers());
}, 1L);