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

Solved How to spawn a dropped item near a player that sneaks?

Discussion in 'Development' started by MalakasPlayzMCPE, Mar 15, 2018.

  1. MalakasPlayzMCPE

    MalakasPlayzMCPE Zombie Pigman

    Messages:
    667
    How to spawn a dropped item near a player that sneaks?
     
  2. korado531m7

    korado531m7 Slime

    Messages:
    77
    GitHub:
    korado531m7
    check using isSneaking(), then add with AddItemEntityPacket
     
  3. MalakasPlayzMCPE

    MalakasPlayzMCPE Zombie Pigman

    Messages:
    667
    if the $player->isSneaking?
     
  4. korado531m7

    korado531m7 Slime

    Messages:
    77
    GitHub:
    korado531m7
    yes
    Code:
    if($player->isSneaking()){
    //player is sneaking
    }
    
     
  5. MalakasPlayzMCPE

    MalakasPlayzMCPE Zombie Pigman

    Messages:
    667
    Ok. Wait to make some code...
     
  6. korado531m7

    korado531m7 Slime

    Messages:
    77
    GitHub:
    korado531m7
    too sleepy because in japan, now time is am 2:08. i'll go to bed
     
  7. MalakasPlayzMCPE

    MalakasPlayzMCPE Zombie Pigman

    Messages:
    667
    Good night then
     
  8. MalakasPlayzMCPE

    MalakasPlayzMCPE Zombie Pigman

    Messages:
    667
    PHP:
    <?php
    namespace MalakasPlayzMC;

    use 
    pocketmine\utils\TextFormat;
    use 
    pocketmine\plugin\PluginBase;
    use 
    pocketmine\event\player\PlayerChatEvent;
    use 
    pocketmine\command\CommandSender;
    use 
    pocketmine\command\Command;
    use 
    pocketmine\event\entity\EntityEvent;
    use 
    pocketmine\Player;
    use 
    pocketmine\entity\Entity;
    use 
    pocketmine\entity\object\ItemEntity;
    use 
    pocketmine\network\mcpe\protocol\AddItemEntityPacket;
    use 
    pocketmine\item\Item;
    use 
    pocketmine\event\inventory\InventoryPickupItemEvent;

    class 
    Main extends PluginBase{

        public function 
    onEnable(){
            
    $this->getLogger()->info(TextFormat::GOLD "Enabled!");
        }

        public function 
    onDisable(){
            
    $this->getLogger()->info(TextFormat::GOLD "Disabled!");
        }

        public function 
    onSneak(Player $player){
            if(
    $player->isSneaking()){
                
    $pk = new AddItemEntityPacket();
                
    $pk->entityRuntimeId = ?; //help needed here
                
    $pk->type = ?; //and here
                
    $pk->position $player->position;
                
    $pk->yaw $player->yaw;
                
    $pk->pitch $player->pitch;
                
    $pk->metadata $this->getDataPropertyManager()->getAll();
                
    $player->dataPacket($pk);

            }
        }

        public function 
    onPickup(InventoryPickupItemEvent $event){
            
    $event->setCancelled();
        }

    }
     
  9. Muqsit

    Muqsit Chicken

    Messages:
    1,548
    GitHub:
    muqsit
    Player->getLevel()->dropItem(Player, Item::get(Item::DIRT));?
     
    JohnsonK79 and OnTheVerge like this.
  10. MalakasPlayzMCPE

    MalakasPlayzMCPE Zombie Pigman

    Messages:
    667
    Wow, one line of code. I didn't know that method. Thanks!
     
    Muqsit likes this.
  11. MalakasPlayzMCPE

    MalakasPlayzMCPE Zombie Pigman

    Messages:
    667
    What do i do wrong? It doesn't spawn it:
    PHP:
        public function onSneak(Player $player){
            if(
    $player->isSneaking()){
                
    $player->getLevel()->dropItem(PlayerItem::get(Item::DIRT));
            }
        }
     
  12. iCirgio

    iCirgio Slime

    Messages:
    92
    GitHub:
    lolnova
    As you can see Player is not defined

    It will need to be defined so code will be
    PHP:
    public function onSneak(Player $player){
            if(
    $player->isSneaking()){
                
    $player->getLevel()->dropItem($playerItem::get(Item::DIRT));
            }
        }
     
  13. MalakasPlayzMCPE

    MalakasPlayzMCPE Zombie Pigman

    Messages:
    667
    PHP:
    $player $event->getPlayer
    ?
     
  14. robske_110 (Tim)

    robske_110 (Tim) Wither Skeleton Poggit Reviewer

    Messages:
    1,342
    GitHub:
    robske110
    Use
    PHP:
    public function onSneak(PlayerToggleSneakEvent $event){
        if(
    $event->isSneaking()){
            
    $event->getPlayer()->getLevel()->dropItem($playerItem::get(Item::DIRT));
        }
    }
    inside a Listener (and don't forget to register events!)
     
    OnTheVerge likes this.
  15. MalakasPlayzMCPE

    MalakasPlayzMCPE Zombie Pigman

    Messages:
    667
    thanks
     
  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.