Tidy up clans banning system

This commit is contained in:
AlexTheCoder 2017-09-02 01:36:17 -04:00
parent e76c9e55d2
commit 1c37c758d9
5 changed files with 55 additions and 20 deletions

View File

@ -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());
});
}
}

View File

@ -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)

View File

@ -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);
}
});
}
}

View File

@ -127,13 +127,10 @@ public class ClansBanPage extends ShopPageBase<ClansBanManager, ClansBanShop>
{
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);
});
}
});

View File

@ -82,8 +82,8 @@ public class ClansServerPage extends ShopPageBase<ClansTransferManager, ClansSer
{
try
{
Integer server1;
Integer server2;
int server1;
int server2;
if (o1.Name.contains("-"))
{
server1 = Integer.parseInt(o1.Name.substring(o1.Name.lastIndexOf('-') + 1));
@ -101,7 +101,7 @@ public class ClansServerPage extends ShopPageBase<ClansTransferManager, ClansSer
server2 = Integer.parseInt(o2.Name);
}
return server1.compareTo(server2);
return Integer.compare(server1, server2);
}
catch (NumberFormatException ex)
{
@ -184,8 +184,8 @@ public class ClansServerPage extends ShopPageBase<ClansTransferManager, ClansSer
{
try
{
Integer server1;
Integer server2;
int server1;
int server2;
if (o1.Name.contains("-"))
{
server1 = Integer.parseInt(o1.Name.substring(o1.Name.lastIndexOf('-') + 1));
@ -203,7 +203,7 @@ public class ClansServerPage extends ShopPageBase<ClansTransferManager, ClansSer
server2 = Integer.parseInt(o2.Name);
}
return server1.compareTo(server2);
return Integer.compare(server1, server2);
}
catch (NumberFormatException ex)
{