- std::vector<fs::DirListNode> player_files = fs::GetDirListing(savedir);
- for(u32 i = 0; i < player_files.size(); i++) {
- if (player_files[i].dir || player_files[i].name[0] == '.') {
- continue;
+ savedir += DIR_DELIM;
+ std::string path = savedir + m_name;
+ for (u32 i = 0; i < PLAYER_FILE_ALTERNATE_TRIES; i++) {
+ if (!fs::PathExists(path)) {
+ // Open file and serialize
+ std::ostringstream ss(std::ios_base::binary);
+ serialize(ss);
+ if (!fs::safeWriteToFile(path, ss.str())) {
+ infostream << "Failed to write " << path << std::endl;
+ }
+ return;