public void startMatch(MatchStartEvent.Reason reason)
{
// match has already started, don't try to start it again
if (!this.getCurrentState().isBeforeMatch()) return;
MatchStartEvent event = new MatchStartEvent(this, reason);
AutoReferee.callEvent(event);
if (!refereeReady && event.isCancelled()) return;
// nothing to do if the countdown is running
if (isCountdownRunning()) return;
// update all the objectives