diff options
author | KHobbits <rob@khobbits.co.uk> | 2012-12-09 17:14:57 +0000 |
---|---|---|
committer | KHobbits <rob@khobbits.co.uk> | 2012-12-09 17:14:57 +0000 |
commit | 0b95a691a6e61d3cb52cc030729a037760d5cd88 (patch) | |
tree | 8c619eee352057bb073788bd7ee98b94105b42e1 /EssentialsSpawn | |
parent | eba2bad1136fc8c7d76aa0bee9909040903956e2 (diff) | |
download | Essentials-0b95a691a6e61d3cb52cc030729a037760d5cd88.tar Essentials-0b95a691a6e61d3cb52cc030729a037760d5cd88.tar.gz Essentials-0b95a691a6e61d3cb52cc030729a037760d5cd88.tar.lz Essentials-0b95a691a6e61d3cb52cc030729a037760d5cd88.tar.xz Essentials-0b95a691a6e61d3cb52cc030729a037760d5cd88.zip |
Revert "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."
This reverts commit f7daa20be83be4148069bcb2aa4c0a53f674c832.
This breaks compatibility with multiverse, and Essentials core.
Diffstat (limited to 'EssentialsSpawn')
-rw-r--r-- | EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java | 60 |
1 files changed, 47 insertions, 13 deletions
diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java index 259b9b501..6fdd4a6a5 100644 --- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java +++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java @@ -3,6 +3,7 @@ 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; @@ -71,7 +72,18 @@ public class EssentialsSpawnPlayerListener implements Listener public void onPlayerJoin(final PlayerJoinEvent event) { - Player player = event.getPlayer(); + ess.scheduleAsyncDelayedTask(new Runnable() + { + @Override + public void run() + { + delayedJoin(event.getPlayer()); + } + }); + } + + public void delayedJoin(Player player) + { if (player.hasPlayedBefore()) { LOGGER.log(Level.FINE, "Old player join"); @@ -82,18 +94,7 @@ public class EssentialsSpawnPlayerListener implements Listener if (!"none".equalsIgnoreCase(ess.getSettings().getNewbieSpawn())) { - 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); - } + ess.scheduleSyncDelayedTask(new NewPlayerTeleport(user), 1L); } //This method allows for multiple line player announce messages using multiline yaml syntax #EasterEgg @@ -125,4 +126,37 @@ 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); + } + } + } } |