diff --git a/src/main/java/de/viper/survivalplus/Manager/BlockManager.java b/src/main/java/de/viper/survivalplus/Manager/BlockManager.java new file mode 100644 index 0000000..46151db --- /dev/null +++ b/src/main/java/de/viper/survivalplus/Manager/BlockManager.java @@ -0,0 +1,37 @@ +package de.viper.survivalplus.Manager; + +import java.util.*; + +import org.bukkit.entity.Player; + +public class BlockManager { + + private final Map> blockedPlayers = new HashMap<>(); + + public void blockPlayer(Player blocker, Player toBlock) { + blockedPlayers.computeIfAbsent(blocker.getUniqueId(), k -> new HashSet<>()).add(toBlock.getUniqueId()); + } + + public void unblockPlayer(Player blocker, Player toUnblock) { + Set blocked = blockedPlayers.get(blocker.getUniqueId()); + if (blocked != null) { + blocked.remove(toUnblock.getUniqueId()); + if (blocked.isEmpty()) { + blockedPlayers.remove(blocker.getUniqueId()); + } + } + } + + public boolean hasBlocked(Player blocker, Player potentialBlocked) { + return blockedPlayers.getOrDefault(blocker.getUniqueId(), Collections.emptySet()) + .contains(potentialBlocked.getUniqueId()); + } + + public Set getBlockedPlayers(Player player) { + return blockedPlayers.getOrDefault(player.getUniqueId(), Collections.emptySet()); + } + + public void clear(Player player) { + blockedPlayers.remove(player.getUniqueId()); + } +}