Add yet another way to get a user from our users list, Don't teleport an offline player when jailed

Added playerjoin to jaillistener to teleport a player on login
This commit is contained in:
ementalo 2011-07-18 22:16:58 +01:00
parent 7aea8a3fce
commit 81cc5b1f28
6 changed files with 38 additions and 4 deletions

View file

@ -217,6 +217,7 @@ public class Essentials extends JavaPlugin implements IEssentials
pm.registerEvent(Type.PLAYER_INTERACT, jailPlayerListener, Priority.Low, this);
pm.registerEvent(Type.PLAYER_RESPAWN, jailPlayerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_TELEPORT, jailPlayerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_JOIN, jailPlayerListener, Priority.High, this);
if (settings.isNetherEnabled() && getServer().getWorlds().size() < 2)
{

View file

@ -42,7 +42,10 @@ public class Jail extends BlockListener implements IConf
public void sendToJail(User user, String jail) throws Exception
{
user.getTeleport().now(getJail(jail));
if (user.getLastActivity() > 0)
{
user.getTeleport().now(getJail(jail));
}
user.setJail(jail);
}

View file

@ -3,6 +3,7 @@ package com.earth2me.essentials;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerListener;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
@ -62,6 +63,22 @@ public class JailPlayerListener extends PlayerListener
}
user.sendMessage(Util.i18n("jailMessage"));
}
@Override
public void onPlayerJoin(final PlayerJoinEvent event)
{
User u = ess.getUser(event.getPlayer());
if (u.isJailed())
{
try
{
ess.getJail().sendToJail(u, u.getJail());
}
catch (Exception ex)
{
LOGGER.log(Level.WARNING, Util.i18n("returnPlayerToJailError"), ex);
}
u.sendMessage(Util.i18n("jailMessage"));
}
}
}

View file

@ -15,6 +15,7 @@ public class Commandsetjail extends EssentialsCommand
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();

View file

@ -74,7 +74,10 @@ public class Commandtogglejail extends EssentialsCommand
p.setJailTimeout(0);
p.sendMessage("§7You have been released");
p.setJail(null);
p.getTeleport().back();
if (p.getLastActivity() > 0)
{
p.getTeleport().back();
}
sender.sendMessage("§7Player " + p.getName() + " unjailed.");
}
}

View file

@ -41,6 +41,15 @@ public abstract class EssentialsCommand implements IEssentialsCommand
protected User getPlayer(Server server, String[] args, int pos, boolean getOffline) throws NoSuchFieldException, NotEnoughArgumentsException
{
if (args.length <= pos) throw new NotEnoughArgumentsException();
User user = ess.getAllUsers().get(args[pos]);
if (user != null)
{
if(user.isHidden())
{
throw new NoSuchFieldException(Util.i18n("playerNotFound"));
}
return user;
}
List<Player> matches = server.matchPlayer(args[pos]);
if (matches.size() < 1)