diff --git a/src/pocketmine/item/Item.php b/src/pocketmine/item/Item.php index 70a7d6735..0fb1e3b9f 100644 --- a/src/pocketmine/item/Item.php +++ b/src/pocketmine/item/Item.php @@ -920,7 +920,10 @@ class Item{ return $this; } - + + /** + * @return string + */ public function getCompoundTag(){ return $this->nbt; } @@ -1045,7 +1048,7 @@ class Item{ } final public function __toString(){ - return "Item " . $this->name . " (" . $this->id . ":" . ($this->meta === null ? "?" : $this->meta) . ")x" . $this->count; + return "Item " . $this->name . " (" . $this->id . ":" . ($this->meta === null ? "?" : $this->meta) . ")x" . $this->count . ($this->hasCompoundTag() ? " userData:0x".bin2hex($this->getCompoundTag()) : ""); } public function getDestroySpeed(Block $block, Player $player){ diff --git a/src/pocketmine/nbt/NBT.php b/src/pocketmine/nbt/NBT.php index 2c24d9a02..2e0708d42 100644 --- a/src/pocketmine/nbt/NBT.php +++ b/src/pocketmine/nbt/NBT.php @@ -278,7 +278,7 @@ class NBT{ } } - private function fromArray(Tag $tag, array $data){ + private function fromArray(Tag $tag, array $data, $byteArray = false){ foreach($data as $key => $value){ if(is_array($value)){ $isNumeric = true; @@ -298,7 +298,7 @@ class NBT{ }elseif(is_float($value)){ $tag{$key} = new Float($key, $value); }elseif(is_string($value)){ - if(Utils::printable($value) !== $value){ + if($byteArray and Utils::printable($value) !== $value){ $tag{$key} = new ByteArray($key, $value); }else{ $tag{$key} = new String($key, $value); @@ -309,9 +309,9 @@ class NBT{ } } - public function setArray(array $data){ + public function setArray(array $data, $byteArray = false){ $this->data = new Compound("", []); - $this->fromArray($this->data, $data); + $this->fromArray($this->data, $data, $byteArray); } /**