There's a lot of stuff here and I know that it would be really hard to implement into the game.
First thing to do is to change is in the scoreboard objectives add change the "mincraft." detectors from detecting a specific block to detecting all of the blocks at once so the player can type "scoreboard objectives add Mined minecraft.mined "Mined"". This is so that the user can detect any block that has been mined. Second thing to change is what is displayed when the player does this. This will change from the username and the number of blocks mined to the username, the name of the block mined, the location of the that block, the number of total blocks mined, and the number of that specific block. For example: "Dwamp4 , Minecraft:Diamond_ore , -144 65 75 , 709 , 12". Now this isn't really useful unless we can use it in other commands so let's run how this could work in other commands. First one is in scoreboard, where it would be used in the scoreboard objects setdisplay where the player can pick a specific part of what is display and would look something like this: "scoreboard objectives setdisplay sidebar Block_Mined type specific_block_integer. This will display only the number of the Diamond Ore that was broken, and will display the number 12. This would also work with the "scoreboard player set" command were the user can set a specific part of the stored value, for example: "scoreboard players set @p Block_Mined 0 type Block_Coordinates". Now that's useful but it could be more useful if used inside an execute command. First place it could be used is in the "execute at" command, were the user can type in "execute at Score @p Block_Mined Block_Coordinates" and it will execute the command at the coordinates the block was mined. Next it could be used in the "execute if score" command were the user can type one of the different types of stored scores. It could be used like this: "execute if scores @p Mined_Block type Block_Name matches Minecraft: Diamond_Ore run scoreboard players set @p Mined_Block 0 type Block_Name" This will detect that the player mined diamond ore and set the stored name of diamond ore to 0 so that the player can mine another diamond ore. Well you know we should stop here but this is a suggestions page and no one care so... Another thing we can add is using this stored data inside other commands that will tell it what to do. For example as a full wrap up command: "execute as @p if scores @s Mined_Block type total_block_integer matches 1 run summon creeper scores @s Mined_Block type Block_Coordinates {Fuse:0b}" This command will summon a creeper whenever a block is mined and will summon that creeper at the block that was mined
There's a lot of stuff here and I know that it would be really hard to implement into the game.
First thing to do is to change is in the scoreboard objectives add change the "mincraft." detectors from detecting a specific block to detecting all of the blocks at once so the player can type "scoreboard objectives add Mined minecraft.mined "Mined"". This is so that the user can detect any block that has been mined. Second thing to change is what is displayed when the player does this. This will change from the username and the number of blocks mined to the username, the name of the block mined, the location of the that block, the number of total blocks mined, and the number of that specific block. For example: "Dwamp4 , Minecraft:Diamond_ore , -144 65 75 , 709 , 12". Now this isn't really useful unless we can use it in other commands so let's run how this could work in other commands. First one is in scoreboard, where it would be used in the scoreboard objects setdisplay where the player can pick a specific part of what is display and would look something like this: "scoreboard objectives setdisplay sidebar Block_Mined type specific_block_integer. This will display only the number of the Diamond Ore that was broken, and will display the number 12. This would also work with the "scoreboard player set" command were the user can set a specific part of the stored value, for example: "scoreboard players set @p Block_Mined 0 type Block_Coordinates". Now that's useful but it could be more useful if used inside an execute command. First place it could be used is in the "execute at" command, were the user can type in "execute at Score @p Block_Mined Block_Coordinates" and it will execute the command at the coordinates the block was mined. Next it could be used in the "execute if score" command were the user can type one of the different types of stored scores. It could be used like this: "execute if scores @p Mined_Block type Block_Name matches Minecraft: Diamond_Ore run scoreboard players set @p Mined_Block 0 type Block_Name" This will detect that the player mined diamond ore and set the stored name of diamond ore to 0 so that the player can mine another diamond ore. Well you know we should stop here but this is a suggestions page and no one care so... Another thing we can add is using this stored data inside other commands that will tell it what to do. For example as a full wrap up command: "execute as @p if scores @s Mined_Block type total_block_integer matches 1 run summon creeper scores @s Mined_Block type Block_Coordinates {Fuse:0b}" This command will summon a creeper whenever a block is mined and will summon that creeper at the block that was mined