this is pocketmine code but why it doesn´t work? players can´t drink potions PHP: switch($packet->event){ case 9: //Eating $items = [ //TODO: move this to item classes Item::APPLE => 4, Item::MUSHROOM_STEW => 10, Item::BEETROOT_SOUP => 10, Item::BREAD => 5, Item::RAW_PORKCHOP => 3, Item::COOKED_PORKCHOP => 8, Item::RAW_BEEF => 3, Item::STEAK => 8, Item::COOKED_CHICKEN => 6, Item::RAW_CHICKEN => 2, Item::MELON_SLICE => 2, Item::GOLDEN_APPLE => 10, Item::PUMPKIN_PIE => 8, Item::CARROT => 4, Item::POTATO => 1, Item::BAKED_POTATO => 6, Item::COOKIE => 2, Item::COOKED_FISH => [ 0 => 5, 1 => 6 ], Item::RAW_FISH => [ 0 => 2, 1 => 2, 2 => 1, 3 => 1 ], 373 => [ 21 => 4, 22 => 8 ], ]; $slot = $this->inventory->getItemInHand(); if($this->getHealth() < $this->getMaxHealth() and isset($items[$slot->getId()])){ $this->server->getPluginManager()->callEvent($ev = new PlayerItemConsumeEvent($this, $slot)); if($ev->isCancelled()){ $this->inventory->sendContents($this); break; } $pk = new EntityEventPacket(); $pk->eid = $this->getId(); $pk->event = EntityEventPacket::USE_ITEM; $pk; $this->dataPacket($pk); Server::broadcastPacket($this->getViewers(), $pk); $amount = $items[$slot->getId()]; if(is_array($amount)){ $amount = isset($amount[$slot->getDamage()]) ? $amount[$slot->getDamage()] : 0; } $ev = new EntityRegainHealthEvent($this, $amount, EntityRegainHealthEvent::CAUSE_EATING); $this->heal($ev->getAmount(), $ev); --$slot->count; $this->inventory->setItemInHand($slot, $this); if($slot->getId() === Item::MUSHROOM_STEW or $slot->getId() === Item::BEETROOT_SOUP){ $this->inventory->addItem(Item::get(Item::BOWL, 0, 1)); }elseif($slot->getId() === Item::RAW_FISH and $slot->getDamage() === 3){ //Pufferfish $this->addEffect(Effect::getEffect(Effect::HUNGER)->setAmplifier(2)->setDuration(15 * 20)); //$this->addEffect(Effect::getEffect(Effect::NAUSEA)->setAmplifier(1)->setDuration(15 * 20)); $this->addEffect(Effect::getEffect(Effect::POISON)->setAmplifier(3)->setDuration(60 * 20)); }elseif($slot->getId() === 373 and $slot->getDamage() === 31){ //potion strenght $this->addEffect(Effect::getEffect(Effect::STRENGTH)->setAmplifier(1)->setDuration(180 * 20)); } elseif($slot->getId() === 373 and $slot->getDamage() === 14){ //potion speed $this->addEffect(Effect::getEffect(Effect::SPEED)->setAmplifier(1)->setDuration(180 * 20)); } elseif($slot->getId() === 373 and $slot->getDamage() === 28){ //potion regeneration $this->addEffect(Effect::getEffect(Effect::REGENERATION)->setAmplifier(1)->setDuration(45 * 20)); } } break; } break;
2 likes and maybe i will be a Notable member and why potions in MCPE have different metadata than in PC version?