--- miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/Jail.java 2012/10/14 13:21:38 1858 +++ miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/Jail.java 2012/10/15 07:23:59 1860 @@ -16,6 +16,7 @@ import org.bukkit.event.player.PlayerPortalEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; @@ -111,22 +112,24 @@ @Override public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) { - if (! (sender instanceof Player) ) { - sender.sendMessage("only use these commands in-game"); + if (args.length == 0) { + sender.sendMessage("Usage: /jail "); return true; } - - Player p = (Player) sender; - - if ( !p.isOp()) { - p.sendMessage("Only server operators may use this command"); - return true; + + if (sender instanceof Player ) { + Player p = (Player) sender; + if ( !p.isOp()) { + p.sendMessage("Only server operators may use this command"); + return true; + } + } else { + if ( args[0] != "imprison" && args[0] != "release" && args[0] != "list") { + sender.sendMessage("only imprison, release and list may be used from console"); + return true; + } } - if (args.length == 0) { - p.sendMessage("Usage: /jail "); - return true; - } if (args[0].equals("imprison")) { if (args.length != 2) { @@ -135,7 +138,7 @@ Player inmate = sender.getServer().getPlayer( args[1] ); if (inmate == null) { - p.sendMessage("Player not found"); + sender.sendMessage("Player not found"); return true; } @@ -154,7 +157,7 @@ Player inmate = sender.getServer().getPlayer( args[1] ); if (inmate == null) { - p.sendMessage("Player not found"); + sender.sendMessage("Player not found"); return true; } @@ -181,12 +184,14 @@ } if (args[0].equals("setjail")) { + Player p = (Player) sender; jailLocation = p.getLocation().clone(); p.sendMessage("New jail location has been set"); save(); return true; } if (args[0].equals("setrelease")) { + Player p = (Player) sender; releaseLocation = p.getLocation().clone(); p.sendMessage("New release location has been set"); save(); @@ -194,10 +199,12 @@ } if (args[0].equals("tpjail")) { + Player p = (Player) sender; p.teleport(jailLocation); return true; } if (args[0].equals("tprelease")) { + Player p = (Player) sender; p.teleport(releaseLocation); return true; } @@ -279,5 +286,14 @@ event.setCancelled( true ); } } + + @EventHandler + public void onRespawn(PlayerRespawnEvent event) { + Player p = event.getPlayer(); + if (jailed.contains( p.getName() ) ) { + event.setRespawnLocation( jailLocation ); + p.teleport( jailLocation ); + } + } }