1. The forums will be archived and moved to a read only mode in about 2 weeks (mid march).

undefined method pocketmine\inventory\PlayerInventory::setArmorContents()

Discussion in 'Development' started by Joswin John, Nov 1, 2020.

  1. Joswin John

    Joswin John Creeper

    Messages:
    2
    GitHub:
    joethou
    The error is "Call to undefined method pocketmine\inventory\PlayerInventory::setArmorContents()

    my code is
    Code:
    <?php
    
    namespace HW;
    
    use pocketmine\plugin\PluginBase;
    use pocketmine\event\player\PlayerJoinEvent;
    use pocketmine\event\player\PlayerDeathEvent;
    use pocketmine\Player;
    use pocketmine\Server;
    use pocketmine\event\Listener;
    use pocketmine\command\Command;
    use pocketmine\command\CommandSender;
    use pocketmine\math\Vector3;
    use pocketmine\utils\Config;
    use pocketmine\entity\object\ItemEntity;
    use pocketmine\item\Item;
    use pocketmine\item\ItemFactory;
    use pocketmine\item\ItemIds;
    use pocketmine\inventory\PlayerInventory;
    
    class Main extends PluginBase implements Listener {
    
      public function onEnable() {
        $this->getServer()->getPluginManager()->registerEvents($this,$this); // This is the new line
        $this->getLogger()->info("Plugin Enabled");
      }
    
      public function onJoin(PlayerJoinEvent $event) {
        $player = $event->getPlayer();
        $name = $player->getName();
        $inv = $player->getInventory();
    
        $this->getServer()->broadcastMessage("Welcome $name, to this bad server");
      }
    
      public function onDeath(PlayerDeathEvent $event){
        $sender->setGamemode(Player::SPECTATOR);
      }
    
      public function onCommand(CommandSender $sender, Command $cmd, string $label, array $args) : bool {
        switch($cmd->getName()) {
          case "hw":
            $sender->sendMessage("Hello");
          break;
    
          case "sg":
            $coords = [-26, 53, 863];
            $sender->teleport(new Vector3(...$coords));
          break;
          
          case "hub":
            $sender->teleport(Server::getInstance()->getLevelByName("hub")->getSpawnLocation());
          break;
    
          case "sumo":
            $sender->teleport(Server::getInstance()->getLevelByName("Sumo")->getSpawnLocation());
          break;
    
          case "parkor":
            $sender->teleport(Server::getInstance()->getLevelByName("LVL1")->getSpawnLocation());
          break;
    
          case "bedwarstp":
            $sender->teleport(Server::getInstance()->getLevelByName("bedwars")->getSpawnLocation());
          break;
    
          case "armor":
            $items = array(Item::get(306),Item::get(307),Item::get(308),Item::get(309));
            $sender->getInventory()->setArmorContents(array $items);
            $sender->getInventory()->sendArmorContents($player);
          break;
    
          case "items":
            $sender->getInventory()->addItem(new Item(267, 0, 1));
            $sender->getInventory()->addItem(new Item(297, 0, 32));
            $sender->getInventory()->addItem(new Item(261, 0, 1));
            $sender->getInventory()->addItem(new Item(262, 0, 64));
            $sender->getInventory()->addItem(new Item(259, 0, 1));
          break;
        }
        return true;
      }
    }
    I'm guessing I don't have one of the correct classes to use but I
    don't know which one
     

    Attached Files:

  2. Primus

    Primus Zombie Pigman

    Messages:
    749
    Armor and Player inventory has been separated. You can affect armor inventory by getting player's ArmorInventory object.

    Fix this by using this:
    PHP:
    $sender->getArmorInventory()->setContents($items);
    To simply put it: Your code was outdated.

    Cheers!
     
    GamakCZ and minijaham like this.
  3. Joswin John

    Joswin John Creeper

    Messages:
    2
    GitHub:
    joethou
    Thanks! That worked perfectly, I had been looking at the forums from 2014 guess that's not a great idea after 6 years of updates
     
    Primus likes this.
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.