mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-11 04:17:48 +00:00
PluginManager: Track enabled plugins in a separate array
This commit is contained in:
parent
763e20ba4e
commit
0ff6b7b572
@ -56,6 +56,11 @@ class PluginManager{
|
|||||||
*/
|
*/
|
||||||
protected $plugins = [];
|
protected $plugins = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Plugin[]
|
||||||
|
*/
|
||||||
|
protected $enabledPlugins = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Permission[]
|
* @var Permission[]
|
||||||
*/
|
*/
|
||||||
@ -610,6 +615,8 @@ class PluginManager{
|
|||||||
$plugin->getScheduler()->setEnabled(true);
|
$plugin->getScheduler()->setEnabled(true);
|
||||||
$plugin->setEnabled(true);
|
$plugin->setEnabled(true);
|
||||||
|
|
||||||
|
$this->enabledPlugins[$plugin->getDescription()->getName()] = $plugin;
|
||||||
|
|
||||||
$this->server->getPluginManager()->callEvent(new PluginEnableEvent($plugin));
|
$this->server->getPluginManager()->callEvent(new PluginEnableEvent($plugin));
|
||||||
}catch(\Throwable $e){
|
}catch(\Throwable $e){
|
||||||
$this->server->getLogger()->logException($e);
|
$this->server->getLogger()->logException($e);
|
||||||
@ -689,6 +696,8 @@ class PluginManager{
|
|||||||
$this->server->getLogger()->info($this->server->getLanguage()->translateString("pocketmine.plugin.disable", [$plugin->getDescription()->getFullName()]));
|
$this->server->getLogger()->info($this->server->getLanguage()->translateString("pocketmine.plugin.disable", [$plugin->getDescription()->getFullName()]));
|
||||||
$this->callEvent(new PluginDisableEvent($plugin));
|
$this->callEvent(new PluginDisableEvent($plugin));
|
||||||
|
|
||||||
|
unset($this->enabledPlugins[$plugin->getDescription()->getName()]);
|
||||||
|
|
||||||
try{
|
try{
|
||||||
$plugin->setEnabled(false);
|
$plugin->setEnabled(false);
|
||||||
}catch(\Throwable $e){
|
}catch(\Throwable $e){
|
||||||
@ -703,16 +712,15 @@ class PluginManager{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function tickSchedulers(int $currentTick) : void{
|
public function tickSchedulers(int $currentTick) : void{
|
||||||
foreach($this->plugins as $p){
|
foreach($this->enabledPlugins as $p){
|
||||||
if($p->isEnabled()){
|
$p->getScheduler()->mainThreadHeartbeat($currentTick);
|
||||||
$p->getScheduler()->mainThreadHeartbeat($currentTick);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function clearPlugins(){
|
public function clearPlugins(){
|
||||||
$this->disablePlugins();
|
$this->disablePlugins();
|
||||||
$this->plugins = [];
|
$this->plugins = [];
|
||||||
|
$this->enabledPlugins = [];
|
||||||
$this->fileAssociations = [];
|
$this->fileAssociations = [];
|
||||||
$this->permissions = [];
|
$this->permissions = [];
|
||||||
$this->defaultPerms = [];
|
$this->defaultPerms = [];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user