Update home count to include the bed home if set, this does not prevent people from setting a bed home if they are at max.

This commit is contained in:
KHobbits 2012-05-07 00:05:02 +01:00
parent 78cd64c388
commit 9b731cc39c
2 changed files with 17 additions and 3 deletions

View File

@ -4,6 +4,7 @@ import static com.earth2me.essentials.I18n._;
import java.io.File; import java.io.File;
import java.util.*; import java.util.*;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@ -149,6 +150,17 @@ public abstract class UserData extends PlayerExtension implements IConf
return new ArrayList<String>(homes.keySet()); return new ArrayList<String>(homes.keySet());
} }
public int getHomeCount()
{
int count = getHomes().size();
Location bed = getBedSpawnLocation();
if (bed != null && bed.getBlock().getType() == Material.BED_BLOCK)
{
count++;
}
return count;
}
public void setHome(String name, Location loc) public void setHome(String name, Location loc)
{ {
//Invalid names will corrupt the yaml //Invalid names will corrupt the yaml

View File

@ -29,10 +29,11 @@ public class Commandsethome extends EssentialsCommand
{ {
if (user.isAuthorized("essentials.sethome.multiple")) if (user.isAuthorized("essentials.sethome.multiple"))
{ {
if ("bed".equals(args[0].toLowerCase(Locale.ENGLISH))) { if ("bed".equals(args[0].toLowerCase(Locale.ENGLISH)))
{
throw new NotEnoughArgumentsException(); throw new NotEnoughArgumentsException();
} }
if ((user.isAuthorized("essentials.sethome.multiple.unlimited")) || (user.getHomes().size() < ess.getSettings().getHomeLimit(user)) if ((user.isAuthorized("essentials.sethome.multiple.unlimited")) || (user.getHomeCount() < ess.getSettings().getHomeLimit(user))
|| (user.getHomes().contains(args[0].toLowerCase(Locale.ENGLISH)))) || (user.getHomes().contains(args[0].toLowerCase(Locale.ENGLISH))))
{ {
user.setHome(args[0].toLowerCase(Locale.ENGLISH)); user.setHome(args[0].toLowerCase(Locale.ENGLISH));
@ -66,7 +67,8 @@ public class Commandsethome extends EssentialsCommand
{ {
name = "home"; name = "home";
} }
if ("bed".equals(name.toLowerCase(Locale.ENGLISH))) { if ("bed".equals(name.toLowerCase(Locale.ENGLISH)))
{
throw new NotEnoughArgumentsException(); throw new NotEnoughArgumentsException();
} }
usersHome.setHome(name, user.getLocation()); usersHome.setHome(name, user.getLocation());