summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsnowleo <schneeleo@gmail.com>2011-11-26 22:30:40 +0100
committersnowleo <schneeleo@gmail.com>2011-11-26 22:30:40 +0100
commitb21b7b7e155a45227f9c629d51ee50ecbed1ca73 (patch)
treee1d56ae72dfe7654f2cbabc017432ee7633e40bc
parentf9d14697b6aaa62df4ee63fdafa2660e487402eb (diff)
downloadEssentials-b21b7b7e155a45227f9c629d51ee50ecbed1ca73.tar
Essentials-b21b7b7e155a45227f9c629d51ee50ecbed1ca73.tar.gz
Essentials-b21b7b7e155a45227f9c629d51ee50ecbed1ca73.tar.lz
Essentials-b21b7b7e155a45227f9c629d51ee50ecbed1ca73.tar.xz
Essentials-b21b7b7e155a45227f9c629d51ee50ecbed1ca73.zip
New behavior of the /home command and beds
- The behavior has been altered to match the vanilla server. - Using a bed will no longer create a home in the users file, if config option bed-sethome is set - The config option bed-sethome has been removed - It's now possible to go to /home bed or /home playername:bed - Bed locations stored before installing Essentials will be used - Players respawn at their bed location (if set) instead of the spawn, if respawn-at-home is set to false - The default value of spawn-if-no-home is set to true - If spawn-if-no-home is set and the player has not set a home, he will be either teleported to his bed location (if set) or the spawn, when he uses the /home command
-rw-r--r--Essentials/src/com/earth2me/essentials/Essentials.java1
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java40
-rw-r--r--Essentials/src/com/earth2me/essentials/ISettings.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/Settings.java6
-rw-r--r--Essentials/src/com/earth2me/essentials/UserData.java29
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandhome.java24
-rw-r--r--Essentials/src/config.yml10
-rw-r--r--Essentials/test/com/earth2me/essentials/UserTest.java22
-rw-r--r--EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java29
9 files changed, 70 insertions, 93 deletions
diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java
index 7c728b0b4..5ede55fc5 100644
--- a/Essentials/src/com/earth2me/essentials/Essentials.java
+++ b/Essentials/src/com/earth2me/essentials/Essentials.java
@@ -178,7 +178,6 @@ public class Essentials extends JavaPlugin implements IEssentials
pm.registerEvent(Type.PLAYER_MOVE, playerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_LOGIN, playerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_TELEPORT, playerListener, Priority.High, this);
- pm.registerEvent(Type.PLAYER_INTERACT, playerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_EGG_THROW, playerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_BUCKET_EMPTY, playerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_ANIMATION, playerListener, Priority.High, this);
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
index c6cbfe232..f92f9d808 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
@@ -231,12 +231,12 @@ public class EssentialsPlayerListener extends PlayerListener
private void updateCompass(final User user)
{
- try
- {
- user.setCompassTarget(user.getHome(user.getLocation()));
+ Location loc = user.getHome(user.getLocation());
+ if (loc == null) {
+ loc = user.getBedSpawnLocation();
}
- catch (Exception ex)
- {
+ if (loc != null) {
+ user.setCompassTarget(loc);
}
}
@@ -256,32 +256,6 @@ public class EssentialsPlayerListener extends PlayerListener
}
@Override
- public void onPlayerInteract(final PlayerInteractEvent event)
- {
- if (event.isCancelled())
- {
- return;
- }
- if (event.getAction() != Action.RIGHT_CLICK_BLOCK)
- {
- return;
- }
-
- if (ess.getSettings().getBedSetsHome() && event.getClickedBlock().getType() == Material.BED_BLOCK)
- {
- try
- {
- final User user = ess.getUser(event.getPlayer());
- user.setHome();
- user.sendMessage(_("homeSetToBed"));
- }
- catch (Throwable ex)
- {
- }
- }
- }
-
- @Override
public void onPlayerEggThrow(final PlayerEggThrowEvent event)
{
final User user = ess.getUser(event.getPlayer());
@@ -387,7 +361,7 @@ public class EssentialsPlayerListener extends PlayerListener
}
@Override
- public void onPlayerChangedWorld(PlayerChangedWorldEvent event)
+ public void onPlayerChangedWorld(final PlayerChangedWorldEvent event)
{
if (ess.getSettings().getNoGodWorlds().contains(event.getPlayer().getLocation().getWorld().getName())) {
User user = ess.getUser(event.getPlayer());
@@ -395,5 +369,5 @@ public class EssentialsPlayerListener extends PlayerListener
user.sendMessage(_("noGodWorldWarning"));
}
}
- }
+ }
}
diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java
index 7891190dc..e7ce92a55 100644
--- a/Essentials/src/com/earth2me/essentials/ISettings.java
+++ b/Essentials/src/com/earth2me/essentials/ISettings.java
@@ -21,8 +21,6 @@ public interface ISettings extends IConf
long getBackupInterval();
- boolean getBedSetsHome();
-
String getChatFormat(String group);
int getChatRadius();
diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java
index 47a102326..ab5b0a364 100644
--- a/Essentials/src/com/earth2me/essentials/Settings.java
+++ b/Essentials/src/com/earth2me/essentials/Settings.java
@@ -37,12 +37,6 @@ public class Settings implements ISettings
}
@Override
- public boolean getBedSetsHome()
- {
- return config.getBoolean("bed-sethome", false);
- }
-
- @Override
public List<String> getMultipleHomes()
{
return config.getKeys("sethome-multiple");
diff --git a/Essentials/src/com/earth2me/essentials/UserData.java b/Essentials/src/com/earth2me/essentials/UserData.java
index d9dad769d..9df1b0342 100644
--- a/Essentials/src/com/earth2me/essentials/UserData.java
+++ b/Essentials/src/com/earth2me/essentials/UserData.java
@@ -130,27 +130,32 @@ public abstract class UserData extends PlayerExtension implements IConf
return loc;
}
- public Location getHome(Location world) throws Exception
+ public Location getHome(final Location world)
{
- Location loc;
- for (String home : getHomes())
+ try
{
- loc = config.getLocation("homes." + home, getServer());
- if (world.getWorld() == loc.getWorld())
+ Location loc;
+ for (String home : getHomes())
{
- return loc;
- }
+ loc = config.getLocation("homes." + home, getServer());
+ if (world.getWorld() == loc.getWorld())
+ {
+ return loc;
+ }
+ }
+ loc = config.getLocation("homes." + getHomes().get(0), getServer());
+ return loc;
+ }
+ catch (Exception ex)
+ {
+ return null;
}
- loc = config.getLocation("homes." + getHomes().get(0), getServer());
- return loc;
}
public List<String> getHomes()
{
- List<String> list = new ArrayList(homes.keySet());
- return list;
-
+ return new ArrayList(homes.keySet());
}
public void setHome(String name, Location loc)
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandhome.java b/Essentials/src/com/earth2me/essentials/commands/Commandhome.java
index 5478ab986..090cebd4c 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandhome.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandhome.java
@@ -6,6 +6,7 @@ import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.List;
import java.util.Locale;
+import org.bukkit.Location;
import org.bukkit.Server;
@@ -42,14 +43,32 @@ public class Commandhome extends EssentialsCommand
}
try
{
+ if ("bed".equalsIgnoreCase(homeName)) {
+ final Location bed = player.getBedSpawnLocation();
+ if (bed != null)
+ {
+ user.getTeleport().teleport(bed, charge);
+ }
+ }
user.getTeleport().home(player, homeName.toLowerCase(Locale.ENGLISH), charge);
}
catch (NotEnoughArgumentsException e)
{
final List<String> homes = player.getHomes();
- if (homes.isEmpty() && player.equals(user) && ess.getSettings().spawnIfNoHome())
+ if (homes.isEmpty() && player.equals(user))
{
- user.getTeleport().respawn(ess.getSpawn(), charge);
+ final Location loc = player.getBedSpawnLocation();
+ if (loc == null)
+ {
+ if (ess.getSettings().spawnIfNoHome())
+ {
+ user.getTeleport().respawn(ess.getSpawn(), charge);
+ }
+ }
+ else
+ {
+ user.getTeleport().teleport(loc, charge);
+ }
}
else if (homes.isEmpty())
{
@@ -61,6 +80,7 @@ public class Commandhome extends EssentialsCommand
}
else
{
+ homes.add("bed");
user.sendMessage(_("homes", Util.joinList(homes)));
}
}
diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml
index cf39007e3..a68630f67 100644
--- a/Essentials/src/config.yml
+++ b/Essentials/src/config.yml
@@ -236,15 +236,11 @@ no-god-in-worlds:
# +------------------------------------------------------+ #
############################################################
-# When users die, should they respawn at their homes, instead of the spawnpoint?
+# When users die, should they respawn at their first home, instead of the spawnpoint or bed?
respawn-at-home: false
-# When a user interacts with a bed, should their home be set to that location?
-# If you enable this and remove default user access to the /sethome command, you can make beds the only way for players to set their home location.
-bed-sethome: false
-
-# If no home is set send you to spawn when /home is used
-spawn-if-no-home: false
+# If no home is set send you to bed or spawn when /home is used
+spawn-if-no-home: true
# Allow players to have multiple homes.
# Define different amounts of multiple homes for different permissions, e.g. essentials.sethome.multiple.vip
diff --git a/Essentials/test/com/earth2me/essentials/UserTest.java b/Essentials/test/com/earth2me/essentials/UserTest.java
index 35244ac90..ef9ab515d 100644
--- a/Essentials/test/com/earth2me/essentials/UserTest.java
+++ b/Essentials/test/com/earth2me/essentials/UserTest.java
@@ -54,21 +54,15 @@ public class UserTest extends TestCase
user.setHome();
OfflinePlayer base2 = server.createPlayer(base1.getName(), ess);
User user2 = ess.getUser(base2);
- try
- {
- Location home = user2.getHome(loc);
- assertEquals(loc.getWorld().getName(), home.getWorld().getName());
- assertEquals(loc.getX(), home.getX());
- assertEquals(loc.getY(), home.getY());
- assertEquals(loc.getZ(), home.getZ());
- assertEquals(loc.getYaw(), home.getYaw());
- assertEquals(loc.getPitch(), home.getPitch());
- }
- catch (Exception ex)
- {
- fail("Exception");
- }
+ Location home = user2.getHome(loc);
+ assertNotNull(home);
+ assertEquals(loc.getWorld().getName(), home.getWorld().getName());
+ assertEquals(loc.getX(), home.getX());
+ assertEquals(loc.getY(), home.getY());
+ assertEquals(loc.getZ(), home.getZ());
+ assertEquals(loc.getYaw(), home.getYaw());
+ assertEquals(loc.getPitch(), home.getPitch());
}
public void testMoney()
diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java
index a5d1efba9..57b842c82 100644
--- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java
+++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java
@@ -15,8 +15,9 @@ public class EssentialsSpawnPlayerListener extends PlayerListener
{
private final transient IEssentials ess;
- public EssentialsSpawnPlayerListener(IEssentials ess)
+ public EssentialsSpawnPlayerListener(final IEssentials ess)
{
+ super();
this.ess = ess;
}
@@ -25,28 +26,24 @@ public class EssentialsSpawnPlayerListener extends PlayerListener
{
final User user = ess.getUser(event.getPlayer());
- try
+ if (ess.getSettings().getRespawnAtHome())
{
- if (ess.getSettings().getRespawnAtHome())
+ Location home = user.getHome(user.getLocation());
+ if (home == null)
+ {
+ home = user.getBedSpawnLocation();
+ }
+ if (home != null)
{
- Location home = user.getHome(user.getLocation());
- if (home == null)
- {
- throw new Exception();
- }
event.setRespawnLocation(home);
return;
}
}
- catch (Throwable ex)
+ final Location spawn = ess.getSpawn().getSpawn(user.getGroup());
+ if (spawn != null)
{
+ event.setRespawnLocation(spawn);
}
- Location spawn = ess.getSpawn().getSpawn(user.getGroup());
- if (spawn == null)
- {
- return;
- }
- event.setRespawnLocation(spawn);
}
@Override
@@ -54,7 +51,7 @@ public class EssentialsSpawnPlayerListener extends PlayerListener
{
final User user = ess.getUser(event.getPlayer());
- if (!user.isNew())
+ if (!user.isNew() || user.getBedSpawnLocation() != null)
{
return;
}