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

Public Member Functions

 __construct ($name)
 
 execute (CommandSender $sender, $currentAlias, array $args)
 
- Public Member Functions inherited from VanillaCommand
 __construct ($name, $description="", $usageMessage=null, array $aliases=[])
 
- Public Member Functions inherited from Command
 __construct ($name, $description="", $usageMessage=null, array $aliases=[])
 
 getDefaultCommandData ()
 
 generateCustomCommandData (Player $player)
 
 getOverloads ()
 
 execute (CommandSender $sender, $commandLabel, array $args)
 
 getName ()
 
 getPermission ()
 
 setPermission ($permission)
 
 testPermission (CommandSender $target)
 
 testPermissionSilent (CommandSender $target)
 
 getLabel ()
 
 setLabel ($name)
 
 register (CommandMap $commandMap)
 
 unregister (CommandMap $commandMap)
 
 isRegistered ()
 
 getAliases ()
 
 getPermissionMessage ()
 
 getDescription ()
 
 getUsage ()
 
 setAliases (array $aliases)
 
 setDescription ($description)
 
 setPermissionMessage ($permissionMessage)
 
 setUsage ($usage)
 
 __toString ()
 

Additional Inherited Members

- Static Public Member Functions inherited from Command
static generateDefaultData ()
 
static broadcastCommandMessage (CommandSender $source, $message, $sendToSource=true)
 
- Data Fields inherited from VanillaCommand
const MAX_COORD = 30000000
 
const MIN_COORD = -30000000
 
- Data Fields inherited from Command
 $timings
 
- Protected Member Functions inherited from VanillaCommand
 getInteger (CommandSender $sender, $value, $min=self::MIN_COORD, $max=self::MAX_COORD)
 
 getRelativeDouble ($original, CommandSender $sender, $input, $min=self::MIN_COORD, $max=self::MAX_COORD)
 
 getDouble (CommandSender $sender, $value, $min=self::MIN_COORD, $max=self::MAX_COORD)
 
- Protected Attributes inherited from Command
 $commandData = null
 
 $description = ""
 
 $usageMessage
 

Constructor & Destructor Documentation

◆ __construct()

__construct (   $name)

EffectCommand constructor.

Parameters
$name
38  {
39  parent::__construct(
40  $name,
41  "%pocketmine.command.effect.description",
42  "%pocketmine.command.effect.usage"
43  );
44  $this->setPermission("pocketmine.command.effect;pocketmine.command.effect.other");
45  }

Member Function Documentation

◆ execute()

execute ( CommandSender  $sender,
  $currentAlias,
array  $args 
)
Parameters
CommandSender$sender
string$currentAlias
array$args
Returns
bool
54  {
55  if(!$this->testPermission($sender)){
56  return true;
57  }
58 
59  if(count($args) < 2){
60  $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage]));
61  return true;
62  }
63 
64  $player = $sender->getServer()->getPlayer($args[0]);
65 
66  if($player === null){
67  $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.player.notFound"));
68  return true;
69  }
70 
71  if($player->getName() != $sender->getName() && !$sender->hasPermission("pocketmine.command.effect.other")){
72  $sender->sendMessage("You don't have permission to give effect to other player .");
73  return true;
74  }
75 
76  if(strtolower($args[1]) === "clear"){
77  foreach($player->getEffects() as $effect){
78  $player->removeEffect($effect->getId());
79  }
80 
81  $sender->sendMessage(new TranslationContainer("commands.effect.success.removed.all", [$player->getDisplayName()]));
82  return true;
83  }
84 
85  $effect = Effect::getEffectByName($args[1]);
86 
87  if($effect === null){
88  $effect = Effect::getEffect((int) $args[1]);
89  }
90 
91  if($effect === null){
92  $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.effect.notFound", [(string) $args[1]]));
93  return true;
94  }
95 
96  $duration = 300;
97  $amplification = 0;
98 
99  if(count($args) >= 3){
100  $duration = (int) $args[2];
101  if(!($effect instanceof InstantEffect)){
102  $duration *= 20;
103  }
104  }elseif($effect instanceof InstantEffect){
105  $duration = 1;
106  }
107 
108  if(count($args) >= 4){
109  $amplification = (int) $args[3];
110  }
111 
112  if(count($args) >= 5){
113  $v = strtolower($args[4]);
114  if($v === "on" or $v === "true" or $v === "t" or $v === "1"){
115  $effect->setVisible(false);
116  }
117  }
118 
119  if($duration === 0){
120  if(!$player->hasEffect($effect->getId())){
121  if(count($player->getEffects()) === 0){
122  $sender->sendMessage(new TranslationContainer("commands.effect.failure.notActive.all", [$player->getDisplayName()]));
123  }else{
124  $sender->sendMessage(new TranslationContainer("commands.effect.failure.notActive", [$effect->getName(), $player->getDisplayName()]));
125  }
126  return true;
127  }
128 
129  if($player->removeEffect($effect->getId())){
130  $sender->sendMessage(new TranslationContainer("commands.effect.success.removed", [$effect->getName(), $player->getDisplayName()]));
131  }
132  }else{
133  $effect->setDuration($duration)->setAmplifier($amplification);
134 
135  if($player->addEffect($effect)){
136  self::broadcastCommandMessage($sender, new TranslationContainer("%commands.effect.success", [$effect->getName(), $effect->getId(), $effect->getAmplifier(), $player->getDisplayName(), $effect->getDuration() / 20]));
137  }
138  }
139 
140 
141  return true;
142  }

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