From 3abdf9b1845077785044f249126d3604ec348346 Mon Sep 17 00:00:00 2001 From: Jkibbels Date: Sun, 10 Nov 2024 01:01:44 -0500 Subject: [PATCH] [BANKING] Small bits for future --- .../keeblarcraft/BankMgr/BankManager.java | 20 +++++++++++++ .../BankMgr/IndividualAccount.java | 11 ++++++- .../keeblarcraft/BankMgr/IndividualBank.java | 2 +- .../keeblarcraft/Commands/BankCommands.java | 29 ++++++++++++++++++- 4 files changed, 59 insertions(+), 3 deletions(-) diff --git a/src/main/java/jesse/keeblarcraft/BankMgr/BankManager.java b/src/main/java/jesse/keeblarcraft/BankMgr/BankManager.java index 3051980..e210999 100644 --- a/src/main/java/jesse/keeblarcraft/BankMgr/BankManager.java +++ b/src/main/java/jesse/keeblarcraft/BankMgr/BankManager.java @@ -71,6 +71,26 @@ public final class BankManager { return bank; } + public void AdminSubtractFunds(String accountId, Integer amount) { + + } + + public void AdminSetFunds(String accountId, Integer amount) { + + } + + public void AdminAddFunds(String accountId, Integer amount) { + + } + + public void InitiateBankFundsTransfer(String fromAccount, String toAccount) { + + } + + public void InitiateBankAccountClosure(String bankIdentifier, ServerPlayerEntity player, String bankAccountId) { + + } + public void InitiateBankAccountCreation(String bankIdentifier, ServerPlayerEntity player, String accountType) { Boolean success = false; System.out.println("initiating bank creation"); diff --git a/src/main/java/jesse/keeblarcraft/BankMgr/IndividualAccount.java b/src/main/java/jesse/keeblarcraft/BankMgr/IndividualAccount.java index cc3fe62..fc33771 100644 --- a/src/main/java/jesse/keeblarcraft/BankMgr/IndividualAccount.java +++ b/src/main/java/jesse/keeblarcraft/BankMgr/IndividualAccount.java @@ -6,6 +6,8 @@ import java.util.List; // TODO: Add ability to store NBT data of items in the future so we can store not just money but items too // like a safety deposit box public class IndividualAccount { + private String globalAccountNumber; + private String bankLetterIdentifier; private String accountNumber; private String accountNumberAlias; private Integer routingNumber; // Will always be the bank it's in @@ -21,7 +23,7 @@ public class IndividualAccount { public IndividualAccount(String accountNumber, Integer routingNumber, List holders, List accountHolderUuids, Boolean allowNegativeBalance, Integer initialBalance, - String alias, Integer accountType) { + String alias, Integer accountType, String bankLetterIdentifier) { System.out.println("Called to create new IndividualAccount with following values: " + accountNumber + " " + routingNumber + " " + holders + " " + accountHolderUuids + " " + allowNegativeBalance + " " + initialBalance + " " + alias + " " + accountType); @@ -33,6 +35,9 @@ public class IndividualAccount { this.accountBalance = initialBalance; this.accountNumberAlias = alias; this.accountType = accountType; + this.bankLetterIdentifier = bankLetterIdentifier; + + this.globalAccountNumber = bankLetterIdentifier + "-" + routingNumber + "-" + accountType + accountNumber; } // TODO: Make this a map in the future @@ -126,4 +131,8 @@ public class IndividualAccount { return routingNumber; } + public String GetGlobalAccountNumber() { + return globalAccountNumber; + } + } diff --git a/src/main/java/jesse/keeblarcraft/BankMgr/IndividualBank.java b/src/main/java/jesse/keeblarcraft/BankMgr/IndividualBank.java index 649c20c..6ed3c48 100644 --- a/src/main/java/jesse/keeblarcraft/BankMgr/IndividualBank.java +++ b/src/main/java/jesse/keeblarcraft/BankMgr/IndividualBank.java @@ -242,7 +242,7 @@ public class IndividualBank { if (!accounts.accountsList.containsKey(actualAccountNumber)) { IndividualAccount newAccount = new IndividualAccount(actualAccountNumber, this.routingNumber, List.of(holderName), List.of(holderUuid), false, 0, - "", ACCOUNT_TYPES.get(accountTypeStr)); + "", ACCOUNT_TYPES.get(accountTypeStr), bankFourLetterIdentifier); System.out.println("Updating accounts list for this bank"); UpdateBankAccounts(holderName, holderUuid, actualAccountNumber, newAccount); success = true; diff --git a/src/main/java/jesse/keeblarcraft/Commands/BankCommands.java b/src/main/java/jesse/keeblarcraft/Commands/BankCommands.java index 45cb768..ecc69d9 100644 --- a/src/main/java/jesse/keeblarcraft/Commands/BankCommands.java +++ b/src/main/java/jesse/keeblarcraft/Commands/BankCommands.java @@ -168,6 +168,9 @@ public class BankCommands { case "accounts": ManageAccounts(context.getSource().getPlayer(), formattedArgList.subList(1, formattedArgList.size())); break; + case "admin": + AdminCommand(context.getSource().getPlayer(), formattedArgList.subList(1, formattedArgList.size())); + break; default: if (context.getSource().isExecutedByPlayer()) { 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!")); @@ -177,6 +180,30 @@ public class BankCommands { return 0; } + // 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) + public void AdminCommand(ServerPlayerEntity sourcePlayer, List argList) { + if (sourcePlayer.hasPermissionLevel(4)) { + + } else { + sourcePlayer.sendMessage(Text.of("Only admins can use this command!")); + } + } + // Possible code paths: // REQUIRED = {Routing # or Bank name} // OPTIONAL = [] @@ -184,7 +211,6 @@ public class BankCommands { System.out.println("Manage accounts arg list is { " + argList + " }"); if (argList.size() > 0) { // TODO: For now we assume they reference the bank name and not routing # - Boolean success = false; String bankName = argList.get(0).toUpperCase(); IndividualBank bank = BankManager.GetInstance().GetBankByName(bankName); System.out.println("Test print on memory"); @@ -196,6 +222,7 @@ public class BankCommands { sourcePlayer.sendMessage(Text.of("------------[BANK INFO FOR " + bankName.toUpperCase() + "]------------")); for (int i = 0; i < userAccounts.size(); i++) { sourcePlayer.sendMessage(Text.of("ACCOUNT NUMBER: " + userAccounts.get(i).GetAccountNumber())); + sourcePlayer.sendMessage(Text.of("GLOBAL ACCOUNT NUMBER: " + userAccounts.get(i).GetGlobalAccountNumber())); sourcePlayer.sendMessage(Text.of("HOLDERS: " + userAccounts.get(i).GetAccountHolders())); sourcePlayer.sendMessage(Text.of("BALANCE: " + userAccounts.get(i).GetAccountBalance())); sourcePlayer.sendMessage(Text.of("\n"));