diff --git a/pom.xml b/pom.xml index a9ad5e8..3625a98 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ Sbr - Hypxel Skyblock Remake + Hyipxel Skyblock Remake 1.8 UTF-8 diff --git a/src/main/java/sbr/sbr/commands/hub.java b/src/main/java/sbr/sbr/commands/hub.java new file mode 100644 index 0000000..cb4f5b6 --- /dev/null +++ b/src/main/java/sbr/sbr/commands/hub.java @@ -0,0 +1,63 @@ +package sbr.sbr.commands; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.WorldCreator; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import sbr.sbr.main; +import sbr.sbr.utils.chatcolors; + +import java.util.*; + +public class hub extends chatcolors implements CommandExecutor { + public static final String[] hubList = {"Hub1A", "Hub1B", "Hub1C", "Hub1D", "Hub1E", "Hub1F", "Hub2A", "Hub2B", "Hub2C", "Hub2D", "Hub2E", "Hub2F", "Hub3A", "Hub3B", "Hub3C", "Hub3D", "Hub3E", "Hub3F", "Hub4A", "Hub4B", "Hub4C", "Hub4D", "Hub4E", "Hub4F", "Hub5A", "Hub5B", "Hub5C", "Hub5D"}; + public static final String hubs = "Hub1A Hub1B Hub1C Hub1D Hub1E Hub1F Hub2A Hub2B Hub2C Hub2D Hub2E Hub2F Hub3A Hub3B Hub3C Hub3D Hub3E Hub3F Hub4A Hub4B Hub4C Hub4D Hub4E Hub4F Hub5A Hub5B Hub5C Hub5D"; + @Override + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { + if (!(sender instanceof Player)) { + System.out.println("You can only run this command as a player!"); + return true; + } + Player p = (Player) sender; + if (args.length == 0) { + Random r = new Random(); + String randomHub = hubList[r.nextInt(hubList.length)]; + if (!randomHub.equals(p.getWorld().getName())) { + Bukkit.createWorld(new WorldCreator(randomHub)); + World setHub = Bukkit.getWorld(randomHub); + p.teleport(new Location(setHub, 0.5, 71, 0.5, 180, 0)); + main.currentWorld.remove(p.getUniqueId()); + main.currentWorld.put(p.getUniqueId(), randomHub); + p.sendMessage(color("&aSent you to hub &b" + randomHub + "&a!")); + } + else { + p.sendMessage(color("&cError: You are trying to go to the same hub.")); + } + } + else if (args.length == 1) { + if (args[0].equalsIgnoreCase("rn")) { + p.sendMessage(color(("&aYou are currently in hub &b" + main.currentWorld.get(p.getUniqueId()) + "&a!"))); + } + else if (hubs.contains(args[0]) && Bukkit.getWorld(args[0]) != null) { + Bukkit.createWorld(new WorldCreator(args[0])); + World setHub = Bukkit.getWorld(args[0]); + p.teleport(new Location(setHub, 0.5, 71, 0.5, 180, 0)); + main.currentWorld.remove(p.getUniqueId()); + main.currentWorld.put(p.getUniqueId(), args[0]); + p.sendMessage(color("&aSent you to hub &b" + args[0] + "&a!")); + } + else { + p.sendMessage(color("&4That is not a correct hub name!")); + } + } + else { + p.sendMessage(color("&cCorrect command usage: &6/hub&c, &6/hub [hubname]")); + } + return true; + } +} diff --git a/src/main/java/sbr/sbr/events/InvClick.java b/src/main/java/sbr/sbr/events/InvClick.java index c5c8a14..1d1da98 100644 --- a/src/main/java/sbr/sbr/events/InvClick.java +++ b/src/main/java/sbr/sbr/events/InvClick.java @@ -5,6 +5,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.event.player.PlayerChatEvent; import sbr.sbr.commands.banker; import sbr.sbr.guis.banker.bankerDeposit; import sbr.sbr.guis.banker.bankerWithdraw; @@ -17,6 +18,7 @@ import java.util.UUID; public class InvClick extends chatcolors implements Listener { public static final HashMap currentGui = new HashMap<>(); + final HashMap newChat = new HashMap<>(); @EventHandler public void InventoryClick(InventoryClickEvent e) { Player p = (Player) e.getWhoClicked(); @@ -32,7 +34,7 @@ public class InvClick extends chatcolors implements Listener { p.openInventory(bankerWithdraw.getGui()); currentGui.put(p.getUniqueId(), "bankerWithdraw"); } - if (e.getRawSlot() == 32) { + if (e.getRawSlot() == 31) { p.closeInventory(); } e.setCancelled(true); @@ -77,7 +79,12 @@ public class InvClick extends chatcolors implements Listener { p.sendMessage(color("&4&lSomething went wrong, please report this to the devs ASAP.")); } } - if (e.getRawSlot() == 32) { + if (e.getRawSlot() == 15) { + newChat.put(p.getUniqueId(), "bankerWithdraw"); + p.closeInventory(); + p.sendMessage(color("&7Put the amount you want to withdraw in the chat.")); + } + if (e.getRawSlot() == 31) { p.closeInventory(); } e.setCancelled(true); @@ -123,7 +130,12 @@ public class InvClick extends chatcolors implements Listener { p.sendMessage(color("&4&lSomething went wrong, please report this to the devs ASAP.")); } } - if (e.getRawSlot() == 32) { + if (e.getRawSlot() == 15) { + newChat.put(p.getUniqueId(), "bankerDeposit"); + p.closeInventory(); + p.sendMessage(color("&7Put the amount you want to deposit in the chat.")); + } + if (e.getRawSlot() == 31) { p.closeInventory(); } e.setCancelled(true); @@ -135,4 +147,83 @@ public class InvClick extends chatcolors implements Listener { Player p = (Player) e.getPlayer(); currentGui.remove(p.getUniqueId()); } -} + @SuppressWarnings("deprecation") + @EventHandler + public void OnChat(PlayerChatEvent e) { + Player p = e.getPlayer(); + try { + if (newChat.get(p.getUniqueId()).equalsIgnoreCase("bankerWithdraw")) { + e.setCancelled(true); + newChat.remove(p.getUniqueId()); + try { + String msg = e.getMessage(); + int number = Integer.parseInt(msg); + if (number < 1) { + p.sendMessage(color("&cAmount must be higher than 0!")); + return; + } + 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(); + int bankBal = bank.getInt("Balance"); + int purseBal = purse.getInt("Balance"); + int newBank = bankBal - number; + if (newBank < 0) { + p.sendMessage(color("&cYou do not have enough coins in your bank to do that!")); + return; + } + int newPurse = purseBal + number; + main.prepareStatement("UPDATE bank SET Balance = '" + newBank + "' WHERE UUID = '" + p.getUniqueId().toString() + "';").executeUpdate(); + main.prepareStatement("UPDATE purse SET Balance = '" + newPurse + "' WHERE UUID = '" + p.getUniqueId().toString() + "';").executeUpdate(); + p.closeInventory(); + p.sendMessage(color("&aWithdrew &6" + number + " &afrom your bank.")); + p.sendMessage(color("&aYou now have &6" + newBank + " &ain your bank.")); + } catch (SQLException x) { + x.printStackTrace(); + p.sendMessage(color("&4&lSomething went wrong, please report this to the devs ASAP.")); + } + } catch (NumberFormatException ignored) { + p.sendMessage(color("&cYou have to put in a correct amount!")); + } + } + if (newChat.get(p.getUniqueId()).equalsIgnoreCase("bankerDeposit")) { + e.setCancelled(true); + newChat.remove(p.getUniqueId()); + try { + String msg = e.getMessage(); + int number = Integer.parseInt(msg); + if (number < 1) { + p.sendMessage(color("&cAmount must be higher than 0!")); + return; + } + 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(); + int bankBal = bank.getInt("Balance"); + int purseBal = purse.getInt("Balance"); + int newBank = bankBal + number; + int newPurse = purseBal - number; + if (newPurse < 0) { + p.sendMessage(color("&cYou do not have enough coins in your purse to do that!")); + return; + } + main.prepareStatement("UPDATE bank SET Balance = '" + newBank + "' WHERE UUID = '" + p.getUniqueId().toString() + "';").executeUpdate(); + main.prepareStatement("UPDATE purse SET Balance = '" + newPurse + "' WHERE UUID = '" + p.getUniqueId().toString() + "';").executeUpdate(); + p.closeInventory(); + p.sendMessage(color("&aDeposited &6" + number + " &ato your bank.")); + p.sendMessage(color("&aYou now have &6" + newBank + " &ain your bank.")); + } catch (SQLException x) { + x.printStackTrace(); + p.sendMessage(color("&4&lSomething went wrong, please report this to the devs ASAP.")); + } + } catch (NumberFormatException ignored) { + p.sendMessage(color("&cYou have to put in a correct amount!")); + } + } + } catch (NullPointerException ignored) {} + } +} \ No newline at end of file diff --git a/src/main/java/sbr/sbr/events/onPlayerJoin.java b/src/main/java/sbr/sbr/events/onPlayerJoin.java index ebb04f9..aaba31d 100644 --- a/src/main/java/sbr/sbr/events/onPlayerJoin.java +++ b/src/main/java/sbr/sbr/events/onPlayerJoin.java @@ -1,18 +1,68 @@ package sbr.sbr.events; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.WorldCreator; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.scheduler.BukkitRunnable; +import org.bukkit.scheduler.BukkitScheduler; +import org.bukkit.scoreboard.*; +import sbr.sbr.commands.hub; import sbr.sbr.main; import sbr.sbr.utils.chatcolors; import java.sql.SQLException; +import java.util.Random; public class onPlayerJoin extends chatcolors implements Listener { + Player p; @EventHandler public void onJoin(PlayerJoinEvent e) { - Player p = e.getPlayer(); + p = e.getPlayer(); + randomHub(); + scoreboard(); + data(); + } + + public void randomHub() { + Random r = new Random(); + String randomHub = hub.hubList[r.nextInt(hub.hubList.length)]; + Bukkit.createWorld(new WorldCreator(randomHub)); + World setHub = Bukkit.getWorld(randomHub); + p.teleport(new Location(setHub, 0.5, 71, 0.5, 180, 0)); + main.currentWorld.put(p.getUniqueId(), randomHub); + p.sendMessage(color("&aYou are currently in hub &b" + randomHub + "&a!")); + } + + @SuppressWarnings("deprecation") + public void scoreboard() { + BukkitScheduler scheduler = Bukkit.getServer().getScheduler(); + scheduler.scheduleSyncRepeatingTask(main.instance, () -> { + ScoreboardManager manager = Bukkit.getScoreboardManager(); + Scoreboard board = manager.getNewScoreboard(); + Objective objective = board.registerNewObjective("sb", "dummy"); + objective.setDisplaySlot(DisplaySlot.SIDEBAR); + objective.setDisplayName(color("&e&lSkyblock")); + main.balance(p); + int bank = main.bankBal; + int purse = main.purseBal; + Score L1 = objective.getScore(color("&7" + main.currentWorld.get(p.getUniqueId()))); + L1.setScore(15); + Score L2 = objective.getScore(color("&r ")); + L2.setScore(14); + Score L3 = objective.getScore(color("&bBank: &6" + bank)); + L3.setScore(13); + Score L4 = objective.getScore(color("&bPurse: &6" + purse)); + L4.setScore(12); + p.setScoreboard(board); + }, 0L, 5); + } + + public void data() { if (!p.hasPlayedBefore()) { try { main.prepareStatement("INSERT INTO bank(UUID, Balance) VALUES('" + p.getUniqueId().toString() + "', 0);").executeUpdate(); diff --git a/src/main/java/sbr/sbr/guis/banker/bankerWithdraw.java b/src/main/java/sbr/sbr/guis/banker/bankerWithdraw.java index e4c993c..bd0b8f0 100644 --- a/src/main/java/sbr/sbr/guis/banker/bankerWithdraw.java +++ b/src/main/java/sbr/sbr/guis/banker/bankerWithdraw.java @@ -69,8 +69,8 @@ public class bankerWithdraw extends chatcolors { withdrawCustomMeta = withdrawCustom.getItemMeta(); withdrawCustomMeta.setDisplayName(color("&bWithdraw a custom amount of coins.")); withdrawCustomLore.add(color("&7Total bank balance: &6" + totalBal)); - withdrawAllMeta.setLore(withdrawCustomLore); - withdrawAll.setItemMeta(withdrawAllMeta); + withdrawCustomMeta.setLore(withdrawCustomLore); + withdrawCustom.setItemMeta(withdrawCustomMeta); // Close button close = new ItemStack(Material.BARRIER); diff --git a/src/main/java/sbr/sbr/guis/hubMenu.java b/src/main/java/sbr/sbr/guis/hubMenu.java new file mode 100644 index 0000000..8ba5bab --- /dev/null +++ b/src/main/java/sbr/sbr/guis/hubMenu.java @@ -0,0 +1,7 @@ +package sbr.sbr.guis; + +import sbr.sbr.utils.chatcolors; + +public class hubMenu extends chatcolors { + +} diff --git a/src/main/java/sbr/sbr/main.java b/src/main/java/sbr/sbr/main.java index 5421744..ca7d18a 100644 --- a/src/main/java/sbr/sbr/main.java +++ b/src/main/java/sbr/sbr/main.java @@ -1,32 +1,41 @@ package sbr.sbr; import org.bukkit.Bukkit; +import org.bukkit.WorldCreator; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; 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.hub; import sbr.sbr.commands.npc; import sbr.sbr.events.InvClick; import sbr.sbr.events.onPlayerJoin; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.SQLException; + +import java.sql.*; +import java.util.HashMap; import java.util.Objects; +import java.util.UUID; public final class main extends JavaPlugin { + public static main instance; private static Connection connection; private static String host, database, username, password; private static int port; + public static final HashMap currentWorld = new HashMap<>(); + public static int bankBal; + public static int purseBal; @Override public void onEnable() { + instance = this; PluginManager plm = Bukkit.getPluginManager(); - host = "sql11.freemysqlhosting.net"; + host = "localhost"; port = 3306; - database = "sql11395031"; - username = "sql11395031"; - password = "6VF5N7cZiG"; + database = "sbr"; + username = "admin"; + password = "fivevl"; try { openConnection(); System.out.println("MySQL Database Connected."); @@ -38,8 +47,9 @@ public final class main extends JavaPlugin { Objects.requireNonNull(getCommand("balance")).setExecutor(new balance()); Objects.requireNonNull(getCommand("npc")).setExecutor(new npc()); Objects.requireNonNull(getCommand("banker")).setExecutor(new banker()); + Objects.requireNonNull(getCommand("hub")).setExecutor(new hub()); + loadWorlds(); } - @Override public void onDisable() { try { @@ -48,12 +58,11 @@ public final class main extends JavaPlugin { x.printStackTrace(); } } - public static void openConnection() throws SQLException { if (connection != null && !connection.isClosed()) { return; } - connection = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, username, password); + connection = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database + "?autoReconnect=true&useSSL=false", username, password); } public static PreparedStatement prepareStatement(String query) { PreparedStatement ps = null; @@ -64,4 +73,22 @@ public final class main extends JavaPlugin { } return ps; } + public void loadWorlds() { + for (String world:hub.hubList) { + Bukkit.createWorld(new WorldCreator(world)); + System.out.println("Loaded world " + world); + } + } + public static void balance(Player player) { + try { + ResultSet bank = main.prepareStatement("SELECT * FROM bank WHERE UUID = '" + player.getUniqueId() + "';").executeQuery(); + ResultSet purse = main.prepareStatement("SELECT * FROM purse WHERE UUID = '" + player.getUniqueId() + "';").executeQuery(); + bank.next(); + purse.next(); + bankBal = bank.getInt("Balance"); + purseBal = purse.getInt("Balance"); + } catch (SQLException ex) { + ex.printStackTrace(); + } + } } \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index ed934c4..930c99e 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -10,4 +10,6 @@ commands: npc: description: 'none' banker: + description: 'none' + hub: description: 'none' \ No newline at end of file