Very easy.
Wait a few minutes.
package ChestsEvents
{
   function serverCmdAddEvent(%client, %enabled, %inputEventIdx, %delay, %targetIdx, %NTNameIdx, %outputEventIdx, %par1, %par2, %par3, %par4)
   {
      Parent::serverCmdAddEvent(%client, %enabled, %inputEventIdx, %delay, %targetIdx, %NTNameIdx, %outputEventIdx, %par1, %par2, %par3, %par4);
      if(!isObject(%client.wrenchBrick))
         return;
      if(%input == $ChestsEvents::onChestFound_Idx)
      {
         $ChestsEvents::onChestFound_List = addItemToList($ChestsEvents::onChestFound_List, %client.wrenchBrick);
      }
      else if(%input == $ChestsEvents::onChestFoundAll_Idx)
      {
         $ChestsEvents::onChestFoundAll_List = addItemToList($ChestsEvents::onChestFoundAll_List, %client.wrenchBrick);
      }
   }
   function serverCmdClearEvents(%client)
   {
      Parent::serverCmdClearEvents(%client);
      $ChestsEvents::onChestFound_List = removeItemFromList($ChestsEvents::onChestFound_List, %client.wrenchBrick);
      $ChestsEvents::onChestFoundAll_List = removeItemFromList($ChestsEvents::onChestFoundAll_List, %client.wrenchBrick);
   }
   function fxDtsBrick::onDeath(%brick)
   {
      $ChestsEvents::onChestFound_List = removeItemFromList($ChestsEvents::onChestFound_List, %brick);
      $ChestsEvents::onChestFoundAll_List = removeItemFromList($ChestsEvents::onChestFoundAll_List, %brick);
      Parent::onDeath(%brick);
   }
   function brickTreasureChestData::openTreasureChest(%data, %obj, %player)
   {
      Parent::openTreasureChest(%data, %obj, %player);
      for(%i = 0; %i < getWordCount($ChestsEvents::onChestFound_List); %i++)
      {
         %brick = getWord($ChestsEvents::onChestFound_List, %i);
         if(isObject(%brick))
         {
            $inputTarget_Self = %brick;
            $inputTarget_Player = %player;
            $inputTarget_Client = %player.client;
            $inputTarget_Minigame = getMinigameFromObject(%player);
            %brick.processInputEvent("onChestFound", %client);
         }
      }
      if(%player.client.numFoundTreasureChests >= $TreasureChest::NumChests)
      {
         for(%i = 0; %i < getWordCount($ChestsEvents::onChestFoundAll_List); %i++)
         {
            %brick = getWord($ChestsEvents::onChestFoundAll_List, %i);
            if(isObject(%brick))
            {
               $inputTarget_Self = %brick;
               $inputTarget_Player = %player;
               $inputTarget_Client = %player.client;
               $inputTarget_Minigame = getMinigameFromObject(%player);
               %brick.processInputEvent("onChestFound", %client);
            }
         }
      }
   }
};
activatePackage(ChestsEvents);
registerInputEvent("onChestFound", "onSearchFindBrick", "Self fxDTSBrick\tTargetBrick fxDTSBrick\tPlayer Player\tClient GameConnection\tMinigame Minigame");
registerInputEvent("onChestFoundAll", "onSearchFindBrick", "Self fxDTSBrick\tTargetBrick fxDTSBrick\tPlayer Player\tClient GameConnection\tMinigame Minigame");
$ChestsEvents::onChestFound_Idx = inputEvent_GetInputEventIdx("onChestFound");
$ChestsEvents::onChestFoundAll_Idx = inputEvent_GetInputEventIdx("onChestFoundAll");
function addItemToList(%string,%item)
{
   if(hasItemOnList(%string,%item))
      return %string;
   if(%string $= "")
      return %item;
   else
      return %string SPC %item;
}
function hasItemOnList(%string,%item)
{
   for(%i=0;%i<getWordCount(%string);%i++)
   {
      if(getWord(%string,%i) $= %item)
         return 1;
   }
   return 0;
}
function removeItemFromList(%string,%item)
{
   for(%i=0;%i<getWordCount(%string);%i++)
   {
      if(getWord(%string,%i) $= %item)
      {
         if(%i $= 0)
            return getWords(%string,1,getWordCount(%string));
         else if(%i $= getWordCount(%string)-1)
            return getWords(%string,0,%i-1);
         else
            return getWords(%string,0,%i-1) SPC getWords(%string,%i+1,getWordCount(%string));
      }
   }
}
Not tested.