Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Tags
Creators
Details
EconomyCraft
A server-side economy for Fabric and NeoForge.
Add-On: EconomyCraft Bounties
The /eco menu
| Buttom | Description |
|---|---|
| Shop | Buy and sell at fixed prices with unlimited stock. Left click buys, right click sells, shift-click uses the bulk amount. |
| Auction House | Buy items other players have listed, or list your own. |
| Sell Items | Drop items in, check the total, confirm. Unpriced items can't be sold. Damaged items sell for less, enchanted for more. |
| Orders | Request an item, amount and price. Other players fill it and get paid. |
| Daily Reward | Claims the daily payout, once per day. |
| Pay a Player | Send money to another player. |
| Leaderboards | Top Balances, Earners, Spenders, Sellers, Buyers and Traders. |
| Item Value | The buy and sell price of any item. |
| Deliveries | Items or payouts that couldn't be delivered directly (full inventory/completed while offline). |
| Transactions | Your recent balance history. |
Each screen also has a command: /bal, /pay, /daily, /shop, /ah, /auction, /sell, /worth, /orders, /deliveries, /transactions.
Money amounts accept shorthand in commands and menus: 500, 1.5k, 20M, 3B, 2T, 2.5Qa, 1Qi.
The Admin (/eco admin) menu
Shop editor
Browse categories and click an item to edit it.
- Category editor: right-click a category to rename it, change its color, icon or visibility, or exclude it from dynamic pricing. Deleting a category moves its items to
miscand zeroes their buy prices. - Add item: pick any item in the game, or one from your inventory. Custom names, enchantments and container contents are kept.
- Buy Price / Sell Price: the price of one item;
0disables that direction. If dynamic pricing applies, this also shows the current price and multiplier. - Dynamic Pricing: opt this item out of dynamic pricing even while it's enabled server-wide.
- Bulk Amount: how many a shift-click buys or sells.
- Category: which shop page the item appears on.
blocks.woodcreates a sub-page. - Remove: takes the item out of the shop. Its price is kept.
- Removed items: every removed item. Click one to put it back with its old price. Adding a removed item through Add item does the same.
Dynamic shop pricing
Optional, off by default (dynamic_prices.enabled). Scales every buy price by:
current price = base price × active-player median balance / starting balance
The scale is clamped between dynamic_prices.min_multiplier and dynamic_prices.max_multiplier, and recalculated every dynamic_prices.update_minutes (default once an hour). Sell prices are never affected. Opt out per category or item from the Shop editor above.
Settings
Every option in config.json, editable in-game and grouped into the same categories as the file.
Players
Select any player, online or not, to give, take or set their balance, remove them from the economy, or override their max active orders/auctions.
Reset Tools
| Tool | Does |
|---|---|
| Reset All Balances | Sets every player's balance back to economy.starting_balance. |
| Reset Daily Reward Data | Everyone can claim their daily reward again immediately. |
| Reset Daily Sell Limits | Everyone's daily sell limit resets to full immediately. |
| Clear Auctions | Cancels every active listing. Items are returned to sellers' deliveries. |
| Clear Orders | Cancels every open order. Escrowed money is refunded to requesters. |
| Remove All Items | Removes every shop item, the same as Remove in the Shop editor. Put items back from Removed items. |
| Reset Shop Prices | Replaces prices.json with the defaults, including categories. Custom items are deleted. The old file is kept as prices.json.before-reset-<time>. |
| Reset Entire Economy | Every tool above except the two shop tools, plus wipes the Leaderboards stats and deletes the entire transaction log. |
Only the two shop tools touch shop prices/categories. None of them touch permission settings.
Admin commands
/eco addmoney, /eco setmoney, /eco removemoney, /eco removeplayer.
Permissions
Admin and command access is gated by permission nodes. Any admin node not set by a permission plugin falls back to OP; any command node not set falls back to allowed for everyone.
Admin nodes
| Node | Grants |
|---|---|
economycraft.admin |
Everything below |
economycraft.admin.players |
/eco addmoney, /eco setmoney, /eco removemoney, /eco removeplayer, the Players screen |
economycraft.admin.settings |
The Settings screen |
economycraft.admin.shop |
The Shop editor (from the Admin menu or the in-shop edit button) |
economycraft.admin.reload |
The "Reload from disk" button |
economycraft.admin.reset |
The Reset Tools screen |
Command nodes
| Node | Grants |
|---|---|
economycraft.command.menu |
/eco, /eco menu |
economycraft.command.balance |
/bal |
economycraft.command.pay |
/pay |
economycraft.command.shop |
/shop |
economycraft.command.auction |
/ah, /auction |
economycraft.command.sell |
/sell |
economycraft.command.orders |
/orders |
economycraft.command.deliveries |
/deliveries |
economycraft.command.daily |
/daily |
economycraft.command.transactions |
/transactions |
economycraft.command.worth |
/worth |
Config files
Stored in config/economycraft/ on a server (or saves/<world>/economycraft/ per-world in singleplayer): config.json, webhook.json and prices.json at the top, player data under data/.
config.json
| Key | Default | Description |
|---|---|---|
economy.starting_balance |
1000 |
Money new players start with. |
economy.max_balance |
1000000000000000000 |
Most money one player can hold, from 1 up to $1Qi. |
economy.daily_reward |
100 |
Money given by the daily reward. |
economy.tax_rate |
0.1 |
Tax on trades and orders, as a decimal (0.1 = 10%). |
display.balance_separator |
"." |
Thousands separator, e.g. "," gives $1,000. |
display.currency_symbol |
"$" |
Symbol shown with every amount, up to 16 characters. "" for none. |
display.currency_symbol_position |
"prefix" |
"prefix" gives $100, "suffix" gives 100$. |
display.currency_name |
"" |
Optional name used instead of the symbol in chat messages, e.g. "Gold" gives 100 Gold. Menus keep the symbol. |
display.scoreboard_enabled |
true |
Show the balance sidebar. |
commands.standalone |
true |
Allow /pay, /daily etc. without the /eco prefix. |
commands.standalone_admin |
false |
Allow /addmoney, /setmoney etc. without the /eco prefix. |
shop.enabled |
true |
Enable the fixed-price shop. |
selling.enabled |
true |
Enable selling. |
selling.daily_limit |
10000 |
Most a player can earn per day from selling. 0 disables the limit. |
selling.worth_enabled |
true |
Enable item value lookups (/worth). |
dynamic_prices.enabled |
false |
Scale shop buy prices with the active-player median balance. See Dynamic shop pricing. |
dynamic_prices.min_multiplier |
0.5 |
Lowest allowed price scale, from 0.5 to 100. |
dynamic_prices.max_multiplier |
5.0 |
Highest allowed price scale, from 0.5 to 100. |
dynamic_prices.min_active_days |
30 |
Players must have logged in within this many days to count as active. 0 includes everyone. |
dynamic_prices.update_minutes |
60 |
Minutes between price scale recalculations. Minimum 1. |
auction.enabled |
true |
Enable the auction house. |
auction.expiration_hours |
168 |
Hours before an unsold auction expires and its item goes to deliveries. 0 disables expiration. |
auction.max_active_per_player |
0 |
Most active auctions a player can have at once. 0 = unlimited. Overridable per player. |
orders.enabled |
true |
Enable the orders board. Deliveries still work either way. |
orders.expiration_hours |
168 |
Hours before an unfulfilled order expires and its escrow is refunded. 0 disables expiration. |
orders.max_active_per_player |
0 |
Most open orders a player can have at once. 0 = unlimited. Overridable per player. |
transaction_log.enabled |
true |
Record every balance change to a daily log file. |
transaction_log.retention_days |
7 |
How many days of transaction logs to keep. |
webhook.json
| Key | Default | Description |
|---|---|---|
webhook_enabled |
false |
Post transactions to webhook_url. |
webhook_url |
"" |
Discord-compatible incoming webhook URL. |
webhook_min_amount |
0 |
Skip webhook posts for transactions smaller than this. |
prices.json
One entry per shop item, keyed by item id:
{
"minecraft:diamond": {
"category": "ores",
"stack": 64,
"unit_buy": 800,
"unit_sell": 200
}
}
category accepts top.sub for a sub-page, stack is the shift-click bulk amount, and unit_buy/unit_sell are the price of one item (0 disables that direction). Items from installed mods are added automatically, using their mod ID as category and 0 for both prices.
The editor also writes a few extra keys:
components: NBT for custom items (name, enchantments, container contents). A#labelsuffix distinguishes duplicates of the same item, e.g.minecraft:shulker_box#loot_rare."removed": true: takes the item out of the shop but keeps its other keys, so it can be put back from Removed items. Delete theremovedkey to put it back."dynamic_price_enabled": false: opts an item, or a category under_categories, out of dynamic pricing.
Placeholders
Exposes economy data to other mods via Text Placeholder API (Fabric) or Placeholder API NeoForge (NeoForge). Both are optional, the mod works without them, but the matching jar must be in mods/ for placeholders to resolve.
| Placeholder | Description |
|---|---|
%economycraft:balance% |
Raw balance, e.g. 1000. |
%economycraft:balance_formatted% |
Formatted balance, e.g. $1.000. |
%economycraft:balance_short% |
Abbreviated balance, e.g. $1.2k. |
%economycraft:daily_sell_remaining% |
How much the player can still earn from selling today. ∞ if unlimited. |
%economycraft:top_name <rank>% |
Name of the player at that rank (1 = richest). |
%economycraft:top_balance <rank>% |
Raw balance at that rank. |
%economycraft:top_balance_formatted <rank>% |
Formatted balance at that rank. |
%economycraft:top_balance_short <rank>% |
Abbreviated balance at that rank. |
Ranks beyond the number of players resolve as invalid.
Transaction logs and webhook
Every balance change is logged to logs/transactions-YYYY-MM-DD.log inside the config folder, and kept for transaction_log.retention_days days (default 7). Setting it above 90 logs a console warning on start.
Enable webhook_enabled in webhook.json to also POST each transaction to a Discord-compatible webhook; use webhook_min_amount to only notify on larger transactions.
Developer API
The normal EconomyCraft jar includes API v1 for other server-side mods, no separate runtime API mod to install. Covers balances and payments, money formatting, read-only item prices, leaderboard data and balance-change events. Public classes are under com.reazip.economycraft.api.v1.
See the Developer API wiki for setup, examples and the complete reference.


