forked from Mirrorlandia_minetest/minetest
Player file directory must be only created when using file backend.
Also ensure on each player save that the directory exists
This commit is contained in:
parent
cf224c9d6b
commit
0717719073
@ -31,6 +31,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
// This backend is intended to be used on Minetest 0.4.16 only for the transition backend
|
||||
// for player files
|
||||
|
||||
PlayerDatabaseFiles::PlayerDatabaseFiles(const std::string &savedir) : m_savedir(savedir)
|
||||
{
|
||||
fs::CreateDir(m_savedir);
|
||||
}
|
||||
|
||||
void PlayerDatabaseFiles::serialize(std::ostringstream &os, RemotePlayer *player)
|
||||
{
|
||||
// Utilize a Settings object for storing values
|
||||
@ -58,6 +63,8 @@ void PlayerDatabaseFiles::serialize(std::ostringstream &os, RemotePlayer *player
|
||||
|
||||
void PlayerDatabaseFiles::savePlayer(RemotePlayer *player)
|
||||
{
|
||||
fs::CreateDir(m_savedir);
|
||||
|
||||
std::string savedir = m_savedir + DIR_DELIM;
|
||||
std::string path = savedir + player->getName();
|
||||
bool path_found = false;
|
||||
|
@ -29,7 +29,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
class PlayerDatabaseFiles : public PlayerDatabase
|
||||
{
|
||||
public:
|
||||
PlayerDatabaseFiles(const std::string &savedir) : m_savedir(savedir) {}
|
||||
PlayerDatabaseFiles(const std::string &savedir);
|
||||
virtual ~PlayerDatabaseFiles() = default;
|
||||
|
||||
void savePlayer(RemotePlayer *player);
|
||||
|
@ -544,9 +544,6 @@ void ServerEnvironment::kickAllPlayers(AccessDeniedCode reason,
|
||||
|
||||
void ServerEnvironment::saveLoadedPlayers()
|
||||
{
|
||||
std::string players_path = m_path_world + DIR_DELIM + "players";
|
||||
fs::CreateDir(players_path);
|
||||
|
||||
for (RemotePlayer *player : m_players) {
|
||||
if (player->checkModified() || (player->getPlayerSAO() &&
|
||||
player->getPlayerSAO()->getMeta().isModified())) {
|
||||
|
Loading…
Reference in New Issue
Block a user