One way would be using: PHP: $player->getInventory()->addItem(Item::get(Item::ARROW));if(!Item::get(Item::BOW)->onReleaseUsing($player)){ $player->getInventory()->removeItem(Item::get(Item::ARROW));} You won't be skipping event calls that way, but that's also pretty hacky. For the not-hacky way, refer to Bow->onReleaseUsing() and see how it shoots an arrow when a player releases bow.