diff options
Diffstat (limited to 'EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java')
-rw-r--r-- | EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java index a345b3f30..08bb4d739 100644 --- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java +++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java @@ -29,13 +29,16 @@ public class EssentialsSpawnPlayerListener extends PlayerListener public void onPlayerRespawn(final PlayerRespawnEvent event) { final IUser user = ess.getUser(event.getPlayer()); - + boolean respawnAtHome = false; - ISettings settings = ess.getSettings(); + final ISettings settings = ess.getSettings(); settings.acquireReadLock(); - try { + try + { respawnAtHome = ess.getSettings().getData().getCommands().getHome().isRespawnAtHome(); - } finally { + } + finally + { settings.unlock(); } if (respawnAtHome) @@ -62,24 +65,15 @@ public class EssentialsSpawnPlayerListener extends PlayerListener public void onPlayerJoin(final PlayerJoinEvent event) { final IUser user = ess.getUser(event.getPlayer()); - user.acquireReadLock(); - try - { - if (!user.getData().isNewplayer() || user.getBedSpawnLocation() != null) - { - return; - } - user.acquireWriteLock(); - user.getData().setNewplayer(false); - } - finally + if (user.hasPlayedBefore()) { - user.unlock(); + return; } + if (spawns.getNewbieSpawn() != null) { - ess.scheduleSyncDelayedTask(new NewPlayerTeleport(user)); + ess.scheduleSyncDelayedTask(new NewPlayerTeleport(user), 1L); } if (spawns.getAnnounceNewPlayers()) @@ -103,7 +97,7 @@ public class EssentialsSpawnPlayerListener extends PlayerListener { try { - Location spawn = spawns.getNewbieSpawn(); + final Location spawn = spawns.getNewbieSpawn(); if (spawn != null) { user.getTeleport().now(spawn, false, TeleportCause.PLUGIN); |