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 f7daa20be8.

This breaks compatibility with multiverse, and Essentials core.
This commit is contained in:
KHobbits 2012-12-09 17:14:57 +00:00
parent eba2bad113
commit 0b95a691a6
1 changed files with 47 additions and 13 deletions

View File

@ -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);
}
}
}
}