1. The forums will be archived and moved to a read only mode in about 2 weeks (mid march).

Solved TransferPacket not found

Discussion in 'Development' started by InspectorGadget, May 5, 2017.

  1. InspectorGadget

    InspectorGadget Zombie Pigman

    Messages:
    462
    GitHub:
    InspectorGadget
    Hi! I need help with this:
    Thanks

    PHP:
    <?php

    // some from AddWindow plugin!

    namespace RTG\JDT;

    use 
    pocketmine\block\Block;
    use 
    pocketmine\command\Command;
    use 
    pocketmine\command\CommandSender;
    use 
    pocketmine\event\Listener;
    use 
    pocketmine\item\Item;
    use 
    pocketmine\level\Position;
    use 
    pocketmine\level\Level;
    use 
    pocketmine\Player;
    use 
    pocketmine\math\Vector3;
    use 
    pocketmine\nbt\NBT;
    use 
    pocketmine\nbt\tag\CompoundTag;
    use 
    pocketmine\nbt\tag\IntTag;
    use 
    pocketmine\nbt\tag\ListTag;
    use 
    pocketmine\nbt\tag\StringTag;
    use 
    pocketmine\nbt\tags\IntArrayTag;
    use 
    pocketmine\plugin\PluginBase;
    use 
    pocketmine\tile\Chest;
    use 
    pocketmine\tile\Tile;
    use 
    pocketmine\event\Cancellable;
    use 
    pocketmine\inventory\Inventory;
    use 
    pocketmine\event\entity\EntityInventoryChangeEvent;
    use 
    pocketmine\entity\Entity;
    use 
    pocketmine\network\protocol\TransferPacket;
    use 
    pocketmine\event\block\BlockPlaceEvent;

    class 
    Loader extends PluginBase implements Listener{

        public function 
    onEnable(){
            
    $this->getServer()->getPluginManager()->registerEvents($this$this);
        }
       
        public function 
    sendChestInventory(Player $player){
            
    $nbt = new CompoundTag('', [
                    new 
    StringTag('id'Tile::CHEST),
                    new 
    IntTag('Server Menu'1),
                    new 
    IntTag('x'floor($player->x)),
                    new 
    IntTag('y'floor($player->y) - 4),
                    new 
    IntTag('z'floor($player->z))
            ]);
           
            
    $tile Tile::createTile('Chest'$player->getLevel(), $nbt);
            
    $block Block::get(Block::CHEST);
            
    $block->floor($tile->x);
            
    $block->floor($tile->y);
            
    $block->floor($tile->z);
            
    $block->level $tile->getLevel();
            
    $block->level->sendBlocks([$player], [$block]);
            
    $test Item::get(27901);
            
    $test->setCustomName("JDCraft");
            
    $tile->getInventory()->setItem(0$test);
            
    $player->addWindow($tile->getInventory());
        }

        public function 
    onTransfer(Player $p$ip$port) {      
            
    $pk = new \pocketmine\network\protocol\TransferPacket();
            
    $pk->address $ip;
            
    $pk->port = (int) $port;
            
    $p->dataPacket($pk);
        }

        public function 
    onCheck(EntityInventoryChangeEvent $event){ // Item Use Checker!
            
    $player $event->getEntity();
               
    $newItem $event->getNewItem();
               if(
    $newItem->getName() === "JDCraft"){
                    
    $event->setCancelled();
                    
    $this->onTransfer($player'jdcraft.net'19132);
                      return;
              }
        }

        public function 
    onCommand(CommandSender $senderCommand $cmd$label, array $args){
                if(
    $sender instanceof Player){
                  switch(
    strtolower($cmd->getName())){
                    case 
    "jdt":
                          
    $sender->sendMessage("Added chest window!");
                          
    $this->sendChestInventory($sender);
                    break;
                  }
                }
        }
    }

    Error:

    Code:
    [06:43:17] [Server thread/CRITICAL]: Could not pass event 'pocketmine\event\entity\EntityInventoryChangeEvent' to 'JDTransfer v1.1.0': Class pocketmine\network\protocol\TransferPacket not found on RTG\JDT\Loader
    [06:43:17] [Server thread/CRITICAL]: ClassNotFoundException: "Class pocketmine\network\protocol\TransferPacket not found" (EXCEPTION) in "/src/spl/BaseClassLoader" at line 144
    
     
  2. svile

    svile Spider

    Messages:
    14
    The namespace is \pocketmine\network\mcpe\protocol since the api3 network changes https://github.com/pmmp/PocketMine-.../network/mcpe/protocol/TransferPacket.php#L22
     
  3. Hipster

    Hipster Zombie

    Messages:
    214
    Last edited: May 5, 2017
  4. InspectorGadget

    InspectorGadget Zombie Pigman

    Messages:
    462
    GitHub:
    InspectorGadget
  5. Hipster

    Hipster Zombie

    Messages:
    214
    Np bro
     
  6. SOFe

    SOFe Administrator Staff Member PMMP Team Poggit Admin

    Messages:
    1,968
    GitHub:
    sof3
    There is the Player::transfer() method. Why do you still hardcode the packet?
     
    HimbeersaftLP and yuko fuyutsuki like this.
  7. InspectorGadget

    InspectorGadget Zombie Pigman

    Messages:
    462
    GitHub:
    InspectorGadget
    Noticed that, its an old plugin. It was created when the Packet First came out. That's why it's not having the transfer() function. I'll add it soon
     
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.