From 9f48cd6d0b4d7a0fffcf48be5a45190d82e57861 Mon Sep 17 00:00:00 2001 From: graywolf336 Date: Fri, 15 Aug 2014 08:36:54 -0500 Subject: [PATCH] Kick players on the main thread, in a sync task. Closes #32 --- src/main/java/com/graywolf336/jail/JailTimer.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/graywolf336/jail/JailTimer.java b/src/main/java/com/graywolf336/jail/JailTimer.java index 5375aa6..a4fc64c 100644 --- a/src/main/java/com/graywolf336/jail/JailTimer.java +++ b/src/main/java/com/graywolf336/jail/JailTimer.java @@ -74,7 +74,7 @@ public class JailTimer { //only execute this code if the prisoner's time is more than 0 milliseconds //and they don't have any offline pending things if(p.getRemainingTime() > 0 && !p.isOfflinePending()) { - Player player = pl.getServer().getPlayer(p.getUUID()); + final Player player = pl.getServer().getPlayer(p.getUUID()); //Check if the player is offline if(player == null) { @@ -90,7 +90,14 @@ public class JailTimer { p.setAFKTime(p.getAFKTime() + timePassed); if(p.getAFKTime() > afkTime) { p.setAFKTime(0); - player.kickPlayer(Lang.AFKKICKMESSAGE.get()); + //This is so we kick players on the main thread + //instead of on the async thread(s), as spigot + //has a protection against this enabled. + pl.getServer().getScheduler().scheduleSyncDelayedTask(pl, new Runnable() { + public void run() { + player.kickPlayer(Lang.AFKKICKMESSAGE.get()); + } + }); } }