From f7daa20be83be4148069bcb2aa4c0a53f674c832 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 9 Dec 2012 16:03:00 +1100 Subject: Bukkit should have fixed this issue, so we can now get a better first join player experience by teleporting them at once with no delay. --- .../spawn/EssentialsSpawnPlayerListener.java | 60 +++++----------------- 1 file changed, 13 insertions(+), 47 deletions(-) diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java index 6fdd4a6a5..259b9b501 100644 --- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java +++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java @@ -3,7 +3,6 @@ package com.earth2me.essentials.spawn; import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.IEssentials; import com.earth2me.essentials.Kit; -import com.earth2me.essentials.OfflinePlayer; import com.earth2me.essentials.User; import com.earth2me.essentials.textreader.IText; import com.earth2me.essentials.textreader.KeywordReplacer; @@ -72,18 +71,7 @@ public class EssentialsSpawnPlayerListener implements Listener public void onPlayerJoin(final PlayerJoinEvent event) { - ess.scheduleAsyncDelayedTask(new Runnable() - { - @Override - public void run() - { - delayedJoin(event.getPlayer()); - } - }); - } - - public void delayedJoin(Player player) - { + Player player = event.getPlayer(); if (player.hasPlayedBefore()) { LOGGER.log(Level.FINE, "Old player join"); @@ -94,7 +82,18 @@ public class EssentialsSpawnPlayerListener implements Listener if (!"none".equalsIgnoreCase(ess.getSettings().getNewbieSpawn())) { - ess.scheduleSyncDelayedTask(new NewPlayerTeleport(user), 1L); + try + { + final Location spawn = spawns.getSpawn(ess.getSettings().getNewbieSpawn()); + if (spawn != null) + { + user.getTeleport().now(spawn, false, TeleportCause.PLUGIN); + } + } + catch (Exception ex) + { + Bukkit.getLogger().log(Level.WARNING, _("teleportNewPlayerError"), ex); + } } //This method allows for multiple line player announce messages using multiline yaml syntax #EasterEgg @@ -126,37 +125,4 @@ public class EssentialsSpawnPlayerListener implements Listener LOGGER.log(Level.FINE, "New player join"); } - - - private class NewPlayerTeleport implements Runnable - { - private final transient User user; - - public NewPlayerTeleport(final User user) - { - this.user = user; - } - - @Override - public void run() - { - if (user.getBase() instanceof OfflinePlayer) - { - return; - } - - try - { - final Location spawn = spawns.getSpawn(ess.getSettings().getNewbieSpawn()); - if (spawn != null) - { - user.getTeleport().now(spawn, false, TeleportCause.PLUGIN); - } - } - catch (Exception ex) - { - Bukkit.getLogger().log(Level.WARNING, _("teleportNewPlayerError"), ex); - } - } - } } -- cgit v1.2.3