Economy
Balances, transfers, /baltop, chest and NPC shops, Vault API.
Commands 15#
Examples#
First money on an empty server#
The module is already on (modules.economyEnabled), but players only have the starting balance, and you need to test transfers, tax and the rich list before the wipe opens.
/eco give Steve 1000
/pay Alex 200
/balance Alex
/baltop
The template economy.json has no startingBalance key — new UUIDs get 100.0 from code. /eco give writes to the economy_balances collection and sends online targets "received_give". /pay deducts exactly 200 from the sender: with taxPercentage 0 the fee is 0 and the recipient sees the same amount. Set taxPercentage: 5 and repeat — the sender still loses 200, the recipient gets 190, and 10 is burned (not credited to the server). /balance Alex requires neoessentials.economy.balance.others; without the node only /balance by Alex himself works. The first /baltop often replies "building" — the cache is built asynchronously; a second later the command shows the top and the cache age in seconds.
A /sell price list from scratch, without editing worth.json by hand#
Players should sell diamonds and all ores with a command, not through a chest. Prices live in the item_worth store, not in the config.
/setworth minecraft:diamond 25
/setworth hand 4
/worth diamond 64
/sell hand
/sell inventory
The first command sets 25 per diamond. The second takes the id from the main hand (hold an iron_ingot) — that is minecraft:hand, not a separate literal. /worth diamond 64 prints 1600 with the symbol from economy.json only if you look at /pay; /worth and /sell read currencySymbol from the economy section of config.json, not from economy.json — that key no longer exists in config.json, so you will almost always see $. Bare /sell = /sell hand and does not bypass neoessentials.sell.hand. inventory/all/invent require sell.bulk and skip items with CUSTOM_NAME while allowSellNamedItems is false — chat shows named_items_skipped. The multiplier is 1.0 in config.json → economy.sellMultiplier; the tier neoessentials.economy.sellmultiplier.150 gives ×1.5 on top if it is higher than the global one.
A player chest shop with the item from hand and a hologram#
A player sells an enchanted bow, not a "bare" minecraft:bow. The name on the sign's 4th line carries no NBT.
/chestshop convert
/chestshop hologram enable
/chestshop info
/chestshop limit
Place a chest and a sign on an adjacent block. Line 1 (index 0) empty or [Shop], line 2 — quantity (1…3456), line 3 — B 50:S 20 (or B FREE / S 1K), line 4 — ?. You have 30 s after placing to fill in the sign, otherwise the pending entry expires. convert is needed if the sign was written before the handler saw it; a normal placement registers itself as soon as all 4 lines are filled. Right-clicking the sign with the bow in hand "bakes in" the DataComponents; without that, a chest with the same bow is "out of stock". After creation a clickable button appears in chat — it sends /chestshop hologram enablepos ; enable does the same if you are looking at the sign (no farther than 5 blocks). The hologram id is like shop__, off by default. Right-clicking someone else's sign buys, left-clicking sells; both require neoessentials.shop.use; the owner sees info instead of a trade. To break the sign: shift+left-click, otherwise the hit is intercepted as a sale. A double chest shares its 54 slots between both signs.
An admin shop without a chest or a slot limit#
Spawn sells food infinitely. The player limit maxShopsPerPlayer does not apply to admin signs.
/chestshop list
/chestshop setprice buy 8
/chestshop stats
Write exactly Admin Shop on line 1 — you need neoessentials.shop.create.admin, otherwise "no_permission_admin". No chest is looked for and stock never runs out. The template config.json has no shop.maxShopsPerPlayer key; for regular players the code limit is 10; admin signs do not count toward it. list without an argument — your signs; other names only online and with shop.list.others. setprice changes the price on the sign you are looking at and rewrites the sign text; a type outside {buy,sell,both} fails in execute. An admin shop's hologram can be enabled only by someone with shop.create.admin: plain OP and shop.admin.remove do not count for this (isShopOwner).
NPC shop: create, stock, change the entity#
A trader without a chest or sign, with a GUI like an admin ChestShop: items are minted and destroyed directly.
/npcshop create Spawn Armorer
/npcshop list
/npcshop additem ab12cd34 diamond 50 -1 1
/npcshop additem ab12cd34 emerald -1 20 16
/npcshop info ab12cd34
/npcshop entitytype ab12cd34 minecraft:villager true
create spawns an invulnerable ArmorStand at your coordinates and prints the full UUID plus an 8-character prefix — use that. additem with −1 for sell makes the slot buy-only; the command rejects both −1. Right-clicking the NPC opens the GUI (neoessentials.shop.use): right-click a slot — buy, left-click — sell, if a sell price is set. entitytype recreates the entity in place; true for a mob enables AI but "tethers" it to the spawn point (radius 6). If the void ate the entity — /npcshop respawn ; listings in npc_shops are not lost. /npcshop reload re-reads the store; /neoe reload does not.
Edge cases#
PayToggleCommand.register sets literal("pt").executes(paytoggle) from EconomyCommands (formerly in NeoEssentials.java). Later PowertoolCommand.registerPtAlias attaches list, remove and greedy <command> to the same literal without a root .executes(). Brigadier merges the nodes: the first .executes() survives and the children are added. Result: /pt toggles receiving payments (neoessentials.economy.paytoggle), /pt list / /pt remove / /pt <command> are powertool (neoessentials.item.powertool). PayToggle always registers /pt, without checking commands.pt; the powertool children appear only if commands.pt is on. If commands.paytoggle is off, bare /pt has no .executes() and counts as an incomplete command.
What to do: Give players /paytoggle for opting out of transfers. Explain powertool to admins: the binding list is /pt list or /powertool list, not bare /pt.
/bal does not show other accounts; offline for /pay and /balance.others are different nodes#
/bal is registered without an argument: only your own balance. /balance <player> is gated by neoessentials.economy.balance.others and resolves offline via the profile. The console cannot open someone else's balance — executeOther requires a player sender. /pay allows offline only with neoessentials.economy.pay.offline; without the node — offline_not_allowed, even if the name is in the cache. /pay and /eco completion shows online players only. Ignoring (IgnoreManager) blocks /pay only if the recipient is online — an offline transfer does not see the ignore. /chestshop list <player> does not look up offline players at all: only getPlayerByName.
What to do: For staff: the pair balance + balance.others. For treasurers making offline payouts — pay.offline. To view others' signs — shop.list.others, and the target must be in the game.
The /pay tax burns the difference instead of crediting the server#
EconomyAPI.payPlayer deducts the full <amount> from the sender, credits the recipient amount − fee, and the fee goes nowhere. taxPercentage in economy.json is a percentage (5 = 5%). The rate comes from EconomyModifierManager.getEffectiveTaxRate: neoessentials.economy.taxexempt zeroes it (via hasPermissionStrict; OP by itself gives no exemption while permissions.opsBypassEconomyModifierPermissions is false). With a tax ≥ 100%, net ≤ 0 and the transfer is rejected. The cap for a single transfer is maxTransferAmount (template 10000) or the neoessentials.economy.paylimit.N tier / LuckPerms meta; bypass — neoessentials.economy.pay.bypass.limit.
What to do: State in the rules that the fee is burned. For exempt players — neoessentials.economy.taxexempt, not "just OP".
paytoggle is on by default and survives restarts#
paytoggleDefault: true means "I accept /pay". Until a player has called /paytoggle at least once, they are not in the cache and every /pay to them goes through. After toggling, the record goes straight into the pay_toggles collection of the active storage.type (the legacy paytoggles.json is imported once). The refusal message is the same as for ignore (pay.toggled_off) — from chat you cannot tell "turned off receiving" from "ignored".
What to do: If newcomers must not be sent money before they agree, set paytoggleDefault: false. You can check your own status only by running /paytoggle again (there is no separate get).
The hologram above a sign is opt-in, not auto-created#
ShopData.hologramEnabled is false by default. After a sign is created, chat offers the button /chestshop hologram enablepos x y z. Only the owner can enable/move a player shop's hologram: isShopOwner ignores OP and shop.admin.remove. An Admin Shop has ownerUUID == null, so neoessentials.shop.create.admin is needed. The move offset is clamped by Brigadier to ±4.5. The id has the shop_ prefix. ShopHologramManager does not check modules.hologramEnabled and writes directly to HologramManager. /chestshop reload, after re-reading the chest_shops collection, cleans up orphaned shop_* holograms.
What to do: Tell players to press the chat button or look at their sign and run /chestshop hologram enable. Moderators remove others' holograms with /hologram remove <id>, not /chestshop hologram disable.
What /neoe reload does and does not do#
ConfigManager.loadAll() clears the cache, so the next /pay already sees the new taxPercentage / currencySymbol from economy.json. EconomyManager.reinitialize() fires only if the singleton never finished initializing at startup (the module appeared disabled in a load race) — live balances are not re-read from disk. WorthManager.reload() re-reads item_worth. /neoe reload does not touch the chest_shops and npc_shops collections: for signs — /chestshop reload (which also re-reads shop.pricing in config.json), for NPCs — /npcshop reload. modules.economyEnabled / modules.shopEnabled and the commands.* flags are read at registration: enabling /pay or shops after changing the key requires a restart.
What to do: Editing economy.json (tax, symbol, cap) — /neoe reload. Editing signs in the store or dynamic prices — /chestshop reload. Editing NPCs — /npcshop reload. Changing modules.* — restart.
The template economy.json has no startingBalance#
The getter looks up the startingBalance key in economy.json and, not finding it, returns 100.0. /eco reset sets exactly this value, not "zero". The duplicate key in config.json was removed in v32 — edit economy.json. cleanupInactiveAccounts + inactiveAccountCleanupDays (30) purge inactive accounts once an hour; /eco reset does not do that.
What to do: Add startingBalance to config/neoessentials/economy.json and run /neoe reload — new UUIDs and reset pick up the number. Existing balances do not change by themselves.
/npcshop additem always prepends the minecraft: namespace#
executeAddItem stores "minecraft:" + itemId.replace("minecraft:", ""). diamond and minecraft:diamond both become minecraft:diamond. thermal:copper_ingot turns into minecraft:thermal:copper_ingot and does not match the real item in the GUI. On a ChestShop sign a modded id on the 4th line resolves fine (ShopParser does not force minecraft:), as does /setworth thermal:copper_ingot.
What to do: In an NPC shop write the short id for vanilla items. A modded item cannot be set correctly in an NPC shop with this command — only by editing the npc_shops collection and /npcshop reload, or sell it through a sign.
/eco history of another player needs vanilla OP 2, not the eco node#
The /eco root allows OP 2 or neoessentials.economy.eco. The history <player> branch additionally has .requires(src -> src.hasPermission(2)). A player with only the eco node and no OP can use /eco give and their own /eco history, but not /eco history Steve. The feed limit is transactionHistoryLimit (50 in the template; if you remove the key, the getter gives 20).
What to do: Give history auditors OP 2 (or the console). For giving money neoessentials.economy.eco is enough.
Indices are 0…3; this matches "line 1" of the old English wiki in the human sense, but people confuse it with the price line: line 0 — name / Admin Shop / [Shop] / empty; 1 — an integer 1…3456; 2 — B 10, S 5, B 10:S 5, K/M suffixes, FREE; 3 — an id or ?. A player sign needs an adjacent ChestBlockEntity (6 sides + under the sign). While the player is editing the text, the handler waits up to 30 s. After registration the sign text is cosmetic: the source of truth is the chest_shops collection, not the sign.
What to do: Do not change prices by editing the sign in the world — use /chestshop setprice or a CSV import. Did not fill it in within 30 s — break and place the sign again, or run /chestshop convert while looking at it.
Known issues#
/payconfirmtoggle does nothing to /pay#
A comment in MiscItemCommands promises the behaviour of Essentials Commandpayconfirmtoggle: "toggle whether /pay asks for confirmation". The command puts the UUID into an in-memory Set, and the getter isPayConfirmDisabled is not called anywhere else. PayCommand has neither a confirmation nor any reference to this Set — the transfer goes through right after the balance, tax and paytoggle checks. The flag is not even written to disk; a restart clears it.
What to do: Do not promise players "confirm the transfer first". If you need confirmations, this is not the command; currently it only prints a chat line about its internal flag.
Configuration#
economy.json#
Permissions 30#
Detailed guide#
The section below is the project's original documentation (docs/Wiki/EconomySystem.md). Links to other wiki pages are rewritten to this site; the guides themselves are not edited, so upstream syncs stay conflict-free.
Version: 1.0.5+build.54 · Config files: economy.json, config.json → economy section
Overview#
NeoEssentials provides a full server economy with player balances, payments, admin tools, an async leaderboard, a sign-based ChestShop, entity-based NPC shops, and Vault API integration.
Config (economy.json)#
Note: modules.economyEnabled (in config.json) is the master on/off switch — economy.json itself has no enabled key.
| Key |
Default |
Description |
startingBalance |
100.0 |
Balance given to new players |
currencySymbol |
"$" |
Symbol prepended to all amounts |
currencyName |
(currency symbol) |
Full currency name (singular) |
currencyNamePlural |
(currencyName) |
Full currency name (plural) |
maxBalance |
999999999.99 |
Maximum balance a player can hold |
allowNegativeBalances |
false |
Allow balances below zero |
taxPercentage |
0.0 |
Tax applied to /pay transfers (as a percent, e.g. 5 = 5%) |
maxTransferAmount |
10000.0 |
Max single /pay amount (overridable per-player via LuckPerms meta) |
paytoggleDefault |
true |
Whether players accept payments by default |
logTransactions |
true |
Log transactions to logs/neoessentials/transactions.log |
transactionHistoryLimit |
50 |
Max entries kept per player for /eco history |
cleanupInactiveAccounts |
true |
Automatically delete balances for long-inactive accounts |
inactiveAccountCleanupDays |
30 |
Inactivity threshold (days) before an account is cleaned up |
cacheMaximumSize |
10000 |
Max entries in the balance cache |
cacheExpireAfterAccessMinutes |
60 |
Cache entry expiry (minutes) |
/sell's multiplier and named-item rule are read from config.json → economy (not economy.json):
| Key |
Default |
Description |
sellMultiplier |
1.0 |
Global multiplier applied to all /sell prices |
allowSellNamedItems |
false |
Allow selling renamed items |
useExternalEconomy |
false |
Use a detected external economy mod (e.g. SG Economy API) instead of NeoEssentials' own internal balances, registered at higher priority into the Vault service registry. Off by default — switching which mod controls player money is opt-in. |
/baltop's page size (10) and cache lifetime (60s) are currently hardcoded and not configurable.
Commands#
Player Commands#
| Command |
Syntax |
Permission |
Description |
/balance |
/balance [player] |
neoessentials.economy.balance (own) / neoessentials.economy.balance.others (other players) |
Check your balance |
/bal |
alias |
same |
Alias |
/pay |
/pay <player> <amount> |
neoessentials.economy.pay |
Send money to a player (applies tax; has a per-player cooldown) |
/p |
alias |
same |
Alias |
/paytoggle |
/paytoggle |
neoessentials.economy.paytoggle |
Toggle receiving payments |
/pt |
alias |
same |
Alias |
/baltop |
/baltop [page] |
neoessentials.economy.baltop |
View top balances (paginated, async, exempt via neoessentials.economy.baltop.exempt) |
/balancetop, /btop |
alias |
same |
Aliases |
/worth |
/worth [item\|hand] [qty] |
neoessentials.worth |
Check sell value of an item |
/sell |
/sell hand\|inventory\|all\|<item> [qty] |
neoessentials.sell (+ neoessentials.sell.hand / neoessentials.sell.bulk) |
Sell items for money |
/payconfirmtoggle |
/payconfirmtoggle |
neoessentials.payconfirmtoggle |
Toggle payment confirmation prompts (registered by the item/misc commands module, not the economy module) |
/pt name collision: /pt is also registered separately as the Powertool system's
shorthand (/pt list, /pt remove, …, permission neoessentials.item.powertool — see the
Items/Powertool docs). Because Brigadier merges same-named literal nodes registered on the same
dispatcher, bare /pt still runs paytoggle (its .executes() was registered first and is kept),
but /pt list / /pt remove run the Powertool subcommands, not anything paytoggle-related.
Don't assume /pt <subcommand> is part of the paytoggle command.
Admin Commands#
| Command |
Syntax |
Permission |
Description |
/eco give |
/eco give <player> <amount> |
neoessentials.economy.eco |
Give money |
/eco take |
/eco take <player> <amount> |
neoessentials.economy.eco |
Take money |
/eco set |
/eco set <player> <amount> |
neoessentials.economy.eco |
Set balance |
/eco reset |
/eco reset <player> |
neoessentials.economy.eco |
Reset to starting balance |
/eco history [player] |
/eco history [player] |
none for self; op (level 2) for [player] |
View transaction history (own, or another player's) |
/economy |
alias for /eco |
same |
Alias |
/setworth |
/setworth <item\|hand> <price\|remove> |
neoessentials.setworth |
Set/remove an item's sell price |
Note: /eco give\|take\|set take a plain numeric <amount> — percentage syntax (10%) is not supported.
ChestShop#
Sign-based shops that connect a chest to a sign for automated buy/sell.
Setup#
- Place a chest (double chests are supported — both sign-facing halves share the
combined inventory, so two signs on the same double chest correctly draw from
and restock into the full 54-slot inventory rather than each only seeing its
own half)
- Place a sign on the chest (or adjacent block)
- Write the sign in this format:
Line 1: [leave blank or your name] ← auto-assigns your name if blank
Line 2: 5 ← quantity per trade
Line 3: B 10:S 5 ← buy price : sell price (B only, S only, or both)
Line 4: diamond ← item name, or ? to assign by right-clicking with item
Typing a name directly on line 4 only resolves a bare item ID — it can't carry enchantments,
custom names, or modded NBT-backed data. Use ? (or shift+right-click afterward — see
Item Data / NBT below) to assign the item by holding the exact
stack instead, if it has data that needs to be preserved.
Price shortcuts: B FREE = free to buy · S FREE = free to sell · 1K = 1000 · 1.5M = 1500000
Admin Shops#
Use Admin Shop on line 1 — requires neoessentials.shop.create.admin. Admin shops have unlimited stock.
Item Data / NBT (Modded Items)#
Sign text alone can only encode a bare item ID (diamond, thermal:copper_ingot) — it cannot carry custom data (enchantments, custom names/lore, or a modded item's NBT-backed capability data). To make a shop trade an item with its data intact, assign it by holding the exact item and interacting with the sign/hologram rather than typing its name:
| Gesture |
When it applies |
Effect |
| Right-click the sign/hologram while holding the item |
Sign's item line is ? (shop is "pending") |
One-time setup — captures the held item's data and activates the shop |
| Shift+right-click the sign/hologram while holding the item |
Shop already has an item assigned (including ones set by typing a name on the sign) |
Re-assigns the item, capturing its data — use this to attach/update NBT on an existing shop |
Only the owner (or, for admin shops, a player with neoessentials.shop.create.admin) can do either. If a shop was created by typing an item name directly on the sign and buying/selling against a data-bearing item in the chest reports "out of stock" even though the chest visibly has stock, this is almost always the fix — the shop never captured the item's data, so it wasn't matching what's actually in the chest. Shift+right-click it with the correct item to fix.
Removing a Shop#
Left-click (attack) a shop sign to sell, same as always — but a single left-click swing on a shop sign is also the tool used to actually break it, so it's intercepted for the sell/info action by default. Sneak (shift) + left-click bypasses that interception and lets the swing through as a normal break attempt, removing the shop (if you're the owner or an admin).
Commands#
/chestshop (alias /cshop) with no arguments prints an in-game help listing.
| Command |
Permission |
Description |
/chestshop list [player] |
none (self) / neoessentials.shop.list.others (other player) |
List shops owned by you or another player |
/chestshop info |
none |
Show info about the looked-at shop sign |
/chestshop convert |
neoessentials.shop.create |
Register the looked-at (pre-existing) sign as a shop |
/chestshop setprice <buy\|sell\|both> <price> |
shop owner, or neoessentials.shop.setprice / neoessentials.shop.admin.setprice |
Change the price(s) on the looked-at shop sign |
/chestshop stats |
none |
Show your total shops, sales count, and top seller |
/chestshop limit |
none |
Show how many shops you've placed vs. your shop.maxShopsPerPlayer limit |
/chestshop pricing |
none |
Show whether the dynamic pricing engine is enabled and its rule count |
/chestshop hologram enable |
shop owner (player shops), or neoessentials.shop.create.admin (admin shops) |
Enable a floating price hologram on the looked-at shop |
/chestshop hologram disable |
shop owner (player shops), or neoessentials.shop.create.admin (admin shops) |
Remove the hologram from the looked-at shop |
/chestshop hologram move <x> <y> <z> |
shop owner (player shops), or neoessentials.shop.create.admin (admin shops) |
Reposition the hologram (offset from the sign, ±4.5 blocks per axis) |
/chestshop export |
neoessentials.shop.admin.csv.export |
Export all shops to a CSV file |
/chestshop import [create] |
neoessentials.shop.admin.csv.import |
Import shops from CSV (create also creates new signs) |
/chestshop remove |
shop owner, or neoessentials.shop.admin.remove / OP 3 |
Remove the shop you're currently looking at (sign or its linked chest) |
/chestshop remove <x> <y> <z> |
neoessentials.shop.admin.remove |
Admin-only: remove a shop at specific coordinates, without needing to look at it |
/chestshop reload |
neoessentials.shop.admin.reload |
Reload shop data and the dynamic pricing config |
Dynamic Pricing & Holograms#
Shops support optional per-shop holograms (floating buy/sell display, clickable) and a configurable dynamic pricing engine (shop.pricing in config.json) with rules such as bulk-quantity discounts, time-based discounts, and supply/demand adjustment. These are off by default — /chestshop pricing reports current status.
Permissions#
| Node |
Description |
neoessentials.shop.create |
Create player shops / register signs via /chestshop convert |
neoessentials.shop.create.admin |
Create admin shops |
neoessentials.shop.use |
Buy/sell at shops |
neoessentials.shop.list.others |
View other players' shops via /chestshop list <player> |
neoessentials.shop.setprice |
Change prices on your own shops via /chestshop setprice |
neoessentials.shop.admin.setprice |
Change prices on any shop |
neoessentials.shop.admin.remove |
Remove any shop |
neoessentials.shop.admin.reload |
Reload shop data |
neoessentials.shop.admin.csv.export |
Export shops to CSV |
neoessentials.shop.admin.csv.import |
Import shops from CSV |
NPC Shops#
Entity-based shops — an invulnerable ArmorStand NPC that opens a virtual chest-style
GUI listing configurable buy/sell offers, instead of a sign+chest pair. Unlike ChestShop,
NPC shops have no linked chest: items are minted/sunk directly (like an admin ChestShop
with unlimited stock), so there's no stock to run out of on the shop's side.
Setup#
- Stand where you want the NPC and run
/npcshop create <name> — spawns the NPC at
your current position.
- Add item listings with
/npcshop additem <shopId> <item> <buyPrice> <sellPrice> <qty>
(pass -1 for either price to disable that side of the trade — e.g. buy-only or
sell-only listings).
- Right-click the NPC to open the shop GUI.
Buying and Selling#
Inside the shop GUI, each listing is shown as an item stack with buy/sell prices and a
click hint in its lore:
- Right-click a listing → buy (pay money, receive the item).
- Left-click a listing → sell (give up the item, receive money) — only works if the
listing has a sell price configured and you're carrying enough of the item.
Requires neoessentials.shop.use, same permission as ChestShop.
Commands#
/npcshop with no arguments prints an in-game help listing. All sub-commands require
neoessentials.shop.npc.manage (or OP level 3).
| Command |
Description |
/npcshop create <name> |
Spawn a new NPC shop at your current position |
/npcshop remove |
Remove the nearest NPC shop (within 5 blocks) |
/npcshop additem <shopId> <item> <buyPrice> <sellPrice> <qty> |
Add a listing (-1 disables that side) |
/npcshop removeitem <shopId> <index> |
Remove a listing by its index (see /npcshop info) |
/npcshop list |
List all NPC shops |
/npcshop info <shopId> |
Show a shop's name, ID, position, and listings |
/npcshop reload |
Reload npc_shops.json from disk |
/npcshop respawn <shopId> |
Re-summon a shop's NPC entity if it was ever lost (e.g. killed by void damage, or removed by an unrelated /kill) without losing its listings — the listings are keyed by shopId, independent of the in-world entity |
shopId accepts either the full UUID or an unambiguous prefix (as shown by /npcshop list/create).
Permissions#
| Node |
Description |
neoessentials.shop.npc.manage |
Create/remove/configure NPC shops |
neoessentials.shop.use |
Buy/sell at NPC shops (shared with ChestShop) |
Vault API#
NeoEssentials registers itself as a Vault Economy, Chat, and Permission provider. Any mod/plugin using Vault will automatically use NeoEssentials.
| Provider |
Class |
Notes |
| Economy |
NeoEssentialsEconomy |
Backed by EconomyManager; format() uses live currencySymbol |
| Chat |
NeoEssentialsChat |
Prefix/suffix routed through LuckPerms → FTBRanks → internal |
| Permission |
NeoEssentialsPermission |
playerHas() → PermissionAPI.hasPermission() |
Use /vault to check provider status in-game.
Data Files#
| File |
Contents |
neoessentials/balances.json |
Player UUID → balance |
neoessentials/transactions.json |
Transaction history log |
neoessentials/worth.json |
Item ID → sell price |
neoessentials/shops.json |
ChestShop data |
Back to Wiki Home