Ban hourly
This commit is contained in:
		| @ -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); | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @ -35,6 +35,7 @@ public class DatabaseManager { | |||||||
| 		con = DriverManager.getConnection("jdbc:sqlite:plugins/TheVoidRoad/voids.db"); | 		con = DriverManager.getConnection("jdbc:sqlite:plugins/TheVoidRoad/voids.db"); | ||||||
| 		InitVoids(); | 		InitVoids(); | ||||||
| 		InitConfig(); | 		InitConfig(); | ||||||
|  | 		InitDeaths(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// Voids table and methods | 	// 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(){ |     public void close(){ | ||||||
| 		try { | 		try { | ||||||
|  | |||||||
| @ -111,19 +111,18 @@ public class Merchand implements Listener{ | |||||||
|  |  | ||||||
| 	@EventHandler | 	@EventHandler | ||||||
| 	public void OpenInventory(PlayerInteractEntityEvent e){ | 	public void OpenInventory(PlayerInteractEntityEvent e){ | ||||||
| 		e.setCancelled(true); |  | ||||||
| 		inv.clear(); |  | ||||||
| 		inv.setItem(4, new ItemStack(current.x, current.y)); |  | ||||||
| 		if(e.getRightClicked().equals(m)){ | 		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); | 			e.getPlayer().openInventory(inv); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	@EventHandler | 	@EventHandler | ||||||
| 	public void Compass(PlayerInteractEvent e){ | 	public void Compass(PlayerInteractEvent e){ | ||||||
| 		if(m.getLocation() != null && e.getItem() != null && e.getItem().getType() == Material.COMPASS){ | 		if(getLocation() != null && e.getItem() != null && e.getItem().getType() == Material.COMPASS){ | ||||||
| 			e.getPlayer().setCompassTarget(m.getLocation()); | 			e.getPlayer().setCompassTarget(getLocation()); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | |||||||
| @ -30,6 +30,7 @@ public class TheVoidRoad extends JavaPlugin{ | |||||||
| 		getServer().getPluginManager().registerEvents(new HourEvent(), this); //For HourEvent | 		getServer().getPluginManager().registerEvents(new HourEvent(), this); //For HourEvent | ||||||
| 		getServer().getPluginManager().registerEvents(Merchand.getInstance(), this); | 		getServer().getPluginManager().registerEvents(Merchand.getInstance(), this); | ||||||
| 		getServer().getPluginManager().registerEvents(new Voids(), this); | 		getServer().getPluginManager().registerEvents(new Voids(), this); | ||||||
|  | 		getServer().getPluginManager().registerEvents(new BanHourly(), this); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	@Override | 	@Override | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user