From 5e7f18cbcf2240c3dac6c6dccd91c9bbda5a380a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 20 Jul 2023 16:20:34 +0100 Subject: [PATCH 1/5] StandardEntityEventBroadcaster: suppress client-side emote messages if users want these, they can broadcast them themselves using Server::broadcastMessage(), which will also record the message in the server log like chat closes #5669 --- src/network/mcpe/StandardEntityEventBroadcaster.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/network/mcpe/StandardEntityEventBroadcaster.php b/src/network/mcpe/StandardEntityEventBroadcaster.php index 9996b354b..160022722 100644 --- a/src/network/mcpe/StandardEntityEventBroadcaster.php +++ b/src/network/mcpe/StandardEntityEventBroadcaster.php @@ -138,6 +138,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)); } } From 6ea7fd7d6b7cb8219f7ffb54d15c8ddf2632d6e0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 20 Jul 2023 16:36:25 +0100 Subject: [PATCH 2/5] ShulkerBox: do not offer support for other blocks --- src/block/ShulkerBox.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/block/ShulkerBox.php b/src/block/ShulkerBox.php index de8cefeb8..49de988cd 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\item\Item; use pocketmine\math\Vector3; use pocketmine\player\Player; @@ -103,4 +104,8 @@ class ShulkerBox extends Opaque{ return true; } + + public function getSupportType(int $facing) : SupportType{ + return SupportType::NONE(); + } } From 4bdd6410db2636fb521c155eced5c385014e2ead Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 20 Jul 2023 17:00:32 +0100 Subject: [PATCH 3/5] Fire: fixed support requirements closes #5599 --- src/block/Fire.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/block/Fire.php b/src/block/Fire.php index 648724529..0f2f7c876 100644 --- a/src/block/Fire.php +++ b/src/block/Fire.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\utils\BlockDataSerializer; +use pocketmine\block\utils\SupportType; use pocketmine\entity\Entity; use pocketmine\entity\projectile\Arrow; use pocketmine\event\block\BlockBurnEvent; @@ -99,9 +100,13 @@ class Fire extends Flowable{ return []; } + private function canBeSupportedBy(Block $block) : bool{ + return $block->getSupportType(Facing::UP)->equals(SupportType::FULL()); + } + public function onNearbyBlockChange() : void{ $world = $this->position->getWorld(); - if($this->getSide(Facing::DOWN)->isTransparent() && !$this->hasAdjacentFlammableBlocks()){ + if(!$this->canBeSupportedBy($this->getSide(Facing::DOWN)) && !$this->hasAdjacentFlammableBlocks()){ $world->setBlock($this->position, VanillaBlocks::AIR()); }else{ $world->scheduleDelayedBlockUpdate($this->position, mt_rand(30, 40)); From 9b43ddecbd77e5ff750ed305eb7d0433a3bca6cc Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 20 Jul 2023 17:10:39 +0100 Subject: [PATCH 4/5] Drop usages of Process:kill() with subprocesses parameter we don't need this any more with console reader improvements, and this was not working correctly anyway. closes #5234 --- src/PocketMine.php | 2 +- src/Server.php | 6 +++--- src/console/ConsoleReaderChildProcess.php | 2 +- src/utils/Process.php | 5 ++++- src/utils/ServerKiller.php | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/PocketMine.php b/src/PocketMine.php index c653d33ea..cbab95c85 100644 --- a/src/PocketMine.php +++ b/src/PocketMine.php @@ -343,7 +343,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 d4aba8282..d1f7ea4b9 100644 --- a/src/Server.php +++ b/src/Server.php @@ -1446,7 +1446,7 @@ class Server{ private function forceShutdownExit() : void{ $this->forceShutdown(); - Process::kill(Process::pid(), true); + Process::kill(Process::pid()); } public function forceShutdown() : void{ @@ -1514,7 +1514,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()); } } @@ -1668,7 +1668,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/console/ConsoleReaderChildProcess.php b/src/console/ConsoleReaderChildProcess.php index 2d4e3fc56..20a3e5bf1 100644 --- a/src/console/ConsoleReaderChildProcess.php +++ b/src/console/ConsoleReaderChildProcess.php @@ -90,4 +90,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/utils/Process.php b/src/utils/Process.php index 96169b34f..c4dd848d5 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 1739643d0..b7f415528 100644 --- a/src/utils/ServerKiller.php +++ b/src/utils/ServerKiller.php @@ -49,7 +49,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()); } } From d65d8c33566bc8e77413c68005b6135926c47df4 Mon Sep 17 00:00:00 2001 From: IvanCraft623 <57236932+IvanCraft623@users.noreply.github.com> Date: Fri, 21 Jul 2023 04:34:34 -0500 Subject: [PATCH 5/5] Fix typo in documentation of `ChunkSelector:selectChunks()` (#5924) --- src/player/ChunkSelector.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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{