mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-13 01:09:44 +00:00
PlayerBlockPickEvent: pre-cancel the event when picking would fail in survival
This commit is contained in:
parent
edccce1419
commit
c19c42a934
@ -1769,17 +1769,20 @@ class Player extends Human implements CommandSender, ChunkLoader, ChunkListener,
|
|||||||
$item = $block->getPickedItem($addTileNBT);
|
$item = $block->getPickedItem($addTileNBT);
|
||||||
|
|
||||||
$ev = new PlayerBlockPickEvent($this, $block, $item);
|
$ev = new PlayerBlockPickEvent($this, $block, $item);
|
||||||
|
$existingSlot = $this->inventory->first($item);
|
||||||
|
if($existingSlot === -1 and $this->hasFiniteResources()){
|
||||||
|
$ev->setCancelled();
|
||||||
|
}
|
||||||
$ev->call();
|
$ev->call();
|
||||||
|
|
||||||
if(!$ev->isCancelled()){
|
if(!$ev->isCancelled()){
|
||||||
$existing = $this->inventory->first($item);
|
if($existingSlot !== -1){
|
||||||
if($existing !== -1){
|
if($existingSlot < $this->inventory->getHotbarSize()){
|
||||||
if($existing < $this->inventory->getHotbarSize()){
|
$this->inventory->setHeldItemIndex($existingSlot);
|
||||||
$this->inventory->setHeldItemIndex($existing);
|
|
||||||
}else{
|
}else{
|
||||||
$this->inventory->swap($this->inventory->getHeldItemIndex(), $existing);
|
$this->inventory->swap($this->inventory->getHeldItemIndex(), $existingSlot);
|
||||||
}
|
}
|
||||||
}elseif(!$this->hasFiniteResources()){ //TODO: plugins won't know this isn't going to execute
|
}else{
|
||||||
$firstEmpty = $this->inventory->firstEmpty();
|
$firstEmpty = $this->inventory->firstEmpty();
|
||||||
if($firstEmpty === -1){ //full inventory
|
if($firstEmpty === -1){ //full inventory
|
||||||
$this->inventory->setItemInHand($item);
|
$this->inventory->setItemInHand($item);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user