argument('userId'); if($userId === null) $playerDatas = PlayerData::all(); else $playerDatas = [User::findOrFail($userId)->playerData()]; foreach ($playerDatas as $playerData) { foreach (Characters::cases() as $case) { $this->info('Adding items for user ' . $playerData->user_id . ' for Character ' . $case->value); $configClass = $case->getCharacter()->getItemConfigClass(); $this->addItemsToUser($playerData, $configClass); } } } /** * @param PlayerData $user * @param class-string $config * @return void */ public function addItemsToUser(PlayerData &$playerData, string $config): void { $itemIds = [ ...$config::getDefaultEquippedBonuses(), ...$config::getDefaultEquippedWeapons(), ...$config::getDefaultEquipment(), ...$config::getDefaultPowers(), ...$config::getDefaultWeapons(), ...$config::getDefaultEquippedPerks(), ]; $itemIds = UuidHelper::convertFromHexToUuidCollecton($itemIds, true); try { $playerData->inventory()->syncWithoutDetaching($itemIds); } catch (QueryException $e) { Log::channel('single')->error($e->getMessage()); $this->error('Exception: ' . $e->getMessage()); $this->error("Failed to add items to inventory: " . json_encode($itemIds, JSON_PRETTY_PRINT)); } } }