* What we also do here is passing Action to PriorityTimer that is the @@ -596,7 +596,9 @@ public class GameController implements GameCallback { if (gameSession != null) { UUID requestingPlayerId = getPlayerId(userIdRequester); if (requestingPlayerId == null || !requestingPlayerId.equals(grantingPlayer.getId())) { // don't allow request for your own cards - if (grantingPlayer.isRequestToShowHandCardsAllowed()) { + if (grantingPlayer.isPlayerAllowedToRequestHand(game.getId(), requestingPlayerId)) { + // one time request per user restrict, enable request will reset users list and allows again + grantingPlayer.addPlayerToRequestedHandList(game.getId(), requestingPlayerId); gameSession.requestPermissionToSeeHandCards(userIdRequester); } else { // player does not allow the request diff --git a/Mage.Server/src/main/java/mage/server/game/GameManager.java b/Mage.Server/src/main/java/mage/server/game/GameManager.java index 15884f453cc..f2650901492 100644 --- a/Mage.Server/src/main/java/mage/server/game/GameManager.java +++ b/Mage.Server/src/main/java/mage/server/game/GameManager.java @@ -12,6 +12,7 @@ import java.util.Map; import java.util.Optional; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -22,7 +23,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock; public enum GameManager { instance; - private final ConcurrentHashMap