Sueta

Replenish++

7.0.0-26.3

Auto-replant crops on Paper/Purpur servers, inspired by Hypixel SkyBlock's Replenish enchantment. Break a crop and it replants itself. Supports wheat, carrots, potatoes, nether wart, cocoa and beetroo

·Plugin

Replenish++ 🌾

Auto-replant for Paper/Purpur. Break a crop, it goes right back in the ground.

If you ever farmed on Hypixel SkyBlock, you already know the idea, it's Replenish, the enchantment that made farming not completely miserable.

Preview

What it does

  • Replants Wheat, Carrots, Potatoes, Nether Wart, Cocoa, and Beetroots automatically
  • Immature crops stay at whatever growth stage they were at
  • Eats a seed from your inventory on mature harvest (can turn this off)
  • Can pipe drops straight into your inventory instead of the ground (also toggleable)
  • You actually need the right tool in hand. No hoe, no replant. Cocoa needs an axe.
  • Sneaking while you break bypasses auto-replant entirely (toggleable via sneakToBypass)
  • Cocoa gets replanted facing the right direction, which was annoying to get right
  • Fortune works like normal
  • Sounds are fully configurable, or you can just mute them all
  • Built to not choke on big farms. There's a per-tick replant cap you can tune.

Install

  1. Grab the jar from Releases or the Actions tab if you like living on dev builds
  2. Drop it in plugins/
  3. Start the server
  4. (Optional) Customize plugins/ReplenishPlusPlus/config.yml, the default settings work fine as-is.

Coming from Replenish 6.x? Delete the old Replenish jar and the whole plugins/Replenish/ folder first, old config.yml included. The plugin was rebuilt and renamed, so nothing carries over, and running both versions at once would replant crops twice.

What happens by default (no config changes)

Mature crop:

  • Replants as a newly planted crop (age 0 / just planted)
  • Takes 1 seed from your inventory/off-hand (if requirePlayerSeed: true)
  • Drops go to you directly (if directPickup: true)

Immature crop:

  • Replants at the same age it was. No seed needed.
  • No drops either, otherwise you could farm infinite seeds by re-breaking young crops.

Commands & permissions

CommandWhat it does
/replenishplusplusMain menu
/replenishplusplus helpDetailed guide
/replenishplusplus statusCurrent settings
/replenishplusplus versionPlugin version & update status
/replenishplusplus toggleOn/off switch for yourself
/replenishplusplus toggle globalOn/off switch for everyone
/replenishplusplus padGet a Teleport Pad item
/replenishplusplus reloadReload config.yml
/replenishplusplus debug queueView replant queue stats

Aliases: /rpp and /replenish work for everything above.

Permissions:

  • replenishplusplus.use - everyone
  • replenishplusplus.status - everyone
  • replenishplusplus.version - everyone
  • replenishplusplus.toggle - everyone
  • replenishplusplus.toggle.global - op
  • replenishplusplus.reload - op
  • replenishplusplus.debug - op
  • replenishplusplus.pad - op (still WIP, but players are welcome)
  • replenishplusplus.update - op
  • replenishplusplus.* - op (grants all of the above)

A note on Teleport Pads: /rpp pad is still a work in progress, which is why it's op-only. It already works though, so if you want warp pads around your base, feel free to give the replenishplusplus.pad permission to players you trust.

Config

The stuff you'll probably touch:

enabled: true
requirePlayerSeed: true
directPickup: true
sneakToBypass: true
messageStyle: CHAT
replantDelayTicks: 3
maxReplantsPerTick: 1024
maxReplantsQueued: 4096
checkUpdates: true

Note: /rpp toggle global writes the whole config.yml back from the last-loaded state. If you edited the file by hand, run /rpp reload first, otherwise toggling saves over your manual changes.

Everything players see in chat lives in plugins/ReplenishPlusPlus/en_us.yml MiniMessage formatting, same /rpp reload applies it.

Full default config.yml

# ==============================================================================
# ReplenishPlusPlus Configuration
# ==============================================================================

# Master switch for the whole plugin. false = nothing replants for anyone.
# Players can still turn it off just for themselves with /rpp toggle.
enabled: true

# true = harvesting a fully grown crop eats 1 seed from your inventory and replants it.
# false = crops replant for free, no seeds involved.
requirePlayerSeed: true

# true = harvest drops go straight into your inventory.
# false = drops fall on the ground like vanilla.
directPickup: true

# true = sneaking while breaking a crop skips auto-replant completely.
# The crop just breaks normally and drops like it would without the plugin.
sneakToBypass: true

# How the plugin talks to players (inventory full, need seed, wrong tool).
# CHAT       = normal chat message.
# ACTION_BAR = above the hotbar, less spammy.
# NONE       = no text at all (sounds still play).
messageStyle: CHAT

# Max delay before a broken crop gets replanted, in ticks. 20 ticks = 1 second.
# Each replant lands on a random tick between 1 and this number, which spreads
# the replant work evenly instead of batching it, so bigger values stay smooth.
# (1 to 10)
replantDelayTicks: 3

# Max crops replanted in a single tick, so nobody can lag the server by
# harvesting a giant farm all at once. (Minimum 256)
maxReplantsPerTick: 1024

# Max replants waiting in the queue at once. If the queue is full, replants get
# dropped instead of piling up and lagging the server. (Minimum 256)
maxReplantsQueued: 4096

# Check GitHub for a new version on startup and tell admins?
# Only read on startup - /rpp reload won't apply changes to this.
checkUpdates: true

# ------------------------------------------------------------------------------
# Crop Settings
# ------------------------------------------------------------------------------
# Set any of these to false to turn auto-replant off for that crop.

crops:
  wheat:       true
  carrots:     true
  potatoes:    true
  nether_wart: true
  cocoa:       true
  beetroots:   true

# ------------------------------------------------------------------------------
# Sound Settings
# ------------------------------------------------------------------------------
# Sound names are forgiving - ENTITY_ITEM_PICKUP, entity.item.pickup and
# minecraft:entity.item.pickup all work. An unknown name logs a warning and
# falls back to the default. Full list: https://jd.papermc.io/paper/org/bukkit/Sound.html
# volume: 0.0 (silent) to 1.0 (loudest)
# pitch:  0.5 (low) to 2.0 (high), 1.0 = normal
# Set enabled: false to kill a sound completely.

sounds:
  # Crops landed in your inventory.
  pickup:
    enabled: true
    sound: ENTITY_ITEM_PICKUP
    volume: 1.0
    pitch: 1.0

  # Your inventory was full and leftovers dropped on the ground.
  inventory-full:
    enabled: true
    sound: BLOCK_NOTE_BLOCK_BASS
    volume: 1.0
    pitch: 0.5

  # You tried harvesting with the wrong tool.
  denied-tool:
    enabled: true
    sound: ENTITY_VILLAGER_NO
    volume: 1.0
    pitch: 0.5

  # You tried harvesting but had no seed to replant with.
  denied-seed:
    enabled: true
    sound: ENTITY_VILLAGER_NO
    volume: 1.0
    pitch: 0.5

  # A replant failed and your seed got dropped back instead of planted.
  replant-failed:
    enabled: true
    sound: ENTITY_ITEM_BREAK
    volume: 0.5
    pitch: 1.0

Contributions

PRs are disabled on this repo, not because I don't want your help but because managing them gets overwhelming for one person, and I'd rather not ghost anyone. Open an issue instead, feature ideas, bugs, optimizations, whatever. We'll talk it out there.

License

This project is licensed under the CC BY-NC-SA 4.0: credit required, non-commercial only (no selling or paywalls), forks must use the same license. Want to sell it or use it commercially? Ask Mitra-88 for permission.

Similar projects

Plugin →