diff --git a/src/main/java/sbr/sbr/commands/balance.java b/src/main/java/sbr/sbr/commands/balance.java index 168be71..dfd611a 100644 --- a/src/main/java/sbr/sbr/commands/balance.java +++ b/src/main/java/sbr/sbr/commands/balance.java @@ -14,7 +14,7 @@ public class balance extends chatcolors implements CommandExecutor { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { Player p = (Player) sender; try { - ResultSet rs = main.prepareStatement("SELECT * FROM Balance WHERE UUID = '" + p.getUniqueId().toString() + "';").executeQuery(); + ResultSet rs = main.prepareStatement("SELECT * FROM purse WHERE UUID = '" + p.getUniqueId().toString() + "';").executeQuery(); rs.next(); int bal = rs.getInt("Balance"); int argint; @@ -25,7 +25,7 @@ public class balance extends chatcolors implements CommandExecutor { try { argint = Integer.parseInt(args[0]); int nbal = bal + argint; - main.prepareStatement("UPDATE Balance SET Balance = '" + nbal + "' WHERE UUID = '" + p.getUniqueId().toString() + "';").executeUpdate(); + main.prepareStatement("UPDATE purse SET Balance = '" + nbal + "' WHERE UUID = '" + p.getUniqueId().toString() + "';").executeUpdate(); p.sendMessage(color("&dYou added &b" + argint + " &dto your balance.")); p.sendMessage(color("&aYou now have: &b" + nbal)); } catch (NumberFormatException x) { diff --git a/src/main/java/sbr/sbr/commands/banker.java b/src/main/java/sbr/sbr/commands/banker.java index 36cbfb2..96befd5 100644 --- a/src/main/java/sbr/sbr/commands/banker.java +++ b/src/main/java/sbr/sbr/commands/banker.java @@ -5,7 +5,8 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import sbr.sbr.guis.bankergui; +import sbr.sbr.events.InvClick; +import sbr.sbr.guis.bankerMain; import sbr.sbr.utils.chatcolors; public class banker extends chatcolors implements CommandExecutor { @@ -14,7 +15,8 @@ public class banker extends chatcolors implements CommandExecutor { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (sender instanceof Player) { p = (Player) sender; - p.openInventory(bankergui.getGui()); + p.openInventory(bankerMain.getGui()); + InvClick.currentGui.put(p.getUniqueId(), "bankerMain"); } else { System.out.println("This command can only be ran by a player."); diff --git a/src/main/java/sbr/sbr/commands/npc.java b/src/main/java/sbr/sbr/commands/npc.java index ca4fe38..01c8043 100644 --- a/src/main/java/sbr/sbr/commands/npc.java +++ b/src/main/java/sbr/sbr/commands/npc.java @@ -23,7 +23,7 @@ public class npc extends chatcolors implements CommandExecutor { p.sendMessage(color("List of NPC's:")); p.sendMessage(color("Banker")); } - if (args[0].equalsIgnoreCase("create")) { + else if (args[0].equalsIgnoreCase("create")) { p.sendMessage(color("Please select an NPC from the list")); p.sendMessage(color("with /npc list.")); p.sendMessage(color("After that do /npc create [npc]")); diff --git a/src/main/java/sbr/sbr/events/InvClick.java b/src/main/java/sbr/sbr/events/InvClick.java new file mode 100644 index 0000000..3637785 --- /dev/null +++ b/src/main/java/sbr/sbr/events/InvClick.java @@ -0,0 +1,58 @@ +package sbr.sbr.events; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; +import sbr.sbr.commands.banker; +import sbr.sbr.guis.bankerWithdraw; +import sbr.sbr.main; +import sbr.sbr.utils.chatcolors; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.UUID; + +public class InvClick extends chatcolors implements Listener { + public static HashMap currentGui = new HashMap<>(); + @EventHandler + public void InventoryClick(InventoryClickEvent e) { + Player p = (Player) e.getWhoClicked(); + if (currentGui.get(p.getUniqueId()).equalsIgnoreCase("bankerMain")) { + if (e.getSlot() == 13) { + p.openInventory(bankerWithdraw.getGui()); + currentGui.remove(p.getUniqueId()); + currentGui.put(p.getUniqueId(), "bankerWithdraw"); + } + e.setCancelled(true); + } + if (currentGui.get(p.getUniqueId()).equalsIgnoreCase("bankerWithdraw")) { + if (e.getSlot() == 13) { + int bankBal; + int purseBal; + try { + ResultSet bank = main.prepareStatement("SELECT * FROM bank WHERE UUID = '" + banker.p.getUniqueId().toString() + "';").executeQuery(); + ResultSet purse = main.prepareStatement("SELECT * FROM purse WHERE UUID = '" + banker.p.getUniqueId().toString() + "';").executeQuery(); + bank.next(); + purse.next(); + bankBal = bank.getInt("Balance"); + purseBal = purse.getInt("Balance"); + int bankHalf = bankBal / 2; + int newPurse = purseBal + bankHalf; + main.prepareStatement("UPDATE bank SET Balance = '" + bankHalf + "' WHERE UUID = '" + p.getUniqueId().toString() + "';").executeUpdate(); + main.prepareStatement("UPDATE purse SET Balance = '" + newPurse + "' WHERE UUID = '" + p.getUniqueId().toString() + "';").executeUpdate(); + } catch (SQLException x) { + x.printStackTrace(); + } + } + e.setCancelled(true); + } + } + @EventHandler + public void OnInvClose (InventoryCloseEvent e) { + Player p = (Player) e.getPlayer(); + currentGui.remove(p.getUniqueId()); + } +} diff --git a/src/main/java/sbr/sbr/events/onPlayerJoin.java b/src/main/java/sbr/sbr/events/onPlayerJoin.java index 94c291d..ebb04f9 100644 --- a/src/main/java/sbr/sbr/events/onPlayerJoin.java +++ b/src/main/java/sbr/sbr/events/onPlayerJoin.java @@ -15,7 +15,8 @@ public class onPlayerJoin extends chatcolors implements Listener { Player p = e.getPlayer(); if (!p.hasPlayedBefore()) { try { - main.prepareStatement("INSERT INTO Balance(UUID, Balance) VALUES('" + p.getUniqueId().toString() + "', 0);").executeUpdate(); + main.prepareStatement("INSERT INTO bank(UUID, Balance) VALUES('" + p.getUniqueId().toString() + "', 0);").executeUpdate(); + main.prepareStatement("INSERT INTO purse(UUID, Balance) VALUES('" + p.getUniqueId().toString() + "', 0);").executeUpdate(); } catch (SQLException x) { x.printStackTrace(); } diff --git a/src/main/java/sbr/sbr/guis/bankergui.java b/src/main/java/sbr/sbr/guis/bankerMain.java similarity index 88% rename from src/main/java/sbr/sbr/guis/bankergui.java rename to src/main/java/sbr/sbr/guis/bankerMain.java index 0b0dd04..77f3d40 100644 --- a/src/main/java/sbr/sbr/guis/bankergui.java +++ b/src/main/java/sbr/sbr/guis/bankerMain.java @@ -1,6 +1,7 @@ package sbr.sbr.guis; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; @@ -13,17 +14,17 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -public class bankergui extends chatcolors { +public class bankerMain extends chatcolors { public static Inventory getGui() { int totalBal = 0; try { - ResultSet rs = main.prepareStatement("SELECT * FROM Balance WHERE UUID = '" + banker.p.getUniqueId().toString() + "';").executeQuery(); + ResultSet rs = main.prepareStatement("SELECT * FROM bank WHERE UUID = '" + banker.p.getUniqueId().toString() + "';").executeQuery(); rs.next(); totalBal = rs.getInt("Balance"); } catch (SQLException x) { x.printStackTrace(); } - Inventory gui = Bukkit.createInventory(null, 36, "&aBanker"); + Inventory gui = Bukkit.createInventory(null, 36, ChatColor.GREEN + "Banker"); // Items ItemStack withdraw; @@ -36,7 +37,7 @@ public class bankergui extends chatcolors { // Withdraw button withdraw = new ItemStack(Material.DISPENSER); withdrawMeta = withdraw.getItemMeta(); - withdrawMeta.setDisplayName("&bWithdraw."); + withdrawMeta.setDisplayName(color("&bWithdraw.")); withdrawLore.add(color("&7Total money: &6" + totalBal)); withdrawMeta.setLore(withdrawLore); withdraw.setItemMeta(withdrawMeta); @@ -44,7 +45,7 @@ public class bankergui extends chatcolors { // Glass panes glass = new ItemStack(Material.GRAY_STAINED_GLASS_PANE); glassMeta = glass.getItemMeta(); - glassMeta.setDisplayName(""); + glassMeta.setDisplayName(" "); glass.setItemMeta(glassMeta); // Set items diff --git a/src/main/java/sbr/sbr/guis/bankerWithdraw.java b/src/main/java/sbr/sbr/guis/bankerWithdraw.java new file mode 100644 index 0000000..8e4b178 --- /dev/null +++ b/src/main/java/sbr/sbr/guis/bankerWithdraw.java @@ -0,0 +1,92 @@ +package sbr.sbr.guis; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import sbr.sbr.commands.banker; +import sbr.sbr.main; +import sbr.sbr.utils.chatcolors; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class bankerWithdraw extends chatcolors { + public static Inventory getGui() { + int totalBal = 0; + try { + ResultSet rs = main.prepareStatement("SELECT * FROM bank WHERE UUID = '" + banker.p.getUniqueId().toString() + "';").executeQuery(); + rs.next(); + totalBal = rs.getInt("Balance"); + } catch (SQLException x) { + x.printStackTrace(); + } + Inventory gui = Bukkit.createInventory(null, 36, ChatColor.AQUA + "Withdraw"); + + // Items + ItemStack withdraw; + ItemMeta withdrawMeta; + List withdrawLore = new ArrayList<>(); + + ItemStack glass; + ItemMeta glassMeta; + + // Withdraw button + withdraw = new ItemStack(Material.DISPENSER); + withdrawMeta = withdraw.getItemMeta(); + int half = totalBal / 2; + withdrawMeta.setDisplayName(color("&bWithdraw &6" + half + "&bcoins.")); + withdrawLore.add(color("&7Total money: &6" + totalBal)); + withdrawMeta.setLore(withdrawLore); + withdraw.setItemMeta(withdrawMeta); + + // Glass panes + glass = new ItemStack(Material.GRAY_STAINED_GLASS_PANE); + glassMeta = glass.getItemMeta(); + glassMeta.setDisplayName(""); + glass.setItemMeta(glassMeta); + + // Set items + gui.setItem(0, glass); + gui.setItem(1, glass); + gui.setItem(2, glass); + gui.setItem(3, glass); + gui.setItem(4, glass); + gui.setItem(5, glass); + gui.setItem(6, glass); + gui.setItem(7, glass); + gui.setItem(8, glass); + gui.setItem(9, glass); + gui.setItem(10, glass); + gui.setItem(11, glass); + gui.setItem(12, glass); + gui.setItem(13, withdraw); + gui.setItem(14, glass); + gui.setItem(15, glass); + gui.setItem(16, glass); + gui.setItem(17, glass); + gui.setItem(18, glass); + gui.setItem(19, glass); + gui.setItem(20, glass); + gui.setItem(21, glass); + gui.setItem(22, glass); + gui.setItem(23, glass); + gui.setItem(24, glass); + gui.setItem(25, glass); + gui.setItem(26, glass); + gui.setItem(27, glass); + gui.setItem(28, glass); + gui.setItem(29, glass); + gui.setItem(30, glass); + gui.setItem(31, glass); + gui.setItem(32, glass); + gui.setItem(33, glass); + gui.setItem(34, glass); + gui.setItem(35, glass); + + return gui; + } +} diff --git a/src/main/java/sbr/sbr/main.java b/src/main/java/sbr/sbr/main.java index ec1e2d8..b0e6efc 100644 --- a/src/main/java/sbr/sbr/main.java +++ b/src/main/java/sbr/sbr/main.java @@ -4,6 +4,7 @@ import org.bukkit.Bukkit; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import sbr.sbr.commands.balance; +import sbr.sbr.commands.banker; import sbr.sbr.commands.npc; import sbr.sbr.events.onPlayerJoin; import java.sql.Connection; @@ -19,7 +20,7 @@ public final class main extends JavaPlugin { @Override public void onEnable() { - PluginManager plm = Bukkit.getPluginManager();; + PluginManager plm = Bukkit.getPluginManager(); host = "localhost"; port = 3306; database = "sbr"; @@ -34,6 +35,7 @@ public final class main extends JavaPlugin { plm.registerEvents(new onPlayerJoin(), this); Objects.requireNonNull(getCommand("balance")).setExecutor(new balance()); Objects.requireNonNull(getCommand("npc")).setExecutor(new npc()); + Objects.requireNonNull(getCommand("banker")).setExecutor(new banker()); } @Override diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index f777533..ed934c4 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -8,4 +8,6 @@ commands: balance: description: 'none' npc: + description: 'none' + banker: description: 'none' \ No newline at end of file