summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinenash <minenash@protonmail.com>2019-01-05 01:19:13 -0500
committerMinenash <minenash@protonmail.com>2019-01-05 01:19:13 -0500
commita45fd051db87279c7c3d04a23e891077bab4b8ac (patch)
treea2882236d346a13fd46607ba7e3d5fccaaa9c23e
parent1f0ea14a52b6e36bbe1b46a5898b0f3934a1e421 (diff)
Made it so tpa request from a player are purged when they quit the game
-rw-r--r--src/main/java/com/redstoner/modules/teleport/Teleport.java41
1 files changed, 40 insertions, 1 deletions
diff --git a/src/main/java/com/redstoner/modules/teleport/Teleport.java b/src/main/java/com/redstoner/modules/teleport/Teleport.java
index 8eb4b76..b43d820 100644
--- a/src/main/java/com/redstoner/modules/teleport/Teleport.java
+++ b/src/main/java/com/redstoner/modules/teleport/Teleport.java
@@ -8,9 +8,13 @@ import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import com.nemez.cmdmgr.Command;
+import com.redstoner.annotations.AutoRegisterListener;
import com.redstoner.annotations.Commands;
import com.redstoner.annotations.Version;
import com.redstoner.misc.CommandHolderType;
@@ -20,8 +24,9 @@ import com.redstoner.modules.datamanager.DataManager;
import net.nemez.chatapi.ChatAPI;
@Commands(CommandHolderType.File)
+@AutoRegisterListener
@Version(major = 5, minor = 0, revision = 0, compatible = 4)
-public class Teleport implements Module
+public class Teleport implements Module, Listener
{
public static final String PERMISSION_TELEPORT = "utils.teleport.tp";
public static final String PERMISSION_TELEPORT_OTHER = "utils.teleport.tp.other";
@@ -447,5 +452,39 @@ public class Teleport implements Module
else
pending_requests.put(from, m);
}
+
+ @EventHandler
+ public void onPlayerQuit(PlayerQuitEvent event) {
+ Player p = event.getPlayer();
+
+ pending_requests.remove(p);
+ last_request.remove(p);
+ last_request_got.remove(p);
+
+ for (Player fl : pending_requests.keySet()) {
+ Map<Player, TPAType> m = pending_requests.get(fl);
+ m.remove(p);
+ if (m.isEmpty())
+ pending_requests.remove(fl);
+ else
+ pending_requests.put(fl, m);
+ }
+ for (Player fl : last_request.keySet()) {
+ Stack<Player> s = last_request.get(fl);
+ s.remove(p);
+ if (s.isEmpty())
+ last_request.remove(fl);
+ else
+ last_request.put(fl, s);
+ }
+ for (Player fl : last_request_got.keySet()) {
+ Stack<Player> s = last_request_got.get(fl);
+ s.remove(p);
+ if (s.isEmpty())
+ last_request_got.remove(fl);
+ else
+ last_request_got.put(fl, s);
+ }
+ }
}