mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-28 13:45:52 +00:00
don't break bows, stupid
This commit is contained in:
parent
5b191327bc
commit
13d50aff62
@ -2473,66 +2473,68 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case InventoryTransactionPacket::TYPE_RELEASE_ITEM:
|
case InventoryTransactionPacket::TYPE_RELEASE_ITEM:
|
||||||
$this->setUsingItem(false);
|
try{
|
||||||
|
$type = $packet->trData->actionType;
|
||||||
$type = $packet->trData->actionType;
|
switch($type){
|
||||||
switch($type){
|
case InventoryTransactionPacket::RELEASE_ITEM_ACTION_RELEASE:
|
||||||
case InventoryTransactionPacket::RELEASE_ITEM_ACTION_RELEASE:
|
if($this->isUsingItem()){
|
||||||
if($this->isUsingItem()){
|
$item = $this->inventory->getItemInHand();
|
||||||
$item = $this->inventory->getItemInHand();
|
if($item->onReleaseUsing($this)){
|
||||||
if($item->onReleaseUsing($this)){
|
$this->inventory->setItemInHand($item);
|
||||||
$this->inventory->setItemInHand($item);
|
}
|
||||||
}
|
|
||||||
}else{
|
|
||||||
$this->inventory->sendContents($this);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return true;
|
|
||||||
case InventoryTransactionPacket::RELEASE_ITEM_ACTION_CONSUME:
|
|
||||||
$slot = $this->inventory->getItemInHand();
|
|
||||||
|
|
||||||
if($slot->canBeConsumed()){
|
|
||||||
$ev = new PlayerItemConsumeEvent($this, $slot);
|
|
||||||
if(!$slot->canBeConsumedBy($this)){
|
|
||||||
$ev->setCancelled();
|
|
||||||
}
|
|
||||||
$this->server->getPluginManager()->callEvent($ev);
|
|
||||||
if(!$ev->isCancelled()){
|
|
||||||
$slot->onConsume($this);
|
|
||||||
}else{
|
}else{
|
||||||
$this->inventory->sendContents($this);
|
$this->inventory->sendContents($this);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}elseif($this->inventory->getItemInHand()->getId() === Item::BUCKET and $this->inventory->getItemInHand()->getDamage() === 1){ //Milk!
|
case InventoryTransactionPacket::RELEASE_ITEM_ACTION_CONSUME:
|
||||||
$this->server->getPluginManager()->callEvent($ev = new PlayerItemConsumeEvent($this, $this->inventory->getItemInHand()));
|
$slot = $this->inventory->getItemInHand();
|
||||||
if($ev->isCancelled()){
|
|
||||||
$this->inventory->sendContents($this);
|
if($slot->canBeConsumed()){
|
||||||
|
$ev = new PlayerItemConsumeEvent($this, $slot);
|
||||||
|
if(!$slot->canBeConsumedBy($this)){
|
||||||
|
$ev->setCancelled();
|
||||||
|
}
|
||||||
|
$this->server->getPluginManager()->callEvent($ev);
|
||||||
|
if(!$ev->isCancelled()){
|
||||||
|
$slot->onConsume($this);
|
||||||
|
}else{
|
||||||
|
$this->inventory->sendContents($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}elseif($this->inventory->getItemInHand()->getId() === Item::BUCKET and $this->inventory->getItemInHand()->getDamage() === 1){ //Milk!
|
||||||
|
$this->server->getPluginManager()->callEvent($ev = new PlayerItemConsumeEvent($this, $this->inventory->getItemInHand()));
|
||||||
|
if($ev->isCancelled()){
|
||||||
|
$this->inventory->sendContents($this);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$pk = new EntityEventPacket();
|
||||||
|
$pk->entityRuntimeId = $this->getId();
|
||||||
|
$pk->event = EntityEventPacket::USE_ITEM;
|
||||||
|
$this->dataPacket($pk);
|
||||||
|
$this->server->broadcastPacket($this->getViewers(), $pk);
|
||||||
|
|
||||||
|
if($this->isSurvival()){
|
||||||
|
$slot = $this->inventory->getItemInHand();
|
||||||
|
--$slot->count;
|
||||||
|
$this->inventory->setItemInHand($slot);
|
||||||
|
$this->inventory->addItem(ItemFactory::get(Item::BUCKET, 0, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->removeAllEffects();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$pk = new EntityEventPacket();
|
return false;
|
||||||
$pk->entityRuntimeId = $this->getId();
|
default:
|
||||||
$pk->event = EntityEventPacket::USE_ITEM;
|
break;
|
||||||
$this->dataPacket($pk);
|
}
|
||||||
$this->server->broadcastPacket($this->getViewers(), $pk);
|
}finally{
|
||||||
|
$this->setUsingItem(false);
|
||||||
if($this->isSurvival()){
|
|
||||||
$slot = $this->inventory->getItemInHand();
|
|
||||||
--$slot->count;
|
|
||||||
$this->inventory->setItemInHand($slot);
|
|
||||||
$this->inventory->addItem(ItemFactory::get(Item::BUCKET, 0, 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->removeAllEffects();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user