· 8 years ago · Jan 05, 2018, 09:04 PM
1package com.wesley.keepersql.mySql.bdd.bdds;
2
3import com.wesley.keepersql.main.Main;
4import com.wesley.keepersql.mySql.Sql;
5import com.wesley.keepersql.utils.RanksList;
6import org.bukkit.Bukkit;
7import org.bukkit.command.CommandSender;
8import org.bukkit.command.ConsoleCommandSender;
9import org.bukkit.entity.Player;
10
11import java.sql.*;
12import java.util.UUID;
13
14public class SqlUtilisateursBase {
15
16 private final Connection c = new Sql().getConnection();
17 private PreparedStatement q;
18 private ResultSet r;
19 private StringBuilder sb;
20 private Player t;
21
22 public void create() {
23 try {
24 q = c.prepareStatement("CREATE TABLE IF NOT EXISTS SqlUtilisateursBase( id INT PRIMARY KEY AUTO_INCREMENT NOT NULL , uuid VARCHAR(255) UNIQUE NOT NULL , playername VARCHAR(255) NOT NULL , gold DOUBLE NOT NULL , diamond DOUBLE NOT NULL , rankpower INT NOT NULL , rankends VARCHAR(255) , banned BOOLEAN , banreason VARCHAR(255) , banend VARCHAR(255) , muted BOOLEAN , mutereason VARCHAR(255) NOT NULL , muteend VARCHAR(255) , created DATE NOT NULL , ip VARCHAR(255) NOT NULL)");
25 q.execute();
26 q.close();
27 System.out.println("(SqlUtilisateursBase) CreateBDD >> SUCCESS");
28 } catch (SQLException e) {
29 System.out.println("(SqlUtilisateursBase) CreateBDD >> ERROR");
30 e.printStackTrace();
31 }
32 }
33
34 public void accountCreate(UUID uuid) {
35 if (!this.hasAccount(uuid)) {
36 try {
37 q = c.prepareStatement("INSERT INTO SqlUtilisateursBase(uuid, playername, gold, diamond, rankpower, rankend, banned, banreason, banend, muted, mutereason, muteend, created, ip) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
38 q.setString(1, uuid.toString());
39 q.setString(2, Bukkit.getServer().getPlayer(uuid).getName());
40 q.setDouble(3, 0.0D);
41 q.setDouble(4, 0.0D);
42 q.setInt(5, 0);
43 q.setString(6, "-1");
44 q.setBoolean(7, false);
45 q.setString(8, null);
46 q.setString(9, null);
47 q.setBoolean(10, false);
48 q.setString(11, null);
49 q.setString(12, null);
50 q.setDate(13, new Date(System.currentTimeMillis()));
51 q.setString(14, Bukkit.getServer().getPlayer(uuid).getAddress().getHostString());
52 q.execute();
53 q.close();
54 System.out.println("(SqlUtilisateursBase) accountCreate >> SUCCESS");
55 } catch (SQLException e) {
56 System.out.println("(SqlUtilisateursBase) accountCreate >> ERROR");
57 e.printStackTrace();
58 }
59 }
60 }
61
62 public boolean hasAccount(UUID uuid) {
63 try {
64 q = c.prepareStatement("SELECT uuid FROM SqlUtilisateursBase WHERE uuid = ?");
65 q.setString(1, uuid.toString());
66 r = q.executeQuery();
67 boolean hasAccount = r.next();
68 q.close();
69 return hasAccount;
70 } catch (SQLException e) {
71 System.out.println("(SqlUtilisateursBase) hasAccount >> ERROR");
72 e.printStackTrace();
73 }
74 return false;
75 }
76
77 public UUID getUUID(String pn) {
78 try {
79 q = c.prepareStatement("SELECT uuid FROM SqlUtilisateursBase WHERE playername = ?");
80 q.setString(1, pn);
81 r = q.executeQuery();
82 UUID uuid = null;
83 while (r.next()) {
84 uuid = UUID.fromString(r.getString("uuid"));
85 }
86 q.close();
87 return uuid;
88 } catch (SQLException e) {
89 System.out.println("(SqlUtilisateursBase) getUUID >> ERROR");
90 e.printStackTrace();
91 }
92 return null;
93 }
94
95 public String getPlayerName(UUID uuid) {
96 if (this.hasAccount(uuid)) {
97 try {
98 q = c.prepareStatement("SELECT playername FROM SqlUtilisateursBase WHERE uuid = ?");
99 q.setString(1, uuid.toString());
100 r = q.executeQuery();
101 String name = "§4ERROR";
102 while (r.next()) {
103 name = r.getString("playername");
104 }
105 q.close();
106 return name;
107 } catch (SQLException e) {
108 System.out.println("(SqlUtilisateursBase) getPlayerName >> ERROR");
109 e.printStackTrace();
110 }
111 }
112 return "§4ERROR";
113 }
114
115 public void setPlayersName(UUID uuid) {
116 if (this.hasAccount(uuid)) {
117 try {
118 q = c.prepareStatement("UPDATE SqlUtilisateursBase SET playername = ? WHERE uuid = ?");
119 q.setString(1, Bukkit.getServer().getPlayer(uuid).getName());
120 q.setString(2, uuid.toString());
121 q.executeUpdate();
122 q.close();
123 } catch (SQLException e) {
124 System.out.println("(SqlUtilisateursBase) setPlayersName >> ERROR");
125 e.printStackTrace();
126 }
127 }
128 }
129
130 public double getBank(UUID uuid, String material) {
131 if (this.hasAccount(uuid)) {
132 switch (material) {
133 case "gold":
134 break;
135 case "diamond":
136 break;
137 default:
138 return 0.0D;
139 }
140 try {
141 q = c.prepareStatement("SELECT " + material + " FROM SqlUtilisateursBase WHERE uuid = ?");
142 q.setString(1, uuid.toString());
143 r = q.executeQuery();
144 double b = 0.0D;
145 while (r.next()) {
146 b = r.getDouble(material);
147 }
148 q.close();
149 return b;
150 } catch (SQLException e) {
151 System.out.println("(SqlUtilisateursBase) getBank >> ERROR");
152 e.printStackTrace();
153 }
154 }
155 return 0.0D;
156 }
157
158 public void addBank(UUID uuid, String material, double amount, CommandSender sender) {
159 if (this.hasAccount(uuid)) {
160 if (this.checkBankMaterial(material)) {
161 double nb = this.getBank(uuid, material) + amount;
162 if (amount == 0.0D) {
163 sender.sendMessage("§7(§cSystem§7) §8» §cImpossible, d'ajouté §f'".concat(String.valueOf(amount)).concat(" ").concat(material).concat("' à cette bank."));
164 return;
165 } else if (this.checkNewBank(uuid, nb, sender)) {
166 try {
167 q = c.prepareStatement("UPDATE SqlUtilisateursBase SET " + material + " = ? WHERE uuid = ?");
168 q.setDouble(1, nb);
169 q.setString(2, uuid.toString());
170 q.executeUpdate();
171 q.close();
172 if (Bukkit.getServer().getPlayer(uuid) != null) {
173 if (Bukkit.getServer().getPlayer(uuid).isOnline()) {
174 t = Bukkit.getServer().getPlayer(uuid);
175 sb = new StringBuilder();
176 sb.append("§7§m--+-------------------------+---\n\n")
177 .append("§cSystem §8» §7Votre bank a été modifié.\n\n\n")
178 .append("§7§nInformation :\n\n")
179 .append("§7§oMontant §8» §f+§e'").append(amount).append("§e'\n");
180 if (sender instanceof Player) {
181 sb.append("§7§oDe §8» §e'").append(((Player) sender).getDisplayName()).append("§e'\n\n\n");
182 } else if (sender instanceof ConsoleCommandSender) {
183 sb.append("§7§oDe §8» §e'").append(sender.getName()).append("§e'\n\n\n");
184 }
185 sb.append("§c§nINFO : §7§oPour effectuer le changement une reconnection est requise.\n\n")
186 .append("§7§m--+-------------------------+---");
187 t.sendMessage(sb.toString());
188 }
189 }
190 sender.sendMessage("§7(§cSystem§7) §8» §cVous avez modifié la bank à §f'".concat(this.getPlayerName(uuid)).concat("' d'un montant de §f+§e'").concat(String.valueOf(amount)).concat("§e'§c."));
191 return;
192 } catch (SQLException e) {
193 System.out.println("(SqlUtilisateursBase) addBank >> ERROR");
194 e.printStackTrace();
195 sender.sendMessage("§7(§cSystem§7) §8» §4ERREUR");
196 return;
197 }
198 }
199 }
200 }
201 sender.sendMessage("§7(§cSystem§7) §8» §cCe membre n'a pas de compte.");
202 }
203
204 public void removeBank(UUID uuid, String material, double amount, CommandSender sender) {
205 if (this.hasAccount(uuid)) {
206 if (this.checkBankMaterial(material)) {
207 double nb = this.getBank(uuid, material) - amount;
208 if (amount == 0.0D) {
209 sender.sendMessage("§7(§cSystem§7) §8» §cImpossible, de retiré §f'".concat(String.valueOf(amount)).concat(" ").concat(material).concat("' à cette bank."));
210 return;
211 } else if (this.checkNewBank(uuid, nb, sender)) {
212 try {
213 q = c.prepareStatement("UPDATE SqlUtilisateursBase SET " + material + " = ? WHERE uuid = ?");
214 q.setDouble(1, nb);
215 q.setString(2, uuid.toString());
216 q.executeUpdate();
217 q.close();
218 if (Bukkit.getServer().getPlayer(uuid) != null) {
219 if (Bukkit.getServer().getPlayer(uuid).isOnline()) {
220 t = Bukkit.getServer().getPlayer(uuid);
221 sb = new StringBuilder();
222 sb.append("§7§m--+-------------------------+---\n\n")
223 .append("§cSystem §8» §7Votre bank a été modifié.\n\n\n")
224 .append("§7§nInformation :\n\n")
225 .append("§7§oMontant §8» §f-§e'").append(amount).append("§e'\n");
226 if (sender instanceof Player) {
227 sb.append("§7§oDe §8» §e'").append(((Player) sender).getDisplayName()).append("§e'\n\n\n");
228 } else if (sender instanceof ConsoleCommandSender) {
229 sb.append("§7§oDe §8» §e'").append(sender.getName()).append("§e'\n\n\n");
230 }
231 sb.append("§c§nINFO : §7§oPour effectuer le changement une reconnection est requise.\n\n")
232 .append("§7§m--+-------------------------+---");
233 t.sendMessage(sb.toString());
234 }
235 }
236 sender.sendMessage("§7(§cSystem§7) §8» §cVous avez modifié la bank à §f'".concat(this.getPlayerName(uuid)).concat("' d'un montant de §f-§e'").concat(String.valueOf(amount)).concat("§e'§c."));
237 return;
238 } catch (SQLException e) {
239 System.out.println("(SqlUtilisateursBase) removeBank >> ERROR");
240 e.printStackTrace();
241 sender.sendMessage("§7(§cSystem§7) §8» §4ERREUR");
242 return;
243 }
244 }
245 }
246 }
247 sender.sendMessage("§7(§cSystem§7) §8» §cCe membre n'a pas de compte.");
248 }
249
250 public void setBank(UUID uuid, String material, double nb, CommandSender sender) {
251 if (this.hasAccount(uuid)) {
252 if (this.checkBankMaterial(material)) {
253 if (this.checkNewBank(uuid, nb, sender)) {
254 try {
255 q = c.prepareStatement("UPDATE SqlUtilisateursBase SET " + material + " = ? WHERE uuid = ?");
256 q.setDouble(1, nb);
257 q.setString(2, uuid.toString());
258 q.executeUpdate();
259 q.close();
260 if (Bukkit.getServer().getPlayer(uuid) != null) {
261 if (Bukkit.getServer().getPlayer(uuid).isOnline()) {
262 t = Bukkit.getServer().getPlayer(uuid);
263 sb = new StringBuilder();
264 sb.append("§7§m--+-------------------------+---\n\n")
265 .append("§cSystem §8» §7Votre bank a été modifié.\n\n\n")
266 .append("§7§nInformation :\n\n")
267 .append("§7§oMontant §8» §f=§e'").append(nb).append("§e'\n");
268 if (sender instanceof Player) {
269 sb.append("§7§oDe §8» §e'").append(((Player) sender).getDisplayName()).append("§e'\n\n\n");
270 } else if (sender instanceof ConsoleCommandSender) {
271 sb.append("§7§oDe §8» §e'").append(sender.getName()).append("§e'\n\n\n");
272 }
273 sb.append("§c§nINFO : §7§oPour effectuer le changement une reconnection est requise.\n\n")
274 .append("§7§m--+-------------------------+---");
275 t.sendMessage(sb.toString());
276 }
277 }
278 sender.sendMessage("§7(§cSystem§7) §8» §cVous avez modifié la bank à §f'".concat(this.getPlayerName(uuid)).concat("' d'un montant de §f=§e'").concat(String.valueOf(nb)).concat("§e'§c."));
279 return;
280 } catch (SQLException e) {
281 System.out.println("(SqlUtilisateursBase) setBank >> ERROR");
282 e.printStackTrace();
283 sender.sendMessage("§7(§cSystem§7) §8» §4ERREUR");
284 return;
285 }
286 }
287 }
288 }
289 sender.sendMessage("§7(§cSystem§7) §8» §cCe membre n'a pas de compte.");
290 }
291
292 private boolean checkBankMaterial(String material) {
293 switch (material) {
294 case "gold":
295 return true;
296 case "diamond":
297 return true;
298 default:
299 return false;
300 }
301 }
302
303 private boolean checkNewBank(UUID uuid, double nb, CommandSender sender) {
304 double max = Main.getBankMaximum();
305 double min = Main.getBankMinimum();
306 boolean IsInfinity = max < min;
307 if (!IsInfinity) {
308 if (nb > max) {
309 double bp = max - nb;
310 sender.sendMessage("§7(§cSystem§7) §8» §cImpossible, cette bank à atteint son seuillé maximum. §f(+'".concat(String.valueOf(bp)).concat("')"));
311 return true;
312 }
313 }
314 if (nb < min) {
315 double bm = min - nb;
316 sender.sendMessage("§7(§cSystem§7) §8» §cImpossible, cette bank à atteint son seuillé minimum. §f(-'".concat(String.valueOf(bm)).concat("')"));
317 return true;
318 }
319 return false;
320 }
321
322 public void resetBank(UUID uuid, CommandSender sender) {
323 if (this.hasAccount(uuid)) {
324 try {
325 q = c.prepareStatement("UPDATE SqlUtilisateursBase SET gold = ?, diamond = ? WHERE uuid = ?");
326 q.setDouble(1, 0.0D);
327 q.setDouble(2, 0.0D);
328 q.setString(3, uuid.toString());
329 q.executeUpdate();
330 q.close();
331 if (Bukkit.getServer().getPlayer(uuid) != null) {
332 if (Bukkit.getServer().getPlayer(uuid).isOnline()) {
333 t = Bukkit.getServer().getPlayer(uuid);
334 sb = new StringBuilder();
335 sb.append("§7§m--+-------------------------+---\n\n")
336 .append("§cSystem §8» §7Votre bank a été modifié.\n\n\n")
337 .append("§7§nInformation :\n\n")
338 .append("§7§oMontant §8» §e'§cRESET§e'\n");
339 if (sender instanceof Player) {
340 sb.append("§7§oDe §8» §e'").append(((Player) sender).getDisplayName()).append("§e'\n\n\n");
341 } else if (sender instanceof ConsoleCommandSender) {
342 sb.append("§7§oDe §8» §e'").append(sender.getName()).append("§e'\n\n\n");
343 }
344 sb.append("§c§nINFO : §7§oPour effectuer le changement une reconnection est requise.\n\n")
345 .append("§7§m--+-------------------------+---");
346 t.sendMessage(sb.toString());
347 }
348 }
349 sender.sendMessage("§7(§cSystem§7) §8» §cVous avez modifié la bank à §f'".concat(this.getPlayerName(uuid)).concat("' d'un montant de §e'§cRESET§e'§c."));
350 return;
351 } catch (SQLException e) {
352 System.out.println("(SqlUtilisateursBase) resetRank >> ERROR");
353 e.printStackTrace();
354 sender.sendMessage("§7(§cSystem§7) §8» §4ERREUR");
355 return;
356 }
357 }
358 sender.sendMessage("§7(§cSystem§7) §8» §cCe membre n'a pas de compte.");
359 }
360
361 public RanksList getRank(UUID uuid) {
362 if (this.hasAccount(uuid)) {
363 try {
364 q = c.prepareStatement("SELECT rankpower FROM SqlUtilisateursBase WHERE uuid = ?");
365 q.setString(1, uuid.toString());
366 r = q.executeQuery();
367 int power = 0;
368 while (r.next()) {
369 power = r.getInt("rankpower");
370 }
371 q.close();
372 return RanksList.powerToRank(power);
373 } catch (SQLException e) {
374 System.out.println("(SqlUtilisateursBase) getRank >> ERROR");
375 e.printStackTrace();
376 }
377 }
378 return RanksList.MEMBRE;
379 }
380
381 public Long getRankEnd(UUID uuid) {
382 if (this.hasAccount(uuid)) {
383 try {
384 q = c.prepareStatement("SELECT rankend FROM SqlUtilisateursBase WHERE uuid = ?");
385 q.setString(1, uuid.toString());
386 r = q.executeQuery();
387 Long end = -2L;
388 while (r.next()) {
389 end = r.getLong("rankend");
390 }
391 q.close();
392 return end;
393 } catch (SQLException e) {
394 System.out.println("(SqlUtilisateursBase) GetEnd >> ERROR");
395 e.printStackTrace();
396 }
397 }
398 return -2L;
399 }
400
401 public void setRank(UUID uuid, int power, long time, CommandSender sender) {
402 if (this.hasAccount(uuid)) {
403 if (sender instanceof Player) {
404 if (uuid == UUID.fromString(((Player) sender).getUniqueId().toString())) {
405 sender.sendMessage("§7(§cSystem§7) §8» §cVous ne pouvez pas changer votre propre 'rank'.");
406 return;
407 }
408 }
409 if (power < 0) {
410 sender.sendMessage("§7(§cSystem§7) §8» §cVous ne pouvez pas définir §f'Inférieurement à 0'§c.");
411 return;
412 }
413 if (power > (RanksList.rs.size() - 1)) {
414 sender.sendMessage("§7(§cSystem§7) §8» §cVous ne pouvez pas définir §f'Supérieurement à ".concat(String.valueOf((RanksList.rs.size() - 1))).concat("'§c."));
415 return;
416 }
417 RanksList rl = RanksList.powerToRank(power);
418 long e = 0L;
419 if (time == -1L) {
420 e = time;
421 } else if (time > 0L) {
422 long current = System.currentTimeMillis();
423 long millis = time * 1000L;
424 e = current + millis;
425 } else if (time < -1L) {
426 sender.sendMessage("§7(§cSystem§7) §8» §cVous ne pouvez pas définir le temps §f'Inférieurement à 0'§c.");
427 return;
428 }
429 try {
430 q = c.prepareStatement("UPDATE SqlUtilisateursBase SET rankpower = ?, powerend = ? WHERE uuid = ?");
431 q.setInt(1, rl.getPower());
432 q.setLong(2, e);
433 q.setString(3, uuid.toString());
434 q.executeUpdate();
435 q.close();
436 if (Bukkit.getServer().getPlayer(uuid) != null) {
437 if (Bukkit.getPlayer(uuid).isOnline()) {
438 t = Bukkit.getServer().getPlayer(uuid);
439 sb = new StringBuilder();
440 sb.append("§7§m--+-------------------------+---\n\n")
441 .append("§cSystem §8» §7Votre grade a été modifié.\n\n\n")
442 .append("§7§nInformation :\n\n")
443 .append("§7§oRank §8» §e'".concat(rl.getName()).concat("§e'\n"))
444 .append("§7§oTemps §8» §e'").append(this.getRemainingTimeRank(uuid)).append("§e'\n\n\n")
445 .append("§c§nINFO : §7§oPour effectuer le changement une reconnection est requise.\n\n")
446 .append("§7§m--+-------------------------+---");
447 t.sendMessage(sb.toString());
448 }
449 }
450 sender.sendMessage("§7(§cSystem§7) §8» §cVous avez définie le rank §f'".concat(rl.getName()).concat("' §7(§4").concat(String.valueOf(rl.getPower())).concat("§7)§f' à §f'").concat(this.getPlayerName(uuid)).concat("'§c."));
451 return;
452 } catch (SQLException ex) {
453 System.out.println("(SqlUtilisateursBase) setRank >> ERROR");
454 ex.printStackTrace();
455 sender.sendMessage("§7(§cSystem§7) §8» §4ERREUR");
456 return;
457 }
458 }
459 sender.sendMessage("§7(§cSystem§7) §8» §cCe membre n'a pas de rank.");
460 }
461
462 public void resetRank(UUID uuid, CommandSender sender) {
463 if (this.hasAccount(uuid)) {
464 try {
465 q = c.prepareStatement("UPDATE SqlUtilisateursBase SET rankpower = ?, rankend = ? WHERE uuid = ?");
466 q.setInt(1, 0);
467 q.setString(2, "-1");
468 q.setString(3, uuid.toString());
469 q.executeUpdate();
470 q.close();
471 if (Bukkit.getServer().getPlayer(uuid) != null) {
472 if (Bukkit.getServer().getPlayer(uuid).isOnline()) {
473 t = Bukkit.getServer().getPlayer(uuid);
474 t.kickPlayer("§7§m------§8» §7(§cSystem§7) §8«§7§m------§r\n\n§cVous avez été exclus du serveur..\n\n§7Raison §8» §f'" + sender.getName() + "' §cvient de vous réinitialiser votre rank !\n\n§7§m------§8»§7--------------§8«§7------");
475 }
476 }
477 sender.sendMessage("§7(§cSystem§7) §8» §cVous venez de réinitialiser le rank de §f'".concat(this.getPlayerName(uuid)).concat("'§c."));
478 return;
479 } catch (SQLException e) {
480 System.out.println("(SqlUtilisateursBase) resetRank >> ERROR");
481 e.printStackTrace();
482 sender.sendMessage("§7(§cSystem§7) §8» §4ERREUR");
483 return;
484 }
485 }
486 sender.sendMessage("§7(§cSystem§7) §8» §cCe membre n'a pas de rank.");
487 }
488
489 public boolean getBan(UUID uuid) {
490 if (this.hasAccount(uuid)) {
491 try {
492 q = c.prepareStatement("SELECT banned FROM SqlUtilisateursBase WHERE uuid = ?");
493 q.setString(1, uuid.toString());
494 r = q.executeQuery();
495 boolean banned = false;
496 while (r.next()) {
497 banned = r.getBoolean("banned");
498 }
499 q.close();
500 return banned;
501 } catch (SQLException e) {
502 System.out.println("(SqlUtilisateursBase) getBan >> ERROR");
503 e.printStackTrace();
504 }
505 }
506 return false;
507 }
508
509 public String getBanReason(UUID uuid) {
510 if (this.hasAccount(uuid)) {
511 try {
512 q = c.prepareStatement("SELECT banreason FROM SqlUtilisateursBase WHERE uuid = ?");
513 q.setString(1, uuid.toString());
514 r = q.executeQuery();
515 String reason = "§4ERROR";
516 while (r.next()) {
517 reason = r.getString("banreason");
518 }
519 q.close();
520 return reason;
521 } catch (SQLException e) {
522 System.out.println("(SqlUtilisateursBase) getBanReason >> ERROR");
523 e.printStackTrace();
524 }
525 }
526 return "§4ERROR";
527 }
528
529 public Long getBanEnd(UUID uuid) {
530 if (this.hasAccount(uuid)) {
531 try {
532 q = c.prepareStatement("SELECT banend FROM SqlUtilisateursBase WHERE uuid = ?");
533 q.setString(1, uuid.toString());
534 r = q.executeQuery();
535 Long end = -2L;
536 while (r.next()) {
537 end = r.getLong("banend");
538 }
539 q.close();
540 return end;
541 } catch (SQLException e) {
542 System.out.println("(SqlUtilisateursBase) getBanEnd >> ERROR");
543 e.printStackTrace();
544 }
545 }
546 return -2L;
547 }
548
549 public boolean hasBan(UUID uuid) {
550 return this.hasAccount(uuid) && this.getBan(uuid);
551 }
552
553 public void ban(UUID uuid, String reason, long time, CommandSender sender) {
554 if (this.hasAccount(uuid)) {
555 if (!this.hasBan(uuid)) {
556 long e = 0L;
557 if (time == -1L) {
558 e = time;
559 } else if (time > 0L) {
560 long current = System.currentTimeMillis();
561 long millis = time * 1000L;
562 e = current + millis;
563 } else if (time < -1L) {
564 sender.sendMessage("§7(§cSystem§7) §8» §cVous ne pouvez pas définir le temps §f'Inférieurement à 0'§c.");
565 return;
566 }
567 try {
568 q = c.prepareStatement("UPDATE SqlUtilisateursBase SET banned = ?, banreason = ?, banend = ? WHERE uuid = ?");
569 q.setBoolean(1, true);
570 q.setString(2, reason);
571 q.setLong(3, e);
572 q.setString(4, uuid.toString());
573 q.executeUpdate();
574 q.close();
575 Bukkit.getServer().broadcastMessage("§7(§cSystem§7) §8» §f'".concat(this.getPlayerName(uuid)).concat("' §cvient d'être banni pour §e'").concat(reason).concat("' §cpendant §a'").concat(this.getRemainingTimeBan(uuid)).concat("'§c."));
576 if (Bukkit.getServer().getPlayer(uuid) != null) {
577 if (Bukkit.getServer().getPlayer(uuid).isOnline()) {
578 t = Bukkit.getServer().getPlayer(uuid);
579 t.kickPlayer("§7§m------§8» §7(§cSystem§7) §8«§7§m------§r\n\n§cVous avez été banni du serveur..\n\n§7Raison §8» §e'".concat(reason).concat("§e'\n§7Temps §8» §a'").concat(this.getRemainingTimeBan(uuid)).concat("'\n\n§d§oPour contester cette sanction, merci de passer par le TeamSpeak §f'".concat(Main.getTeamSpeak()).concat("'\n\n§7§m------§8»§7--------------§8«§7------")));
580 }
581 }
582 return;
583 } catch (SQLException ex) {
584 System.out.println("(SqlUtilisateursBase) ban >> ERROR");
585 ex.printStackTrace();
586 sender.sendMessage("§7(§cSystem§7) §8» §4ERREUR");
587 return;
588 }
589 } else {
590 sender.sendMessage("§7(§cSystem§7) §8» §cCe membre est déjà banni.");
591 return;
592 }
593 }
594 sender.sendMessage("§7(§cSystem§7) §8» §cCe membre n'a pas de compte.");
595 }
596
597 public void unBan(UUID uuid, CommandSender sender) {
598 if (this.hasAccount(uuid)) {
599 if (this.hasBan(uuid)) {
600 try {
601 q = c.prepareStatement("UPDATE SqlUtilisateursBase SET banned = ?, banreason = ?, banend = ? WHERE uuid = ?");
602 q.setBoolean(1, false);
603 q.setString(2, null);
604 q.setString(3, null);
605 q.setString(4, uuid.toString());
606 q.executeUpdate();
607 q.close();
608 } catch (SQLException e) {
609 System.out.println("SqlUtilisateursBase) unBan >> ERROR");
610 e.printStackTrace();
611 sender.sendMessage("§7(§cSystem§7) §8» §4ERREUR");
612 return;
613 }
614 } else {
615 sender.sendMessage("§7(§cSystem§7) §8» §cCe membre n'est pas banni.");
616 return;
617 }
618 }
619 sender.sendMessage("§7(§cSystem§7) §8» §cCe membre n'a pas de compte.");
620 }
621
622 public boolean getMute(UUID uuid) {
623 if (this.hasAccount(uuid)) {
624 try {
625 q = c.prepareStatement("SELECT muted FROM SqlUtilisateursBase WHERE uuid = ?");
626 q.setString(1, uuid.toString());
627 r = q.executeQuery();
628 boolean banned = false;
629 while (r.next()) {
630 banned = r.getBoolean("muted");
631 }
632 q.close();
633 return banned;
634 } catch (SQLException e) {
635 System.out.println("(SqlUtilisateursBase) getMute >> ERROR");
636 e.printStackTrace();
637 }
638 }
639 return false;
640 }
641
642 public String getMuteReason(UUID uuid) {
643 if (this.hasAccount(uuid)) {
644 try {
645 q = c.prepareStatement("SELECT mutereason FROM SqlUtilisateursBase WHERE uuid = ?");
646 q.setString(1, uuid.toString());
647 r = q.executeQuery();
648 String reason = "§4ERROR";
649 while (r.next()) {
650 reason = r.getString("mutereason");
651 }
652 q.close();
653 return reason;
654 } catch (SQLException e) {
655 System.out.println("(SqlUtilisateursBase) getMuteReason >> ERROR");
656 e.printStackTrace();
657 }
658 }
659 return "§4ERROR";
660 }
661
662 public Long getMuteEnd(UUID uuid) {
663 if (this.hasAccount(uuid)) {
664 try {
665 q = c.prepareStatement("SELECT muteend FROM SqlUtilisateursBase WHERE uuid = ?");
666 q.setString(1, uuid.toString());
667 r = q.executeQuery();
668 Long end = -2L;
669 while (r.next()) {
670 end = r.getLong("muteend");
671 }
672 q.close();
673 return end;
674 } catch (SQLException e) {
675 System.out.println("(SqlUtilisateursBase) getMuteEnd >> ERROR");
676 e.printStackTrace();
677 }
678 }
679 return -2L;
680 }
681
682 public boolean hasMute(UUID uuid) {
683 return this.hasAccount(uuid) && this.getMute(uuid);
684 }
685
686 public void mute(UUID uuid, String reason, long time, CommandSender sender) {
687 if (this.hasAccount(uuid)) {
688 if (!this.hasMute(uuid)) {
689 long e = 0L;
690 if (time == -1L) {
691 e = time;
692 } else if (time > 0L) {
693 long current = System.currentTimeMillis();
694 long millis = time * 1000L;
695 e = current + millis;
696 } else if (time < -1L) {
697 sender.sendMessage("§7(§cSystem§7) §8» §cVous ne pouvez pas définir le temps §f'Inférieurement à 0'");
698 return;
699 }
700 try {
701 q = c.prepareStatement("UPDATE SqlUtilisateursBase SET muted = ?, mutereason = ?, muteend = ? WHERE uuid = ?");
702 q.setBoolean(1, true);
703 q.setString(2, reason);
704 q.setLong(3, e);
705 q.setString(4, uuid.toString());
706 q.executeUpdate();
707 q.close();
708 Bukkit.getServer().broadcastMessage("§7(§cSystem§7) §8» §f'".concat(this.getPlayerName(uuid)).concat("' §cvient d'être muet pour §e'").concat(reason).concat("' §cpendant §a'").concat(this.getRemainingTimeBan(uuid)).concat("'§c."));
709 if (Bukkit.getServer().getPlayer(uuid) != null) {
710 if (Bukkit.getServer().getPlayer(uuid).isOnline()) {
711 t = Bukkit.getServer().getPlayer(uuid);
712 sb = new StringBuilder();
713 sb.append("§7§m--+-------------------------+---\n\n")
714 .append("§cSystem §8» §7Vous êtes muet.\n\n\n")
715 .append("§7§nInformation :\n\n")
716 .append("§7§oRaison §8» §e'").append(reason).append("§e'\n")
717 .append("§7§oTemps §8» §e'").append(this.getRemainingTimeMute(uuid)).append("§e'\n\n\n")
718 .append("§c§nINFO : §7§oVous ne pouvez plus parler dans le chat.\n\n")
719 .append("§7§m--+-------------------------+---");
720 t.sendMessage(sb.toString());
721 }
722 }
723 return;
724 } catch (SQLException ex) {
725 System.out.println("(SqlUtilisateursBase) mute >> ERROR");
726 ex.printStackTrace();
727 sender.sendMessage("§7(§cSystem§7) §8» §4ERREUR");
728 return;
729 }
730 } else {
731 sender.sendMessage("§7(§cSystem§7) §8» §cCe membre est déjà muet.");
732 return;
733 }
734 }
735 sender.sendMessage("§7(§cSystem§7) §8» §cCe membre n'a pas de compte.");
736 }
737
738 public void unMute(UUID uuid, CommandSender sender) {
739 if (this.hasAccount(uuid)) {
740 if (this.hasBan(uuid)) {
741 try {
742 q = c.prepareStatement("UPDATE SqlUtilisateursBase SET muted = ?, mutereason = ?, muteend = ? WHERE uuid = ?");
743 q.setBoolean(1, false);
744 q.setString(2, null);
745 q.setString(3, null);
746 q.setString(4, uuid.toString());
747 q.executeUpdate();
748 q.close();
749 } catch (SQLException e) {
750 System.out.println("SqlUtilisateursBase) unMute >> ERROR");
751 e.printStackTrace();
752 sender.sendMessage("§7(§cSystem§7) §8» §4ERREUR");
753 return;
754 }
755 }
756 }
757 sender.sendMessage("§7(§cSystem§7) §8» §cCe membre n'a pas de compte.");
758 }
759
760 public Date getCreated(UUID uuid) {
761 if (this.hasAccount(uuid)) {
762 try {
763 q = c.prepareStatement("SELECT created FROM SqlUtilisateursBase WHERE uuid = ?");
764 q.setString(1, uuid.toString());
765 r = q.executeQuery();
766 Date date = null;
767 while (r.next()) {
768 date = r.getDate("created");
769 }
770 r.close();
771 q.close();
772 return date;
773 } catch (SQLException e) {
774 System.out.println("(SqlUtilisateursBase) getCreated >> ERROR");
775 e.printStackTrace();
776 }
777 }
778 return null;
779 }
780
781 public String getIP(UUID uuid) {
782 if (this.hasAccount(uuid)) {
783 try {
784 q = c.prepareStatement("SELECT ip FROM SqlUtilisateursBase WHERE uuid = ?");
785 q.setString(1, uuid.toString());
786 r = q.executeQuery();
787 String ip = "§4ERROR";
788 while (r.next()) {
789 ip = r.getString("ip");
790 }
791 r.close();
792 q.close();
793 return ip;
794 } catch (SQLException e) {
795 System.out.println("(SqlUtilisateursBase) getIP >> ERROR");
796 e.printStackTrace();
797 }
798 }
799 return "§4ERROR";
800 }
801
802 public void setIP(UUID uuid) {
803 if (this.hasAccount(uuid)) {
804 String ip;
805 if (this.getRank(uuid).getPower() >= RanksList.PARTENAIRE.getPower()) {
806 ip = "Hidden";
807 } else {
808 ip = Bukkit.getServer().getPlayer(uuid).getAddress().getHostString();
809 }
810 try {
811 q = c.prepareStatement("UPDATE SqlUtilisateursBase SET ip = ? WHERE uuid = ?");
812 q.setString(1, ip);
813 q.setString(2, uuid.toString());
814 q.executeUpdate();
815 q.close();
816 } catch (SQLException e) {
817 System.out.println("(SqlUtilisateursBase) setIP >> ERROR");
818 e.printStackTrace();
819 }
820 }
821 }
822
823 public String getRemainingTimeRank(UUID uuid) {
824 if (this.hasAccount(uuid)) {
825 long e = this.getRankEnd(uuid);
826 if (e == -2L) {
827 return "§4ERROR";
828 } else if (e == -1L) {
829 return "§cPermanent";
830 }
831 long c = System.currentTimeMillis();
832 long m = e - c;
833 return this.remainingTime(m);
834 }
835 return "§4ERROR";
836 }
837
838 public String getRemainingTimeBan(UUID uuid) {
839 if (this.hasAccount(uuid)) {
840 long e = this.getBanEnd(uuid);
841 if (e == -2L) {
842 return "§4ERROR";
843 } else if (e == -1L) {
844 return "§cPermanent";
845 }
846 long c = System.currentTimeMillis();
847 long m = e - c;
848 return this.remainingTime(m);
849 }
850 return "§4ERROR";
851 }
852
853 public String getRemainingTimeMute(UUID uuid) {
854 if (this.hasAccount(uuid)) {
855 long e = this.getMuteEnd(uuid);
856 if (e == -2L) {
857 return "§4ERROR";
858 } else if (e == -1L) {
859 return "§cPermanent";
860 }
861 long c = System.currentTimeMillis();
862 long m = e - c;
863 return this.remainingTime(m);
864 }
865 return "§4ERROR";
866 }
867
868 private String remainingTime(long m) {
869 int s = 0, mi = 0, h = 0, d = 0, mo = 0;
870 while (m > 1000L) {
871 m -= 1000L;
872 s++;
873 }
874 while (s > 60) {
875 s -= 60;
876 mi++;
877 }
878 while (mi > 60) {
879 mi -= 60;
880 h++;
881 }
882 while (h > 24) {
883 h -= 24;
884 d++;
885 }
886 while (d > 29) {
887 d -= 29;
888 mo++;
889 }
890 StringBuilder r = new StringBuilder();
891 if (mo != 0) {
892 r.append(mo).append(" Mois ");
893 }
894 if (d != 0) {
895 r.append(d).append(" Jour(s) ");
896 }
897 if (h != 0) {
898 r.append(h).append(" Heure(s) ");
899 }
900 if (mi != 0) {
901 r.append(mi).append(" Minute(s) ");
902 }
903 if (s != 0) {
904 r.append(s).append(" Seconde(s)");
905 }
906 if (r.toString().isEmpty()) {
907 return "1 Seconde(s)";
908 }
909 return r.toString();
910 }
911}