diff --git a/pom.xml b/pom.xml index 771b6ae..528a30a 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ ovh.mxg CubeTP - 1.3.1 + 1.4.0 jar CubeTP diff --git a/src/main/java/ovh/mxg/cubetp/CubeTP.java b/src/main/java/ovh/mxg/cubetp/CubeTP.java index 38b1954..b4942d5 100644 --- a/src/main/java/ovh/mxg/cubetp/CubeTP.java +++ b/src/main/java/ovh/mxg/cubetp/CubeTP.java @@ -6,26 +6,20 @@ import org.bukkit.block.BlockState; import org.bukkit.block.Sign; import org.bukkit.block.sign.Side; import org.bukkit.block.sign.SignSide; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Item; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.SignChangeEvent; -import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryCloseEvent; 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.PlayerQuitEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.MainHand; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.plugin.java.JavaPlugin; @@ -34,9 +28,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.text.MessageFormat; -import java.util.ArrayList; import java.util.Arrays; -import java.util.Random; 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 Material cubeTP; public static Material tomePortalReagent; - Inventory inv = null; - Location clickedCubeLoc; - Block clickedBlock; - String curCubeName = ""; + public static Inventory inv = null; + public static Location clickedCubeLoc; + public static Block clickedBlock; + public static String curCubeName = ""; boolean curCubePrivate = false; boolean inCubeTPInventory = false; double curCubeX = 0; @@ -81,6 +73,24 @@ public final class CubeTP extends JavaPlugin implements Listener { 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 public void PlayerInteractEvent(PlayerInteractEvent event) throws SQLException { clickedBlock = event.getClickedBlock(); @@ -174,7 +184,7 @@ public final class CubeTP extends JavaPlugin implements Listener { // tp to a remote cube if (e.getRawSlot() >= 9){ 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 { - 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 { + public static void AddAllCubes(Player player) throws SQLException { int slot = 9; String uuid = player.getUniqueId().toString(); 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)); slot++; } + if(SQL.CheckDeathExists(player)){ + String loreDe = SQL.GenDeathLore(player); + inv.setItem(slot,createGuiItem(Material.GRAY_WOOL, "Death", loreDe)); + slot++; + } SQL.connect(); PreparedStatement ps = SQL.getConnection().prepareStatement("SELECT * FROM cubetp WHERE uuid IS NULL"); ResultSet rs = ps.executeQuery(); @@ -320,24 +298,66 @@ 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")){ Location pSpawn = player.getBedSpawnLocation(); player.teleport(pSpawn); - } else { - SQL.connect(); - PreparedStatement ps = SQL.getConnection().prepareStatement("SELECT * FROM cubetp WHERE name = ?"); - ps.setString(1, name); - ResultSet rs = ps.executeQuery(); - int slot = 9; - if(rs.next()) { - Location loc = new Location(player.getWorld(), rs.getDouble("x"),rs.getDouble("y"),rs.getDouble("z"), 0, 0); - player.teleport(loc); - } + return; + } + if(name.equals("Death")){ + Location dSpawn = SQL.GenDeathLoc(player); + player.teleport(dSpawn); + SQL.DeleteDeathByUUID(player); + return; + } + SQL.connect(); + PreparedStatement ps = SQL.getConnection().prepareStatement("SELECT * FROM cubetp WHERE name = ?"); + ps.setString(1, name); + ResultSet rs = ps.executeQuery(); + int slot = 9; + if(rs.next()) { + Location loc = new Location(player.getWorld(), rs.getDouble("x"),rs.getDouble("y"),rs.getDouble("z"), 0, 0); + player.teleport(loc); } } - protected ItemStack createGuiItem(final Material material, final String name, final String... lore) { + 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); + } + + 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 ItemMeta meta = item.getItemMeta(); diff --git a/src/main/java/ovh/mxg/cubetp/SQL.java b/src/main/java/ovh/mxg/cubetp/SQL.java index 4a15931..359f11a 100644 --- a/src/main/java/ovh/mxg/cubetp/SQL.java +++ b/src/main/java/ovh/mxg/cubetp/SQL.java @@ -2,6 +2,7 @@ package ovh.mxg.cubetp; import org.bukkit.Bukkit; import org.bukkit.Location; +import org.bukkit.World; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; @@ -47,6 +48,61 @@ public class SQL { 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 { connect(); PreparedStatement ps = getConnection().prepareStatement("INSERT IGNORE INTO cubetp (name,x,y,z,uuid) VALUES (?,?,?,?,?)"); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index e8e54fd..722a0fb 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,4 +1,4 @@ name: CubeTP -version: '1.3.1' +version: '1.4.0' main: ovh.mxg.cubetp.CubeTP api-version: '1.20' diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml index e8e54fd..722a0fb 100644 --- a/target/classes/plugin.yml +++ b/target/classes/plugin.yml @@ -1,4 +1,4 @@ name: CubeTP -version: '1.3.1' +version: '1.4.0' main: ovh.mxg.cubetp.CubeTP api-version: '1.20'