{"id":23430,"date":"2026-06-01T01:35:12","date_gmt":"2026-05-31T22:35:12","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/autoharvest-2\/"},"modified":"2026-06-01T01:35:12","modified_gmt":"2026-05-31T22:35:12","slug":"autoharvest-2","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/autoharvest-2\/","title":{"rendered":"AutoHarvest+"},"content":{"rendered":"<p># AutoHarvest<\/p>\n<p>**Vanilla+ auto-harvest and replant for Paper 1.21.x**<\/p>\n<p>Break a mature crop and it replants itself. Right-click with bonemeal and it grows, harvests, and replants in one action. No cheats, no duplication, no TPS impact. Just the QoL feature vanilla forgot.<\/p>\n<p>&#8212;<\/p>\n<p>## Features<\/p>\n<p>### Break Harvesting<br \/>\nBreak any mature crop and it drops normally \u2014 then replants at growth stage 0 automatically. Vanilla handles the break, drops, tool durability, enchantments, XP, and statistics. AutoHarvest only adds the replant.<\/p>\n<p>### Bonemeal Harvesting<br \/>\nRight-click an immature crop with bonemeal. Vanilla advances the growth. If the crop becomes mature from that application, AutoHarvest harvests it, drops the items, and replants \u2014 all in one click. One bonemeal consumed per use, exactly like vanilla.<\/p>\n<p>### Seed Fairness<br \/>\nThe bonemeal path subtracts one seed from drops to prevent duplication. Without this, every bonemeal harvest would create a free seed (the crop is replanted but drops include the replant cost). AutoHarvest enforces net-zero: bonemeal harvesting produces the same drops as manually breaking and replanting.<\/p>\n<p>### Per-Player Toggle<br \/>\n`\/autoharvest toggle` \u2014 players who want pure vanilla can opt out. State persists across relogs and server restarts via PersistentDataContainer. No database required.<\/p>\n<p>&#8212;<\/p>\n<p>## Supported Crops<\/p>\n<p>| Crop | Replant Age | Notes |<br \/>\n|&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;-|&#8212;&#8212;-|<br \/>\n| Wheat | 0 | Standard ageable crop |<br \/>\n| Carrots | 0 | Standard ageable crop |<br \/>\n| Potatoes | 0 | Poisonous potato drops preserved |<br \/>\n| Beetroot | 0 | Standard ageable crop |<br \/>\n| Nether Wart | 0 | Validates soul sand beneath before replanting |<br \/>\n| Cocoa Beans | 0 | Preserves facing direction, validates jungle log |<br \/>\n| Sweet Berries | 1 | Matches vanilla right-click harvest feel |<\/p>\n<p>### Explicitly Not Supported<br \/>\n&#8211; **Sugar cane, bamboo, cactus, kelp** \u2014 vertical growth, dupe risk with pistons<br \/>\n&#8211; **Melons, pumpkins** \u2014 stem-based, already effectively auto-replant<br \/>\n&#8211; **Chorus fruit** \u2014 not a farm crop<\/p>\n<p>&#8212;<\/p>\n<p>## Commands<\/p>\n<p>| Command | Description | Permission |<br \/>\n|&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8212;&#8212;|<br \/>\n| `\/autoharvest toggle` | Toggle for yourself | `autoharvest.use` |<br \/>\n| `\/autoharvest toggle <player>` | Toggle for another player | `autoharvest.admin.toggle-others` |<br \/>\n| `\/autoharvest info` | Show status, version, enabled crops | `autoharvest.use` |<br \/>\n| `\/autoharvest reload` | Reload configuration | `autoharvest.admin.reload` |<\/p>\n<p>Alias: `\/ah` works for all commands.<\/p>\n<p>&#8212;<\/p>\n<p>## Permissions<\/p>\n<p>| Permission | Default | Description |<br \/>\n|&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;-|<br \/>\n| `autoharvest.use` | `true` | Toggle and info commands |<br \/>\n| `autoharvest.break` | `true` | Auto-harvest on crop break |<br \/>\n| `autoharvest.bonemeal` | `true` | Auto-harvest via bonemeal |<br \/>\n| `autoharvest.admin` | `op` | All admin commands |<br \/>\n| `autoharvest.admin.reload` | `op` | Reload configuration |<br \/>\n| `autoharvest.admin.toggle-others` | `op` | Toggle for other players |<\/p>\n<p>Set `require-permission: true` in config to require `autoharvest.use` for the plugin to function at all. By default, it works for everyone.<\/p>\n<p>&#8212;<\/p>\n<p>## Configuration<\/p>\n<p>All settings in `plugins\/AutoHarvest\/config.yml`. Changes take effect with `\/autoharvest reload` \u2014 no server restart needed.<\/p>\n<p>&#8220;`yaml<br \/>\ngeneral:<br \/>\n  default-enabled: true          # New players start with auto-harvest on<br \/>\n  require-permission: false      # Require autoharvest.use permission<br \/>\n  enabled-worlds: []             # Empty = all worlds. List specific worlds to restrict.<br \/>\n  disabled-worlds:               # These worlds are always excluded<br \/>\n    &#8211; &#8220;world_nether&#8221;<br \/>\n    &#8211; &#8220;world_the_end&#8221;<\/p>\n<p>harvest:<br \/>\n  on-break: true                 # Auto-replant when breaking mature crops<br \/>\n  on-bonemeal: true              # Harvest + replant when bonemealing to maturity<br \/>\n  require-hoe: false             # Only trigger when holding a hoe<br \/>\n  bonemeal-subtract-replant-cost: true  # Fairness: subtract 1 seed from bonemeal drops<\/p>\n<p>drops:<br \/>\n  enabled: true                  # Set false to suppress all drops (adventure maps)<br \/>\n  drop-at-center: true           # Drop at block center vs exact break location<br \/>\n  overflow-to-ground: true       # Full inventory? Drop on ground, not void<\/p>\n<p>crops:                           # Enable\/disable individual crop types<br \/>\n  wheat: true<br \/>\n  carrots: true<br \/>\n  potatoes: true<br \/>\n  beetroot: true<br \/>\n  nether_wart: true<br \/>\n  cocoa: true<br \/>\n  sweet_berries: true<\/p>\n<p>cooldown:<br \/>\n  bonemeal-ms: 50                # Anti-macro: ms between bonemeal harvests per player<\/p>\n<p>feedback:<br \/>\n  particles: true                # Green sparkle particles on harvest<br \/>\n  sound: true                    # Crop break sound on harvest<br \/>\n  sound-name: &#8220;block.crop.break&#8221;<br \/>\n  sound-volume: 0.5<br \/>\n  sound-pitch: 1.2<\/p>\n<p>debug: false                     # Log every harvest with player, location, crop, drops<br \/>\n&#8220;`<\/p>\n<p>Messages are customizable in `messages.yml` using MiniMessage format.<\/p>\n<p>&#8212;<\/p>\n<p>## How It Works<\/p>\n<p>AutoHarvest is designed to be invisible to the game engine. It never cancels events or re-implements vanilla mechanics.<\/p>\n<p>### Break Path<br \/>\n1. Player breaks a mature crop<br \/>\n2. `BlockBreakEvent` fires at `HIGH` priority with `ignoreCancelled = true`<br \/>\n3. AutoHarvest validates: survival mode, world enabled, player toggled on, crop mature, environment valid<br \/>\n4. Vanilla processes the break \u2014 handles drops, Fortune, tool durability, statistics, advancements<br \/>\n5. One tick later, AutoHarvest places the crop back at age 0<\/p>\n<p>### Bonemeal Path<br \/>\n1. Player right-clicks a crop with bonemeal<br \/>\n2. Vanilla applies the bonemeal \u2014 consumes item, advances growth, plays particles<br \/>\n3. One tick later, AutoHarvest checks if the crop is now mature<br \/>\n4. If mature: calculates drops, subtracts one seed (fairness), replants, drops items<\/p>\n<p>### Why Not Cancel + Manual Drops?<br \/>\nMany farming plugins cancel the break event and manually calculate drops. This breaks:<br \/>\n&#8211; **mcMMO \/ Jobs** XP hooks (they read vanilla drops)<br \/>\n&#8211; **Statistics** (`CROP_WASTED`, block break stats)<br \/>\n&#8211; **Advancements** (&#8220;A Seedy Place&#8221;, etc.)<br \/>\n&#8211; **Tool durability and enchantment processing**<br \/>\n&#8211; **Any downstream plugin** that listens to `BlockBreakEvent`<\/p>\n<p>AutoHarvest avoids all of this by letting vanilla handle the break completely.<\/p>\n<p>&#8212;<\/p>\n<p>## Performance<\/p>\n<p>AutoHarvest is built for zero measurable TPS impact.<\/p>\n<p>&#8211; **`EnumMap<Material>` crop lookup** \u2014 O(1), no hashing overhead<br \/>\n&#8211; **No streams in event handlers** \u2014 plain loops for JIT-friendly hot paths<br \/>\n&#8211; **No config re-parsing per event** \u2014 immutable `PluginConfig` snapshot, atomically swapped on reload<br \/>\n&#8211; **No logging in event handlers** at INFO level \u2014 debug-gated only<br \/>\n&#8211; **1-tick scheduled replant** via `runTask`, not `runTaskLater(0)`<br \/>\n&#8211; **Folia compatible** \u2014 uses `RegionScheduler` when Folia is detected, standard `BukkitScheduler` on Paper<\/p>\n<p>### Benchmarks<br \/>\n| Scenario | Target |<br \/>\n|&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8211;|<br \/>\n| 10k wheat farm, 5 players harvesting continuously | 19.8+ TPS |<br \/>\n| Bonemeal spam (10 clicks\/sec\/player x 4 players) | 19.9+ TPS |<br \/>\n| Plugin load time | < 50ms |\n| `\/autoharvest reload` | < 100ms |\n\n---\n\n## Compatibility\n\n- **Paper 1.21.x** (1.21 - 1.21.4+)\n- **Folia** \u2014 detected at startup, uses region-aware scheduling\n- **Java 21** required\n- **Protection plugins** \u2014 AutoHarvest respects `BlockBreakEvent` cancellation. Any plugin that cancels the event (WorldGuard, GriefPrevention, Towny, Lands, Residence, etc.) will prevent auto-harvest in protected regions. No special configuration needed.\n- **Only fires in Survival mode** \u2014 Creative, Adventure, and Spectator are ignored\n\n---\n\n## Installation\n\n1. Download the jar from Modrinth\n2. Place in your server's `plugins\/` folder\n3. Restart the server\n4. Optionally edit `plugins\/AutoHarvest\/config.yml` and run `\/autoharvest reload`\n\n---\n\n## Building from Source\n\nRequires Java 21.\n\n```bash\ngit clone https:\/\/github.com\/yourusername\/AutoHarvest.git\ncd AutoHarvest\n.\/gradlew build\n```\n\nThe plugin jar will be in `build\/libs\/`.\n\n---\n\n## License\n\nMIT\n\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>AutoHarvest+ is a QoL survival mode plugin for easier crop harvesting and replanting mechanics.<\/p>\n","protected":false},"featured_media":23431,"template":"","meta":{"_minecraft_slug":"autoharvest+","_minecraft_project_id":"4yunSeNx","_minecraft_author":"ashkarmalek0","_minecraft_license":"MIT","_minecraft_downloads":11,"_minecraft_follows":0,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"autoharvest+.zip","_minecraft_size_bytes":34989,"_minecraft_version_count":1,"_minecraft_updated_at":"2026-05-15T23:03:46.998993Z","_minecraft_date_created":"2026-04-29T01:19:09.493519Z","_minecraft_date_modified":"2026-04-18T09:15:14.509731Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/autoharvest+","_minecraft_icon_attachment_id":23431,"_minecraft_imported_at":"2026-05-31T22:35:13+00:00","_minecraft_import_hash":"25f73045971695ff456043b0202f1106","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[85,89,127],"mod_loader":[132],"minecraft_version":[62,37,40,41,73,74,38,78,79,80,81,82],"class_list":["post-23430","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-food","mod_category-game-mechanics","mod_category-paper","mod_loader-paper","minecraft_version-1-21","minecraft_version-1-21-1","minecraft_version-1-21-10","minecraft_version-1-21-11","minecraft_version-1-21-2","minecraft_version-1-21-3","minecraft_version-1-21-4","minecraft_version-1-21-5","minecraft_version-1-21-6","minecraft_version-1-21-7","minecraft_version-1-21-8","minecraft_version-1-21-9"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>AutoHarvest+ - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/autoharvest-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AutoHarvest+ - Minecraft\" \/>\n<meta property=\"og:description\" content=\"AutoHarvest+ is a QoL survival mode plugin for easier crop harvesting and replanting mechanics.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/autoharvest-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/autoharvest-2\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/autoharvest-2\\\/\",\"name\":\"AutoHarvest+ - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/autoharvest-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/autoharvest-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/autoharvest-icon-4289bfdea66341fc58f6ae8d4af53977d9736731_96.webp\",\"datePublished\":\"2026-05-31T22:35:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/autoharvest-2\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/autoharvest-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/autoharvest-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/autoharvest-icon-4289bfdea66341fc58f6ae8d4af53977d9736731_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/autoharvest-icon-4289bfdea66341fc58f6ae8d4af53977d9736731_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/autoharvest-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"AutoHarvest+\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AutoHarvest+ - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/autoharvest-2\/","og_locale":"en_US","og_type":"article","og_title":"AutoHarvest+ - Minecraft","og_description":"AutoHarvest+ is a QoL survival mode plugin for easier crop harvesting and replanting mechanics.","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/autoharvest-2\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/autoharvest-2\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/autoharvest-2\/","name":"AutoHarvest+ - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/autoharvest-2\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/autoharvest-2\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/autoharvest-icon-4289bfdea66341fc58f6ae8d4af53977d9736731_96.webp","datePublished":"2026-05-31T22:35:12+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/autoharvest-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/autoharvest-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/autoharvest-2\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/autoharvest-icon-4289bfdea66341fc58f6ae8d4af53977d9736731_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/autoharvest-icon-4289bfdea66341fc58f6ae8d4af53977d9736731_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/autoharvest-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"AutoHarvest+"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/23430","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/23431"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=23430"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=23430"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=23430"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=23430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}