mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-23 00:55:57 +00:00
Fixed #287 Items dropped will be deleted if picked up in creative mode [gh#287]
This commit is contained in:
parent
5e1dddaba0
commit
a538543e4c
@ -265,6 +265,32 @@ class Player{
|
||||
$this->server->api->player->remove($this->CID);
|
||||
}
|
||||
}
|
||||
|
||||
public function hasSpace($type, $damage, $count){
|
||||
$inv = $this->inventory;
|
||||
while($count > 0){
|
||||
$add = 0;
|
||||
foreach($inv as $s => $data){
|
||||
if($data[0] === AIR){
|
||||
$add = min(64, $count);
|
||||
$inv[$s] = array($type, $damage, $add);
|
||||
break;
|
||||
}elseif($data[0] === $type and $data[1] === $damage){
|
||||
$add = min(64 - $data[2], $count);
|
||||
if($add <= 0){
|
||||
continue;
|
||||
}
|
||||
$inv[$s] = array($type, $damage, $data[2] + $add);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if($add === 0){
|
||||
return false;
|
||||
}
|
||||
$count -= $add;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function addItem($type, $damage, $count){
|
||||
while($count > 0){
|
||||
|
@ -183,17 +183,19 @@ class Entity extends Position{
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
if(($player instanceof Player) and ($player->gamemode & 0x01) === 0x00 and $player->spawned === true){
|
||||
if($this->server->api->dhandle("player.pickup", array(
|
||||
"eid" => $player->eid,
|
||||
"player" => $player,
|
||||
"entity" => $this,
|
||||
"block" => $this->type,
|
||||
"meta" => $this->meta,
|
||||
"target" => $this->eid
|
||||
)) !== false){
|
||||
$this->close();
|
||||
return false;
|
||||
if(($player instanceof Player) and $player->spawned === true){
|
||||
if(($player->gamemode & 0x01) === 0x00){
|
||||
if($player->hasSpace($this->type, $this->meta, $this->stack) === true and $this->server->api->dhandle("player.pickup", array(
|
||||
"eid" => $player->eid,
|
||||
"player" => $player,
|
||||
"entity" => $this,
|
||||
"block" => $this->type,
|
||||
"meta" => $this->meta,
|
||||
"target" => $this->eid
|
||||
)) !== false){
|
||||
$this->close();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user