diff --git a/src/pocketmine/command/SimpleCommandMap.php b/src/pocketmine/command/SimpleCommandMap.php index 78308da68..76e859cd0 100644 --- a/src/pocketmine/command/SimpleCommandMap.php +++ b/src/pocketmine/command/SimpleCommandMap.php @@ -302,9 +302,9 @@ class SimpleCommandMap implements CommandMap{ } $targets = []; + $bad = []; + $recursive = []; - $bad = ""; - $recursive = ""; foreach($commandStrings as $commandString){ $args = explode(" ", $commandString); $commandName = ""; @@ -312,27 +312,21 @@ class SimpleCommandMap implements CommandMap{ if($command === null){ - if(strlen($bad) > 0){ - $bad .= ", "; - } - $bad .= $commandString; + $bad[] = $commandString; }elseif($commandName === $alias){ - if($recursive !== ""){ - $recursive .= ", "; - } - $recursive .= $commandString; + $recursive[] = $commandString; }else{ $targets[] = $commandString; } } - if($recursive !== ""){ - $this->server->getLogger()->warning($this->server->getLanguage()->translateString("pocketmine.command.alias.recursive", [$alias, $recursive])); + if(!empty($recursive)){ + $this->server->getLogger()->warning($this->server->getLanguage()->translateString("pocketmine.command.alias.recursive", [$alias, implode(", ", $recursive)])); continue; } - if(strlen($bad) > 0){ - $this->server->getLogger()->warning($this->server->getLanguage()->translateString("pocketmine.command.alias.notFound", [$alias, $bad])); + if(!empty($bad)){ + $this->server->getLogger()->warning($this->server->getLanguage()->translateString("pocketmine.command.alias.notFound", [$alias, implode(", ", $bad)])); continue; } diff --git a/src/pocketmine/command/defaults/PluginsCommand.php b/src/pocketmine/command/defaults/PluginsCommand.php index c86a59286..e4332b81d 100644 --- a/src/pocketmine/command/defaults/PluginsCommand.php +++ b/src/pocketmine/command/defaults/PluginsCommand.php @@ -25,6 +25,7 @@ namespace pocketmine\command\defaults; use pocketmine\command\CommandSender; use pocketmine\lang\TranslationContainer; +use pocketmine\plugin\Plugin; use pocketmine\utils\TextFormat; class PluginsCommand extends VanillaCommand{ @@ -43,20 +44,12 @@ class PluginsCommand extends VanillaCommand{ if(!$this->testPermission($sender)){ return true; } - $this->sendPluginList($sender); + + $list = array_map(function(Plugin $plugin) : string{ + return ($plugin->isEnabled() ? TextFormat::GREEN : TextFormat::RED) . $plugin->getDescription()->getFullName(); + }, $sender->getServer()->getPluginManager()->getPlugins()); + + $sender->sendMessage(new TranslationContainer("pocketmine.command.plugins.success", [count($list), implode(TextFormat::WHITE . ", ", $list)])); return true; } - - private function sendPluginList(CommandSender $sender){ - $list = ""; - foreach(($plugins = $sender->getServer()->getPluginManager()->getPlugins()) as $plugin){ - if(strlen($list) > 0){ - $list .= TextFormat::WHITE . ", "; - } - $list .= $plugin->isEnabled() ? TextFormat::GREEN : TextFormat::RED; - $list .= $plugin->getDescription()->getFullName(); - } - - $sender->sendMessage(new TranslationContainer("pocketmine.command.plugins.success", [count($plugins), $list])); - } } diff --git a/src/pocketmine/command/defaults/TeleportCommand.php b/src/pocketmine/command/defaults/TeleportCommand.php index b83b21677..899086540 100644 --- a/src/pocketmine/command/defaults/TeleportCommand.php +++ b/src/pocketmine/command/defaults/TeleportCommand.php @@ -49,7 +49,7 @@ class TeleportCommand extends VanillaCommand{ } $args = array_values(array_filter($args, function($arg){ - return strlen($arg) > 0; + return $arg !== ""; })); if(count($args) < 1 or count($args) > 6){ throw new InvalidCommandSyntaxException(); diff --git a/src/pocketmine/entity/Living.php b/src/pocketmine/entity/Living.php index ac22eb6ff..b70e42f31 100644 --- a/src/pocketmine/entity/Living.php +++ b/src/pocketmine/entity/Living.php @@ -661,13 +661,8 @@ abstract class Living extends Entity implements Damageable{ $this->attack($ev); } - if(!$this->canBreathe()){ - $this->setBreathing(false); - $this->doAirSupplyTick($tickDiff); + if($this->doAirSupplyTick($tickDiff)){ $hasUpdate = true; - }elseif(!$this->isBreathing()){ - $this->setBreathing(true); - $this->setAirSupplyTicks($this->getMaxAirSupplyTicks()); } } @@ -696,22 +691,42 @@ abstract class Living extends Entity implements Damageable{ } /** - * Ticks the entity's air supply when it cannot breathe. + * Ticks the entity's air supply, consuming it when underwater and regenerating it when out of water. + * * @param int $tickDiff + * + * @return bool */ - protected function doAirSupplyTick(int $tickDiff) : void{ - if(($respirationLevel = $this->armorInventory->getHelmet()->getEnchantmentLevel(Enchantment::RESPIRATION)) <= 0 or - lcg_value() <= (1 / ($respirationLevel + 1)) - ){ - $ticks = $this->getAirSupplyTicks() - $tickDiff; + protected function doAirSupplyTick(int $tickDiff) : bool{ + $ticks = $this->getAirSupplyTicks(); + $oldTicks = $ticks; + if(!$this->canBreathe()){ + $this->setBreathing(false); - if($ticks <= -20){ - $this->setAirSupplyTicks(0); - $this->onAirExpired(); - }else{ - $this->setAirSupplyTicks($ticks); + if(($respirationLevel = $this->armorInventory->getHelmet()->getEnchantmentLevel(Enchantment::RESPIRATION)) <= 0 or + lcg_value() <= (1 / ($respirationLevel + 1)) + ){ + $ticks -= $tickDiff; + if($ticks <= -20){ + $ticks = 0; + $this->onAirExpired(); + } + } + }elseif(!$this->isBreathing()){ + if($ticks < ($max = $this->getMaxAirSupplyTicks())){ + $ticks += $tickDiff * 5; + } + if($ticks >= $max){ + $ticks = $max; + $this->setBreathing(true); } } + + if($ticks !== $oldTicks){ + $this->setAirSupplyTicks($ticks); + } + + return $ticks !== $oldTicks; } /** diff --git a/src/pocketmine/level/format/io/leveldb/LevelDB.php b/src/pocketmine/level/format/io/leveldb/LevelDB.php index 71dbcb94f..6c50ac9fc 100644 --- a/src/pocketmine/level/format/io/leveldb/LevelDB.php +++ b/src/pocketmine/level/format/io/leveldb/LevelDB.php @@ -377,7 +377,7 @@ class LevelDB extends BaseLevelProvider{ /** @var CompoundTag[] $entities */ $entities = []; - if(($entityData = $this->db->get($index . self::TAG_ENTITY)) !== false and strlen($entityData) > 0){ + if(($entityData = $this->db->get($index . self::TAG_ENTITY)) !== false and $entityData !== ""){ $entities = $nbt->read($entityData, true); if(!is_array($entities)){ $entities = [$entities]; @@ -392,7 +392,7 @@ class LevelDB extends BaseLevelProvider{ } $tiles = []; - if(($tileData = $this->db->get($index . self::TAG_BLOCK_ENTITY)) !== false and strlen($tileData) > 0){ + if(($tileData = $this->db->get($index . self::TAG_BLOCK_ENTITY)) !== false and $tileData !== ""){ $tiles = $nbt->read($tileData, true); if(!is_array($tiles)){ $tiles = [$tiles]; @@ -402,7 +402,7 @@ class LevelDB extends BaseLevelProvider{ //TODO: extra data should be converted into blockstorage layers (first they need to be implemented!) /* $extraData = []; - if(($extraRawData = $this->db->get($index . self::TAG_BLOCK_EXTRA_DATA)) !== false and strlen($extraRawData) > 0){ + if(($extraRawData = $this->db->get($index . self::TAG_BLOCK_EXTRA_DATA)) !== false and $extraRawData !== ""){ $binaryStream->setBuffer($extraRawData, 0); $count = $binaryStream->getLInt(); for($i = 0; $i < $count; ++$i){ diff --git a/src/pocketmine/network/rcon/RCONInstance.php b/src/pocketmine/network/rcon/RCONInstance.php index 47790e4e6..0c59029a2 100644 --- a/src/pocketmine/network/rcon/RCONInstance.php +++ b/src/pocketmine/network/rcon/RCONInstance.php @@ -177,7 +177,7 @@ class RCONInstance extends Thread{ $disconnect[$id] = $sock; break; } - if(strlen($payload) > 0){ + if($payload !== ""){ $this->cmd = ltrim($payload); $this->synchronized(function(){ $this->notifier->wakeupSleeper(); diff --git a/src/pocketmine/permission/BanEntry.php b/src/pocketmine/permission/BanEntry.php index 790fb8ada..3c91d5839 100644 --- a/src/pocketmine/permission/BanEntry.php +++ b/src/pocketmine/permission/BanEntry.php @@ -168,7 +168,7 @@ class BanEntry{ } $expire = trim(array_shift($str)); - if(strtolower($expire) !== "forever" and strlen($expire) > 0){ + if($expire !== "" and strtolower($expire) !== "forever"){ $entry->setExpires(self::parseDate($expire)); } if(empty($str)){