("help","This is the general help message for the bank system. For detailed help messages, please run /bank help <command OR subcommand>. List of possible "+
"create","The create command is used for creating an account type with the bank system! You can also alias your bank account names for easier access. Example: "+
"\"/bank create checking primary\" will create an account with a unique identifier (the checking #). HOWEVER, you can use the alias 'primary' to also refer to it in other commands!"
),
entry
("select","The SELECT command provides a powerful tool for selecting a default account that the bank system automagically does transactions out of. Whether it be wires from you "+
"to someone else - it will use this as a default. Example usage: \"/bank select primary\" will make your account that is aliased as 'primary' your primary bank account. You can also "+
"use the accounts unique number too. In addition to just normal usage, you can set backup accounts too that transactions will come out of should your primary account (or another backup) "+
"reach a 0 balance. Just use \"/bank select 3181-31-3354 as backup\"."
),
entry
("close","The CLOSE command provides the ability to close an account PROVIDING that there is a 0-balance inside that account. It is your responsibility to ensure all debts are paid "+
"and any remaining money in the account is moved to another account. To avoid magic money vanishing, closing accounts with balances of negative or positive amounts is impossible. "+
"Example usage: \"/bank close 3181-31-3354\""
),
entry
("report","The report command provides a powerful ability of generating reports of all bank transactions and activities on one or multiple accounts at a single command-call. Example "+
"usage: \"/bank report 3181-31-3354\" will generate a bank report of all transactions to and from this account from its creation. If you wanted to generate reports on all your accounts "+
"at once, you would run \"/bank report all\" instead."
),
entry
("balance","The balance command is the primary way to get your bank accounts balance. If no account is specified, it will use your default account (if not set, then default is first created). "+
("examples","Random example commands. \"/wire Notch 900 from primary-checking\". \"/balance on secondary-savings\". \"/bank report all\". \"/bank create savings-account MyFirstSavings\". "+
"\"/wire 3181-31-3354 8767.43 with note \"Dinner payment\"\""
),
entry
("move","Move provides the ability to transfer money from one account to another without the double withdraw-then-deposit dilemma. Additionally, move lets a player move an account to a SEPARATE "+
"bank or faction (providing these are in the game and supported). Example usage: \"/bank move 900 from savings to checking\". Or, \"/bank move 3181-31-3354 to {/FACTION_OR_BANK_IDENTIFIER}\""
),
entry
("syntax","This banking system was written to be human readable in command-form and often operates like a database. You can put certain filler-words inside your commands that are "+
"parsed out at runtime if it helps with reading. Example command: \"/bank select 942-3449-42\" will work just fine to select a bank account as a primary account. HOWEVER, you can also "+
"type \"/bank select for-bills as default\" so long as you aliased the account identifier as 'for-bills'. Much nicer to read and work with. [Related: /bank help aliases]"
),
entry
("alias","Alias provides a way for the player to alias an existing account (or re-alias) if they did not do that at the account creation (tip, you can! run /bank help create). NOTE: Aliases "+
"MUST be unique across ALL bank accounts a player possesses. This means even bank accounts across banks/factions. Additionally, a re-alias to an alias that already exists will fail. "+
"Example usage: \"/bank alias 3181-31-3354 to \"for-bills\"\". More usage: \"/bank alias 'for-bills' to 'for-all-outgoing-transactions'\""
),
entry
("wire","The wire command allows a player to wire money from account to account. You can use /wire like /move ('/bank help move' for more) or more primarily for wiring to any other account. "+
"Example usage: \"/wire Notch 500 from 3181-31-3354\". Additional usage: \"/wire 9384-493-2912 400,000 from 3181-31-3354 with reason \"Groceries\"\". CRITICAL NOTE: Because of the way the banking "+
"system has its command structure setup - you **CANNOT** use aliases in wire commands! This is because aliases are only unique per PLAYER, not across the entire server."
context.getSource().getPlayer().sendMessage(Text.of("You have entered an improperly formatted message. Please reference the bank manual if you are confused how to form a command!"));
// Possible code paths ({}=required, []=optionals, ()=explanation):
// REQUIRED (path) = {SetBal|AddMoney|SubMoney} {LONG_ID|BANK_ID} {amount} (Depending on context, changes balance somehow from an account ID or bank)
// REQUIRED (path) = {GetBal} {LONG_ID:BANK_ID} (Gets the balance of a bank account or bank)
// REQUIRED (path) = {accounts} {list} {PLAYER_NAME} (Returns summarized account information on a player)
// REQUIRED (path) = {accounts} {move} {LONG_ID} to {BANK_ID} (Will move account to diff bank. May generate new account ID)
// REQUIRED (path) = {accounts} {force-close} {LOND_ID} (Forces an account to be closed. Money is returned to server bank account)
// REQUIRED (path) = {accounts} {add} to {PLAYER_NAME} [BANK_ID] (Adds an account to a player to server by default. Specify other for other)
// REQUIRED (path) = {accounts} {transactions} from {LONG_ID} (Gets transaction report from an account by ID)
// REQUIRED (path) = {accounts} {lock} {LONG_ID:USER} (Locks a specific bank account OR all bank accounts owned by $USER)
// REQUIRED (path) = {create-bank} {BANK_ID} (Create a new bank. Default is owned by server)
// REQUIRED (path) = {close-bank} {BANK_ID} (Closing a bank forces a close on all accounts. Banks money is returned to server bank)
// REQUIRED (path) = {lock-bank} {BANK_ID} (Freezes all activities through a bank)
// REQUIRED (path) = {unlock} {BANK_ID:ACCOUNT_ID:USER} (will unlock a bank, account, or all of a users accounts)
// REQUIRED (path) = {wire} from {ACCOUNT_ID} to {ACCOUNT_ID} (Forces a wire from one account to another. Overrides overdraft setting since it's administrative)
// REQUIRED (path) = {get-server-allowance} (Returns the rate of which the server adds money to itself magically & how much)
// REQUIRED (path) = {set-server-allowance} {amount} {interval} (Sets the magic allowance rate of server & period in which it does it to add money magically to server bank)
sourcePlayer.sendMessage(Text.of("Here is a list of available banks on the server: "+BankManager.GetInstance().GetAllBankNames()));
}
// Possible code paths:
// REQUIRED (path 1) = {AMOUNT} [FROM:{INTERNAL ACCOUNT #|ALIAS}] TO:{INTERNAL ACCOUNT #|ALIAS} ***Note: can be assumed to be SELECTED default if not specified
sourcePlayer.sendMessage(Text.of("Unrecognized select command. Please run /bank help select for more information."));
}
return0;
}
// Possible code paths:
// REQUIRED = {account id | player} {amount} [optional] NOTE: A wire CANNOT be performed on an alias; as a possible conflict can happen between player accounts since aliases are ONLY unique PER player
// OPTIONAL = [account id | alias] [reason] NOTE: This is the account the wire comes from. If none selected, DEFAULT is chosen (if exists)