diff --git a/src/pocketmine/entity/object/ItemEntity.php b/src/pocketmine/entity/object/ItemEntity.php index f41b738135..b50e2b3620 100644 --- a/src/pocketmine/entity/object/ItemEntity.php +++ b/src/pocketmine/entity/object/ItemEntity.php @@ -73,6 +73,9 @@ class ItemEntity extends Entity{ } $this->item = Item::nbtDeserialize($itemTag); + if($this->item->isNull()){ + throw new \UnexpectedValueException("Item for " . get_class($this) . " is invalid"); + } $this->server->getPluginManager()->callEvent(new ItemSpawnEvent($this)); diff --git a/src/pocketmine/item/Item.php b/src/pocketmine/item/Item.php index 6769ddf77b..7e71829141 100644 --- a/src/pocketmine/item/Item.php +++ b/src/pocketmine/item/Item.php @@ -956,7 +956,12 @@ class Item implements ItemIds, \JsonSerializable{ if($idTag instanceof ShortTag){ $item = ItemFactory::get($idTag->getValue(), $meta, $count); }elseif($idTag instanceof StringTag){ //PC item save format - $item = ItemFactory::fromString($idTag->getValue()); + try{ + $item = ItemFactory::fromString($idTag->getValue()); + }catch(\InvalidArgumentException $e){ + //TODO: improve error handling + return ItemFactory::get(Item::AIR, 0, 0); + } $item->setDamage($meta); $item->setCount($count); }else{