Fixed #2126 Items drop twice from tile entities

This commit is contained in:
Shoghi Cervantes 2014-09-27 14:31:41 +02:00
parent 16384c2b20
commit 1dfb17b932
3 changed files with 6 additions and 23 deletions

View File

@ -61,7 +61,7 @@ class BurningFurnace extends Solid{
} }
public function onBreak(Item $item){ public function onBreak(Item $item){
$this->getLevel()->setBlock($this, new Air(), true, true, true); $this->getLevel()->setBlock($this, new Air(), true, true);
return true; return true;
} }
@ -116,15 +116,6 @@ class BurningFurnace extends Solid{
if($item->isPickaxe() >= 1){ if($item->isPickaxe() >= 1){
$drops[] = [Item::FURNACE, 0, 1]; $drops[] = [Item::FURNACE, 0, 1];
} }
$t = $this->getLevel()->getTile($this);
if($t instanceof Furnace){
for($s = 0; $s < $t->getInventory()->getSize(); ++$s){
$slot = $t->getInventory()->getItem($s);
if($slot->getID() > Item::AIR and $slot->getCount() > 0){
$drops[] = [$slot->getID(), $slot->getDamage(), $slot->getCount()];
}
}
}
return $drops; return $drops;
} }

View File

@ -104,7 +104,7 @@ class Chest extends Transparent{
if($t instanceof TileChest){ if($t instanceof TileChest){
$t->unpair(); $t->unpair();
} }
$this->getLevel()->setBlock($this, new Air(), true, true, true); $this->getLevel()->setBlock($this, new Air(), true, true);
return true; return true;
} }
@ -143,19 +143,8 @@ class Chest extends Transparent{
} }
public function getDrops(Item $item){ public function getDrops(Item $item){
$drops = [ return [
[$this->id, 0, 1], [$this->id, 0, 1],
]; ];
$t = $this->getLevel()->getTile($this);
if($t instanceof TileChest){
for($s = 0; $s < $t->getRealInventory()->getSize(); ++$s){
$slot = $t->getRealInventory()->getItem($s);
if($slot->getID() > Item::AIR and $slot->getCount() > 0){
$drops[] = [$slot->getID(), $slot->getDamage(), $slot->getCount()];
}
}
}
return $drops;
} }
} }

View File

@ -200,6 +200,9 @@ class McRegion extends BaseLevelProvider{
} }
foreach($chunk->getEntities() as $entity){ foreach($chunk->getEntities() as $entity){
if($entity instanceof Player){
continue;
}
$entity->close(); $entity->close();
} }