Further optimizations: store in sets which parts of the map are currently being raised or contain water, removing the need to iterate over the whole map every tick