4

What's the instantaneous velocity of an arrow fired from the bow at full charge?

I found a reddit post that claims "roughly" 52 m/s but it sources a quotation that no longer exists (on the Minecraft Wiki), and "roughly" sounds hand-waved.

I wonder if anyone has read the source or done some more intense measurements.

2 Answers 2

4

TLDR: About 60.5 to 60.8 blocks per second.

I made a command block setup that tracks the current velocity of an arrow by comparing its current Pos NBT tag to the one 1 game tick ago, with a scale factor of 1000000, and save the maximum value over time. Then I used /tp to align myself exactly to one of the six axis directions and shot multiple arrows at full power. The results:

  • positive X: 3024556, meaning 60.49112 blocks/second
  • negative X: -3034233, meaning 60.68466 blocks/second
  • positive Z: 3040980, meaning 60.8196 blocks/second
  • negative Z: -3036883, meaning 60.73766 blocks/second
  • positive Y: 3028972, meaning 60.57944 blocks/second

The exact number probably depends on when exactly in the 0.05 seconds I shot the arrow.

Negative Y is a bit of a different story, because the arrow speeds up while going downwards. I can easily get the terminal velocity of a falling arrow shot down (about 100.2 blocks/second, faster than a sheep), but getting the starting value is difficult. I tried giving the arrow NoGravity:1 as soon as it was shot and setting the maximum upwards velocity scoreboard to -2147000000 and then checking the maximum upwards velocity (which is negative, because downwards) and just relied on the first tick being the slowest. That, after multiple tries, gave me at most a speed of 3025818, meaning 60.51636 blocks/second. But it was probably already affected by gravity, air resistance or whatever, so it's not necessarily absolutely correct.

The maximum of all of these values is 60.8196, the average is 60.63814, 60.662496 without downwards, 60.68326 without upwards and downwards.

1
  • I tested in the latest snapshot, because I pretty much always play in it. That was 19w14b. It was a lot of effort, so I won't test other versions for now. Do you want the commands to do it yourself? Commented Apr 10, 2019 at 18:26
1

Because I already had the decompiled Minecraft source code open:

public class BowItem extends RangedWeaponItem implements Vanishable {
    /* ... */
    @Override
    public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) {
        /* ... */
        PersistentProjectileEntity projectile = arrowItem.createArrow(world, arrowItemStack, player);   
        projectile.setProperties(player, player.pitch, player.yaw, 0.0f, bowChargePercentage * 3.0f, 1.0f);
        /* ... */
    }
    /* ... */
}

So the maximum horizontal velocity seems to be 3.0 blocks per tick, or exactly 60.0 blocks per second.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.