package jesse.keeblarcraft.Commands; import com.mojang.brigadier.arguments.IntegerArgumentType; import com.mojang.brigadier.arguments.LongArgumentType; import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.context.CommandContext; import jesse.keeblarcraft.BankMgr.BankManager; import jesse.keeblarcraft.ConfigMgr.ConfigManager; import net.minecraft.server.command.CommandManager; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; public class BankCommands { ConfigManager config = new ConfigManager(); public void RegisterCommands(){ // Command: "/getbalance" CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> { dispatcher.register(CommandManager.literal("getbalance") .executes(context -> GetBalance(context))); }); // Command: "/setbalance || rootSetBalance" CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> { final var rootSetBalance = dispatcher.register(CommandManager.literal("setbalance") .then(CommandManager.argument("newBalance", IntegerArgumentType.integer()) .then(CommandManager.argument("reason", StringArgumentType.string()) .then(CommandManager.argument("otherParty", StringArgumentType.string()) .executes(context -> SetBalance( IntegerArgumentType.getInteger(context, "newBalance"), StringArgumentType.getString(context, "reason"), StringArgumentType.getString(context, "otherParty"), context)))))); dispatcher.register(CommandManager.literal("setbalance").redirect(rootSetBalance)); }); // Command: "/AddMoney" CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> { dispatcher.register(CommandManager.literal("AddMoney") .then(CommandManager.argument("reason", StringArgumentType.string()) .then(CommandManager.argument("payment", LongArgumentType.longArg()) .then(CommandManager.argument("otherParty", StringArgumentType.string()) .executes(context -> AddMoney( StringArgumentType.getString(context, "reason"), LongArgumentType.getLong(context, "payment"), StringArgumentType.getString(context, "otherParty"), context)))))); }); // Command: "/subtractbalance || /SubtractBalance" CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> { final var SubtractBalance = dispatcher.register(CommandManager.literal("subtractbalance") .then(CommandManager.argument("reason", StringArgumentType.string()) .then(CommandManager.argument("payment", LongArgumentType.longArg()) .then(CommandManager.argument("otherParty", StringArgumentType.string()) .executes(context -> SubtractBalance( StringArgumentType.getString(context, "reason"), LongArgumentType.getLong(context, "payment"), StringArgumentType.getString(context, "otherParty"), context)))))); dispatcher.register(CommandManager.literal("subtractbalance").redirect(SubtractBalance)); }); // Command: "/wire || /sendmoney" CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> { final var sendmoney = dispatcher.register(CommandManager.literal("wire") .then(CommandManager.argument("reason", StringArgumentType.string()) .then(CommandManager.argument("payment", LongArgumentType.longArg()) .then(CommandManager.argument("otherParty", StringArgumentType.string()) .executes(context -> Wire( StringArgumentType.getString(context, "reason"), LongArgumentType.getLong(context, "payment"), StringArgumentType.getString(context, "otherParty"), context)))))); dispatcher.register(CommandManager.literal("wire").redirect(sendmoney)); }); } public Integer GetBalance(CommandContext context) { Integer ret = -1; if (context.getSource().isExecutedByPlayer()) { ServerPlayerEntity player = context.getSource().getPlayer(); BankManager playerBank = new BankManager(player.getUuidAsString()); player.sendMessage(Text.literal(String.valueOf(playerBank.GetBalance()))); return 0; } return ret; } //SetBalance will be a ServerCommand only Perm level Op public Integer SetBalance(Integer newBalance, String reason, String otherParty, CommandContext context) { Integer ret = -1; if (context.getSource().hasPermissionLevel(1)) { ServerPlayerEntity player = context.getSource().getPlayer(); BankManager playerBank = new BankManager(player.getUuidAsString()); playerBank.SetBalance(newBalance, reason, otherParty); player.sendMessage(Text.literal(String.valueOf(playerBank.GetBalance()))); } return ret; } //AddMoney will be a ServerCommand Only Perm level Op public Integer AddMoney(String reason, long payment, String otherParty, CommandContext context) { Integer ret = -1; if (context.getSource().hasPermissionLevel(1)) { ret = 0; ServerPlayerEntity player = context.getSource().getPlayer(); BankManager playerBank = new BankManager(player.getUuidAsString()); playerBank.AddMoney(reason, payment, otherParty); player.sendMessage(Text.literal(String.valueOf(playerBank.GetBalance()))); } return ret; } //SubtractBalance will be a ServerCommand Perm leve Op public Integer SubtractBalance(String reason, long payment, String otherParty, CommandContext context) { Integer ret = -1; if (context.getSource().hasPermissionLevel(1)) { ret = 0; ServerPlayerEntity player = context.getSource().getPlayer(); BankManager playerBank = new BankManager(player.getUuidAsString()); playerBank.SubtractBalance(reason, payment, otherParty); player.sendMessage(Text.literal(String.valueOf(playerBank.GetBalance()))); } return ret; } public Integer Wire(String reason, long payment, String otherParty, CommandContext context) { Integer ret = -1; if (context.getSource().isExecutedByPlayer()) { ret = 0; ServerPlayerEntity player = context.getSource().getPlayer(); BankManager playerBank = new BankManager(player.getUuidAsString()); playerBank.Wire(reason, payment, otherParty); player.sendMessage(Text.literal(String.valueOf(playerBank.GetBalance()))); } return ret; } }