death location added to the list

This commit is contained in:
mikx 2023-11-28 04:51:25 -05:00
parent e15fde3993
commit 8e4bf3dce6
5 changed files with 144 additions and 68 deletions

View File

@ -6,7 +6,7 @@
<groupId>ovh.mxg</groupId> <groupId>ovh.mxg</groupId>
<artifactId>CubeTP</artifactId> <artifactId>CubeTP</artifactId>
<version>1.3.1</version> <version>1.4.0</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>CubeTP</name> <name>CubeTP</name>

View File

@ -6,26 +6,20 @@ import org.bukkit.block.BlockState;
import org.bukkit.block.Sign; import org.bukkit.block.Sign;
import org.bukkit.block.sign.Side; import org.bukkit.block.sign.Side;
import org.bukkit.block.sign.SignSide; import org.bukkit.block.sign.SignSide;
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Item;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.Action; import org.bukkit.event.block.Action;
import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.SignChangeEvent; import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerEggThrowEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.MainHand;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
@ -34,9 +28,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Random;
public final class CubeTP extends JavaPlugin implements Listener { public final class CubeTP extends JavaPlugin implements Listener {
@ -47,10 +39,10 @@ public final class CubeTP extends JavaPlugin implements Listener {
public static String password; public static String password;
public static Material cubeTP; public static Material cubeTP;
public static Material tomePortalReagent; public static Material tomePortalReagent;
Inventory inv = null; public static Inventory inv = null;
Location clickedCubeLoc; public static Location clickedCubeLoc;
Block clickedBlock; public static Block clickedBlock;
String curCubeName = ""; public static String curCubeName = "";
boolean curCubePrivate = false; boolean curCubePrivate = false;
boolean inCubeTPInventory = false; boolean inCubeTPInventory = false;
double curCubeX = 0; double curCubeX = 0;
@ -81,6 +73,24 @@ public final class CubeTP extends JavaPlugin implements Listener {
getLogger().info("Enabled!"); getLogger().info("Enabled!");
} }
@EventHandler
public void PlayerQuitEvent(PlayerQuitEvent event) throws SQLException {
Player player = event.getPlayer();
if(SQL.CheckDeathExists(player)){
SQL.DeleteDeathByUUID(player);
}
}
@EventHandler
public void PlayerDeathEvent(PlayerDeathEvent event) throws SQLException {
Player player = event.getEntity().getPlayer();
Location dLoc = player.getLocation();
if(SQL.CheckDeathExists(player)){
SQL.DeleteDeathByUUID(player);
SQL.AddDeath(player, dLoc);
} else {
SQL.AddDeath(player, dLoc);
}
}
@EventHandler @EventHandler
public void PlayerInteractEvent(PlayerInteractEvent event) throws SQLException { public void PlayerInteractEvent(PlayerInteractEvent event) throws SQLException {
clickedBlock = event.getClickedBlock(); clickedBlock = event.getClickedBlock();
@ -174,7 +184,7 @@ public final class CubeTP extends JavaPlugin implements Listener {
// tp to a remote cube // tp to a remote cube
if (e.getRawSlot() >= 9){ if (e.getRawSlot() >= 9){
String name = e.getCurrentItem().getItemMeta().getDisplayName(); String name = e.getCurrentItem().getItemMeta().getDisplayName();
CubeTP(p,name); TeleportPlayer(p,name);
} }
} }
} }
@ -256,44 +266,7 @@ public final class CubeTP extends JavaPlugin implements Listener {
} }
} }
public void ShowUI(Player player) throws SQLException { public static void AddAllCubes(Player player) throws SQLException {
inv = Bukkit.createInventory(null, 45, "CubeTP");
World world = getServer().getWorld("world");
Block block = world.getBlockAt(clickedBlock.getLocation().getBlockX(), clickedBlock.getLocation().getBlockY()+1, clickedBlock.getLocation().getBlockZ());
BlockState state = block.getState();
Sign sign = (Sign) state;
SignSide sside = sign.getSide(Side.FRONT);
String lore01 = MessageFormat.format("{0}", sside.getLine(0));
String lore02 = MessageFormat.format("x{0} y{1} z{2}", clickedBlock.getLocation().getBlockX(), clickedBlock.getLocation().getBlockY(), clickedBlock.getLocation().getBlockZ());
inv.setItem(0,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(1,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(2,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(3,createGuiItem(Material.CYAN_WOOL, "§bEnregistrer", lore01, lore02));
inv.setItem(4,createGuiItem(Material.CYAN_WOOL, "§bTome de portail"));
inv.setItem(5,createGuiItem(Material.CYAN_WOOL, "§bRetirer"));
inv.setItem(6,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(7,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(8,createGuiItem(Material.BLACK_WOOL, " "));
AddAllCubes(player);
player.openInventory(inv);
}
public void ShowUIPortal(Player player) throws SQLException {
inv = Bukkit.createInventory(null, 45, "CubeTP");
inv.setItem(0,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(1,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(2,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(3,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(4,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(5,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(6,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(7,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(8,createGuiItem(Material.BLACK_WOOL, " "));
AddAllCubes(player);
player.openInventory(inv);
}
public void AddAllCubes(Player player) throws SQLException {
int slot = 9; int slot = 9;
String uuid = player.getUniqueId().toString(); String uuid = player.getUniqueId().toString();
if(player.getBedSpawnLocation() != null){ if(player.getBedSpawnLocation() != null){
@ -302,6 +275,11 @@ public final class CubeTP extends JavaPlugin implements Listener {
inv.setItem(slot,createGuiItem(Material.WHITE_WOOL, "Spawn", loreSp)); inv.setItem(slot,createGuiItem(Material.WHITE_WOOL, "Spawn", loreSp));
slot++; slot++;
} }
if(SQL.CheckDeathExists(player)){
String loreDe = SQL.GenDeathLore(player);
inv.setItem(slot,createGuiItem(Material.GRAY_WOOL, "Death", loreDe));
slot++;
}
SQL.connect(); SQL.connect();
PreparedStatement ps = SQL.getConnection().prepareStatement("SELECT * FROM cubetp WHERE uuid IS NULL"); PreparedStatement ps = SQL.getConnection().prepareStatement("SELECT * FROM cubetp WHERE uuid IS NULL");
ResultSet rs = ps.executeQuery(); ResultSet rs = ps.executeQuery();
@ -320,11 +298,18 @@ public final class CubeTP extends JavaPlugin implements Listener {
} }
} }
public void CubeTP(Player player, String name) throws SQLException { public void TeleportPlayer(Player player, String name) throws SQLException {
if(name.equals("Spawn")){ if(name.equals("Spawn")){
Location pSpawn = player.getBedSpawnLocation(); Location pSpawn = player.getBedSpawnLocation();
player.teleport(pSpawn); player.teleport(pSpawn);
} else { return;
}
if(name.equals("Death")){
Location dSpawn = SQL.GenDeathLoc(player);
player.teleport(dSpawn);
SQL.DeleteDeathByUUID(player);
return;
}
SQL.connect(); SQL.connect();
PreparedStatement ps = SQL.getConnection().prepareStatement("SELECT * FROM cubetp WHERE name = ?"); PreparedStatement ps = SQL.getConnection().prepareStatement("SELECT * FROM cubetp WHERE name = ?");
ps.setString(1, name); ps.setString(1, name);
@ -335,9 +320,44 @@ public final class CubeTP extends JavaPlugin implements Listener {
player.teleport(loc); player.teleport(loc);
} }
} }
public void ShowUI(Player player) throws SQLException {
inv = Bukkit.createInventory(null, 45, "CubeTP");
World world = getServer().getWorld("world");
Block block = world.getBlockAt(CubeTP.clickedBlock.getLocation().getBlockX(), CubeTP.clickedBlock.getLocation().getBlockY()+1, CubeTP.clickedBlock.getLocation().getBlockZ());
BlockState state = block.getState();
Sign sign = (Sign) state;
SignSide sside = sign.getSide(Side.FRONT);
String lore01 = MessageFormat.format("{0}", sside.getLine(0));
String lore02 = MessageFormat.format("x{0} y{1} z{2}", CubeTP.clickedBlock.getLocation().getBlockX(), CubeTP.clickedBlock.getLocation().getBlockY(), CubeTP.clickedBlock.getLocation().getBlockZ());
inv.setItem(0,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(1,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(2,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(3,createGuiItem(Material.CYAN_WOOL, "§bEnregistrer", lore01, lore02));
inv.setItem(4,createGuiItem(Material.CYAN_WOOL, "§bTome de portail"));
inv.setItem(5,createGuiItem(Material.CYAN_WOOL, "§bRetirer"));
inv.setItem(6,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(7,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(8,createGuiItem(Material.BLACK_WOOL, " "));
CubeTP.AddAllCubes(player);
player.openInventory(inv);
} }
protected ItemStack createGuiItem(final Material material, final String name, final String... lore) { public void ShowUIPortal(Player player) throws SQLException {
inv = Bukkit.createInventory(null, 45, "CubeTP");
inv.setItem(0,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(1,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(2,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(3,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(4,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(5,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(6,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(7,createGuiItem(Material.BLACK_WOOL, " "));
inv.setItem(8,createGuiItem(Material.BLACK_WOOL, " "));
CubeTP.AddAllCubes(player);
player.openInventory(inv);
}
public static ItemStack createGuiItem(final Material material, final String name, final String... lore) {
final ItemStack item = new ItemStack(material, 1); final ItemStack item = new ItemStack(material, 1);
final ItemMeta meta = item.getItemMeta(); final ItemMeta meta = item.getItemMeta();

View File

@ -2,6 +2,7 @@ package ovh.mxg.cubetp;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.ConsoleCommandSender; import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
@ -47,6 +48,61 @@ public class SQL {
return con; return con;
} }
public static void AddDeath(Player player, Location loc) throws SQLException {
String uuid = player.getUniqueId().toString();
connect();
PreparedStatement ps = getConnection().prepareStatement("INSERT IGNORE INTO cubedeath (uuid,x,y,z) VALUES (?,?,?,?)");
ps.setString(1, uuid);
ps.setDouble(2, loc.getBlockX());
ps.setDouble(3, loc.getBlockY());
ps.setDouble(4, loc.getBlockZ());
ps.executeUpdate();
}
public static boolean CheckDeathExists(Player player) throws SQLException {
String uuid = player.getUniqueId().toString();
SQL.connect();
PreparedStatement ps = SQL.getConnection().prepareStatement("SELECT * FROM cubedeath WHERE uuid = ?");
ps.setString(1, uuid);
ResultSet rs = ps.executeQuery();
return rs.next();
}
public static Location GenDeathLoc(Player player) throws SQLException {
String uuid = player.getUniqueId().toString();
World world = player.getWorld();
Location dLoc = null;
SQL.connect();
PreparedStatement ps = SQL.getConnection().prepareStatement("SELECT * FROM cubedeath WHERE uuid = ?");
ps.setString(1, uuid);
ResultSet rs = ps.executeQuery();
if(rs.next()){
dLoc = new Location(world, rs.getDouble("x"), rs.getDouble("Y"), rs.getDouble("Z"));
return dLoc;
}
return dLoc;
}
public static String GenDeathLore(Player player) throws SQLException {
String uuid = player.getUniqueId().toString();
SQL.connect();
PreparedStatement ps = SQL.getConnection().prepareStatement("SELECT * FROM cubedeath WHERE uuid = ?");
ps.setString(1, uuid);
ResultSet rs = ps.executeQuery();
if(rs.next()){
return MessageFormat.format("x{0} y{1} z{2}", rs.getDouble("x"), rs.getDouble("Y"), rs.getDouble("Z"));
}
return "";
}
public static void DeleteDeathByUUID(Player player) throws SQLException {
String uuid = player.getUniqueId().toString();
SQL.connect();
PreparedStatement ps = SQL.getConnection().prepareStatement("DELETE FROM cubedeath WHERE uuid = ?");
ps.setString(1, uuid);
ps.executeUpdate();
}
public static void AddCube(String name, double x, double y, double z, String uuid) throws SQLException { public static void AddCube(String name, double x, double y, double z, String uuid) throws SQLException {
connect(); connect();
PreparedStatement ps = getConnection().prepareStatement("INSERT IGNORE INTO cubetp (name,x,y,z,uuid) VALUES (?,?,?,?,?)"); PreparedStatement ps = getConnection().prepareStatement("INSERT IGNORE INTO cubetp (name,x,y,z,uuid) VALUES (?,?,?,?,?)");

View File

@ -1,4 +1,4 @@
name: CubeTP name: CubeTP
version: '1.3.1' version: '1.4.0'
main: ovh.mxg.cubetp.CubeTP main: ovh.mxg.cubetp.CubeTP
api-version: '1.20' api-version: '1.20'

View File

@ -1,4 +1,4 @@
name: CubeTP name: CubeTP
version: '1.3.1' version: '1.4.0'
main: ovh.mxg.cubetp.CubeTP main: ovh.mxg.cubetp.CubeTP
api-version: '1.20' api-version: '1.20'