Installation
On this page(4)
- Download the latest
sntrade-v*release from Sn-Releases. - Place the
.jarfile into your server'splugins/folder, next toSnLib.jar. - Start the server once. SnTrade creates the shared license file
plugins/.Sn-License/license.yml. - Paste your Sn license key into that file, replacing the placeholder line.
- Restart the server. SnTrade validates the key at startup and then enables.
Requires SnLib installed (depend: [SnLib]), version 1.37.0 or later.
SnTrade is part of the licensed Sn bundle. The key lives in plugins/.Sn-License/license.yml, shared by every bundled Sn plugin on the server, so one key unlocks them all. Without a valid key the plugin refuses to enable, and the console shows [Sn] License: FAIL.
Dependencies
| Plugin | Required |
|---|---|
| SnLib | Yes |
| Vault (with an economy plugin) | No, but every vault: true currency needs it |
| EdTools | No, but every edtoolapi: true currency needs it |
Requirements: Java 21+, Paper 1.20.x (1.20.4 or newer) or 1.21.x.
Without any economy, SnTrade still trades items. A currency whose backend is missing is skipped with a SEVERE console line that names it.
First boot
SnTrade writes every file it needs on first boot:
plugins/
.Sn-License/
license.yml your bundle key, shared by every Sn bundle plugin
SnTrade/
config.yml requests, currencies, confirmation, claims, history, limits, sounds
lang/
messages_en.yml every line the plugin sends (English)
messages_es.yml the Spanish translation
guis/
trade.yml the trade menu both players share
claims.yml the claims mailbox (/trade claims)
history.yml the trade history (/trade history)
history-view.yml the details of one logged trade
value-incidents/ local review records, created on first use (see the FAQ)With database.type: sqlite (the default) the database file lives in the same folder. Claims, the trade log, the crash journal, the lock state and each player's request toggle all live in the database.
Switching between SQLite and MySQL starts with empty tables. Nothing is migrated, so pending claims and the trade history stay in the old database.
Before players use it
- Check the currencies.
money(Vault) is on andgems(EdTools) ships disabled. Setgems.currency-idto your EdTools currency id before you enable it, or delete the entry. See Configuration. - Decide how amounts are typed.
currency-input.modeisanvil. Set it tochatto type amounts in chat instead. - Graves or keep-inventory plugins. Set
death.escrow-policy: claim. Withvanilla, a dead trader's offered items join the death drops, and a plugin that clears the drops afterwards would lose them. - Tune the anti-abuse rules. Creative and spectator cannot trade by default. Blocked worlds, distance limits, same IP, minimum playtime and the item blacklist ship off or empty.
MySQL and several servers
Every server that uses MySQL needs its own explicit server-name. It scopes the trade log, the claims mailbox, the crash journal and the lock.
- An empty
server-name,default,*or a name longer than 59 characters is refused on MySQL, and the plugin does not enable. - The first MySQL start creates
plugins/SnTrade/scope.idand binds it toserver-name. Keep this file with that server's data across updates. Never copy it to another server. - If the name is already bound to another installation, SnTrade refuses to start. After a crash, a restart may wait up to 90 seconds for the previous lease to expire.
/trade reloadcannot changeserver-name. Migrate its stored rows, then restart.
With SQLite an empty server-name uses default, and /trade lock network covers this server only.