From d6fd9259cf92570dad5ec9dc7f7d4fe094e95e2a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 7 Oct 2016 10:25:26 +0100 Subject: [PATCH] Added options to disable saving player.dat --- src/pocketmine/Server.php | 28 +++++++++++++++---------- src/pocketmine/resources/pocketmine.yml | 4 ++++ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index d9ee59029..f127107f4 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -668,6 +668,10 @@ class Server{ $this->craftingManager->registerRecipe($recipe); } + public function shouldSavePlayerData() : bool{ + return (bool) $this->getProperty("player.save-player-data", true); + } + /** * @param string $name * @@ -692,7 +696,7 @@ class Server{ public function getOfflinePlayerData($name){ $name = strtolower($name); $path = $this->getDataPath() . "players/"; - if(file_exists($path . "$name.dat")){ + if($this->shouldSavePlayerData() and file_exists($path . "$name.dat")){ try{ $nbt = new NBT(NBT::BIG_ENDIAN); $nbt->readCompressed(file_get_contents($path . "$name.dat")); @@ -806,18 +810,20 @@ class Server{ * @param bool $async */ public function saveOfflinePlayerData($name, CompoundTag $nbtTag, $async = false){ - $nbt = new NBT(NBT::BIG_ENDIAN); - try{ - $nbt->setData($nbtTag); + if($this->shouldSavePlayerData()){ + $nbt = new NBT(NBT::BIG_ENDIAN); + try{ + $nbt->setData($nbtTag); - if($async){ - $this->getScheduler()->scheduleAsyncTask(new FileWriteTask($this->getDataPath() . "players/" . strtolower($name) . ".dat", $nbt->writeCompressed())); - }else{ - file_put_contents($this->getDataPath() . "players/" . strtolower($name) . ".dat", $nbt->writeCompressed()); + if($async){ + $this->getScheduler()->scheduleAsyncTask(new FileWriteTask($this->getDataPath() . "players/" . strtolower($name) . ".dat", $nbt->writeCompressed())); + }else{ + file_put_contents($this->getDataPath() . "players/" . strtolower($name) . ".dat", $nbt->writeCompressed()); + } + }catch(\Throwable $e){ + $this->logger->critical($this->getLanguage()->translateString("pocketmine.data.saveError", [$name, $e->getMessage()])); + $this->logger->logException($e); } - }catch(\Throwable $e){ - $this->logger->critical($this->getLanguage()->translateString("pocketmine.data.saveError", [$name, $e->getMessage()])); - $this->logger->logException($e); } } diff --git a/src/pocketmine/resources/pocketmine.yml b/src/pocketmine/resources/pocketmine.yml index 4695bf704..0cdf83881 100644 --- a/src/pocketmine/resources/pocketmine.yml +++ b/src/pocketmine/resources/pocketmine.yml @@ -89,6 +89,10 @@ debug: level: 1 #Enables /status, /gc commands: false + +player: + #Choose whether to enable player data saving. + save-player-data: true level-settings: #The default format that levels will use when created