For the complete documentation index, see llms.txt. This page is also available as Markdown.

📜Configuration

# =====================================================================
#  NetworkEconomy configuration
#  Cross-server, Vault-compatible economy for Paper/Spigot networks.
# =====================================================================

# A unique identifier for THIS server inside the network.
# It is used as the "source server" for transaction logs and to ignore
# Redis messages published by this same node. Must be different on every
# server of the network.
server-id: "lobby-1"

# ---------------------------------------------------------------------
# Storage: authoritative persistent store (MySQL / MariaDB).
# This is the single source of truth. All balances live here.
# ---------------------------------------------------------------------
storage:
  host: "127.0.0.1"
  port: 3306
  database: "networkeconomy"
  username: "root"
  password: "changeme"
  pool:
    # HikariCP pool sizing. Keep it small; economy queries are short.
    maximum-pool-size: 10
    minimum-idle: 2
  # Prefix for all tables created by the plugin (see schema.sql).
  table-prefix: "ne_"

# ---------------------------------------------------------------------
# Redis: pub/sub used to keep local caches coherent in real time.
# Optional but STRONGLY recommended for multi-server setups.
# ---------------------------------------------------------------------
redis:
  enabled: true
  host: "127.0.0.1"
  port: 6379
  username: ""      # leave empty unless your Redis uses ACL users
  password: ""      # leave empty for no auth
  database: 0
  # Channel used for balance-change broadcasts across the network.
  channel: "networkeconomy:updates"
  pool:
    minimum-size: 2
    maximum-size: 8

# ---------------------------------------------------------------------
# Local in-memory cache for online players.
# ---------------------------------------------------------------------
cache:
  expire-after-seconds: 300
  fallback-refresh-seconds: 30

# ---------------------------------------------------------------------
# Currencies. The first entry is the DEFAULT currency and the one exposed
# through the Vault Economy API.
# ---------------------------------------------------------------------
currencies:
  coins:
    display-name: "Coin"
    display-name-plural: "Coins"
    symbol: "$"
    symbol-before: true
    decimals: 2
    starting-balance: 100.0
    payable: true
    default: true
  gems:
    display-name: "Gem"
    display-name-plural: "Gems"
    symbol: ""
    symbol-before: false
    decimals: 0
    starting-balance: 0.0
    payable: false
    default: false

# ---------------------------------------------------------------------
# Command behaviour.
# ---------------------------------------------------------------------
commands:
  pay:
    minimum-amount: 0.01
    deny-self: true
    tax-percent: 0.0
  baltop:
    entries-per-page: 10
    cache-seconds: 60

# ---------------------------------------------------------------------
# Transaction history GUI.
# ---------------------------------------------------------------------
gui:
  history:
    title: "&8Transaction History"
    rows: 6
    entries-per-page: 45

# ---------------------------------------------------------------------
# Messages. Supports legacy '&' colour codes and MiniMessage tags.
# ---------------------------------------------------------------------
messages:
  prefix: "&6&lNE &8» &r"
  no-permission: "&cYou do not have permission to do that."
  player-only: "&cThis command can only be used by players."
  player-not-found: "&cPlayer &e{player}&c has never joined the network."
  invalid-amount: "&cPlease provide a valid, positive amount."
  invalid-currency: "&cUnknown currency: &e{currency}&c."
  balance-self: "&7Your balance: &a{balance}"
  balance-other: "&7{player}'s balance: &a{balance}"
  pay-sent: "&aYou sent &e{amount}&a to &e{receiver}&a."
  pay-received: "&aYou received &e{amount}&a from &e{sender}&a."
  pay-insufficient: "&cYou do not have enough {currency}."
  pay-self: "&cYou cannot pay yourself."
  eco-give: "&aGave &e{amount}&a to &e{player}&a. New balance: &e{balance}"
  eco-take: "&aTook &e{amount}&a from &e{player}&a. New balance: &e{balance}"
  eco-set: "&aSet &e{player}&a's balance to &e{balance}&a."
  eco-reset: "&aReset &e{player}&a's balance to the starting amount."
  error-generic: "&cAn internal error occurred. Please contact staff."

# Enable verbose logging for debugging (SQL / Redis traffic).
debug: false

General

Key
Description

server-id

Unique identifier for this server. Written to every transaction row as the origin server, and used to ignore this node's own Redis broadcasts. Must differ on every server

debug

Verbose logging of SQL and Redis traffic

storage

Key
Description

host / port

MySQL / MariaDB address

database

Database name — must already exist

username / password

Credentials; the user needs table-creation rights on first start

pool.maximum-pool-size

Maximum HikariCP connections. Also determines the plugin's worker-thread count (minimum 2). Keep it small

pool.minimum-idle

Connections kept open while idle

table-prefix

Prefix applied to all three tables. Substituted for {prefix} in the schema

redis

Key
Description

enabled

Turn real-time sync on or off. When off, caches refresh on a timer instead

host / port

Redis address

username

Only needed for Redis ACL users; leave empty otherwise

password

Leave empty for a Redis with no auth

database

Redis logical database index

channel

Pub/sub channel for balance broadcasts. Must be identical on every server

pool.minimum-size / maximum-size

Lettuce connection-pool sizing. A dedicated connection is used for the subscription

cache

Key
Description

expire-after-seconds

How long a cached balance is trusted before a background refresh is forced. Only matters when Redis is off or a message was missed — with Redis on, this can stay high

fallback-refresh-seconds

With Redis disabled, how often online players are re-synced from the database. Ignored when Redis is enabled

The cache only ever affects how fresh a displayed number is. Transactions are always evaluated by the database, so a stale cache can never cause a wrong deposit, withdrawal or transfer.

currencies

Covered in detail on currencies.md.

commands

Key
Description

pay.minimum-amount

Smallest amount accepted by /pay

pay.deny-self

Block players from paying themselves

pay.tax-percent

Percentage removed from the transferred amount. 0.0 disables the tax

baltop.entries-per-page

Rows shown per /baltop page

baltop.cache-seconds

How long a computed /baltop page is reused before being queried again

gui.history

Key
Description

title

Inventory title of the history GUI

rows

Inventory height, clamped to 1–6

entries-per-page

Transactions per page. Leave room for the navigation row — with rows: 6, 45 fills the top five rows and leaves the last for navigation

messages

Every value supports legacy & colour codes and MiniMessage. A string containing & is parsed as legacy; otherwise it is parsed as MiniMessage — so &aHello and <green>Hello</green> both work, but don't mix the two in one line.

prefix is prepended to command feedback automatically. Available placeholders:

{player} {amount} {currency} {balance} {sender} {receiver} {reason} {page} {pages}

Not every placeholder is meaningful in every message — {receiver} only makes sense in pay-sent, for instance. Unknown placeholders are left as-is rather than erased.

The configuration is read once at enable. Changes to config.yml require a server restart (or a plugin reload) to take effect.

Last updated