05-03-2013, 05:52 PM
I'd only do Undo / Redo for the big operations, not for individual block changes. There's not that many of those.
Also, I'd keep a "map" of PlayerName -> List of up to N BlockAreas of Undo; N being configurable in the settings. I don't think there'll be many players with WE rights, so this shouldn't grow too large. Also, one must not forget to clear the list for a player when that player disconnects (or maybe after a timeout; if they reconnect soon, keep their undo).
Also, I'd keep a "map" of PlayerName -> List of up to N BlockAreas of Undo; N being configurable in the settings. I don't think there'll be many players with WE rights, so this shouldn't grow too large. Also, one must not forget to clear the list for a player when that player disconnects (or maybe after a timeout; if they reconnect soon, keep their undo).