Temporary modes and seasonal features are delivered through optional packages, controllers, personalities, resources, and server state. Their absence should disable only the dependent feature.

Primary ownershipFeature package plus active mode or season controller
Readiness anchorPackage availability and feature-specific readiness
Version sensitivityVerify private names per client build

Extension layers

Layer Role
Package presence Code and resources exist in this client build
Registration / personality Controllers, views or extensions are installed
Server availability The feature is enabled for the realm/account/time window
Season or event state Current progression and active phase
Current mode context The player is actually inside the relevant lobby or battle mode

Mode ID namespaces

Optional packages may register GUI types, bonus types, queue types, and vehicle mode tags through different paths. Treat these as separate namespaces and verify the active field before filtering; see Arena Mode Identifiers for the reference workflow.

Optional import boundary

def _install_optional_mode_support():
    try:
        from optional_feature.controllers import IFeatureController
    except ImportError:
        _log_debug('optional feature package not installed')
        return False

    controller = _try_get_service(IFeatureController)
    if controller is None:
        return False
    _subscribe_optional_controller(controller)
    return True

Presence is not readiness

A module can exist while the event is inactive. A controller can exist while no season is configured. A resource can exist while the current realm does not expose the feature.

Narrow feature gates

Entitlement or subscription checks should guard only the behavior they own. Independent local browsing, display, layout, or persistence should not be disabled merely because a related server entitlement is absent.

Discovery workflow

  1. Locate the package entry point or personality registration.
  2. Identify the interface and implementation registrations.
  3. Trace server settings, season state, and active-context checks.
  4. Find views, resources, entities, and event subscriptions owned by the package.
  5. Confirm teardown and behavior when the package is missing.

Common mistakes

  • Importing optional modules at top level and preventing the whole mod from loading.
  • Using package presence as proof that the feature is active.
  • Keeping mode controllers after leaving the mode.
  • Assuming the same event IDs, resources, or schemas across seasons.
  • Making unrelated local features depend on one entitlement.

Verification trail

Inspect package registration, availability conditions, server settings, season controller, view creation, and cleanup. Test absent package, inactive feature, active feature, end-of-season, and realm variation.