diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java index d84c5a92a..722a5f0b9 100644 --- a/Essentials/src/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/com/earth2me/essentials/ISettings.java @@ -3,6 +3,7 @@ package com.earth2me.essentials; import com.earth2me.essentials.commands.IEssentialsCommand; import com.earth2me.essentials.signs.EssentialsSign; import com.earth2me.essentials.textreader.IText; + import org.bukkit.ChatColor; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.event.EventPriority; @@ -242,8 +243,10 @@ public interface ISettings extends IConf { boolean isMilkBucketEasterEggEnabled(); boolean isSendFlyEnableOnJoin(); - + boolean isWorldTimePermissions(); - + + boolean isSpawnOnJoin(); + NumberFormat getCurrencyFormat(); } diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index 94532c27d..555a65d46 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -1176,12 +1176,17 @@ public class Settings implements net.ess3.api.ISettings { public boolean isWorldTimePermissions() { return config.getBoolean("world-time-permissions", false); } - + + @Override + public boolean isSpawnOnJoin() { + return config.getBoolean("spawn-on-join", false); + } + private NumberFormat currencyFormat; private NumberFormat _getCurrencyFormat() { String currencyFormatString = config.getString("currency-format", "#,##0.00"); - + String symbolLocaleString = config.getString("currency-symbol-format-locale"); DecimalFormatSymbols decimalFormatSymbols; if (symbolLocaleString != null) { @@ -1193,7 +1198,7 @@ public class Settings implements net.ess3.api.ISettings { DecimalFormat currencyFormat = new DecimalFormat(currencyFormatString, decimalFormatSymbols); currencyFormat.setRoundingMode(RoundingMode.FLOOR); - + // Updates NumberUtil#PRETTY_FORMAT field so that all of Essentials // can follow a single format. try { diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index e6af2ee0c..6896dfd0f 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -814,4 +814,7 @@ respawn-listener-priority: high # When users die, should they respawn at their first home or bed, instead of the spawnpoint? respawn-at-home: false +# Teleport all joining players to the spawnpoint +spawn-on-join: false + # End of file <-- No seriously, you're done with configuration. diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java index 7553f095d..db929674a 100644 --- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java +++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java @@ -68,9 +68,27 @@ public class EssentialsSpawnPlayerListener implements Listener { }); } - public void delayedJoin(Player player) { + public void delayedJoin(final Player player) { if (player.hasPlayedBefore()) { LOGGER.log(Level.FINE, "Old player join"); + + if (ess.getSettings().isSpawnOnJoin()) { + final User user = ess.getUser(player); + if (!user.isAuthorized("essentials.spawn-on-join.exempt")) { + ess.scheduleSyncDelayedTask(new Runnable() { + @Override + public void run() { + Location spawn = spawns.getSpawn(user.getGroup()); + try { + user.getTeleport().now(spawn, false, TeleportCause.PLUGIN); + } catch (Exception e) { + ess.showError(user.getSource(), e, "spawn-on-join"); + } + } + }); + } + } + return; } diff --git a/EssentialsSpawn/src/plugin.yml b/EssentialsSpawn/src/plugin.yml index 7e9bf3b26..79d37e669 100644 --- a/EssentialsSpawn/src/plugin.yml +++ b/EssentialsSpawn/src/plugin.yml @@ -15,4 +15,8 @@ commands: spawn: description: Teleport to the spawnpoint. usage: / [player] - aliases: [espawn] \ No newline at end of file + aliases: [espawn] +permissions: + essentials.spawn-on-join.exempt: + default: false + description: "Bypass spawn teleportation on join when spawn-on-join is true."