I think I'd add into QuestManager.handleCouncilChange(), after the call to QuestDatabase.handleCouncilText() :
if ( QuestDatabase.isQuestLaterThan( Quest.MACGUFFIN, "unstarted" )
{
QuestDatabase.setQuestIfBetter( Quest.BLACK, QuestDatabase.STARTED );
}
(not at home today)