From b5da6b15912ad41f5d1593c43b1bf2f85d6e75b0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 12 Jun 2018 17:11:01 +0100 Subject: [PATCH] Added a pocketmine.yml kill switch for development builds --- src/pocketmine/PocketMine.php | 1 + src/pocketmine/Server.php | 17 +++++++++++++---- src/pocketmine/lang/locale | 2 +- src/pocketmine/resources/pocketmine.yml | 3 +++ tests/travis.sh | 2 +- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/pocketmine/PocketMine.php b/src/pocketmine/PocketMine.php index 5e7328754..9fbef6720 100644 --- a/src/pocketmine/PocketMine.php +++ b/src/pocketmine/PocketMine.php @@ -38,6 +38,7 @@ namespace pocketmine { const NAME = "PocketMine-MP"; const VERSION = "1.7dev"; const API_VERSION = "3.0.0"; + const IS_DEVELOPMENT_BUILD = true; const MIN_PHP_VERSION = "7.2.0"; diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index 6e572d33a..848000eeb 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -1452,6 +1452,19 @@ class Server{ define('pocketmine\DEBUG', (int) $this->getProperty("debug.level", 1)); + $this->forceLanguage = (bool) $this->getProperty("settings.force-language", false); + $this->baseLang = new BaseLang($this->getProperty("settings.language", BaseLang::FALLBACK_LANGUAGE)); + $this->logger->info($this->getLanguage()->translateString("language.selected", [$this->getLanguage()->getName(), $this->getLanguage()->getLang()])); + + if(\pocketmine\IS_DEVELOPMENT_BUILD and !((bool) $this->getProperty("settings.enable-dev-builds", false))){ + $this->logger->emergency($this->baseLang->translateString("pocketmine.server.devBuild.error1", [\pocketmine\NAME])); + $this->logger->emergency($this->baseLang->translateString("pocketmine.server.devBuild.error2")); + $this->logger->emergency($this->baseLang->translateString("pocketmine.server.devBuild.error3")); + $this->logger->emergency($this->baseLang->translateString("pocketmine.server.devBuild.error4", ["settings.enable-dev-builds"])); + $this->forceShutdown(); + return; + } + if(((int) ini_get('zend.assertions')) > 0 and ((bool) $this->getProperty("debug.assertions.warn-if-enabled", true)) !== false){ $this->logger->warning("Debugging assertions are enabled, this may impact on performance. To disable them, set `zend.assertions = -1` in php.ini."); } @@ -1490,10 +1503,6 @@ class Server{ "xbox-auth" => true ]); - $this->forceLanguage = (bool) $this->getProperty("settings.force-language", false); - $this->baseLang = new BaseLang($this->getProperty("settings.language", BaseLang::FALLBACK_LANGUAGE)); - $this->logger->info($this->getLanguage()->translateString("language.selected", [$this->getLanguage()->getName(), $this->getLanguage()->getLang()])); - $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/lang/locale b/src/pocketmine/lang/locale index 0d93f4e8a..5e6ccee0c 160000 --- a/src/pocketmine/lang/locale +++ b/src/pocketmine/lang/locale @@ -1 +1 @@ -Subproject commit 0d93f4e8a9fd5f4e0cb779d83358fb2df6c48611 +Subproject commit 5e6ccee0c1962c8b28491212c3a947fb2036e4a4 diff --git a/src/pocketmine/resources/pocketmine.yml b/src/pocketmine/resources/pocketmine.yml index 657c53aa7..e74cd88d6 100644 --- a/src/pocketmine/resources/pocketmine.yml +++ b/src/pocketmine/resources/pocketmine.yml @@ -23,6 +23,9 @@ settings: #Set this approximately to your number of cores. #If set to auto, it'll try to detect the number of cores (or use 2) async-workers: auto + #Whether to allow running development builds. Dev builds might crash, break your plugins, corrupt your world and more. + #It is recommended to avoid using development builds where possible. + enable-dev-builds: false memory: #Global soft memory limit in megabytes. Set to 0 to disable diff --git a/tests/travis.sh b/tests/travis.sh index 2ccbafcf1..8a590c844 100755 --- a/tests/travis.sh +++ b/tests/travis.sh @@ -48,7 +48,7 @@ mkdir "$DATA_DIR" mkdir "$PLUGINS_DIR" mv DevTools.phar "$PLUGINS_DIR" cp -r tests/plugins/PocketMine-TesterPlugin "$PLUGINS_DIR" -echo -e "stop\n" | "$PHP_BINARY" PocketMine-MP.phar --no-wizard --disable-ansi --disable-readline --debug.level=2 --data="$DATA_DIR" --plugins="$PLUGINS_DIR" --anonymous-statistics.enabled=0 --settings.async-workers="$PM_WORKERS" +echo -e "stop\n" | "$PHP_BINARY" PocketMine-MP.phar --no-wizard --disable-ansi --disable-readline --debug.level=2 --data="$DATA_DIR" --plugins="$PLUGINS_DIR" --anonymous-statistics.enabled=0 --settings.async-workers="$PM_WORKERS" --settings.enable-dev-builds=1 output=$(grep '\[TesterPlugin\]' "$DATA_DIR/server.log") if [ "$output" == "" ]; then