Is there any way to record all block placement/breaking in minecraft? Ideally I'd like to record the placement of redstone etc. aswell. When I say record I would ideally like to be able to save the list of changes (with time of change) to a text file or simular.
Yes, it is.
Unfortunately, you probably need some not really vanilla server for it, your aim should be spigot/craftbukkit or similar. Those can be said that they are "modded", but all changes are purely server-side and basic vanilla clients still can connect and won't see any difference other than more commands etc.
Then you can use big variety of "plugins", there is a lot of to choose from. For your purpose you need to look for some block logging ones, I will list you some that I remember...Their great plus is that they can use MySQL so you can collect really big number of entries and usually you can get info about block changes (and who did them) ingame via clicking that block with special tool.
Some of those:
- Hawkeye Reloaded
and probably many more.
For pure vanilla server (or singleplayer) you can have real problems with this, because MC on its own does not log anything like that. You would need some tool for looking at changes in data files or so, or differenciating new versions of savefiles everytime the change occurs, and that would be real pain to do so.
But even you play only singleplayer, there is possibility to run your own server on localhost, you just run it from console and not from "create world" in MC. The difference is that you can use those plugins for advanced thingies.