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

DropItemEvent

Discussion in 'Development' started by kaliiks, Mar 7, 2017.

  1. kaliiks

    kaliiks Zombie

    Messages:
    250
    If player drop item i added item that he drop, but how i check slot number in inventory where item was before dropping and then add to the same slot my code add item but not to the slot where item was before dropping

    PHP:
    public function onDrop(PlayerDropItemEvent $e){
        if(
    $e->getPlayer()->getLevel()->getFolderName() == "Hub"){
            if(!
    $e->getPlayer()->isOp()){
                
    $e->getPlayer()->getInventory()->addItem($e->getItem());
            }
        }
    }
     
  2. jasonwynn10

    jasonwynn10 Moderator Poggit Reviewer

    Messages:
    1,489
    GitHub:
    jasonwynn10
    why not just cancel the event?
     
  3. kaliiks

    kaliiks Zombie

    Messages:
    250
    If i cancel and drop item it add + 1 dropped item
     
  4. Thunder33345

    Thunder33345 Moderator Staff Member

    Messages:
    2,137
    GitHub:
    Thunder33345
    cancel the event without adding item
     
  5. kaliiks

    kaliiks Zombie

    Messages:
    250
    Ok, it is working, but how i add item to slot from which was dropped?
     
  6. Muqsit

    Muqsit Chicken

    Messages:
    1,548
    GitHub:
    muqsit
    PHP:
    /** @var Player $player */
    /** @var int $slot */
    $slot $player->getInventory()->getHeldItemSlot();
     
  7. jasonwynn10

    jasonwynn10 Moderator Poggit Reviewer

    Messages:
    1,489
    GitHub:
    jasonwynn10
    Okay, you are trying to make a script that won't allow players to drop items in the hub world unless they're OP right?
    use this:
    PHP:
    public function onDrop(PlayerDropItemEvent $e){
        if(
    $e->getPlayer()->getLevel()->getFolderName() == "Hub"){
            if(!
    $e->getPlayer()->isOp()){
                
    $e->setCancelled();
            }
        }
    }
     
  8. kaliiks

    kaliiks Zombie

    Messages:
    250
    I tried
    PHP:
    public function onDrop(PlayerDropItemEvent $e){
        if(
    $e->getPlayer()->getLevel()->getFolderName() == "Hub"){
            if(!
    $e->getPlayer()->isOp()){
                
    $slot $e->getPlayer()->getInventory()->getHeldItemSlot();
                
    $e->getPlayer()->getInventory()->setItem($slot$e->getItem());
                
    $e->setCancelled();
            }
        }
    }
    but it already set to the following empty slot
    Am I doing anything bad?
     
  9. kaliiks

    kaliiks Zombie

    Messages:
    250
    Thank you, but it add item to the following empty slot in player inventory and I want to add it to slot from which player dropped it
     
  10. wolfdale

    wolfdale Zombie Pigman

    Messages:
    535
    GitHub:
    diamond-gold
    Just $event->setCancelled() alone would do that
     
    jasonwynn10 likes this.
  11. kaliiks

    kaliiks Zombie

    Messages:
    250
    No, It do not do that
     
  12. Sandertv

    Sandertv Zombie Pigman Poggit Reviewer

    Messages:
    786
    GitHub:
    Sandertv
    Yes it does. Just look at the inventory and tap it away again. It should be in the slot.
     
  13. kaliiks

    kaliiks Zombie

    Messages:
    250
    When i drop is in 2 slot
     

    Attached Files:

  14. wolfdale

    wolfdale Zombie Pigman

    Messages:
    535
    GitHub:
    diamond-gold
    What's your current code? You are using pocketmine right?
     
  15. kaliiks

    kaliiks Zombie

    Messages:
    250
    Yes im using pocketmine not forks
    Code
    PHP:
    public function onDrop(PlayerDropItemEvent $e){
        if(
    $e->getPlayer()->getLevel()->getFolderName() == "Hub"){
            if(!
    $e->getPlayer()->isOp()){
                
    $slot $e->getPlayer()->getInventory()->getHeldItemSlot();
                
    $e->getPlayer()->getInventory()->setItem($slot$e->getItem());
                
    $e->setCancelled();
            }
        }
    }
     
  16. wolfdale

    wolfdale Zombie Pigman

    Messages:
    535
    GitHub:
    diamond-gold
    "Just $event->setCancelled() alone would do that" :facepalm:
    PHP:
    public function onDrop(PlayerDropItemEvent $e){
        if(
    $e->getPlayer()->getLevel()->getFolderName() == "Hub"){
            if(!
    $e->getPlayer()->isOp()){
                
    $e->setCancelled();
            }
        }
    }
     
  17. kaliiks

    kaliiks Zombie

    Messages:
    250
    No, dont add to the same slot
     
  18. wolfdale

    wolfdale Zombie Pigman

    Messages:
    535
    GitHub:
    diamond-gold
    Ermmm...?
     
  19. jasonwynn10

    jasonwynn10 Moderator Poggit Reviewer

    Messages:
    1,489
    GitHub:
    jasonwynn10
    Bad translations...
     
  20. kaliiks

    kaliiks Zombie

    Messages:
    250
    I reinstalled server and it is working.. :D
     
  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.