From db56734c1487706c4c8f005f93533673efceaa96 Mon Sep 17 00:00:00 2001 From: Gjum Date: Tue, 26 Oct 2021 17:27:38 +0200 Subject: [PATCH] get ban via player instead of share, including transitive --- .../minecraft/banstick/data/BSShares.java | 8 +++--- .../banstick/handler/BanHandler.java | 26 +++++++++++++------ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/plugins/banstick-paper/src/main/java/com/programmerdan/minecraft/banstick/data/BSShares.java b/plugins/banstick-paper/src/main/java/com/programmerdan/minecraft/banstick/data/BSShares.java index 37989084e..47fc4f9a1 100644 --- a/plugins/banstick-paper/src/main/java/com/programmerdan/minecraft/banstick/data/BSShares.java +++ b/plugins/banstick-paper/src/main/java/com/programmerdan/minecraft/banstick/data/BSShares.java @@ -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 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); } diff --git a/plugins/banstick-paper/src/main/java/com/programmerdan/minecraft/banstick/handler/BanHandler.java b/plugins/banstick-paper/src/main/java/com/programmerdan/minecraft/banstick/handler/BanHandler.java index 0046b207c..f6a851fef 100644 --- a/plugins/banstick-paper/src/main/java/com/programmerdan/minecraft/banstick/handler/BanHandler.java +++ b/plugins/banstick-paper/src/main/java/com/programmerdan/minecraft/banstick/handler/BanHandler.java @@ -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; } - }