summaryrefslogtreecommitdiffstats
path: root/EssentialsSpawn
diff options
context:
space:
mode:
authorKHobbits <rob@khobbits.co.uk>2012-12-09 17:14:57 +0000
committerKHobbits <rob@khobbits.co.uk>2012-12-09 17:14:57 +0000
commit0b95a691a6e61d3cb52cc030729a037760d5cd88 (patch)
tree8c619eee352057bb073788bd7ee98b94105b42e1 /EssentialsSpawn
parenteba2bad1136fc8c7d76aa0bee9909040903956e2 (diff)
downloadEssentials-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.java60
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);
+ }
+ }
+ }
}