diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index c744fb4e9..a79f1d213 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -1224,24 +1224,9 @@ class Server{ * @return mixed */ public function getProperty($variable, $defaultValue = null){ - $vars = explode(".", $variable); - $base = array_shift($vars); - if($this->config->exists($base)){ - $base = $this->config->get($base); - }else{ - return $defaultValue; - } + $value = $this->config->getNested($variable); - while(count($vars) > 0){ - $baseKey = array_shift($vars); - if(is_array($base) and isset($base[$baseKey])){ - $base = $base[$baseKey]; - }else{ - return $defaultValue; - } - } - - return $base; + return $value === null ? $defaultValue : $value; } /** diff --git a/src/pocketmine/utils/Config.php b/src/pocketmine/utils/Config.php index 3c1d84f6e..dbc292c33 100644 --- a/src/pocketmine/utils/Config.php +++ b/src/pocketmine/utils/Config.php @@ -233,6 +233,48 @@ class Config{ $this->remove($k); } + public function setNested($key, $value){ + $vars = explode(".", $key); + $base = array_shift($vars); + + if(!isset($this->config[$base])){ + $this->config[$base] = []; + } + + $base =& $this->config[$base]; + + while(count($vars) > 0){ + $baseKey = array_shift($vars); + if(!isset($base[$baseKey])){ + $base[$baseKey] = []; + } + $base =& $base[$baseKey]; + } + + $base = $value; + } + + public function getNested($key){ + $vars = explode(".", $key); + $base = array_shift($vars); + if(isset($this->config[$base])){ + $base = $this->config[$base]; + }else{ + return null; + } + + while(count($vars) > 0){ + $baseKey = array_shift($vars); + if(is_array($base) and isset($base[$baseKey])){ + $base = $base[$baseKey]; + }else{ + return null; + } + } + + return $base; + } + /** * @param $k *