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'