Depending on the nature of your achievements you could also introduce some kind of "marker achievements".
If you have for example 3 consecutive achievements:
Wood 1 - Collect 100 wood
Wood 2 - Collect 500 wood
Wood 3 - Collect 1k wood
Then it would make sense to just register an OnChange event for the first achievement until the player completed it. Upon completion you can register the next achievement object.
This of course requires design (or calculation) of an achievement dependency tree.