FAQ
On this page(16)
How do I update SnTrade?
Download the newer sntrade-v* release and replace the jar. Configs auto-merge on restart.
Does it support Folia?
No, SnTrade is not Folia-compatible.
The plugin will not enable and the console says License: FAIL
The key in plugins/.Sn-License/license.yml is missing, wrong or expired. Paste a valid Sn bundle key there and restart. One key covers every bundled Sn plugin on the server.
Can items be duplicated or swapped at the last second?
No. An offered item leaves your inventory and is held by the trade, and the menu only shows marked copies. Once both players are ready the offers lock. Any change clears both ready flags, and the whole settlement runs as one step.
A currency does not show in the trade menu
Check the console at start. A currency whose backend is missing (Vault or EdTools not installed), whose EdTools id is unknown, or that sets neither vault: true nor edtoolapi: true is skipped with a SEVERE line naming it. Also check enabled, and the currency's permission for that player.
How does the currency tax work?
tax-percent is withheld from what the receiver gets. The receiver's share is rounded down, and the remainder counts as tax. The payer always pays the full amount they typed. Players with sntrade.bypass.tax receive the full amount.
An item does not fit the receiver's inventory
With the default overflow.settlement: claim, it goes to the receiver's claims mailbox. They collect it with /trade claims, or automatically on their next join. drop drops it at their feet, and cancel refuses the trade instead.
A trader died mid-trade and lost their items
With death.escrow-policy: vanilla, offered items join the death drops. A graves or keep-inventory plugin that clears the drops afterwards removes them. Set death.escrow-policy: claim so the items always go to the claims mailbox.
Players cannot use commands while trading
commands-while-trading.mode is block, so only the whitelist commands work (msg, tell, r, w by default). Add commands to the whitelist, or set the mode to allow.
Nobody can trade and requests say trading is disabled
Trading is locked. Run /trade unlock to lift every lock. At startup, trading also stays locked until the lock state is read from the database; if that read keeps failing, check the database and run /trade reload.
The server crashed during a trade. Do players get their items back?
Not automatically: the player file usually still holds the item, and an automatic restore would duplicate it. Staff with sntrade.notify are told about interrupted trades. Check the player and their partner first, then use /trade recover <player> only when the items are really missing.
What is the value-incidents folder?
Before an item offer, a take-back, a claim or the end of a trade, SnTrade writes a local review record there and removes it once the handoff succeeds. A record that stays means a database write failed or a delivery was uncertain, and the console warns at startup. Nothing is granted from these files automatically. Check both inventories and wallets and the claims before restoring anything, then remove the file by hand. Back the folder up with the plugin's data.
A claim is stuck and never delivered
An interrupted or uncertain claim delivery keeps its database row as ITEM_H or CUR_H. It is held for staff and excluded from automatic delivery. The console logs each held claim at startup with its id, owner, trade id and value.
Check the player's inventory or balance first. If the value is still owed, restore that one row:
UPDATE sntrade_claims SET kind = CASE kind WHEN 'ITEM_H' THEN 'ITEM' ELSE 'CURRENCY' END WHERE id = '<claim-id>' AND server = '<server-name>' AND kind IN ('ITEM_H', 'CUR_H');If it was already delivered, remove the held row only after confirming that, and keep a copy of it for your records.
Can several servers share one MySQL database?
Yes, when each server has its own explicit server-name and its own scope.id file. The trade log, claims, crash journal and lock are scoped per server, and /trade lock network locks all of them. See Installation.
I switched from SQLite to MySQL and the claims and history are gone
Nothing is migrated between databases. They stay in the old database. Switch back to reach them.
How do I use the Spanish translation?
Set lang: es in config.yml and run /trade reload. Keys added by an update arrive in English in an existing messages_es.yml: translate them, or delete the file to get the shipped translation back.