The block opigno_documents_last_group_block is located in opigno_learning_path/src/Plugin/Block/DocumentsLastGroupBlock.php, which looks like this:
<?php  namespace Drupalopigno_learning_pathPluginBlock;  use DrupalCoreBlockBlockBase; use DrupalCoreUrl;  /**  * Provides a documentslastgroupblock block.  *  * @Block(  *   id = "opigno_documents_last_group_block",  *   admin_label = @Translation("DocumentsLastGroupBlock"),  *   category = @Translation("Custom")  * )  */ class DocumentsLastGroupBlock extends BlockBase {    /**    * @var DrupalComponentPluginContextContextInterface[]|mixed    */   protected $groupId;    /**    * {@inheritdoc}    */   public function build() {     $this->groupId = $gid = $this->configuration["group"];     $tid = _tft_get_group_tid($gid);     $content = _tft_folder_content($tid, FALSE, $gid);     $content = array_slice($content ?: [], 0, 4);     foreach ($content as $index => $item) {       $content[$index] = [         '#theme' => 'opigno_documents_last_group_item',         '#type' => $item["type"] == 'file' ? 'file' : 'folder',         '#item' => $item,         '#label' => $item["name"],         '#link' => $this->itemLink($item),       ];     }     $build['content'] = [       '#theme' => 'opigno_documents_last_group_block',       'content' => $content,     ];     return $build;   } (...) 
and is attached in LearningPathController in this module:
 /**   * Training document block.   */   public function trainingContentDocuments(&$content, $group) {      // $TFTController = new TFTController();     // $listGroup = $TFTController->listGroup($group->id());      $tft_url = Url::fromRoute('tft.group', ['group' =>    $group->id()])->toString();      $content['tabs'][] = $tft_url = [      '#markup' => '<div class="see-all see-all-files"><a href="' . $tft_url . '">' . $this->t('See all') . '</a></div>',     ];      $block_render =    $this->attachBlock('opigno_documents_last_group_block', ['group' => $group->id()]);    $block_render["content"]['link'] = $tft_url;     $content['tab_content']['documents'] = (isset($block_render["content"]["content"]) && !empty($block_render["content"]["content"])) ? [       '#type' => 'container',       '#attributes' => [         'id' => 'documents',       ],       'block' => [         'content' => $block_render["content"],       ],     ] : [];    } 
I tried to extend it in custom module: web/modules/custom/npx_files/src/Plugin/Block/NpxFilesDocumentsLastGroupBlock.php:
<?php  namespace Drupalnpx_filesPluginBlock;  use Drupalopigno_learning_pathPluginBlock;  class NpxFilesDocumentsLastGroupBlock extends DocumentsLastGroupBlock {    public function build(){     return [       '#markup' => $this->t('Hello, World!'),     ];   }  } 
However, it doesn’t trigger the block, what is the good way to extend this? Cache cleared&module turned on of course.