Home›Java›Mods›DreamFarm — Auto Collect, Virtual Warehouse & One-Click Selling [1.12-1.21 |
ModsJava

DreamFarm — Auto Collect, Virtual Warehouse & One-Click Selling [1.12-1.21 |

Java mod listed for Minecraft 1.12–1.21. Download on the author's site.

⬇ Download on Spigot
DreamFarm
Automatic crop collection · Virtual warehouse · One-click selling

1.12 – 26.x ▪ Folia ready ▪ Java 8+ ▪ Only Vault required​

[HR][/HR]

Stop chasing dropped items across your farm.

DreamFarm turns harvesting into a single action: break a mature crop and it goes straight into the player's virtual warehouse. No item entities, no lost drops, no lag from hundreds of stacked items on the ground.

Players open one menu to browse their warehouse, withdraw what they need, and sell the rest for money — while the server keeps a hard limit on how much can be sold per crop each day.

[HR][/HR]

[HEADING=2]Feature Highlights[/HEADING]

Automatic collection Mature crops are stored the moment they are broken; vanilla drops are suppressed. Immature crops are left alone.
Virtual warehouse One unlimited warehouse per player, paginated, with three withdraw granularities.
One-click selling Sell everything at once. Price = unit price × amount, no tax. Per-crop daily limits.
Anti-abuse by design Crops grown with bone meal never enter the warehouse, so the "bone meal → instant growth → sell" loop is closed.
Four storage backends YAML, SQLite, MySQL and Redis — switch by editing one line and running
Code (Text):
/df reload
.
Fully configurable GUI Titles, materials, lore, slots and placeholders all live in YAML.
Built-in localisation English (default) and Simplified Chinese, with automatic fallback for missing keys.
Folia support Detects Folia and switches to region scheduling automatically. The same jar runs on Spigot/Paper.
No extra libraries Only Vault is required. The GUI is native, no third-party GUI library to install.


[HR][/HR]

[HEADING=2]1. Automatic Collection[/HEADING]

How it behaves


Four harvest mechanisms

Type Crops Behaviour
Code (Text):
ageable
Wheat, Carrot, Potato, Beetroot, Nether Wart, Cocoa Reads the block age; only fully grown blocks are collected.
Code (Text):
stacking
Sugar Cane, Cactus, Bamboo Breaking any part walks up the column and stores the whole column, so nothing scatters on the ground.
Code (Text):
right-click
Sweet Berries Right-click harvesting stores the berries without breaking the bush.
Code (Text):
fruit
Melon, Pumpkin The fruit block has no growth stage, so the adjacent stem is checked instead (see below).


How melon and pumpkin are handled

A melon or pumpkin block is only farm produce when a stem produced it. DreamFarm verifies this:

Code (Text):
Break a pumpkin / melon block
  ├─ adjacent ATTACHED_*_STEM (fruit attached)  → mature, collect
  ├─ adjacent *_STEM with maximum age           → mature, collect
  └─ no stem at all (decorative block)          → ignore, vanilla drops
This means a player cannot place a pumpkin block, break it, and farm money. The check also works on 1.12, where the melon block is still called
Code (Text):
MELON_BLOCK
.

[HR][/HR]

[HEADING=2]2. Virtual Warehouse[/HEADING]


Withdraw rules

Action Amount
Left click One stack
Right click One item
Shift + click Everything (limited by free inventory space)


The amount is clamped to the free space in the player's inventory. If giving items partially fails, the remainder is returned to the warehouse — nothing is ever swallowed.

[HR][/HR]

[HEADING=2]3. One-Click Selling[/HEADING]


Crash-safe by ordering

Code (Text):
Main thread : validate stock and limit → deduct in memory → take a snapshot
Async thread: persist snapshot + write the sale log
Main thread : deposit money → update statistics → message and sound
Persisting happens before the money is paid. A crash can at worst leave items deducted without payment (an admin can refund) — money is never created out of thin air. If the economy plugin throws or the deposit fails, the deduction is rolled back both in memory and in storage.

[HEADING=2]4. Daily Reset[/HEADING]

Clock format or cron, your choice:

Code (Text):
daily-reset-time: "00:00"          # every day at 00:00
daily-reset-time: "04:30:00"       # every day at 04:30:00
daily-reset-time: "0 0 4 * * ?"    # cron: every day at 04:00
daily-reset-time: "0 0 4 * * 1"    # cron: every Monday at 04:00
daily-reset-time: "0 0 0 1 * *"    # cron: monthly, 1st at 00:00

[HR][/HR]

[HEADING=2]5. Storage Backends[/HEADING]

Code (Text):
storage:
  type: sqlite       # yaml | sqlite | mysql | redis
  flush-interval-seconds: 30
Type Data location Good for
Code (Text):
yaml
Code (Text):
plugins/DreamFarm/playerdata/<UUID>.yml
Small servers, hand editing
Code (Text):
sqlite
Code (Text):
plugins/DreamFarm/data.db
Single server, balanced
Code (Text):
mysql
Tables
Code (Text):
<table-name>_warehouse
,
Code (Text):
_player
,
Code (Text):
_daily_limit
,
Code (Text):
_log
Multi-server, central backup
Code (Text):
redis
Keys prefixed with
Code (Text):
dreamfarm:
Very high throughput, multi-server



[HR][/HR]

[HEADING=2]6. GUI and Placeholders[/HEADING]

The main menu and the warehouse menu are entirely YAML-driven. Titles, glass pane decorations, crop card slots, materials, custom model data and lore are all configurable, and the sell button is placed automatically on the row below its crop card (
Code (Text):
slot + 9
) — no need to maintain two numbers per crop.

Available placeholders

Placeholder Meaning
Code (Text):
{crop_name}
Display name of the crop
Code (Text):
{amount}
Amount stored in the warehouse
Code (Text):
{daily_sold}
Amount sold today
Code (Text):
{daily_limit}
Daily limit (
Code (Text):
∞
when configured as 0)
Code (Text):
{can_sell}
Amount that can be sold right now
Code (Text):
{total_value}
Total value of the sellable amount
Code (Text):
{status}
Auto-collect status (toggle button only)


Example crop entry

Code (Text):
crops:
  WHEAT:
    name: "&2Wheat"
    price: 3.0
    daily-limit: 10000
    slot: 15
    lore:
      - "&aType: &f{crop_name}"
      - "&aAmount: &e{amount} &fitems"
      - "&aSold today: &e{daily_sold} &7/ &f{daily_limit}"
    sell:
      material: GOLD_NUGGET
      name: "&dSell all {crop_name}"
      lore:
        - "&aSellable now: &f{can_sell} &fitems"
        - "&aTotal value: &e{total_value} &fcoins"
[HR][/HR]

[HEADING=2]7. Commands[/HEADING]

Command Description Permission
Code (Text):
/df
Open the main menu
Code (Text):
dreamfarm.use
Code (Text):
/df reload
Reload config and player data; hot-switch storage if changed OP or
Code (Text):
dreamfarm.admin
Code (Text):
/df crops <crop> <amount> [player]
Grant crops into a warehouse OP or
Code (Text):
dreamfarm.admin


Crop names accept the config key, an English alias or the display name, for example:

Code (Text):
/df crops WHEAT 1000         give yourself 1000 wheat
/df crops carrot 500 Steve    give an online player
/df crops POTATO 500 Notch    offline players work too
[HR][/HR]

[HEADING=2]8. Permissions[/HEADING]

Node Description Default
Code (Text):
dreamfarm.use
Use the main command true
Code (Text):
dreamfarm.autocollect
Use automatic collection true
Code (Text):
dreamfarm.admin
Reload and grant crops op
Code (Text):
dreamfarm.reload
Reload (child of admin) op


[HR][/HR]

[HEADING=2]9. Multi-Language[/HEADING]


[HR][/HR]

[HEADING=2]10. Compatibility and Performance[/HEADING]

Server Spigot / Paper / Purpur 1.12 – 26.x, and Folia
Java 8 or newer
Dependencies Vault + any economy plugin
Optional hooks Residence / GriefPrevention / WorldGuard / Towny


Zero IO on the main thread

Stage Thread Work
Pre-login Async Database read only, into cache
Harvest / open menu Main Memory only; loads asynchronously if not ready
Selling Main → async → player region Deduct → persist → pay and update stats
Quit Main → async Snapshot and drop cache, persist asynchronously
Periodic flush Async Persistence only, never touches game objects


Measured hot-path cost


At 10,000 harvests per minute the hot path uses roughly 0.0004% of a single core.

Folia

DreamFarm declares
Code (Text):
folia-supported: true
, detects the regionised server at startup, and routes every task by semantics: global timers to the global region scheduler, async IO to the async scheduler, and messages, menus and payments to the owning player's entity scheduler. Block events on a region boundary step aside instead of touching player state across regions.

[HR][/HR]

[HEADING=2]11. Installation[/HEADING]

  1. Install Vault and an economy plugin (EssentialsX, CMI, …).
  2. Drop DreamFarm.jar into
    Code (Text):
    plugins/
    .
  3. Start the server to generate
    Code (Text):
    plugins/DreamFarm/
    .
  4. Adjust
    Code (Text):
    config.yml
    ,
    Code (Text):
    Inventory/*.yml
    and
    Code (Text):
    lang/*.yml
    .
  5. Save — it reloads automatically within 2 seconds, or run
    Code (Text):
    /df reload
    .

[HR][/HR]

[HEADING=2]12. FAQ[/HEADING]

Players say crops are not stored. What should I check?
Check in order: is the crop listed under
Code (Text):
crops:
· is it fully grown · was it grown with bone meal · does the player have
Code (Text):
dreamfarm.autocollect
and auto collection enabled.

Do I need to restart after editing the config?
No. Changes apply within 2 seconds, or run
Code (Text):
/df reload
.

Does switching the storage backend migrate my data?
No.
Code (Text):
/df reload
only switches the source. Back up and migrate manually.

Hand-editing a player data file has no effect.
Take the player offline first. Online warehouses live in memory and the periodic flush will overwrite your edit.

Why is the melon config key
Code (Text):
MELON_SLICE
?

Storage keys are drop types, and a melon block drops slices. The block name is resolved through a built-in mapping.

Does it run on 1.12?
Yes. Every 1.13+-only API lives in a modern adapter that is never loaded on 1.12.

Do I need to install any extra library?
No. Only Vault is required; the GUI is native.

[HR][/HR]

[HEADING=2]13. Changelog[/HEADING]

1.0.1

[HR][/HR]

Questions, bug reports and feature requests are welcome in the discussion tab.​
Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

DreamFarm — Auto Collect, Virtual Warehouse & One-Click Selling [1.12-1.21 | is a free Minecraft Java mod. Compatible with Minecraft 1.12, 1.13, 1.14, 1.15 and newer. Available via Spigot. Download it and open it directly in the game.

Explore more