public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     switch (count($args)) {
         case 0:
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             $target = $sender;
             break;
         case 1:
             if (($target = $this->owner->getServer()->getPlayer($args[0])) == null) {
                 $sender->sendMessage(mc::_("%1% not found", $args[0]));
                 return true;
             }
             break;
         default:
             return false;
     }
     $item = clone $target->getInventory()->getItemInHand();
     $sender->sendMesage(TextFormat::BLUE . mc::_("Item: ") . TextFormat::WHITE . ItemName::str($item));
     $sender->sendMesage(TextFormat::BLUE . mc::_("ItemId: ") . TextFormat::WHITE . $item->getId());
     $sender->sendMesage(TextFormat::BLUE . mc::_("Count: ") . TextFormat::WHITE . $item->getCount());
     $sender->sendMesage(TextFormat::BLUE . mc::_("Damage: ") . TextFormat::WHITE . $item->getDamage());
     return true;
 }
Example #2
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     $pageNumber = $this->getPageNumber($args);
     if (count($args) != 1) {
         $sender->sendMessage(mc::_("You must specify a player's name"));
         return false;
     }
     if (($target = MPMU::getPlayer($sender, $args[0])) === null) {
         return true;
     }
     if ($cmd->getName() == "seeinv") {
         $tab = [[$args[0], mc::_("Count"), mc::_("Damage")]];
         $max = $target->getInventory()->getSize();
         foreach ($target->getInventory()->getContents() as $slot => &$item) {
             if ($slot >= $max) {
                 continue;
             }
             $tab[] = [ItemName::str($item) . " (" . $item->getId() . ")", $item->getCount(), $item->getDamage()];
         }
         if (count($tab) == 1) {
             $sender->sendMessage(mc::_("The inventory for %1% is EMPTY", $args[0]));
             return true;
         }
     } elseif ($cmd->getName() == "seearmor") {
         $tab = [[mc::_("Armor for"), TextFormat::RED . $args[0]]];
         foreach ([0 => "head", 1 => "body", 2 => "legs", 3 => "boots"] as $slot => $attr) {
             $item = $target->getInventory()->getArmorItem($slot);
             if ($item->getID() == 0) {
                 continue;
             }
             $tab[] = [$attr . TextFormat::BLUE, ItemName::str($item) . " (" . $item->getId() . ":" . $item->getDamage() . ")"];
         }
     }
     return $this->paginateTable($sender, $pageNumber, $tab);
 }
Example #3
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     switch (count($args)) {
         case 0:
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             $target = $sender;
             $other = false;
             break;
         case 1:
             if (($target = MPMU::getPlayer($sender, $args[0])) === null) {
                 return true;
             }
             $other = true;
             break;
         default:
             return false;
     }
     $item = clone $target->getInventory()->getItemInHand();
     if ($item->getId() == Item::AIR) {
         if ($other) {
             $sender->sendMessage(mc::_("%1% is holding nothing!", $target->getDisplayName()));
         } else {
             $sender->sendMessage(mc::_("You are holding nothing!"));
         }
         return true;
     }
     $sender->sendMessage(TextFormat::BLUE . mc::_("Item: ") . TextFormat::WHITE . ItemName::str($item));
     $sender->sendMessage(TextFormat::BLUE . mc::_("ItemId: ") . TextFormat::WHITE . $item->getId());
     $sender->sendMessage(TextFormat::BLUE . mc::_("Count: ") . TextFormat::WHITE . $item->getCount());
     $sender->sendMessage(TextFormat::BLUE . mc::_("Damage: ") . TextFormat::WHITE . $item->getDamage());
     return true;
 }
Example #4
0
 /** Inventory related variables
  * @param Player $player - reference to pocketmine Player
  * @param array &$vars - receives variable defintions
  */
 public function invPlayerVars(Player $player, array &$vars)
 {
     $item = clone $player->getInventory()->getItemInHand();
     if ($item->getId() == Item::AIR) {
         $vars["{item}"] = "";
         $vars["{itemid}"] = "";
     } else {
         $vars["{item}"] = ItemName::str($item);
         $vars["{itemid}"] = $item->getId();
     }
 }
Example #5
0
 private function cmdEtList(CommandSender $c, $args)
 {
     $pageNumber = $this->getPageNumber($args);
     if (count($args) > 1) {
         $c->sendMessage(mc::_("Usage: /et ls [world]"));
         return false;
     }
     if (count($args)) {
         $level = $this->owner->getServer()->getLevelByName($args[0]);
         if (!$level) {
             $c->sendMessage(mc::_("%1%: World not found", $args[0]));
             return true;
         }
     } else {
         if (MPMU::inGame($c, false)) {
             $level = $c->getLevel();
         } else {
             $level = $this->owner->getServer()->getDefaultLevel();
         }
     }
     $cnt = 0;
     $tab = [];
     $tab[] = ["-", mc::_("Name"), mc::_("Position"), mc::_("Health")];
     foreach ($level->getEntities() as $e) {
         if ($e instanceof Player) {
             continue;
         }
         $id = $e->getId();
         $pos = implode(",", [floor($e->getX()), floor($e->getY()), floor($e->getZ())]);
         if ($e instanceof Living) {
             $name = $e->getName();
         } elseif ($e instanceof \pocketmine\entity\Item) {
             $name = mc::_("Item:%1%", ItemName::str($e->getItem()));
         } else {
             $name = basename(strtr(get_class($e), "\\", "/"));
         }
         ++$cnt;
         $tab[] = [$id, $name, $pos, $e->getHealth()];
     }
     $tab[0][0] = "#:{$cnt}";
     if ($cnt) {
         return $this->paginateTable($c, $pageNumber, $tab);
     }
     $c->sendMessage(mc::_("No entities found"));
     return true;
 }
Example #6
0
 private function rmInvItem(CommandSender $sender, array $args)
 {
     if (count($args) == 0) {
         return false;
     }
     if (($target = $this->owner->getServer()->getPlayer($args[0])) === null) {
         if (!MPMU::inGame($sender)) {
             return true;
         }
         $target = $sender;
         $other = false;
     } else {
         if (!MPMU::access($sender, "gb.cmd.rminv.others")) {
             return true;
         }
         array_shift($args);
         $other = true;
     }
     if (count($args) == 0) {
         return false;
     }
     if ($target->isCreative() || $target->isSpectator()) {
         $sender->sendMessage(mc::_("%1% is in %2% mode", $target->getDisplayName(), MPMU::gamemodeStr($target->getGamemode())));
         return true;
     }
     $count = null;
     if (count($args) > 1 && is_numeric($args[count($args) - 1])) {
         $count = array_pop($args);
     }
     $args = strtolower(implode("_", $args));
     if ($args == "hand") {
         $item = clone $target->getInventory()->getItemInHand();
         if ($item->getId() == 0) {
             $sender->sendMessage(mc::_("Must be holding something"));
             return true;
         }
     } else {
         $item = Item::fromString($args);
         if ($item->getId() == 0) {
             $sender->sendMessage(mc::_("There is no item called %1%", $args));
             return true;
         }
     }
     $k = InvUtils::rmInvItem($target, $item, $count);
     if ($k) {
         $sender->sendMessage(mc::n(mc::_("one item of %1% removed", ItemName::str($item)), mc::_("%2% items of %1% removed", ItemName::str($item), $k), $k));
         if ($other) {
             $target->sendMessage(mc::n(mc::_("%2% took one item of %1% from you", ItemName::str($item), $sender->getName()), mc::_("%3% took %2% items of %1% from you", ItemName::str($item), $k, $sender->getName()), $k));
         }
     } else {
         $sender->sendMessage(mc::_("No items were removed!"));
     }
     return true;
 }
Example #7
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if (count($args) == 0) {
         return false;
     }
     $pl = $this->owner->getServer()->getPlayer($args[0]);
     if ($pl !== null) {
         array_shift($args);
         if (count($args) == 0) {
             return false;
         }
         if (!MPMU::access($sender, "gb.cmd.setarmor.others")) {
             return true;
         }
         $others = true;
     } else {
         if (!MPMU::inGame($sender)) {
             return true;
         }
         $pl = $sender;
         $others = false;
     }
     $j = implode("_", $args);
     $item = Item::fromString($j);
     $slot = ArmorItems::getArmorPart($item->getId());
     if ($slot != ArmorItems::ERROR) {
         $pl->getInventory()->setArmorItem($slot, clone $item);
         if ($others) {
             $pl->sendMessage(mc::_("You were equiped an %1% by %2%", ItemName::str($item), $sender->getName()));
             $sender->sendMessage(mc::_("Equiping %1% with %2%", $pl->getDisplayName(), ItemName::str($item)));
         } else {
             $sender->sendMessage(mc::_("Equiping armor %1%", ItemName::str($item)));
         }
         $pl->getInventory()->sendArmorContents($pl);
         return true;
     }
     if (($type = ArmorItems::str2quality($j)) == ArmorItems::ERROR) {
         $sender->sendMessage(mc::_("Unknown armor quality %1%", $j));
         return false;
     }
     foreach ([0, 1, 2, 3] as $slot) {
         $pl->getInventory()->setArmorItem($slot, new Item(ArmorItems::getItemId($type, $slot), 0, 1));
     }
     if ($type == ArmorItems::NONE) {
         if ($others) {
             $pl->sendMessage(mc::_("You were armoured down by %1%", $sender->getName()));
             $sender->sendMessage(mc::_("%1% was armoured down", $pl->getDisplayName()));
         } else {
             $sender->sendMessage(mc::_("Armoured down"));
         }
     } else {
         if ($others) {
             $pl->sendMessage(mc::_("You were armoured up by %1%", $sender->getName()));
             $sender->sendMessage(mc::_("%1% was armoured up", $pl->getDisplayName()));
         } else {
             $sender->sendMessage(mc::_("Armoured up"));
         }
     }
     $pl->getInventory()->sendArmorContents($pl);
     return true;
 }
Example #8
0
 public function onCommand(CommandSender $sender, Command $cmd, $label, array $args)
 {
     if (!isset($args[0])) {
         return false;
     }
     if ($cmd->getName() == "gift") {
         if (($receiver = $this->owner->getServer()->getPlayer($args[0])) == null) {
             if (!MPMU::inGame($sender)) {
                 return true;
             }
             $receiver = $sender;
         } else {
             array_shift($args);
         }
     } else {
         if (!MPMU::inGame($sender)) {
             return true;
         }
         $receiver = $sender;
     }
     if ($receiver->isCreative()) {
         if ($receiver === $sender) {
             $receiver->sendMessage(mc::_("You are in creative mode"));
         } else {
             $sender->sendMessage(mc::_("%1% is in creative mode", $receiver->getDisplayName()));
         }
         return true;
     }
     if (count($args) > 1 && is_numeric($args[count($args) - 1])) {
         $amt = (int) array_pop($args);
     } else {
         $amt = -1;
     }
     $args = strtolower(implode("_", $args));
     if ($args == "more") {
         $item = clone $receiver->getInventory()->getItemInHand();
         if ($item->getId() == 0) {
             $sender->sendMessage(TextFormat::RED . mc::_("Must be holding something"));
             return true;
         }
     } else {
         $item = Item::fromString($args);
         if ($item->getId() == 0) {
             $sender->sendMessage(TextFormat::RED . mc::_("There is no item called %1%", $args));
             return true;
         }
     }
     if ($amt != -1) {
         $item->setCount($amt);
     } else {
         if (isset(self::$stacks[$item->getId()])) {
             $item->setCount(self::$stacks[$item->getId()]);
         } else {
             $item->setCount($item->getMaxStackSize());
         }
     }
     $receiver->getInventory()->addItem(clone $item);
     $this->owner->getServer()->broadcastMessage(mc::_("%1% got %2% of %3% (%4%:%5%)", $receiver->getDisplayName(), $item->getCount(), ItemName::str($item), $item->getId(), $item->getDamage()));
     return true;
 }