diff --git a/TheVoidRoad/src/main/java/ovh/herisson/thevoidroad/BanHourly.java b/TheVoidRoad/src/main/java/ovh/herisson/thevoidroad/BanHourly.java new file mode 100644 index 0000000..16b2335 --- /dev/null +++ b/TheVoidRoad/src/main/java/ovh/herisson/thevoidroad/BanHourly.java @@ -0,0 +1,25 @@ +package ovh.herisson.thevoidroad; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerPreLoginEvent; +import org.bukkit.event.player.AsyncPlayerPreLoginEvent.Result; +import org.bukkit.event.player.PlayerKickEvent.Cause; + +import net.kyori.adventure.text.Component; + +public class BanHourly implements Listener{ + + @EventHandler + public void banned(AsyncPlayerPreLoginEvent e){ + if(DatabaseManager.getInstance().hasDiedInHour(e.getUniqueId())) + e.disallow(Result.KICK_BANNED, Component.text("Vous etes mort dans la dernière heure... Patientez la prochaine!")); + } + + @EventHandler + public void died(PlayerDeathEvent e){ + DatabaseManager.getInstance().setDeath(e.getPlayer().getUniqueId()); + e.getPlayer().kick(Component.text("Vous etes mort dans la dernière heure... Patientez la prochaine!"), Cause.BANNED); + } +} diff --git a/TheVoidRoad/src/main/java/ovh/herisson/thevoidroad/DatabaseManager.java b/TheVoidRoad/src/main/java/ovh/herisson/thevoidroad/DatabaseManager.java index f08c8cf..ad5e398 100644 --- a/TheVoidRoad/src/main/java/ovh/herisson/thevoidroad/DatabaseManager.java +++ b/TheVoidRoad/src/main/java/ovh/herisson/thevoidroad/DatabaseManager.java @@ -35,6 +35,7 @@ public class DatabaseManager { con = DriverManager.getConnection("jdbc:sqlite:plugins/TheVoidRoad/voids.db"); InitVoids(); InitConfig(); + InitDeaths(); } // Voids table and methods @@ -136,6 +137,45 @@ public class DatabaseManager { } } + private void InitDeaths() throws SQLException{ + String query = " CREATE TABLE IF NOT EXISTS deaths (\n" + + "id integer PRIMARY KEY,\n" + + "uuid text NOT NULL UNIQUE,\n" + + "lastDeath INTEGER DEFAULT (unixepoch() / (60 * 60)))"; + Statement st = con.createStatement(); + st.execute(query); + st.close(); + } + + public void setDeath(UUID uuid) { + try { + Statement st = con.createStatement(); + String query = "INSERT OR REPLACE INTO deaths (uuid) VALUES (?)"; + PreparedStatement p = con.prepareStatement(query); + p.setString(1, uuid.toString()); + p.execute(); + st.close(); + } catch(Exception e){ + e.printStackTrace(); + } + } + + public boolean hasDiedInHour(UUID uuid){ + try { + Statement st = con.createStatement(); + String query = "SELECT (unixepoch() / (60 * 60)) - lastDeath <= 0 FROM deaths WHERE uuid = ? LIMIT 1 ;"; + PreparedStatement p = con.prepareStatement(query); + p.setString(1, uuid.toString()); + ResultSet rs = p.executeQuery(); + boolean value = rs.getBoolean(1); + st.close(); + return value; + } catch(Exception e){ + e.printStackTrace(); + } + return false; + } + public void close(){ try { diff --git a/TheVoidRoad/src/main/java/ovh/herisson/thevoidroad/Entity/Merchand.java b/TheVoidRoad/src/main/java/ovh/herisson/thevoidroad/Entity/Merchand.java index a956137..01f5405 100644 --- a/TheVoidRoad/src/main/java/ovh/herisson/thevoidroad/Entity/Merchand.java +++ b/TheVoidRoad/src/main/java/ovh/herisson/thevoidroad/Entity/Merchand.java @@ -111,19 +111,18 @@ public class Merchand implements Listener{ @EventHandler public void OpenInventory(PlayerInteractEntityEvent e){ - e.setCancelled(true); - inv.clear(); - inv.setItem(4, new ItemStack(current.x, current.y)); if(e.getRightClicked().equals(m)){ - e.getPlayer().sendMessage("Open inventory"); + e.setCancelled(true); + inv.clear(); + inv.setItem(4, new ItemStack(current.x, current.y)); e.getPlayer().openInventory(inv); } } @EventHandler public void Compass(PlayerInteractEvent e){ - if(m.getLocation() != null && e.getItem() != null && e.getItem().getType() == Material.COMPASS){ - e.getPlayer().setCompassTarget(m.getLocation()); + if(getLocation() != null && e.getItem() != null && e.getItem().getType() == Material.COMPASS){ + e.getPlayer().setCompassTarget(getLocation()); } } diff --git a/TheVoidRoad/src/main/java/ovh/herisson/thevoidroad/TheVoidRoad.java b/TheVoidRoad/src/main/java/ovh/herisson/thevoidroad/TheVoidRoad.java index d3c6a4a..ab03228 100644 --- a/TheVoidRoad/src/main/java/ovh/herisson/thevoidroad/TheVoidRoad.java +++ b/TheVoidRoad/src/main/java/ovh/herisson/thevoidroad/TheVoidRoad.java @@ -30,6 +30,7 @@ public class TheVoidRoad extends JavaPlugin{ getServer().getPluginManager().registerEvents(new HourEvent(), this); //For HourEvent getServer().getPluginManager().registerEvents(Merchand.getInstance(), this); getServer().getPluginManager().registerEvents(new Voids(), this); + getServer().getPluginManager().registerEvents(new BanHourly(), this); } @Override