--- miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/chests/AdvancedChest.java 2012/10/02 16:40:56 1853 +++ miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/chests/AdvancedChest.java 2012/11/05 21:46:57 1868 @@ -24,6 +24,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockBurnEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.inventory.InventoryCloseEvent; @@ -76,7 +77,7 @@ if (args.length == 0) { player.sendMessage("Usage:"); - player.sendMessage("/chest (status|lock|snitch|remove|addplayer|removeplayer) [player]"); + player.sendMessage("/chest (status|lock|snitch|remove|addplayer|removeplayer|setowner) [player]"); return true; } @@ -154,6 +155,30 @@ return true; } + + if (cmd.equals("setowner")) { + if (chest == null) { + player.sendMessage("This chest is not protected"); + return true; + } + if (! chest.getOwner().equals( player.getName() ) ) { + player.sendMessage("You can not set new owner of a chest you dont own"); + return true; + } + if (args.length != 2) { + player.sendMessage("You need to specify which player should own this chest"); + return true; + } + OfflinePlayer p2 = server.getOfflinePlayer(args[1]); + if ( p2.hasPlayedBefore() == false && p2.isOnline() == false) { + player.sendMessage("Unknown user: " + args[1] ); + return true; + } + chest.setOwner( p2.getName() ); + plugin.getDatabase().save( chest ); + player.sendMessage("ok"); + return true; + } if (cmd.equals("addplayer") || cmd.equals("removeplayer")) { if (chest == null) { @@ -381,7 +406,16 @@ return; } } - } + } + + @EventHandler + public void onChestBurn(BlockBurnEvent event) { + ChestBean chest = chestMap.get( event.getBlock().getLocation() ); + if (chest != null) { + server.getLogger().info( "[AdvancedChest] prevented a fire from destrying chest owned by " + chest.getOwner() ); + event.setCancelled( true); + } + } // prevent a user from opening a chest @EventHandler