Direct answer

Boats create entity movement, collisions and tracking; stationary boats and rapidly moving player-filled boats have different profiles.

How to check it

  1. Count boats in the affected world or location with a safe, limited selector or supported Paper entity listing.
  2. Profile while riders travel through the busy area rather than judging only an empty dock.
  3. Compare client-side rendering stutter with server MSPT; excessive visible boats can stress both in different ways.

Example: A dock with twenty parked boats should be compared against a race with twenty moving boats and passengers. Shared entity count does not imply identical collision and tracking cost.

What to change

Remove abandoned boats in unused areas and simplify crowded docks or overlapping boat routes. If a plugin animates boats, inspect its update interval before altering server-wide collision rules.

Software and version notes

Do not purge all boats with a broad selector on a live server. Boat-based contraptions and transport may rely on exact vanilla mechanics.

Verify the result

Test riders, passengers, dismount positions and interactions after the change and compare sampled tick time.

References