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
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!
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