diff --git a/src/PocketMine.php b/src/PocketMine.php index 27445a3cf..2c8ab06de 100644 --- a/src/PocketMine.php +++ b/src/PocketMine.php @@ -341,7 +341,7 @@ JIT_WARNING if(ThreadManager::getInstance()->stopAll() > 0){ $logger->debug("Some threads could not be stopped, performing a force-kill"); - Process::kill(Process::pid(), true); + Process::kill(Process::pid()); } }while(false); diff --git a/src/Server.php b/src/Server.php index f604c93d7..3e8efb7ad 100644 --- a/src/Server.php +++ b/src/Server.php @@ -1427,7 +1427,7 @@ class Server{ private function forceShutdownExit() : void{ $this->forceShutdown(); - Process::kill(Process::pid(), true); + Process::kill(Process::pid()); } public function forceShutdown() : void{ @@ -1495,7 +1495,7 @@ class Server{ }catch(\Throwable $e){ $this->logger->logException($e); $this->logger->emergency("Crashed while crashing, killing process"); - @Process::kill(Process::pid(), true); + @Process::kill(Process::pid()); } } @@ -1649,7 +1649,7 @@ class Server{ echo "--- Waiting $spacing seconds to throttle automatic restart (you can kill the process safely now) ---" . PHP_EOL; sleep($spacing); } - @Process::kill(Process::pid(), true); + @Process::kill(Process::pid()); exit(1); } diff --git a/src/block/Fire.php b/src/block/Fire.php index 9e485fa61..0a3b2e3e3 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\block\utils\SupportType; use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\event\block\BlockBurnEvent; use pocketmine\event\block\BlockSpreadEvent; @@ -58,12 +59,16 @@ class Fire extends BaseFire{ return 1; } + private function canBeSupportedBy(Block $block) : bool{ + return $block->getSupportType(Facing::UP)->equals(SupportType::FULL()); + } + public function onNearbyBlockChange() : void{ $world = $this->position->getWorld(); $down = $this->getSide(Facing::DOWN); if(SoulFire::canBeSupportedBy($down)){ $world->setBlock($this->position, VanillaBlocks::SOUL_FIRE()); - }elseif($down->isTransparent() && !$this->hasAdjacentFlammableBlocks()){ + }elseif(!$this->canBeSupportedBy($this->getSide(Facing::DOWN)) && !$this->hasAdjacentFlammableBlocks()){ $world->setBlock($this->position, VanillaBlocks::AIR()); }else{ $world->scheduleDelayedBlockUpdate($this->position, mt_rand(30, 40)); diff --git a/src/block/ShulkerBox.php b/src/block/ShulkerBox.php index b2f53e0a7..821e022f4 100644 --- a/src/block/ShulkerBox.php +++ b/src/block/ShulkerBox.php @@ -25,6 +25,7 @@ namespace pocketmine\block; use pocketmine\block\tile\ShulkerBox as TileShulkerBox; use pocketmine\block\utils\AnyFacingTrait; +use pocketmine\block\utils\SupportType; use pocketmine\data\runtime\RuntimeDataDescriber; use pocketmine\item\Item; use pocketmine\math\Vector3; @@ -110,4 +111,8 @@ class ShulkerBox extends Opaque{ return true; } + + public function getSupportType(int $facing) : SupportType{ + return SupportType::NONE(); + } } diff --git a/src/console/ConsoleReaderChildProcess.php b/src/console/ConsoleReaderChildProcess.php index c37aaa8c9..0d5a30fdc 100644 --- a/src/console/ConsoleReaderChildProcess.php +++ b/src/console/ConsoleReaderChildProcess.php @@ -94,4 +94,4 @@ while(!feof($socket)){ //For simplicity's sake, we don't bother with a graceful shutdown here. //The parent process would normally forcibly terminate the child process anyway, so we only reach this point if the //parent process was terminated forcibly and didn't clean up after itself. -Process::kill(Process::pid(), false); +Process::kill(Process::pid()); diff --git a/src/network/mcpe/StandardEntityEventBroadcaster.php b/src/network/mcpe/StandardEntityEventBroadcaster.php index 334e66e33..1651d154e 100644 --- a/src/network/mcpe/StandardEntityEventBroadcaster.php +++ b/src/network/mcpe/StandardEntityEventBroadcaster.php @@ -139,6 +139,6 @@ final class StandardEntityEventBroadcaster implements EntityEventBroadcaster{ } public function onEmote(array $recipients, Human $from, string $emoteId) : void{ - $this->sendDataPacket($recipients, EmotePacket::create($from->getId(), $emoteId, "", "", EmotePacket::FLAG_SERVER)); + $this->sendDataPacket($recipients, EmotePacket::create($from->getId(), $emoteId, "", "", EmotePacket::FLAG_SERVER | EmotePacket::FLAG_MUTE_ANNOUNCEMENT)); } } diff --git a/src/player/ChunkSelector.php b/src/player/ChunkSelector.php index feb1b25e2..14d6b2888 100644 --- a/src/player/ChunkSelector.php +++ b/src/player/ChunkSelector.php @@ -30,7 +30,7 @@ use const M_SQRT2; final class ChunkSelector{ /** - * @preturn \Generator|int[] + * @return \Generator|int[] * @phpstan-return \Generator */ public function selectChunks(int $radius, int $centerX, int $centerZ) : \Generator{ diff --git a/src/utils/Process.php b/src/utils/Process.php index b5c1e8597..c57b96d4a 100644 --- a/src/utils/Process.php +++ b/src/utils/Process.php @@ -125,7 +125,10 @@ final class Process{ return count(ThreadManager::getInstance()->getAll()) + 2; //MainLogger + Main Thread } - public static function kill(int $pid, bool $subprocesses) : void{ + /** + * @param bool $subprocesses @deprecated + */ + public static function kill(int $pid, bool $subprocesses = false) : void{ $logger = \GlobalLogger::get(); if($logger instanceof MainLogger){ $logger->syncFlushBuffer(); diff --git a/src/utils/ServerKiller.php b/src/utils/ServerKiller.php index 04d52c950..98129f48f 100644 --- a/src/utils/ServerKiller.php +++ b/src/utils/ServerKiller.php @@ -42,7 +42,7 @@ class ServerKiller extends Thread{ }); if(time() - $start >= $this->time){ echo "\nTook too long to stop, server was killed forcefully!\n"; - @Process::kill(Process::pid(), true); + @Process::kill(Process::pid()); } }