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