Files
spigot-harvest/design/user-stories/us-003-harvest-connected-mature-crops.md
T

2.5 KiB

type, title, description, status
type title description status
User Story US-003: Harvest connected mature crops Animate bounded harvesting across connected mature crops when a player performs a normal crop break. in-progress

US-003: Harvest connected mature crops

As a player, I want one normal crop break to harvest a connected area at a visible pace so that unlocked farming feels powerful and satisfying without harming server performance.

Acceptance criteria

  • Normally breaking a fully grown supported crop starts auto-harvest when the player has at least Level I for that crop.
  • Breaking while sneaking performs normal single-crop harvesting and never starts auto-harvest.
  • The manually broken triggering crop is included in the operation's maximum crop count.
  • Auto-harvest traverses only fully grown crops of the same type as the triggering crop.
  • A crop is connected when its horizontal position touches the current crop in any of the eight directions and its Y coordinate differs from the current crop by no more than one block.
  • Connectivity is evaluated per link, allowing a connected operation to follow gradual rises and drops.
  • Traversal is deterministic and never processes the same block more than once in an operation.
  • The operation stops when it reaches the player's crop-level cap or no eligible connected crop remains.
  • Auto-harvest processes a configurable number of crops per server tick, defaulting to one.
  • A player can have no more than one active auto-harvest operation at a time.
  • A normal crop broken while that player already has an active operation is harvested normally and may contribute progress, but it does not start or join another operation.
  • Auto-harvest does not force-load chunks or continue into unloaded chunks.
  • A crop that is no longer mature or matching when its turn arrives is skipped safely.
  • Crop breaks denied by the server or another protection plugin are left unchanged, yield no drops, and contribute no progress.
  • An operation ends safely when exhausted, cancelled, the player disconnects, or the plugin disables.
  • Separate players may run independent auto-harvest operations concurrently.