Add .java files (1)
This commit is contained in:
parent
135eed32e1
commit
41607e2547
159
uwp-utils/commands/Home.java
Normal file
159
uwp-utils/commands/Home.java
Normal file
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
81
uwp-utils/commands/Rank.java
Normal file
81
uwp-utils/commands/Rank.java
Normal file
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
131
uwp-utils/commands/Rtp.java
Normal file
131
uwp-utils/commands/Rtp.java
Normal file
@ -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;
|
||||||
|
}
|
||||||
|
}
|
66
uwp-utils/commands/SetHome.java
Normal file
66
uwp-utils/commands/SetHome.java
Normal file
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
113
uwp-utils/commands/Spawn.java
Normal file
113
uwp-utils/commands/Spawn.java
Normal file
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user