From 41607e2547e940e34368b3d299205f53acecfba0 Mon Sep 17 00:00:00 2001 From: Evan Niederwerfer Date: Sun, 19 Jan 2025 18:47:39 -0500 Subject: [PATCH] Add .java files (1) --- uwp-utils/commands/Home.java | 159 ++++++++++++++++++++++++++++++++ uwp-utils/commands/Rank.java | 81 ++++++++++++++++ uwp-utils/commands/Rtp.java | 131 ++++++++++++++++++++++++++ uwp-utils/commands/SetHome.java | 66 +++++++++++++ uwp-utils/commands/Spawn.java | 113 +++++++++++++++++++++++ 5 files changed, 550 insertions(+) create mode 100644 uwp-utils/commands/Home.java create mode 100644 uwp-utils/commands/Rank.java create mode 100644 uwp-utils/commands/Rtp.java create mode 100644 uwp-utils/commands/SetHome.java create mode 100644 uwp-utils/commands/Spawn.java diff --git a/uwp-utils/commands/Home.java b/uwp-utils/commands/Home.java new file mode 100644 index 0000000..a69accd --- /dev/null +++ b/uwp-utils/commands/Home.java @@ -0,0 +1,159 @@ +package me.arcodeskel.uwpmcutils.commands; +import me.arcodeskel.uwpmcutils.Main; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.Listener; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.scheduler.BukkitRunnable; +import org.bukkit.util.Vector; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.*; + + +public class Home implements Listener, CommandExecutor, Maps { + + + World main = Bukkit.getServer().getWorld("world"); + + + @Override + public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) { + + if (sender instanceof Player) { + + Player p = (Player) sender; + activeCommands.add(p.getPlayer()); + p.setWalkSpeed(0); + frozenPlayers.add(p.getPlayer()); + originalVelocity.put(p.getPlayer(), p.getVelocity().length()); + p.setVelocity(new Vector(0, -1.0, 0)); + + double x,y,z; + + try { + Connection connection = DatabaseConnection.getConnection(); + Statement statement = connection.createStatement(); + var cmd = "SELECT x,y,z FROM homes WHERE username='" + p.getName() + "'"; + var result = statement.executeQuery(cmd); + + x = result.getDouble("x"); + y = result.getDouble("y"); + z = result.getDouble("z"); + + connection.close(); + + } catch (SQLException e) { + throw new RuntimeException(e); + } + + if (x == 0 && y == 0 && z == 0) { + p.sendMessage(ChatColor.RED + "You do not have a home yet! You can set one at anytime using /sethome"); + double velocity = originalVelocity.get(p.getPlayer()); + p.getPlayer().setVelocity(p.getPlayer().getLocation().getDirection().multiply(velocity)); + frozenPlayers.remove(p.getPlayer()); + originalVelocity.remove(p.getPlayer()); + sneakingPlayers.remove(p.getPlayer()); + p.getPlayer().setWalkSpeed(0.2F); + activeCommands.remove(p.getPlayer()); + } + + if (activeCommands.contains(p.getPlayer())) { + p.sendMessage(ChatColor.GREEN + "You will be teleported to" + ChatColor.AQUA + " home " + ChatColor.GREEN + "in 10 seconds. " + ChatColor.YELLOW + "Your movement has been disabled. Sneak to cancel teleportation request."); + } + + + + + new BukkitRunnable() { + @Override + public void run() { + + if (Objects.requireNonNull(p.getPlayer()).isSneaking() && !activeCommands.contains(p.getPlayer())) { + cancel(); + + } + + // Check if the player is sneaking + if (Objects.requireNonNull(p.getPlayer()).isSneaking() && activeCommands.contains(p.getPlayer())) { + p.getPlayer().sendMessage(ChatColor.RED + "Command execution canceled because you are sneaking!"); + double velocity = originalVelocity.get(p.getPlayer()); + p.getPlayer().setVelocity(p.getPlayer().getLocation().getDirection().multiply(velocity)); + frozenPlayers.remove(p.getPlayer()); + originalVelocity.remove(p.getPlayer()); + sneakingPlayers.remove(p.getPlayer()); + p.getPlayer().setWalkSpeed(0.2F); + activeCommands.remove(p.getPlayer()); // Clean up + cancel(); // Stop the runnable + } + + + + } + }.runTaskTimer(JavaPlugin.getPlugin(Main.class), 0, 1); // Check every tick + + + + new BukkitRunnable() { + @Override + public void run() { + + if (!activeCommands.contains(p.getPlayer())) { + cancel(); + return; + } + + try { + Connection connection = DatabaseConnection.getConnection(); + Statement statement = connection.createStatement(); + var cmd = "SELECT x,y,z,pitch,yaw FROM homes WHERE username='" + p.getName() + "'"; + var result = statement.executeQuery(cmd); + + + double x = result.getDouble("x"); + double y = result.getDouble("y"); + double z = result.getDouble("z"); + float pitch = result.getFloat("pitch"); + float yaw = result.getFloat("yaw"); + + Location location = new Location(main, x,y,z,yaw,pitch); + p.teleport(location); + p.sendMessage(ChatColor.GREEN + "Sent to " + ChatColor.AQUA + "home"); + p.setWalkSpeed(0.2F); + + double velocity = originalVelocity.get(p.getPlayer()); + p.getPlayer().setVelocity(p.getPlayer().getLocation().getDirection().multiply(velocity)); + p.setWalkSpeed(0.2F); + frozenPlayers.remove(p.getPlayer()); + originalVelocity.remove(p.getPlayer()); + activeCommands.remove(p.getPlayer()); + + connection.close(); + + } catch (SQLException e) { + throw new RuntimeException(e); + } + + } + }.runTaskLater(JavaPlugin.getPlugin(Main.class), 200); + + + } + + + return true; + } + +} \ No newline at end of file diff --git a/uwp-utils/commands/Rank.java b/uwp-utils/commands/Rank.java new file mode 100644 index 0000000..4528cb4 --- /dev/null +++ b/uwp-utils/commands/Rank.java @@ -0,0 +1,81 @@ +package me.arcodeskel.uwpmcutils.commands; +import me.arcodeskel.uwpmcutils.Main; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import java.net.http.WebSocket; +import java.sql.*; + +public class Rank implements WebSocket.Listener, CommandExecutor { + + @Override + public boolean onCommand(CommandSender sender, Command command, String s, String[] args) { + + + if (sender instanceof Player) { + + Player p = (Player) sender; + String updRank = "UPDATE rank SET rank = ? WHERE username = ?"; + String insertNotExist = "INSERT OR IGNORE INTO rank (username) VALUES (?)"; + + try (Connection connection = DatabaseConnection.getConnection()) { + + try (PreparedStatement preparedStatement = connection.prepareStatement(insertNotExist)) { + preparedStatement.setString(1, p.getName()); + preparedStatement.executeUpdate(); + preparedStatement.close(); + } + + PreparedStatement psUpdate = connection.prepareStatement(updRank); + if (args[1].equals("guest") || args[1].equals("member") ||args[1].equals("builder") || args[1].equals("mod") || args[1].equals("dev") || args[1].equals("owner")) { + psUpdate.setString(1, args[1]); + psUpdate.setString(2, args[0]); + psUpdate.executeUpdate(); + psUpdate.close(); + + } else { + p.sendMessage(ChatColor.RED + "Incorrect input for rank. Options are: guest, member, builder, mod, dev, owner (case sensitive)"); + psUpdate.close(); + } + + } catch (ArrayIndexOutOfBoundsException | SQLException e) { + p.sendMessage(ChatColor.RED + "Usages: /rank {username} {rank} (or something went wrong)"); + try { + throw e; + } catch (SQLException ex) { + throw new RuntimeException(ex); + } + + } + } + return true; + } + + public static void addGuest(String player) { + try (Connection connection = DatabaseConnection.getConnection()) { + // Insert username if it doesn't exist + String insertNotExist = "INSERT OR IGNORE INTO rank (username) VALUES (?)"; + try (PreparedStatement psInsert = connection.prepareStatement(insertNotExist)) { + psInsert.setString(1, player); + psInsert.executeUpdate(); + psInsert.close(); + } + + // Update rank + String updRank = "UPDATE rank SET rank = ? WHERE username = ?"; + try (PreparedStatement psUpdate = connection.prepareStatement(updRank)) { + psUpdate.setString(1, "guest"); + psUpdate.setString(2, player); + psUpdate.executeUpdate(); + psUpdate.close(); + } + } catch (SQLException e) { + e.printStackTrace(); // Handle exception + } + } +} diff --git a/uwp-utils/commands/Rtp.java b/uwp-utils/commands/Rtp.java new file mode 100644 index 0000000..6b9ab2d --- /dev/null +++ b/uwp-utils/commands/Rtp.java @@ -0,0 +1,131 @@ +package me.arcodeskel.uwpmcutils.commands; +import me.arcodeskel.uwpmcutils.Main; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.block.Block; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.event.Listener; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.scheduler.BukkitRunnable; +import org.bukkit.util.Vector; + +import java.util.Objects; +import java.util.concurrent.ThreadLocalRandom; + +public class Rtp implements Listener, CommandExecutor, Maps { + + + World main = Bukkit.getServer().getWorld("world"); + + + @Override + public boolean onCommand(CommandSender sender, Command cmd, String s, String[] strings) { + + if (sender instanceof Player) { + Player p = (Player) sender; + activeCommands.add(p.getPlayer()); + p.setWalkSpeed(0); + frozenPlayers.add(p.getPlayer()); + originalVelocity.put(p.getPlayer(), p.getVelocity().length()); + p.setVelocity(new Vector(0, -1.0, 0)); + p.sendMessage(ChatColor.YELLOW + "Teleportation will commence in 10 seconds. Your movement has been temporarily disabled. Sneak to cancel teleportation request (shift)."); + + + new BukkitRunnable() { + @Override + public void run() { + + // Check if the player is sneaking + if (Objects.requireNonNull(p.getPlayer()).isSneaking() && activeCommands.contains(p.getPlayer())) { + + if (!activeCommands.contains(p.getPlayer()) || activeCommands.contains(p.getPlayer() == null)) { + return; + } + + if (!originalVelocity.containsKey(p.getPlayer())) { + activeCommands.remove(p.getPlayer()); + return; + } + + p.getPlayer().sendMessage(ChatColor.RED + "Command execution canceled because you are sneaking!"); + double velocity = originalVelocity.get(p.getPlayer()); + p.getPlayer().setVelocity(p.getPlayer().getLocation().getDirection().multiply(velocity)); + frozenPlayers.remove(p.getPlayer()); + originalVelocity.remove(p.getPlayer()); + sneakingPlayers.remove(p.getPlayer()); + p.getPlayer().setWalkSpeed(0.2F); + activeCommands.remove(p.getPlayer()); // Clean up + cancel(); + // Stop the runnable + } + } + }.runTaskTimer(JavaPlugin.getPlugin(Main.class), 0, 1); // Check every tick + + + new BukkitRunnable() { + @Override + public void run() { + + if (!activeCommands.contains(p.getPlayer())) { + cancel(); + return; + } + + float randomX = ThreadLocalRandom.current().nextInt(0, 20000); + float randomZ = ThreadLocalRandom.current().nextInt(0, 20000); + Block randomY = Objects.requireNonNull(Bukkit.getWorld(main.getUID())).getHighestBlockAt(new Location(main, randomX, 0, randomZ)); + Location loc = new Location(p.getWorld(), randomX, randomY.getY(), randomZ); + + if (!loc.getBlock().isLiquid()) { + if (p.isInsideVehicle()) { + p.eject(); + } + p.teleport(loc); + p.setWalkSpeed(0.2F); + double velocity = originalVelocity.get(p.getPlayer()); + p.getPlayer().setVelocity(p.getPlayer().getLocation().getDirection().multiply(velocity)); + p.setWalkSpeed(0.2F); + frozenPlayers.remove(p.getPlayer()); + originalVelocity.remove(p.getPlayer()); + } + + else { + while (loc.getBlock().isLiquid()) { + randomX = ThreadLocalRandom.current().nextInt(-20000, 20000); + randomZ = ThreadLocalRandom.current().nextInt(-20000, 20000); + randomY = Objects.requireNonNull(Bukkit.getWorld(main.getUID())).getHighestBlockAt(new Location(main, randomX, 0, randomZ)); + loc = new Location(p.getWorld(), randomX, randomY.getY(), randomZ); + if (!loc.getBlock().isLiquid()) { + if (p.isInsideVehicle()) { + p.eject(); + } + p.teleport(loc); + p.setWalkSpeed(0.2F); + double velocity = originalVelocity.get(p.getPlayer()); + p.getPlayer().setVelocity(p.getPlayer().getLocation().getDirection().multiply(velocity)); + p.setWalkSpeed(0.2F); + frozenPlayers.remove(p.getPlayer()); + originalVelocity.remove(p.getPlayer()); + activeCommands.remove(p.getPlayer()); + + } + } + } + + + } + }.runTaskLater(JavaPlugin.getPlugin(Main.class), 200); + + + } + + return true; + } +} \ No newline at end of file diff --git a/uwp-utils/commands/SetHome.java b/uwp-utils/commands/SetHome.java new file mode 100644 index 0000000..fa819be --- /dev/null +++ b/uwp-utils/commands/SetHome.java @@ -0,0 +1,66 @@ +package me.arcodeskel.uwpmcutils.commands; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.event.Listener; + +import java.sql.*; + +public class SetHome implements Listener, CommandExecutor { + + @Override + public boolean onCommand(CommandSender sender, Command cmd, String s, String[] strings) { + if (sender instanceof Player) { + Player p = (Player) sender; + Connection connection = null; + try { + connection = DatabaseConnection.getConnection(); + String name = p.getName(); + double x = p.getLocation().getX(); + double y = p.getLocation().getY(); + double z = p.getLocation().getZ(); + float pitch = p.getLocation().getPitch(); + float yaw = p.getLocation().getYaw(); + + String insertUsername = "INSERT OR IGNORE INTO homes (username) VALUES (?)"; + try (PreparedStatement psInsertUsername = connection.prepareStatement(insertUsername)) { + psInsertUsername.setString(1, name); + psInsertUsername.executeUpdate(); + + } + + String updateHomes = "UPDATE homes SET x = ?, y = ?, z = ?, pitch = ?, yaw = ? WHERE username = ?"; + try (PreparedStatement psUpdateHomes = connection.prepareStatement(updateHomes)) { + psUpdateHomes.setDouble(1, x); + psUpdateHomes.setDouble(2, y); + psUpdateHomes.setDouble(3, z); + psUpdateHomes.setFloat(4, pitch); + psUpdateHomes.setFloat(5, yaw); + psUpdateHomes.setString(6, name); + psUpdateHomes.executeUpdate(); + psUpdateHomes.close(); + } + + p.sendMessage("Home set to: " + x + ", " + y + ", " + z); + } catch (SQLException e) { + e.printStackTrace(); // Handle exception + } finally { + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); // Handle exception + } + } + } + + } + + + return true; + } +} + + + diff --git a/uwp-utils/commands/Spawn.java b/uwp-utils/commands/Spawn.java new file mode 100644 index 0000000..642b658 --- /dev/null +++ b/uwp-utils/commands/Spawn.java @@ -0,0 +1,113 @@ +package me.arcodeskel.uwpmcutils.commands; +import me.arcodeskel.uwpmcutils.Main; +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.Bukkit; +import org.bukkit.event.Listener; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.scheduler.BukkitRunnable; +import org.bukkit.util.Vector; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.*; + + +public class Spawn implements Listener, CommandExecutor, Maps { + + //World main = Bukkit.getServer().getWorld("spawn"); + World main = Bukkit.getServer().getWorld("world"); + + + + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player p = (Player) sender; + activeCommands.add(p.getPlayer()); + p.setWalkSpeed(0); + frozenPlayers.add(p.getPlayer()); + originalVelocity.put(p.getPlayer(), p.getVelocity().length()); + p.setVelocity(new Vector(0, -1.0, 0)); + p.sendMessage( ChatColor.YELLOW + "Teleportation to spawn will commence in 10 seconds. Your movement has been temporarily disabled. Sneak to cancel teleportation request (shift)."); + + + new BukkitRunnable() { + @Override + public void run() { + + if (Objects.requireNonNull(p.getPlayer()).isSneaking() && !activeCommands.contains(p.getPlayer())) { + cancel(); + } + // Check if the player is sneaking + if (Objects.requireNonNull(p.getPlayer()).isSneaking() && activeCommands.contains(p.getPlayer())) { + p.getPlayer().sendMessage(ChatColor.RED + "Command execution canceled because you are sneaking!"); + double velocity = originalVelocity.get(p.getPlayer()); + p.getPlayer().setVelocity(p.getPlayer().getLocation().getDirection().multiply(velocity)); + frozenPlayers.remove(p.getPlayer()); + originalVelocity.remove(p.getPlayer()); + sneakingPlayers.remove(p.getPlayer()); + p.getPlayer().setWalkSpeed(0.2F); + activeCommands.remove(p.getPlayer()); // Clean up + cancel(); // Stop the runnable + } + } + }.runTaskTimer(JavaPlugin.getPlugin(Main.class), 0, 1); // Check every tick + + + new BukkitRunnable() { + @Override + public void run() { + + if (!activeCommands.contains(p.getPlayer())) { + cancel(); + return; + } + + try { + Connection connection = DatabaseConnection.getConnection(); + Statement statement = connection.createStatement(); + var cmd = "SELECT x,y,z,yaw,pitch FROM spawn"; + var result = statement.executeQuery(cmd); + double x = result.getDouble("x"); + double y = result.getDouble("y"); + double z = result.getDouble("z"); + float yaw = result.getFloat("yaw"); + float pitch = result.getFloat("pitch"); + Location location = new Location(main, x, y, z, yaw, pitch); + p.teleport(location); + + connection.close(); + p.sendMessage(ChatColor.GREEN + "Sent to spawn"); + p.setWalkSpeed(0.2F); + + double velocity = originalVelocity.get(p.getPlayer()); + p.getPlayer().setVelocity(p.getPlayer().getLocation().getDirection().multiply(velocity)); + p.setWalkSpeed(0.2F); + frozenPlayers.remove(p.getPlayer()); + originalVelocity.remove(p.getPlayer()); + activeCommands.remove(p.getPlayer()); + + + } + + catch (SQLException e) { + throw new RuntimeException(e); + } + + } + }.runTaskLater(JavaPlugin.getPlugin(Main.class), 200); + } + return true; + } + +}