Skip to content

InvMenu inventory may be opened twice #257

@DaisukeDaisuke

Description

@DaisukeDaisuke

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

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions