When a player shoots a bow, there is a half to full second delay before the arrow appears. This makes it very hard to aim compared to Java.
This seems to be because the client doesn’t “own” the projectile it creates.
What seems to happen:
Client shoots bow
Client tells server to create arrow
Server creates arrow, handles movement, and replicates to client(s)
What should happen:
Client shoots bow
Client creates arrow, handles movement, and informs server
Server tells other clients about the arrow (so they can see it)
Client informs server about arrow movement
Client tells server what it hits
Server applies damage/places arrow object in ground
Other clients handle arrow movement on their own, but the impact/damage is handled by server
The whole arrow shooting/movement process should be handled by the client so there’s no delay. The server should just handle damage/hit with some checks for foul play.
Expected behavior: no lag when shooting bow (as on Java Edition)
Please edit your report to change the Affected Version to the version shown on the Minecraft title screen