A "multi-server" Economy Plugin (Powered by Lettuce)


Please report bugs here if any

Any proxy (Bungee,Velocity...)
Any Spigot (Paper,Purpur...)


To enable migration on startup:

  • Code (YAML):
    migration-enabled : true #Set this to true
  • Keep in mind that vault economy is disabled during migration

  1. You do not need to put the plugin in your proxy.
  2. Just drop it in your Spigot's plugins folder
  3. Then modify redis credentials in config.yml (leave blank user or password if you do not have it set)
  4. Choose a server-id different for every instance of Spigot in config.yml Now it is automatic

  • You can configure multiple currencies in config.yml
  • But keep in mind that only the "vault" currency would be used by other plugins
  • It is not possible to delete the vault currency: it is the default one
  • All currencies support offline payments!
  • You can charge a fee on payments sent
  • High compatibility with Vault: all currencies are Vault's Economy instances

  • Player Command
    • balance/money - Displays your balance (vault/default currency)
    • balance/money <player> [currency] - Displays <player>'s balance
    • pay <player> <amount> [currency] - Pay <player> <amount>. you can specify the currency used
    • balancetop/baltop - Displays the top 10 richest accounts (with vault/default currency)
  • OP Command
    • balance/money <player> <currency> give <amount> [reason...]
    • balance/money <player> <currency> take <amount> [/command... or reason...] - Takes money from a player. It is possible to specify a command to execute if the player has sufficient funds
    • balance/money <player> <currency> set <amount> - Purely for moderation
    • transaction <player> [beforedate] [afterdate] - View transactions of a player (you can navigate inside it: all the playernames are clickable)
    • purge-balance <player-regex> - Purges the balance of the players matching the regex (ex. Steve(.*) matches SteveCarell and Steve_)
    • More commands are coming...
  • Permissions
    • rediseconomy.pay - Allows the use of /pay
    • rediseconomy.balance - Allows player to look up balances
    • rediseconomy.balance.currencyname - Allows player to look up balances with that currencyname
    • rediseconomy.balancetop - Allow player to use /balancetop
    • rediseconomy.admin - Allow to use OP commands
    • rediseconomy.pay.currencyname - Allows player to pay with that currency and specify a reason for the payment

Vault
Spigot (1.16+)
Redis server



[dropdown="config.yml with explanation"]

Code (YAML):
#ServerID - you need a different server id for every instance
server-id
: "server-1"
#Transaction history size (how many transactions are saved per-player
transactions-retained
: 200
#Set this to true if you want to migrate accounts
migration-enabled
: false
redis
:
  host
: "localhost"
  port
: 6379
  user
: "redis" #delete this key or leave it blank for none
  password
: "password" #delete this key or leave it blank for none
  database
: 0 #Redis database used (default on server is 0)
  timeout
: 0 #Jedis timeout
lang
:
  no-console
: "<red>You must be in-game to use this command!</red>"
  no-permission
: "<red>You do not have permission to use this command!</red>"
  player-not-found
: "<red>Player not found!</red>"
  invalid-amount
: "<red>Invalid amount!<"
  insufficient-funds
: "<red>You do not have enough money!</red>"
  balance
: "<green>You have %balance%!</green>"
  balance-set
: "<green>You set %player% account to %balance% !</green>"
  balance-other
: "<green>%player% has %balance% !</green>"
  balance-top
: "<green>Top richest players:</green><br>%prevpage%      %page%      %nextpage%"
  balance-top-format
: "<aqua>%pos% - %player% %balance%</aqua>"
  pay-self
: "<red>You cannot pay yourself!</red>"
  pay-success
: "<green>You paid %player% %amount%!</green>"
  pay-fail
: "<red>Pay failed!</red>"
  pay-received
: "<green>You received %amount% from %player%!</green>"
  transaction-item
: "<aqua>%timestamp%</aqua> <click:run_command:/transaction %sender% %afterbefore%><dark_green>%sender%</dark_green></click> -> <click:run_command:/transaction %receiver% %afterbefore%><green>%receiver%<green></click> %amount%!"
currencies
:
  vault
:
    currency-single
: "$"
    currency-plural
: "$"
    starting-balance
: 0
    pay-tax
: 0 # relative percentage 1 is 100% 0 is 0%
  zircon
:
    currency-single
: "z"
    currency-plural
: "zs"
    starting-balance
: 1
    pay-tax
: 0.1 # relative percentage 1 is 100% 0 is 0%

 


Config messages formatting:


  • Support for infinite multiple currencies
  • Migration of accounts from other economy plugins
  • Rollback account balances with transactions
  • add conditional commands on /balance take if the player has the amount required (useful for GUIs)
  • Automatic server-id detection
  • Language configuration
  • Switch currency names and databases
  • Transaction reasons

Placeholders:

  • %rediseco_bal_<currency>% - returns the balance with 2 decimals
  • %rediseco_bal_formatted_<currency>% - returns the balance with 2 decimals with currency symbol
  • %rediseco_bal_short_<currency>% - returns the balance with the unit symbol specified in the config (millions,billions,thousands...)
  • You can use both of them toghether (ex. %rediseco_bal_formatted_short_vault%)
  • %rediseco_totsupply_<currency>% - all the circulating money of this currency (you can use _formatted and _short parameters)


API for developers:
https://github.com/Emibergo02/RedisEconomy#api-usage
[dropdown="API usage"]

Code (Java):
// Access Point
RedisEconomyAPI api = RedisEconomyAPI. getAPI ( ) ;
if (api == null ) {
    Bukkit. getLogger ( ). info ( "RedisEconomyAPI not found!" ) ;
}

//get a Currency
Currency currency = api. getCurrencyByName ( "vault" ) ; //Same as api.getDefaultCurrency()
api. getCurrencyBySymbol ( "€" ) ; //Gets the currency by symbol

//Currency is a Vault Economy https://github.com/MilkBowl/VaultAPI/blob/master/src/main/java/net/milkbowl/vault/economy/Economy.java,
//same methods and everything
currency. getBalance (offlinePlayer ) ;
currency. withdrawPlayer (offlinePlayer, 100 ) ;

//Modify a player balance (default currency)
api. getDefaultCurrency ( ). setPlayerBalance (player. getUniqueId ( ), 1000 ) ;

//Get all accounts from currency cache
api. getDefaultCurrency ( ). getAccounts ( ). forEach ( (uuid, account ) -> {
    Bukkit. getLogger ( ). info ( "Account: " +uuid + ", Balance: " +account ) ;
} ) ;

//Direct data from redis. (Not recommended)
api. getDefaultCurrency ( ). getOrderedAccounts ( ). thenAccept (accounts -> {
    accounts. forEach (account -> {
        Bukkit. getLogger ( ). info ( "UUID: " +account. getElement ( ) + ", Balance: " +account. getScore ( ) ) ;
    } ) ;
} ) ;
api. getDefaultCurrency ( ). getAccountRedis (uuid ). thenAccept (account -> {
    Bukkit. getLogger ( ). info ( "Balance: " + account ) ;
} ) ;[/dropdown] [/dropdown]