public static function toArray($bitset)
{
$mods = [];
$impliedIds = [];
foreach (static::AVAILABLE_MODS as $availableMod) {
if (($bitset & 1 << $availableMod[0]) === 0) {
continue;
}
$currentImpliedIds = $availableMod[2] ?? null;
if ($currentImpliedIds !== null) {
$impliedIds = array_merge($impliedIds, $currentImpliedIds);
}
$mods[$availableMod[0]] = $availableMod[1];
}
$mods = array_filter($mods, function ($modId) use($impliedIds) {
return !in_array($modId, $impliedIds, true);
}, ARRAY_FILTER_USE_KEY);
$mods = array_values($mods);
sort($mods);
return $mods;
}