Muqsit / InvMenu

A PocketMine-MP virion to create and manage virtual inventories!
https://poggit.pmmp.io/ci/Muqsit/InvMenu/~
GNU General Public License v3.0
200 stars 76 forks source link

W10 Gui disappearing #56

Closed ASANITA closed 4 years ago

ASANITA commented 4 years ago

Here I go again😂. Type double chest when W10 opening and teleporting gui dissappears. With gui I mean inventory gui hearths bar ecc.

Muqsit commented 4 years ago

Can you send an example code to reproduce this? Seems to work fine for me.

Adam1609 commented 4 years ago

It seems that when I use ChestShop (with InvMenu exactly), it doesn't show the GUI when I click the categories. When I check the debug, nothing appeared

ASANITA commented 4 years ago

Can you send an example code to reproduce this? Seems to work fine for me.

<?php

declare(strict_types=1);

namespace Asanino\Modalita;

use pocketmine\plugin\PluginBase; use pocketmine\command\Command; use pocketmine\command\CommandSender; use pocketmine\event\Listener; use pocketmine\Player; use pocketmine\Server; use pocketmine\item\Item; use pocketmine\network\mcpe\protocol\LevelEventPacket; use pocketmine\network\mcpe\protocol\LevelSoundEventPacket; use muqsit\invmenu{InvMenu, InvMenuHandler};

class Main extends PluginBase implements Listener{

public function onEnable() : void{ $this->getserver()->getpluginmanager()->registerevents($this,$this); $this->getlogger()->info("Attivato");

if(!InvMenuHandler::isRegistered()){ InvMenuHandler::register($this); }

$menu = InvMenu::create(InvMenu::TYPE_DOUBLE_CHEST)->readonly()->setName("Modalita!")->setListener([$this, "handleMenuSelection"]); $inv = $menu->getInventory(); $SW = Item::get(Item::DIAMOND); $SW->setCustomName("§l§bSky§fWars"); $fazioni = Item::get(Item::GOLDEN_APPLE); $fazioni->setCustomName("§l§aFazioni"); $kp = Item::get(Item::DIAMOND_SWORD); $kp->setCustomName("§cKitPvP"); $prison = Item::get(Item::STONE_PICKAXE); $prison->setCustomName("§cComing soon..."); $v = Item::get(160, 7); $v->setCustomName("§bHybrid§aFactions"); $inv->setItem(28, $SW); $inv->setItem(30, $fazioni); $inv->setItem(32, $kp); $inv->setItem(34, $prison); $inv->setItem(0, $v); $inv->setItem(1, $v); $inv->setItem(2, $v); $inv->setItem(3, $v); $inv->setItem(4, $v); $inv->setItem(5, $v); $inv->setItem(6, $v); $inv->setItem(7, $v); $inv->setItem(8, $v); $inv->setItem(9, $v); $inv->setItem(10, $v); $inv->setItem(11, $v); $inv->setItem(12, $v); $inv->setItem(13, $v); $inv->setItem(14, $v); $inv->setItem(15, $v); $inv->setItem(16, $v); $inv->setItem(17, $v); $inv->setItem(18, $v); $inv->setItem(19, $v); $inv->setItem(20, $v); $inv->setItem(21, $v); $inv->setItem(22, $v); $inv->setItem(23, $v); $inv->setItem(24, $v); $inv->setItem(25, $v); $inv->setItem(26, $v); $inv->setItem(27, $v); $inv->setItem(29, $v); $inv->setItem(33, $v); $inv->setItem(35, $v); $inv->setItem(31, $v); $inv->setItem(36, $v); $inv->setItem(37, $v); $inv->setItem(38, $v); $inv->setItem(39, $v); $inv->setItem(40, $v); $inv->setItem(41, $v); $inv->setItem(42, $v); $inv->setItem(43, $v); $inv->setItem(44, $v); $inv->setItem(45, $v); $inv->setItem(46, $v); $inv->setItem(47, $v); $inv->setItem(48, $v); $inv->setItem(49, $v); $inv->setItem(50, $v); $inv->setItem(51, $v); $inv->setItem(52, $v); $inv->setItem(53, $v);

}

public function handleMenuSelection(Player $player, Item $itemclicked): bool{

$menu = InvMenu::create(InvMenu::TYPE_DOUBLE_CHEST)->readonly()->setName("Modalita!")->setListener([$this, "handleMenuSelection"]);

$menu = InvMenu::create(InvMenu::TYPE_DOUBLE_CHEST)->readonly()->setName("Modalita!")->setListener([$this, "handleMenuSelection"]); $inv = $menu->getInventory(); $SW = Item::get(Item::DIAMOND); $SW->setCustomName("§l§bSky§fWars"); $fazioni = Item::get(Item::GOLDEN_APPLE); $fazioni->setCustomName("§l§aFazioni"); $kp = Item::get(Item::DIAMOND_SWORD); $kp->setCustomName("§cKitPvP"); $prison = Item::get(Item::STONE_PICKAXE); $prison->setCustomName("§cComing soon..."); $v = Item::get(160, 7); $v->setCustomName("§bHybrid§aFactions"); $inv->setItem(28, $SW); $inv->setItem(30, $fazioni); $inv->setItem(32, $kp); $inv->setItem(34, $prison); $inv->setItem(0, $v); $inv->setItem(1, $v); $inv->setItem(2, $v); $inv->setItem(3, $v); $inv->setItem(4, $v); $inv->setItem(5, $v); $inv->setItem(6, $v); $inv->setItem(7, $v); $inv->setItem(8, $v); $inv->setItem(9, $v); $inv->setItem(10, $v); $inv->setItem(11, $v); $inv->setItem(12, $v); $inv->setItem(13, $v); $inv->setItem(14, $v); $inv->setItem(15, $v); $inv->setItem(16, $v); $inv->setItem(17, $v); $inv->setItem(18, $v); $inv->setItem(19, $v); $inv->setItem(20, $v); $inv->setItem(21, $v); $inv->setItem(22, $v); $inv->setItem(23, $v); $inv->setItem(24, $v); $inv->setItem(25, $v); $inv->setItem(26, $v); $inv->setItem(27, $v); $inv->setItem(29, $v); $inv->setItem(33, $v); $inv->setItem(35, $v); $inv->setItem(31, $v); $inv->setItem(36, $v); $inv->setItem(37, $v); $inv->setItem(38, $v); $inv->setItem(39, $v); $inv->setItem(40, $v); $inv->setItem(41, $v); $inv->setItem(42, $v); $inv->setItem(43, $v); $inv->setItem(44, $v); $inv->setItem(45, $v); $inv->setItem(46, $v); $inv->setItem(47, $v); $inv->setItem(48, $v); $inv->setItem(49, $v); $inv->setItem(50, $v); $inv->setItem(51, $v); $inv->setItem(52, $v); $inv->setItem(53, $v);

if($itemclicked->getCustomName() === "§l§aFazioni"){ $player->getServer()->dispatchCommand($player, "warp fazioni"); $player->getLevel()->broadcastLevelEvent($player, LevelEventPacket::EVENT_PARTICLE_ENDERMAN_TELEPORT, 10); $player->getLevel()->broadcastLevelEvent($player, LevelEventPacket::EVENT_SOUND_PORTAL, 100); }

elseif($itemclicked->getCustomName() === "§l§bSky§fWars"){ $player->getServer()->dispatchCommand($player, "warp sw"); $player->getLevel()->broadcastLevelEvent($player, LevelEventPacket::EVENT_PARTICLE_ENDERMAN_TELEPORT, 10); $player->getLevel()->broadcastLevelEvent($player, LevelEventPacket::EVENT_SOUND_PORTAL, 100); }

elseif($itemclicked->getCustomName() === "§cKitPvP"){ $player->getServer()->dispatchCommand($player, "warp PvP"); $player->getLevel()->broadcastLevelEvent($player, LevelEventPacket::EVENT_PARTICLE_ENDERMAN_TELEPORT, 10); $player->getLevel()->broadcastLevelEvent($player, LevelEventPacket::EVENT_SOUND_PORTAL, 100);

} elseif($itemclicked->getCustomName() === "§cComing soon..."){ $player->sendMessage("§cPrison in arrivo! §b@HybridFactionCanale"); $player->getLevel()->broadcastLevelEvent($player, LevelEventPacket::EVENT_PARTICLE_ENDERMAN_TELEPORT, 10); $player->getLevel()->broadcastLevelEvent($player, LevelEventPacket::EVENT_SOUND_PORTAL, 100);

} return true; }

public function onCommand(CommandSender $sender, Command $command, string $label, array $args) : bool { $menu = InvMenu::create(InvMenu::TYPE_DOUBLE_CHEST)->readonly()->setName("§l§bScegli una Modalita!")->setListener([$this, "handleMenuSelection"]); $inv = $menu->getInventory(); $SW = Item::get(Item::DIAMOND); $SW->setCustomName("§l§bSky§fWars"); $fazioni = Item::get(Item::GOLDEN_APPLE); $fazioni->setCustomName("§l§aFazioni"); $kp = Item::get(Item::DIAMOND_SWORD); $kp->setCustomName("§cKitPvP"); $prison = Item::get(Item::STONE_PICKAXE); $prison->setCustomName("§cComing soon..."); $v = Item::get(160, 7); $v->setCustomName("§bHybrid§aFactions"); $inv->setItem(28, $SW); $inv->setItem(30, $fazioni); $inv->setItem(32, $kp); $inv->setItem(34, $prison); $inv->setItem(0, $v); $inv->setItem(1, $v); $inv->setItem(2, $v); $inv->setItem(3, $v); $inv->setItem(4, $v); $inv->setItem(5, $v); $inv->setItem(6, $v); $inv->setItem(7, $v); $inv->setItem(8, $v); $inv->setItem(9, $v); $inv->setItem(10, $v); $inv->setItem(11, $v); $inv->setItem(12, $v); $inv->setItem(13, $v); $inv->setItem(14, $v); $inv->setItem(15, $v); $inv->setItem(16, $v); $inv->setItem(17, $v); $inv->setItem(18, $v); $inv->setItem(19, $v); $inv->setItem(20, $v); $inv->setItem(21, $v); $inv->setItem(22, $v); $inv->setItem(23, $v); $inv->setItem(24, $v); $inv->setItem(25, $v); $inv->setItem(26, $v); $inv->setItem(27, $v); $inv->setItem(29, $v); $inv->setItem(33, $v); $inv->setItem(35, $v); $inv->setItem(31, $v); $inv->setItem(36, $v); $inv->setItem(37, $v); $inv->setItem(38, $v); $inv->setItem(39, $v); $inv->setItem(40, $v); $inv->setItem(41, $v); $inv->setItem(42, $v); $inv->setItem(43, $v); $inv->setItem(44, $v); $inv->setItem(45, $v); $inv->setItem(46, $v); $inv->setItem(47, $v); $inv->setItem(48, $v); $inv->setItem(49, $v); $inv->setItem(50, $v); $inv->setItem(51, $v); $inv->setItem(52, $v); $inv->setItem(53, $v);

                switch($command->getname()){
    case "modalita":

        $menu->send($sender);

    break;
}
        return true;
}

} 

Ignore the fact that I set every item slot for slot didn't find any other solution 😂

ASANITA commented 4 years ago

Sorry my phone got crazy idk it just kept clicking 😂

Muqsit commented 4 years ago

@ASANITA PMMP force closes inventories when player teleport anywhere which is why you're facing the issue. Also MCPE clients sadly can't view an inventory that's more than about 5 blocks far. @Adam1609 Yup, it's due to player sided latency issues and a lot of "guessing" in when a client has received a packet. https://github.com/Muqsit/InvMenu/issues/41