promotional bannermobile promotional banner

Ingot Labs Base

Server economy for Paper: bank accounts, transfers, rankings, a click-through bank menu and an admin panel. A Vault economy provider with a developer API and PlaceholderAPI support.
1-bank-en.png

1-bank-en.png

2-account-en.png

2-account-en.png

3-send-money-en.png

3-send-money-en.png

4-history-en.png

4-history-en.png

5-admin-en.png

5-admin-en.png

Description

Ingot Labs Base

Server economy for Paper: bank accounts, transfers, rankings, a click-through bank menu and an admin panel.

Vault economy provider • developer API • PlaceholderAPI • English and Polish • by Ingot Labs

⚠️ Alpha release (0.1.3). The plugin is in early development. Back up your server before using it and please report any bugs you find.

About

Ingot Labs Base adds a complete economy of its own to your server. Every player gets a bank account, can send transfers, check their balance and compete in the richest-players ranking. Everything is available from a single /bank menu, with quick commands for the most common actions.

The plugin registers itself as a Vault economy provider, so shops, claims, quests and other plugins use it with no changes on their side. It was built to work with Buczaak's WebMarket (an in-game crypto exchange).

Features

Economy and accounts

  • Bank accounts created automatically on a player's first join.
  • Your own currency: name (singular and plural), symbol, display format, number of decimals and thousands/decimal separators.
  • Starting balance, minimum and maximum balance (negative balances can be allowed).
  • Money is stored as integers (4 decimals internally), so there are no floating-point rounding errors.
  • Operations are atomic and thread-safe, and database writes are asynchronous so they do not slow the server down.
  • SQLite by default (zero setup), MySQL optional. The database schema is versioned for future updates.

The /bank menu (classic inventory GUI)

  • Your account: a separate menu with your balance and ranking position.
  • Richest players: the ranking as player heads. Hover a head to see the balance, rank, share of all money on the server and the gap to the neighbouring rank.
  • Send money: a two-step transfer in the GUI. First pick a player (heads of online players, or type a name in chat, offline players included), then the amount with +/- buttons or typed in chat. You see the fee and what the recipient gets, then confirm.
  • Transaction history: entries shown as items (with the other player's head for transfers), details on hover.
  • Exchange account: a button that opens your WebMarket account (command set in the config; shown only when WebMarket is installed).
  • Admin panel: a button visible only to staff with the permission.

Transfers

  • The /pay command. With no arguments it opens the player picker (/pay <player> goes straight to the amount).
  • Minimum and maximum amount, optional fee (%), cooldown and confirmation for large transfers.
  • A transfer is an atomic operation: either both sides go through (debit and credit) or neither does.
  • Amounts accept the suffixes k, m, b, t (e.g. 1.5k, 2m).
  • The recipient is notified if they are online.

Ranking

  • The /baltop command with pages, plus the ranking in the GUI.
  • The ranking is cached (30 s by default), so it does not hit the database.
  • Selected players (e.g. admins) can be hidden.

Transaction history

  • Every balance change is logged: deposit, withdrawal, transfer sent and received, admin actions, starting balance.
  • Players see their own history in the menu, admins see anyone's (menu or /ieco history).
  • The log can be turned off in the config.

Admin panel

  • A list of all accounts (heads, sorted from the richest) with a balance editor: +/- buttons with configurable amounts, reset to the starting balance, exact amount via command, player history.
  • A separate permission for every action (give, take, set, reset, check, history, panel, reload).
  • Commands /ieco give | take | set | reset | check | history | panel | reload.

Vault and EssentialsX compatibility

  • Registers as the Economy provider with the highest priority. Works with Vault and VaultUnlocked.
  • Optionally takes over /balance, /bal, /money, /pay, /baltop, /balancetop, /eco and /economy from EssentialsX and other plugins to avoid conflicts. The list is in the config and the whole feature can be turned off. The original commands are restored when the plugin is disabled.

PlaceholderAPI

For scoreboards, tab lists, holograms and chat:

Placeholder Description
%ingot_balance% balance as a plain number (e.g. 1234.50)
%ingot_balance_formatted% balance with the currency symbol (e.g. $1,234.50)
%ingot_balance_commas% balance with thousands separators
%ingot_balance_short% short form (1.5k, 2.3M)
%ingot_rank% the player's ranking position
%ingot_top_N_name% name of the player at position N
%ingot_top_N_balance% balance of the player at position N (also _balance_formatted and _balance_short)
%ingot_currency_symbol% currency symbol
%ingot_currency_name%, %ingot_currency_name_plural% currency name

Languages

  • English (default) and Polish, selected in config.yml (language: en or pl).
  • All messages and menu texts live in lang/*.yml files in MiniMessage format and are fully editable.
  • Polish adds command aliases such as /saldo, /przelew and /ranking. Aliases can be changed in the language file.
  • Reload without a restart: /ingotlabs reload.

Commands and permissions

Command Description Permission Default
/bank main menu ingotlabs.bank everyone
/balance [player] (/bal, /money) check a balance ingotlabs.balance everyone
check another player's balance ingotlabs.balance.others OP
/pay [player] [amount] send money ingotlabs.pay everyone
skip the transfer cooldown ingotlabs.pay.bypass-cooldown OP
/baltop [page] (/balancetop) richest players ingotlabs.top everyone
/ieco give / take / set <player> <amount> change a balance ingotlabs.admin.give / .take / .set OP
/ieco reset <player> reset to the starting balance ingotlabs.admin.reset OP
/ieco check <player> balance and rank ingotlabs.admin.check OP
/ieco history <player> [page] transaction history ingotlabs.admin.history OP
/ieco panel admin panel ingotlabs.admin.panel OP
/ieco reload, /ingotlabs reload reload config and language ingotlabs.admin.reload OP
/ingotlabs (/ilb, /ibase) plugin info none everyone

ingotlabs.admin grants all administration permissions at once.

Installation

  1. Install Vault (or VaultUnlocked). Optionally PlaceholderAPI.
  2. Drop IngotLabsBase-0.1.3.jar into the plugins folder and start the server.
  3. Edit plugins/IngotLabsBase/config.yml (currency, starting balance, transfers, language).
  4. Apply changes with /ingotlabs reload.

Requirements: Paper 1.21.1 or newer, Java 21. The plugin uses the Paper API (Spigot and Bukkit are not supported).

When updating, delete the old lang/*.yml files if you want the new texts. The plugin never overwrites them, and missing keys fall back to the bundled English text.

Example configuration

language: en            # en or pl
storage:
  type: sqlite          # sqlite or mysql
currency:
  name-singular: "Ingot"
  name-plural: "Ingots"
  symbol: "$"
  decimals: 2
accounts:
  starting-balance: 100.0
  min-balance: 0.0
pay:
  min-amount: 1.0
  tax-percent: 0.0
  cooldown-seconds: 3
  confirm-above: 10000.0
exchange:
  enabled: true
  plugin: WebMarket
  command: webmarket    # command that opens the exchange account
commands:
  override-other-plugins: true

For developers

Besides the standard Vault API, the plugin exposes its own IngotAPI as a Bukkit service. Methods are thread-safe and operations are atomic.

IngotAPI api = IngotAPI.get(); // null if the plugin is not running
if (api != null) {
    api.deposit(uuid, new BigDecimal("50"), "WebMarket: sale");
    TxResult result = api.withdraw(uuid, new BigDecimal("10"), "reason");
    if (result.success()) {
        // result.balance() = new balance (internal units)
    }
    api.transfer(fromUuid, toUuid, new BigDecimal("25"), "gift");
    BigDecimal balance = api.getBalance(uuid);
    String text = api.format(balance);
}

Add softdepend: [IngotLabsBase] to your plugin's plugin.yml. Available methods: hasAccount, createAccount, getBalance, has, deposit, withdraw, transfer, format, currencySymbol, getTop.

FAQ

Does it replace Vault? No. Vault (or VaultUnlocked) is required. Ingot Labs Base is an economy provider for Vault, so other plugins use it like any other economy.

Does it work with EssentialsX? Yes. Economy commands are taken over from Essentials by default. Plugins that use Vault go through Ingot Labs. Plugins that read Essentials balances directly (bypassing Vault) will not see our accounts.

Can I migrate balances from another economy? Automatic import is not available yet. You can set balances with /ieco set.

Where is the data stored? In plugins/IngotLabsBase/data.db (SQLite) or in your MySQL database.

How do I change the language? Set language: pl in config.yml and run /ingotlabs reload. New command aliases need a restart.

How do I connect it to WebMarket? /bank has an exchange-account button (set the command in exchange.command). For code-level integration use IngotAPI.

Known limitations (Alpha) and plans

  • No Folia support. Paper is required (not Spigot).
  • Accounts are cached in the memory of one server, so sharing one database between several servers is not supported yet.
  • No Vault banks (they return NOT_IMPLEMENTED) and no multiple currencies.
  • Ideas for upcoming versions: EssentialsX import, letting players turn off incoming transfers, notifications for offline players, more currencies.

Links and support

Ingot Labs website: ingotlabs.duckdns.org. Report bugs and ideas in the comments or the project's issue tracker.

Ingot Labs Base Team

profile avatar
  • 3
    Projects
  • 142
    Downloads

🪙 Economy plugins & mods for Minecraft 🪙 🪙 Pluginy i mody ekonomiczne do Minecrafta 🪙

More from IngotLabs