get ban via player instead of share, including transitive

This commit is contained in:
Gjum
2021-10-26 17:27:38 +02:00
parent f79fa3c5b8
commit db56734c14
2 changed files with 22 additions and 12 deletions

View File

@@ -11,6 +11,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static com.programmerdan.minecraft.banstick.handler.BanHandler.getActivePlayerBanOrTransitive;
import static com.programmerdan.minecraft.banstick.handler.BanStickEventHandler.doKickWithCheckup;
/**
@@ -250,10 +251,9 @@ public final class BSShares {
// this happens after the player has already logged in
// if the player has been associated with a banned share, kick them
final List<BSBan> bans = BSBan.byShare(share, false);
if (!bans.isEmpty()) {
final BSBan ban = bans.get(0);
BSBan ban1 = getActivePlayerBanOrTransitive(share.getFirstPlayer().getUUID());
BSBan ban = ban1 != null ? ban1 : getActivePlayerBanOrTransitive(share.getSecondPlayer().getUUID());
if (ban != null) {
BanStick.getPlugin().info("New overlap between {0} and {1} resulting in at least one ban; kicking...", forPlayer.getName(), player.getName());
doKickWithCheckup(player.getUUID(), ban);
}

View File

@@ -336,27 +336,37 @@ public final class BanHandler {
/**
* Checks whether a player is banned.
*
* @param player The player UUID to check if banned.
* @param puuid The player UUID to check if banned.
* @return Returns true if the player is banned.
*/
public static boolean isPlayerBanned(final UUID player) {
final BSPlayer bsPlayer = BSPlayer.byUUID(player);
public static boolean isPlayerBanned(final UUID puuid) {
BSBan ban = getActivePlayerBanOrTransitive(puuid);
return ban != null;
}
/**
* Checks whether a player is banned, and returns the ban.
*
* @param puuid The player UUID to check if banned.
* @return Returns true if the player is banned.
*/
public static BSBan getActivePlayerBanOrTransitive(final UUID puuid) {
final BSPlayer bsPlayer = BSPlayer.byUUID(puuid);
if (bsPlayer == null) {
return false;
return null;
}
final BSBan bsBan = bsPlayer.getBan();
if (bsBan != null && !bsBan.hasBanExpired()) {
return true;
return bsBan;
}
if (BanStick.getPlugin().getEventHandler().areTransitiveBansEnabled()) {
for (final BSPlayer alt : bsPlayer.getTransitiveSharedPlayers(true)) {
final BSBan bsAltBan = alt.getBan();
if (bsAltBan != null && !bsAltBan.hasBanExpired()) {
return true;
return bsAltBan;
}
}
}
return false;
return null;
}
}