GenisysPro  for Minecraft PE/Windows 10 v1.1.x
Feature-rich server software for Minecraft PE and Windows 10 Edition
SimpleCommandMap Class Reference

Public Member Functions

 registerAll ($fallbackPrefix, array $commands)
 
 register ($fallbackPrefix, Command $command, $label=null, $overrideConfig=false)
 
 dispatch (CommandSender $sender, $commandLine)
 
 clearCommands ()
 
 getCommand ($name)
 
 getCommands ()
 
 registerServerAliases ()
 
- Public Member Functions inherited from CommandMap
 register ($fallbackPrefix, Command $command, $label=null)
 

Protected Attributes

 $knownCommands = []
 
 $commandConfig = []
 

Member Function Documentation

◆ clearCommands()

clearCommands ( )
Returns
void

Implements CommandMap.

347  {
348  foreach($this->knownCommands as $command){
349  $command->unregister($this);
350  }
351  $this->knownCommands = [];
352  $this->setDefaultCommands();
353  }

◆ dispatch()

dispatch ( CommandSender  $sender,
  $commandLine 
)
Parameters
CommandSender$sender
string$commandLine
Returns
bool

Implements CommandMap.

313  {
314  $args = explode(" ", $commandLine);
315 
316  if(count($args) === 0){
317  return false;
318  }
319 
320  $sentCommandLabel = strtolower(array_shift($args));
321  $target = $this->getCommand($sentCommandLabel);
322 
323  if($target === null){
324  return false;
325  }
326 
327  $target->timings->startTiming();
328  try{
329  if($this->server->advancedCommandSelector){
330  $this->dispatchAdvanced($sender, $target, $sentCommandLabel, $args);
331  }else{
332  $target->execute($sender, $sentCommandLabel, $args);
333  }
334  }catch(\Throwable $e){
335  $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.exception"));
336  $this->server->getLogger()->critical($this->server->getLanguage()->translateString("pocketmine.command.exception", [$commandLine, (string) $target, $e->getMessage()]));
337  $logger = $sender->getServer()->getLogger();
338  if($logger instanceof MainLogger){
339  $logger->logException($e);
340  }
341  }
342  $target->timings->stopTiming();
343 
344  return true;
345  }

◆ getCommand()

getCommand (   $name)
Parameters
string$name
Returns
null|Command

Implements CommandMap.

360  {
361  if(isset($this->knownCommands[$name])){
362  return $this->knownCommands[$name];
363  }
364 
365  return null;
366  }

◆ getCommands()

getCommands ( )
Returns
Command[]
371  {
372  return $this->knownCommands;
373  }

◆ register()

register (   $fallbackPrefix,
Command  $command,
  $label = null,
  $overrideConfig = false 
)
Parameters
string$fallbackPrefix
Command$command
null$label
bool$overrideConfig
Returns
bool
206  {
207  if($label === null){
208  $label = $command->getName();
209  }
210  $label = strtolower(trim($label));
211 
212  //Check if command was disabled in config and for override
213  if(!(($this->commandConfig[$label] ?? $this->commandConfig["default"] ?? true) or $overrideConfig)){
214  return false;
215  }
216  $fallbackPrefix = strtolower(trim($fallbackPrefix));
217 
218  $registered = $this->registerAlias($command, false, $fallbackPrefix, $label);
219 
220  $aliases = $command->getAliases();
221  foreach($aliases as $index => $alias){
222  if(!$this->registerAlias($command, true, $fallbackPrefix, $alias)){
223  unset($aliases[$index]);
224  }
225  }
226  $command->setAliases($aliases);
227 
228  if(!$registered){
229  $command->setLabel($fallbackPrefix . ":" . $label);
230  }
231 
232  $command->register($this);
233 
234  return $registered;
235  }

◆ registerAll()

registerAll (   $fallbackPrefix,
array  $commands 
)
Parameters
string$fallbackPrefix
array$commands

Implements CommandMap.

192  {
193  foreach($commands as $command){
194  $this->register($fallbackPrefix, $command);
195  }
196  }

◆ registerServerAliases()

registerServerAliases ( )
Returns
void
379  {
380  $values = $this->server->getCommandAliases();
381 
382  foreach($values as $alias => $commandStrings){
383  if(strpos($alias, ":") !== false or strpos($alias, " ") !== false){
384  $this->server->getLogger()->warning($this->server->getLanguage()->translateString("pocketmine.command.alias.illegal", [$alias]));
385  continue;
386  }
387 
388  $targets = [];
389 
390  $bad = "";
391  foreach($commandStrings as $commandString){
392  $args = explode(" ", $commandString);
393  $command = $this->getCommand($args[0]);
394 
395  if($command === null){
396  if(strlen($bad) > 0){
397  $bad .= ", ";
398  }
399  $bad .= $commandString;
400  }else{
401  $targets[] = $commandString;
402  }
403  }
404 
405  if(strlen($bad) > 0){
406  $this->server->getLogger()->warning($this->server->getLanguage()->translateString("pocketmine.command.alias.notFound", [$alias, $bad]));
407  continue;
408  }
409 
410  //These registered commands have absolute priority
411  if(count($targets) > 0){
412  $this->knownCommands[strtolower($alias)] = new FormattedCommandAlias(strtolower($alias), $targets);
413  }else{
414  unset($this->knownCommands[strtolower($alias)]);
415  }
416 
417  }
418  }

Field Documentation

◆ $commandConfig

$commandConfig = []
protected

◆ $knownCommands

$knownCommands = []
protected

The documentation for this class was generated from the following file: