diff options
author | Minenash <minenash@protonmail.com> | 2019-01-07 21:05:14 -0500 |
---|---|---|
committer | Minenash <minenash@protonmail.com> | 2019-01-07 21:05:14 -0500 |
commit | 857dfe32ca67cc0a41068ba4cbb0b69b060fb2f2 (patch) | |
tree | c1629021f49223bb0cb0911c668a5b576f7a36a1 | |
parent | fb9fb0af382cb69818d61d3b87acc668cf774fd4 (diff) |
[Teleport] Fixed exceptions when a player quits
-rw-r--r-- | src/main/java/com/redstoner/modules/teleport/Teleport.java | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/main/java/com/redstoner/modules/teleport/Teleport.java b/src/main/java/com/redstoner/modules/teleport/Teleport.java index b43d820..7475fcc 100644 --- a/src/main/java/com/redstoner/modules/teleport/Teleport.java +++ b/src/main/java/com/redstoner/modules/teleport/Teleport.java @@ -1,6 +1,7 @@ package com.redstoner.modules.teleport; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; import java.util.Stack; @@ -461,27 +462,35 @@ public class Teleport implements Module, Listener last_request.remove(p); last_request_got.remove(p); - for (Player fl : pending_requests.keySet()) { + Iterator<Player> pr_iterator = pending_requests.keySet().iterator(); + while (pr_iterator.hasNext()) { + Player fl = pr_iterator.next(); Map<Player, TPAType> m = pending_requests.get(fl); m.remove(p); if (m.isEmpty()) - pending_requests.remove(fl); + pr_iterator.remove(); else pending_requests.put(fl, m); } - for (Player fl : last_request.keySet()) { + + Iterator<Player> lr_iterator = last_request.keySet().iterator(); + while (lr_iterator.hasNext()) { + Player fl = lr_iterator.next(); Stack<Player> s = last_request.get(fl); s.remove(p); if (s.isEmpty()) - last_request.remove(fl); + lr_iterator.remove(); else last_request.put(fl, s); } - for (Player fl : last_request_got.keySet()) { + + Iterator<Player> lrg_iterator = last_request_got.keySet().iterator(); + while (lrg_iterator.hasNext()) { + Player fl = lrg_iterator.next(); Stack<Player> s = last_request_got.get(fl); s.remove(p); if (s.isEmpty()) - last_request_got.remove(fl); + lrg_iterator.remove(); else last_request_got.put(fl, s); } |