Closed ImNotDeveloper closed 4 years ago
Sounds like a fault with your code. Check your imports.
Code:
$menu = InvMenu::create(InvMenu::TYPE_CHEST); $menu->setInventoryCloseListener(function(Player $player, Inventory $inventory) { if($inventory->getItem(10)->isNull() xor $inventory->getItem(16)->isNull()) { $player->getInventory()->addItem($inventory->getItem(10)); $player->getInventory()->addItem($inventory->getItem(16)); }elseif(!($inventory->getItem(10)->isNull() and $inventory->getItem(16)->isNull())) { if($player->getXpLevel() < $this->getConfig()->get("Cost")) { $player->getInventory()->addItem($inventory->getItem(10)); $player->getInventory()->addItem($inventory->getItem(16)); } } }); $menu->getInventory()->setContents([ 0 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 1 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 2 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 3 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 4 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 5 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 6 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 7 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 8 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 9 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 11 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 12 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 13 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 14 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 15 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 17 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 18 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 19 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 20 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 21 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 22 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 23 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 24 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 25 => ItemFactory::get(Item::STAINED_GLASS_PANE, 14), 26 => ItemFactory::get(Item::STAINED_GLASS_PANE, 5),
]);
$menu->send($player, TextFormat::GREEN . TextFormat::BOLD . TextFormat::ITALIC . "Yunque fail");
$player->getLevel()->broadcastLevelEvent($player, LevelEventPacket::EVENT_SOUND_ANVIL_USE, 100);
$menu->setListener(function(Player $player, Item $itemClicked, Item $itemClickedWith, SlotChangeAction $action) use ($menu) : bool {
$item = $action->getInventory()->getItem(10);
$item1 = $action->getInventory()->getItem(10);
$item2 = $action->getInventory()->getItem(16);
$IncompatibleBlaze = [314, 301];
$IncompatibleGrappling = [305]; //313
$IncompatibleGrow = [414]; //415
$IncompatibleHoming = [311,314,301]; //316
$IncompatiblePorkified = [301]; //314
if ($action->getSlot() == 26) {
$getEnchantments = $item1->getEnchantments();
$getEnchantments1 = $item2->getEnchantments();
if ($player->getXpLevel() >= $this->getConfig()->get("Cost")) {
if ($item1->isNull() === false) {
if ($item2->isNull() === false) {
if ($item1->hasEnchantments() and $item2->hasEnchantments()) {
if ($item1->getId() === $item2->getId()) {
foreach ($getEnchantments as $enchantment) {
foreach ($getEnchantments1 as $enchantment1) {
$item->addEnchantment(new EnchantmentInstance(Enchantment::getEnchantment($enchantment->getId()), $enchantment->getLevel()));
$item->addEnchantment(new EnchantmentInstance(Enchantment::getEnchantment($enchantment1->getId()), $enchantment1->getLevel()));
if ($enchantment->getId() === 311 and (in_array($enchantment1->getId(), $IncompatibleBlaze)) or ($enchantment1->getId() === 311 and (in_array($enchantment->getId(), $IncompatibleBlaze)))) {
$menu->remove($player);
$player->getInventory()->addItem($item1);
$player->getInventory()->addItem($item2);
$player->sendMessage(TextFormat::RED . "Incompatible enchantments");
return false;
} elseif ($enchantment->getId() === 313 and (in_array($enchantment1->getId(), $IncompatibleGrappling)) or ($enchantment1->getId() === 313 and (in_array($enchantment->getId(), $IncompatibleGrappling)))) {
$menu->remove($player);
$player->getInventory()->addItem($item1);
$player->getInventory()->addItem($item2);
$player->sendMessage(TextFormat::RED . "Incompatible enchantments");
return false;
} elseif ($enchantment->getId() === 415 and (in_array($enchantment1->getId(), $IncompatibleGrow)) or ($enchantment1->getId() === 415 and (in_array($enchantment->getId(), $IncompatibleGrow)))) {
$menu->remove($player);
$player->getInventory()->addItem($item1);
$player->getInventory()->addItem($item2);
$player->sendMessage(TextFormat::RED . "Incompatible enchantments");
return false;
} elseif ($enchantment->getId() === 316 and (in_array($enchantment1->getId(), $IncompatibleHoming)) or ($enchantment1->getId() === 316 and (in_array($enchantment->getId(), $IncompatibleHoming)))) {
$menu->remove($player);
$player->getInventory()->addItem($item1);
$player->getInventory()->addItem($item2);
$player->sendMessage(TextFormat::RED . "Incompatible enchantments");
return false;
} elseif ($enchantment->getId() === 314 and (in_array($enchantment1->getId(), $IncompatiblePorkified)) or ($enchantment1->getId() === 314 and (in_array($enchantment->getId(), $IncompatiblePorkified)))) {
$menu->remove($player);
$player->getInventory()->addItem($item1);
$player->getInventory()->addItem($item2);
$player->sendMessage(TextFormat::RED . "Incompatible enchantments");
return false;
}
}
}
foreach ($item1->getEnchantments() as $b) {
foreach ($item2->getEnchantments() as $c) {
if ($b->getId() === $c->getId()) {
$level1 = $b->getLevel();
$level2 = $c->getLevel();
if($level1 === $level2){
$level = $level1 + 1;
if($level <= $c->getType()->getMaxLevel()){
$item->addEnchantment(new EnchantmentInstance(Enchantment::getEnchantment($c->getId()), $level));
} elseif($level > $c->getType()->getMaxLevel()){
$item->addEnchantment(new EnchantmentInstance(Enchantment::getEnchantment($c->getId()), $c->getType()->getMaxLevel()));
}
} else {
if($level1 > $level2){
$item->addEnchantment(new EnchantmentInstance(Enchantment::getEnchantment($c->getId()), $level1));
} else {
$item->addEnchantment(new EnchantmentInstance(Enchantment::getEnchantment($c->getId()), $level2));
}
}
//$level = $level1 + $level2;
/**if($level <= $c->getType()->getMaxLevel()) {
$item->addEnchantment(new EnchantmentInstance(Enchantment::getEnchantment($c->getId()), $level));
} elseif($level > $c->getType()->getMaxLevel()) {
$item->addEnchantment(new EnchantmentInstance(Enchantment::getEnchantment($c->getId()), $c->getType()->getMaxLevel()));
}**/ //Anitguo
}
}
}
$player->setXpLevel($player->getXpLevel() - $this->getConfig()->get("Cost"));
$menu->remove($player);
$player->getInventory()->addItem($item);
//$player->sendMessage(TextFormat::GREEN . " ");
$player->getLevel()->broadcastLevelEvent($player, LevelEventPacket::EVENT_CAULDRON_CLEAN_BANNER, 100);
} else {
$menu->remove($player);
$player->sendMessage(TextFormat::RED . "Both items must be the same");
$player->getInventory()->addItem($item1);
$player->getInventory()->addItem($item2);
}
} else {
$menu->remove($player);
$player->sendMessage(TextFormat::RED . "Both items must have enchantments");
$player->getInventory()->addItem($item1);
$player->getInventory()->addItem($item2);
}
} else {
$menu->remove($player);
$player->sendMessage(TextFormat::RED . "F");
$player->getInventory()->addItem($item1);
$player->getInventory()->addItem($item2);
}
} else {
$menu->remove($player);
$player->sendMessage(TextFormat::RED . "F");
$player->getInventory()->addItem($item1);
$player->getInventory()->addItem($item2);
}
} elseif($player->getXpLevel() < $this->getConfig()->get("Cost")){
$menu->remove($player);
$player->getInventory()->addItem($item1);
$player->getInventory()->addItem($item2);
$player->sendMessage(TextFormat::RED . "No tienes la cantidad xp/You don't have the quantity xp");
}
}
if(in_array($action->getSlot(), [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25])) {
$menu->remove($player);
$player->getInventory()->addItem($item1);
$player->getInventory()->addItem($item2);
}
if (in_array($action->getSlot(), [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26])) {
return false;
} else {
return true;
}
});
use pocketmine\Player;
This error happens when I want to pass an item to the inventory that I created with the API. I am using the latest update that you brought out.