Just add 2 fields in category and challenge classes "long activeFrom" and "long activeUntil" then "public boolean isActive()" return isActive && sys#currentMillis() > activeFrom && sys#currentMillis() < activeUntil. This way categories and challenges are automatically unactive if not in date range. After that, the time conditions could be added on the representating item's lore for this challenge/category to warn player of start and end date.