From 1c37c758d9c263af9ecb339cf1c7768762d078e8 Mon Sep 17 00:00:00 2001 From: AlexTheCoder Date: Sat, 2 Sep 2017 01:36:17 -0400 Subject: [PATCH] Tidy up clans banning system --- .../core/punish/clans/ClansBanClient.java | 25 +++++++++++++++++++ .../core/punish/clans/ClansBanManager.java | 16 +++++++----- .../core/punish/clans/ClansBanRepository.java | 13 ++++++++-- .../core/punish/clans/ui/ClansBanPage.java | 9 +++---- .../mineplex/clanshub/ClansServerPage.java | 12 ++++----- 5 files changed, 55 insertions(+), 20 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ClansBanClient.java b/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ClansBanClient.java index 6710f4dd0..7e38a4eed 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ClansBanClient.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ClansBanClient.java @@ -18,6 +18,7 @@ public class ClansBanClient { _uuid = uuid; _bans = bans; + sortBans(); } public boolean isBanned() @@ -87,4 +88,28 @@ public class ClansBanClient return longest; } + + public void sortBans() + { + _bans.sort((b1, b2) -> + { + if (b1.isActive() && !b2.isActive()) + { + return -1; + } + if (b2.isActive() && !b1.isActive()) + { + return 1; + } + if ((b1.isActive() && b1.isPermanent()) && !(b2.isActive() && b2.isPermanent())) + { + return -1; + } + if ((b2.isActive() && b2.isPermanent()) && !(b1.isActive() && b1.isPermanent())) + { + return 1; + } + return b1.getBanTime().compareTo(b2.getBanTime()); + }); + } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ClansBanManager.java b/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ClansBanManager.java index af4fe7d4d..4dfdc198b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ClansBanManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ClansBanManager.java @@ -108,6 +108,7 @@ public class ClansBanManager extends MiniPlugin if (ban.isPresent()) { target._bans.add(ban.get()); + target.sortBans(); String banTimeFormatted = target.getBanTimeFormatted(); if (targetName != null) @@ -147,13 +148,16 @@ public class ClansBanManager extends MiniPlugin return; } - ban.remove(admin, reason); - _repository.removeBan(ban, admin, reason); - - if (callback != null) + _repository.removeBan(ban, admin, reason, () -> { - callback.run(); - } + ban.remove(admin, reason); + target.sortBans(); + + if (callback != null) + { + callback.run(); + } + }); } @EventHandler(priority = EventPriority.HIGHEST) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ClansBanRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ClansBanRepository.java index eb4c84c5b..5f8680bd8 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ClansBanRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ClansBanRepository.java @@ -15,6 +15,7 @@ import org.bukkit.plugin.java.JavaPlugin; import mineplex.core.Managers; import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.UtilServer; import mineplex.serverdata.database.DBPool; import mineplex.serverdata.database.RepositoryBase; import mineplex.serverdata.database.column.ColumnInt; @@ -128,8 +129,16 @@ public class ClansBanRepository extends RepositoryBase }); } - public void removeBan(ClansBan ban, String admin, String reason) + public void removeBan(ClansBan ban, String admin, String reason, Runnable onComplete) { - executeUpdate(REMOVE_BAN, new ColumnVarChar("removeAdmin", admin.length(), admin), new ColumnVarChar("removeReason", reason.length(), reason), new ColumnInt("id", ban.getId())); + UtilServer.runAsync(() -> + { + executeUpdate(REMOVE_BAN, new ColumnVarChar("removeAdmin", admin.length(), admin), new ColumnVarChar("removeReason", reason.length(), reason), new ColumnInt("id", ban.getId())); + + if (onComplete != null) + { + UtilServer.runSync(onComplete); + } + }); } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ui/ClansBanPage.java b/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ui/ClansBanPage.java index 55bd6a898..c54ccaeee 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ui/ClansBanPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/punish/clans/ui/ClansBanPage.java @@ -127,13 +127,10 @@ public class ClansBanPage extends ShopPageBase { if (ban.isActive()) { - getPlugin().runAsync(() -> + getPlugin().unban(_victimClient, ban, getPlayer().getName(), _reason, () -> { - getPlugin().unban(_victimClient, ban, getPlayer().getName(), _reason, () -> - { - refresh(); - playAcceptSound(player); - }); + refresh(); + playAcceptSound(player); }); } }); diff --git a/Plugins/Mineplex.Hub.Clans/src/mineplex/clanshub/ClansServerPage.java b/Plugins/Mineplex.Hub.Clans/src/mineplex/clanshub/ClansServerPage.java index 97ed554d6..887b41520 100644 --- a/Plugins/Mineplex.Hub.Clans/src/mineplex/clanshub/ClansServerPage.java +++ b/Plugins/Mineplex.Hub.Clans/src/mineplex/clanshub/ClansServerPage.java @@ -82,8 +82,8 @@ public class ClansServerPage extends ShopPageBase