Temporary modes and seasonal features are delivered through optional packages, controllers, personalities, resources, and server state. Their absence should disable only the dependent feature.
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
- Locate the package entry point or personality registration.
- Identify the interface and implementation registrations.
- Trace server settings, season state, and active-context checks.
- Find views, resources, entities, and event subscriptions owned by the package.
- 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.