ItemFactory: Check the bounds of durability, instead of trying to catch exceptions

This commit is contained in:
Dylan K. Taylor
2021-04-16 21:30:48 +01:00
parent da51f106de
commit 01c3668375
2 changed files with 8 additions and 4 deletions

View File

@@ -440,11 +440,10 @@ class ItemFactory{
if(isset($this->list[$offset = self::getListOffset($id, $meta)])){
$item = clone $this->list[$offset];
}elseif(isset($this->list[$zero = self::getListOffset($id, 0)]) and $this->list[$zero] instanceof Durable){
/** @var Durable $item */
$item = clone $this->list[$zero];
try{
if($meta <= $this->list[$zero]->getMaxDurability()){
$item = clone $this->list[$zero];
$item->setDamage($meta);
}catch(\InvalidArgumentException $e){
}else{
$item = new Item(new ItemIdentifier($id, $meta));
}
}elseif($id < 256){ //intentionally includes negatives, for extended block IDs