setCustomName("HI"); $item2 = Item::nbtDeserialize($item->nbtSerialize()); self::assertTrue($item2->equals($item)); self::assertTrue($item->equals($item2)); } /** * Test that same items without NBT are considered equal */ public function testItemEqualsNoNbt() : void{ $item1 = ItemFactory::get(Item::DIAMOND_SWORD); $item2 = clone $item1; self::assertTrue($item1->equals($item2)); } /** * Tests that blocks are considered to be valid registered items */ public function testItemBlockRegistered() : void{ for($id = 0; $id < 256; ++$id){ self::assertEquals(BlockFactory::isRegistered($id), ItemFactory::isRegistered($id)); } } /** * Tests that when all enchantments are removed from an item, the "ench" tag is removed as well */ public function testEnchantmentRemoval() : void{ $item = ItemFactory::get(Item::DIAMOND_SWORD); $item->addEnchantment(new EnchantmentInstance(Enchantment::getEnchantment(Enchantment::SHARPNESS))); $item->removeEnchantment(Enchantment::SHARPNESS); self::assertNull($item->getNamedTag()->getTag(Item::TAG_ENCH)); } /** * @return mixed[][] * @phpstan-return list */ public function itemFromStringProvider() : array{ return [ ["dye:4", ItemIds::DYE, 4], ["351", ItemIds::DYE, 0], ["351:4", ItemIds::DYE, 4], ["stone:3", ItemIds::STONE, 3], ["minecraft:string", ItemIds::STRING, 0], ["diamond_pickaxe", ItemIds::DIAMOND_PICKAXE, 0], ["diamond_pickaxe:5", ItemIds::DIAMOND_PICKAXE, 5] ]; } /** * @dataProvider itemFromStringProvider */ public function testFromStringSingle(string $string, int $id, int $meta) : void{ $item = ItemFactory::fromStringSingle($string); self::assertEquals($id, $item->getId()); self::assertEquals($meta, $item->getDamage()); } }