diff --git a/resources/pocketmine.yml b/resources/pocketmine.yml index efb943c2d..b30901190 100644 --- a/resources/pocketmine.yml +++ b/resources/pocketmine.yml @@ -4,9 +4,6 @@ # New settings/defaults won't appear automatically in this file when upgrading. settings: - #Three-letter language code for server-side localization - #Check your language code on https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes - language: "eng" #Whether to send all strings translated to server locale or let the device handle them force-language: false shutdown-message: "Server closed" diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index f5d4fbddc..861d51df5 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -1425,10 +1425,38 @@ class Server{ } $this->config = new Config($this->dataPath . "pocketmine.yml", Config::YAML, []); + $this->logger->info("Loading server properties..."); + $this->properties = new Config($this->dataPath . "server.properties", Config::PROPERTIES, [ + "motd" => \pocketmine\NAME . " Server", + "server-port" => 19132, + "white-list" => false, + "announce-player-achievements" => true, + "spawn-protection" => 16, + "max-players" => 20, + "spawn-animals" => true, + "spawn-mobs" => true, + "gamemode" => 0, + "force-gamemode" => false, + "hardcore" => false, + "pvp" => true, + "difficulty" => 1, + "generator-settings" => "", + "level-name" => "world", + "level-seed" => "", + "level-type" => "DEFAULT", + "enable-query" => true, + "enable-rcon" => false, + "rcon.password" => substr(base64_encode(random_bytes(20)), 3, 10), + "auto-save" => true, + "view-distance" => 8, + "xbox-auth" => true, + "language" => "eng" + ]); + define('pocketmine\DEBUG', (int) $this->getProperty("debug.level", 1)); $this->forceLanguage = (bool) $this->getProperty("settings.force-language", false); - $selectedLang = $this->getProperty("settings.language", Language::FALLBACK_LANGUAGE); + $selectedLang = $this->getConfigString("language", $this->getProperty("settings.language", Language::FALLBACK_LANGUAGE)); try{ $this->language = new Language($selectedLang); }catch(LanguageNotFoundException $e){ @@ -1472,33 +1500,6 @@ class Server{ $this->logger->setLogDebug(\pocketmine\DEBUG > 1); } - $this->logger->info("Loading server properties..."); - $this->properties = new Config($this->dataPath . "server.properties", Config::PROPERTIES, [ - "motd" => \pocketmine\NAME . " Server", - "server-port" => 19132, - "white-list" => false, - "announce-player-achievements" => true, - "spawn-protection" => 16, - "max-players" => 20, - "spawn-animals" => true, - "spawn-mobs" => true, - "gamemode" => 0, - "force-gamemode" => false, - "hardcore" => false, - "pvp" => true, - "difficulty" => 1, - "generator-settings" => "", - "level-name" => "world", - "level-seed" => "", - "level-type" => "DEFAULT", - "enable-query" => true, - "enable-rcon" => false, - "rcon.password" => substr(base64_encode(random_bytes(20)), 3, 10), - "auto-save" => true, - "view-distance" => 8, - "xbox-auth" => true - ]); - $this->memoryManager = new MemoryManager($this); $this->logger->info($this->getLanguage()->translateString("pocketmine.server.start", [TextFormat::AQUA . $this->getVersion() . TextFormat::RESET])); diff --git a/src/pocketmine/network/mcpe/protocol/DataPacket.php b/src/pocketmine/network/mcpe/protocol/DataPacket.php index adc71283d..849739417 100644 --- a/src/pocketmine/network/mcpe/protocol/DataPacket.php +++ b/src/pocketmine/network/mcpe/protocol/DataPacket.php @@ -134,4 +134,12 @@ abstract class DataPacket extends NetworkBinaryStream{ return $data; } + + public function __get($name){ + throw new \Error("Cannot read non-existing field \"$name\""); + } + + public function __set($name, $value){ + throw new \Error("Cannot write non-existing field \"$name\""); + } } diff --git a/src/pocketmine/wizard/SetupWizard.php b/src/pocketmine/wizard/SetupWizard.php index 9a5e214ee..3215d94da 100644 --- a/src/pocketmine/wizard/SetupWizard.php +++ b/src/pocketmine/wizard/SetupWizard.php @@ -68,6 +68,10 @@ class SetupWizard{ } }while($lang === null); + $config = new Config(\pocketmine\DATA . "server.properties", Config::PROPERTIES); + $config->set("language", $lang); + $config->save(); + $this->lang = new Language($lang); $this->message($this->lang->get("language_has_been_selected"));