/** Called when a block is broken. */ @Override public void onBlockBreak(BlockBreakEvent event) { if (event.isCancelled()) { return; } Player player = event.getPlayer(); WorldConfiguration wcfg = getWorldConfig(player); if (!wcfg.itemDurability) { ItemStack held = player.getItemInHand(); if (held.getTypeId() > 0) { held.setDurability((short) -1); player.setItemInHand(held); } } if (!plugin.getGlobalRegionManager().canBuild(player, event.getBlock())) { player.sendMessage(ChatColor.DARK_RED + "You don't have permission for this area."); event.setCancelled(true); return; } if (wcfg.getBlacklist() != null) { if (!wcfg.getBlacklist() .check( new BlockBreakBlacklistEvent( plugin.wrapPlayer(player), toVector(event.getBlock()), event.getBlock().getTypeId()), false, false)) { event.setCancelled(true); return; } if (!wcfg.getBlacklist() .check( new DestroyWithBlacklistEvent( plugin.wrapPlayer(player), toVector(event.getBlock()), player.getItemInHand().getTypeId()), false, false)) { event.setCancelled(true); return; } } if (wcfg.isChestProtected(event.getBlock(), player)) { player.sendMessage(ChatColor.DARK_RED + "The chest is protected."); event.setCancelled(true); return; } }
/** * Called when a player places a block * * @param event Relevant event details */ @Override public void onBlockPlace(BlockPlaceEvent event) { if (event.isCancelled()) { return; } Block blockPlaced = event.getBlock(); Player player = event.getPlayer(); World world = blockPlaced.getWorld(); ConfigurationManager cfg = plugin.getGlobalConfiguration(); WorldConfiguration wcfg = cfg.get(world); if (wcfg.useRegions) { if (!plugin.getGlobalRegionManager().canBuild(player, blockPlaced.getLocation())) { player.sendMessage(ChatColor.DARK_RED + "You don't have permission for this area."); event.setCancelled(true); return; } } if (wcfg.getBlacklist() != null) { if (!wcfg.getBlacklist() .check( new BlockPlaceBlacklistEvent( plugin.wrapPlayer(player), toVector(blockPlaced), blockPlaced.getTypeId()), false, false)) { event.setCancelled(true); return; } } if (wcfg.simulateSponge && blockPlaced.getTypeId() == 19) { if (wcfg.redstoneSponges && blockPlaced.isBlockIndirectlyPowered()) { return; } int ox = blockPlaced.getX(); int oy = blockPlaced.getY(); int oz = blockPlaced.getZ(); clearSpongeWater(world, ox, oy, oz); } }