mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-21 08:17:34 +00:00
Move command timings to Timings::
this avoids duplicate timings entries when command labels are changed and changed back, or if multiple command maps are in use. In addition, it also solves some PHPStan issues :)
This commit is contained in:
parent
53cae8911d
commit
bd01a919e5
@ -31,8 +31,6 @@ use pocketmine\lang\KnownTranslationFactory;
|
||||
use pocketmine\lang\Translatable;
|
||||
use pocketmine\permission\PermissionManager;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\timings\Timings;
|
||||
use pocketmine\timings\TimingsHandler;
|
||||
use pocketmine\utils\BroadcastLoggerForwarder;
|
||||
use pocketmine\utils\TextFormat;
|
||||
use function explode;
|
||||
@ -60,8 +58,6 @@ abstract class Command{
|
||||
private ?string $permission = null;
|
||||
private ?string $permissionMessage = null;
|
||||
|
||||
public ?TimingsHandler $timings = null;
|
||||
|
||||
/**
|
||||
* @param string[] $aliases
|
||||
*/
|
||||
@ -136,7 +132,6 @@ abstract class Command{
|
||||
public function setLabel(string $name) : bool{
|
||||
$this->nextLabel = $name;
|
||||
if(!$this->isRegistered()){
|
||||
$this->timings = new TimingsHandler(Timings::INCLUDED_BY_OTHER_TIMINGS_PREFIX . "Command: " . $name);
|
||||
$this->label = $name;
|
||||
|
||||
return true;
|
||||
|
@ -26,6 +26,7 @@ namespace pocketmine\command;
|
||||
use pocketmine\command\utils\CommandStringHelper;
|
||||
use pocketmine\command\utils\InvalidCommandSyntaxException;
|
||||
use pocketmine\lang\KnownTranslationFactory;
|
||||
use pocketmine\timings\Timings;
|
||||
use pocketmine\utils\AssumptionFailedError;
|
||||
use pocketmine\utils\TextFormat;
|
||||
use function array_map;
|
||||
@ -82,14 +83,15 @@ class FormattedCommandAlias extends Command{
|
||||
}
|
||||
|
||||
if(($target = $commandMap->getCommand($commandLabel)) !== null){
|
||||
$target->timings->startTiming();
|
||||
$timings = Timings::getCommandDispatchTimings($target->getLabel());
|
||||
$timings->startTiming();
|
||||
|
||||
try{
|
||||
$target->execute($sender, $commandLabel, $commandArgs);
|
||||
}catch(InvalidCommandSyntaxException $e){
|
||||
$sender->sendMessage($sender->getLanguage()->translate(KnownTranslationFactory::commands_generic_usage($target->getUsage())));
|
||||
}finally{
|
||||
$target->timings->stopTiming();
|
||||
$timings->stopTiming();
|
||||
}
|
||||
}else{
|
||||
$sender->sendMessage($sender->getLanguage()->translate(KnownTranslationFactory::pocketmine_command_notFound($commandLabel, "/help")->prefix(TextFormat::RED)));
|
||||
|
@ -68,6 +68,7 @@ use pocketmine\command\utils\CommandStringHelper;
|
||||
use pocketmine\command\utils\InvalidCommandSyntaxException;
|
||||
use pocketmine\lang\KnownTranslationFactory;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\timings\Timings;
|
||||
use pocketmine\utils\TextFormat;
|
||||
use function array_shift;
|
||||
use function count;
|
||||
@ -199,7 +200,8 @@ class SimpleCommandMap implements CommandMap{
|
||||
|
||||
$sentCommandLabel = array_shift($args);
|
||||
if($sentCommandLabel !== null && ($target = $this->getCommand($sentCommandLabel)) !== null){
|
||||
$target->timings->startTiming();
|
||||
$timings = Timings::getCommandDispatchTimings($target->getLabel());
|
||||
$timings->startTiming();
|
||||
|
||||
try{
|
||||
if($target->testPermission($sender)){
|
||||
@ -208,7 +210,7 @@ class SimpleCommandMap implements CommandMap{
|
||||
}catch(InvalidCommandSyntaxException $e){
|
||||
$sender->sendMessage($sender->getLanguage()->translate(KnownTranslationFactory::commands_generic_usage($target->getUsage())));
|
||||
}finally{
|
||||
$target->timings->stopTiming();
|
||||
$timings->stopTiming();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -93,6 +93,12 @@ abstract class Timings{
|
||||
/** @var TimingsHandler[] */
|
||||
public static array $pluginTaskTimingMap = [];
|
||||
|
||||
/**
|
||||
* @var TimingsHandler[]
|
||||
* @phpstan-var array<string, TimingsHandler>
|
||||
*/
|
||||
private static array $commandTimingMap = [];
|
||||
|
||||
public static TimingsHandler $broadcastPackets;
|
||||
|
||||
public static function init() : void{
|
||||
@ -227,4 +233,10 @@ abstract class Timings{
|
||||
|
||||
return self::$packetSendTimingMap[$pid];
|
||||
}
|
||||
|
||||
public static function getCommandDispatchTimings(string $commandName) : TimingsHandler{
|
||||
self::init();
|
||||
|
||||
return self::$commandTimingMap[$commandName] ??= new TimingsHandler(self::INCLUDED_BY_OTHER_TIMINGS_PREFIX . "Command - " . $commandName);
|
||||
}
|
||||
}
|
||||
|
@ -470,26 +470,6 @@ parameters:
|
||||
count: 1
|
||||
path: ../../../src/command/Command.php
|
||||
|
||||
-
|
||||
message: "#^Cannot call method startTiming\\(\\) on pocketmine\\\\timings\\\\TimingsHandler\\|null\\.$#"
|
||||
count: 1
|
||||
path: ../../../src/command/FormattedCommandAlias.php
|
||||
|
||||
-
|
||||
message: "#^Cannot call method stopTiming\\(\\) on pocketmine\\\\timings\\\\TimingsHandler\\|null\\.$#"
|
||||
count: 1
|
||||
path: ../../../src/command/FormattedCommandAlias.php
|
||||
|
||||
-
|
||||
message: "#^Cannot call method startTiming\\(\\) on pocketmine\\\\timings\\\\TimingsHandler\\|null\\.$#"
|
||||
count: 1
|
||||
path: ../../../src/command/SimpleCommandMap.php
|
||||
|
||||
-
|
||||
message: "#^Cannot call method stopTiming\\(\\) on pocketmine\\\\timings\\\\TimingsHandler\\|null\\.$#"
|
||||
count: 1
|
||||
path: ../../../src/command/SimpleCommandMap.php
|
||||
|
||||
-
|
||||
message: "#^Cannot call method addParticle\\(\\) on pocketmine\\\\world\\\\World\\|null\\.$#"
|
||||
count: 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user