-
Notifications
You must be signed in to change notification settings - Fork 80
Open
Labels
bugSomething isn't workingSomething isn't working
Description
I don't know why this happens, but my InvMenu sometimes opens twice
It might even be an injection error
This can be annoying for users as it distracts them
- I take great care to avoid source code conflicts
m14.mp4
<?php
declare(strict_types=1);
namespace core\job;
use muqsit\invmenu\InvMenu;
use muqsit\invmenu\transaction\InvMenuTransaction;
use muqsit\invmenu\transaction\InvMenuTransactionResult;
use pocketmine\block\VanillaBlocks;
use pocketmine\player\Player;
class JobSelectorWizard{
/**
* @param \Closure(Job): void $onComplete
*/
public static function mainWizard(Player $player, \Closure $onComplete) : void{
$jobs = JobRegistry::getAll();
$menu = InvMenu::create(InvMenu::TYPE_DOUBLE_CHEST);
$inventory = $menu->getInventory();
for($i = 0; $i < $inventory->getSize(); $i++){
$inventory->setItem($i, VanillaBlocks::IRON_BARS()->asItem()->setCount(1));
}
foreach($jobs as $key => $job){
$inventory->setItem($key, $job->getDisplayItem($player));
}
//EnchantmentIdMap::
$menu->setListener(function(InvMenuTransaction $transaction) use ($onComplete) : InvMenuTransactionResult{
$player = $transaction->getPlayer();
$itemClicked = $transaction->getItemClicked();
$itemClickedWith = $transaction->getItemClickedWith();
$action = $transaction->getAction();
$invTransaction = $transaction->getTransaction();
$source = $transaction->getAction()->getSourceItem(); //hopper
$target = $transaction->getAction()->getTargetItem(); //player inventory
$slot = $action->getSlot();
$jobs = JobRegistry::getAll();
$job = $jobs[$slot] ?? null;
if($job !== null){
$player->removeCurrentWindow();
($onComplete)($job);
unset($onComplete);
}
return $transaction->discard();
});
$menu->send($player);
}
}Thank you for reading
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working