mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-06 01:46:04 +00:00
Fixed durability handling (ish)
This commit is contained in:
@ -36,9 +36,12 @@ use pocketmine\data\bedrock\EntityLegacyIds;
|
||||
use pocketmine\data\bedrock\item\ItemTypeIds as Ids;
|
||||
use pocketmine\data\bedrock\item\SavedItemData as Data;
|
||||
use pocketmine\data\bedrock\PotionTypeIdMap;
|
||||
use pocketmine\item\Durable;
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\item\VanillaItems as Items;
|
||||
use pocketmine\nbt\NbtException;
|
||||
use pocketmine\utils\AssumptionFailedError;
|
||||
use function min;
|
||||
|
||||
final class ItemDeserializer{
|
||||
/**
|
||||
@ -91,7 +94,16 @@ final class ItemDeserializer{
|
||||
|
||||
$itemStack->setCount($data->getCount());
|
||||
if(($tagTag = $data->getTypeData()->getTag()) !== null){
|
||||
$itemStack->setNamedTag(clone $tagTag);
|
||||
try{
|
||||
$itemStack->setNamedTag(clone $tagTag);
|
||||
}catch(NbtException $e){
|
||||
throw new ItemTypeDeserializeException("Invalid item saved NBT: " . $e->getMessage(), 0, $e);
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: this hack is necessary to get legacy tools working - we need a better way to handle this kind of stuff
|
||||
if($itemStack instanceof Durable && $itemStack->getDamage() === 0 && ($damage = $data->getTypeData()->getMeta()) > 0){
|
||||
$itemStack->setDamage(min($damage, $itemStack->getMaxDurability()));
|
||||
}
|
||||
|
||||
//TODO: canDestroy, canPlaceOn, wasPickedUp are currently unused
|
||||
|
Reference in New Issue
Block a user