Example #1
0
 public function onConsume(Entity $human)
 {
     $pk = new EntityEventPacket();
     $pk->eid = $human->getId();
     $pk->event = EntityEventPacket::USE_ITEM;
     if ($human instanceof Player) {
         $human->dataPacket($pk);
     }
     Server::broadcastPacket($human->getViewers(), $pk);
     Server::getInstance()->getPluginManager()->callEvent($ev = new EntityDrinkPotionEvent($human, $this));
     if (!$ev->isCancelled()) {
         foreach ($ev->getEffects() as $effect) {
             $human->addEffect($effect);
         }
         //Don't set the held item to glass bottle if we're in creative
         if ($human instanceof Player) {
             if ($human->getGamemode() === 1) {
                 return;
             }
         }
         $human->getInventory()->setItemInHand(Item::get(self::GLASS_BOTTLE));
     }
 }
Example #2
0
 public function checkSelectors(array $args, CommandSender $sender, Entity $item)
 {
     foreach ($args as $name => $value) {
         switch ($name) {
             case "m":
                 $mode = intval($value);
                 if ($mode === -1) {
                     break;
                 }
                 // what is the point of adding this (in PC) when they can just safely leave this out?
                 if ($item instanceof Player && $mode !== $item->getGamemode()) {
                     return false;
                 }
                 break;
             case "name":
                 if ($value[0] === "!") {
                     if (substr($value, 1) === strtolower($item->getName())) {
                         return false;
                     }
                 } else {
                     if ($value !== strtolower($item->getName())) {
                         return false;
                     }
                 }
                 break;
             case "type":
                 if ($item instanceof Player) {
                     $type = "player";
                 } else {
                     $type = strtolower($item->getSaveId());
                 }
                 if ($value[0] === "!") {
                     if (substr($value, 1) === $type) {
                         return false;
                     }
                 } else {
                     if ($value !== $type) {
                         return false;
                     }
                 }
                 break;
                 // x,y,z
                 // r,rm
                 // c
                 // dx,dy,dz
                 // rx,rxm
                 // ry,rym
         }
     }
     return true;
 }