diff --git a/changelogs/4.2.md b/changelogs/4.2.md index 337a17943..ac1124dda 100644 --- a/changelogs/4.2.md +++ b/changelogs/4.2.md @@ -19,3 +19,12 @@ Released 19th February 2022. ## Fixes - Fixed multiple players being able to sleep in the same bed. - Fixed hitbox not resetting properly after swimming or gliding. + +# 4.2.2 +Released 2nd March 2022. + +## Fixes +- Fixed crash in `/dumpmemory` due to usage of non-printable string keys in `CraftingManager`. Array contents in memory dumps are now rendered as prettified key-value pairs. +- Fixed output directory for `/dumpmemory`. +- `PlayerInventory->isHotbarSlot()` now correctly returns `false` when given `9`. +- Fixed ghost items left in the inventory when dropping tools while mining. diff --git a/src/plugin/PluginManager.php b/src/plugin/PluginManager.php index 529fe5bbe..f26e13a44 100644 --- a/src/plugin/PluginManager.php +++ b/src/plugin/PluginManager.php @@ -435,10 +435,11 @@ class PluginManager{ $plugin->getScheduler()->setEnabled(true); $plugin->onEnableStateChange(true); + if($plugin->isEnabled()){ //the plugin may have disabled itself during onEnable() + $this->enabledPlugins[$plugin->getDescription()->getName()] = $plugin; - $this->enabledPlugins[$plugin->getDescription()->getName()] = $plugin; - - (new PluginEnableEvent($plugin))->call(); + (new PluginEnableEvent($plugin))->call(); + } } } diff --git a/src/scheduler/TaskScheduler.php b/src/scheduler/TaskScheduler.php index f66bd857a..c194b0b2b 100644 --- a/src/scheduler/TaskScheduler.php +++ b/src/scheduler/TaskScheduler.php @@ -130,6 +130,9 @@ class TaskScheduler{ } public function mainThreadHeartbeat(int $currentTick) : void{ + if(!$this->enabled){ + throw new \LogicException("Cannot run heartbeat on a disabled scheduler"); + } $this->currentTick = $currentTick; while($this->isReady($this->currentTick)){ /** @var TaskHandler $task */