diff --git a/src/Server.php b/src/Server.php index b31a2eb8e..2deb2f2bf 100644 --- a/src/Server.php +++ b/src/Server.php @@ -41,7 +41,6 @@ use pocketmine\event\server\DataPacketSendEvent; use pocketmine\event\server\QueryRegenerateEvent; use pocketmine\inventory\CreativeInventory; use pocketmine\item\enchantment\Enchantment; -use pocketmine\item\ItemFactory; use pocketmine\lang\Language; use pocketmine\lang\LanguageNotFoundException; use pocketmine\lang\TranslationContainer; @@ -985,7 +984,6 @@ class Server{ EntityFactory::init(); Enchantment::init(); - ItemFactory::init(); CreativeInventory::init(); Biome::init(); diff --git a/src/block/Banner.php b/src/block/Banner.php index 8abfbf1ef..cb4a5449f 100644 --- a/src/block/Banner.php +++ b/src/block/Banner.php @@ -176,7 +176,7 @@ class Banner extends Transparent{ } public function asItem() : Item{ - return ItemFactory::get(ItemIds::BANNER, $this->baseColor->getInvertedMagicNumber()); + return ItemFactory::getInstance()->get(ItemIds::BANNER, $this->baseColor->getInvertedMagicNumber()); } public function getDropsForCompatibleTool(Item $item) : array{ diff --git a/src/block/Bed.php b/src/block/Bed.php index 5f2636876..a5176d1b4 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -193,7 +193,7 @@ class Bed extends Transparent{ } public function asItem() : Item{ - return ItemFactory::get($this->idInfo->getItemId(), $this->color->getMagicNumber()); + return ItemFactory::getInstance()->get($this->idInfo->getItemId(), $this->color->getMagicNumber()); } public function getAffectedBlocks() : array{ diff --git a/src/block/Block.php b/src/block/Block.php index a6defb949..a19610f07 100644 --- a/src/block/Block.php +++ b/src/block/Block.php @@ -104,7 +104,7 @@ class Block{ } public function asItem() : Item{ - return ItemFactory::get($this->idInfo->getItemId(), $this->idInfo->getVariant()); + return ItemFactory::getInstance()->get($this->idInfo->getItemId(), $this->idInfo->getVariant()); } /** diff --git a/src/block/Leaves.php b/src/block/Leaves.php index 09dd3ca91..07bd70ff0 100644 --- a/src/block/Leaves.php +++ b/src/block/Leaves.php @@ -130,7 +130,7 @@ class Leaves extends Transparent{ $drops = []; if(mt_rand(1, 20) === 1){ //Saplings - $drops[] = ItemFactory::get(ItemIds::SAPLING, $this->treeType->getMagicNumber()); + $drops[] = ItemFactory::getInstance()->get(ItemIds::SAPLING, $this->treeType->getMagicNumber()); } if(($this->treeType->equals(TreeType::OAK()) or $this->treeType->equals(TreeType::DARK_OAK())) and mt_rand(1, 200) === 1){ //Apples $drops[] = VanillaItems::APPLE(); diff --git a/src/block/Skull.php b/src/block/Skull.php index c2675aa53..1aaeda4e0 100644 --- a/src/block/Skull.php +++ b/src/block/Skull.php @@ -111,6 +111,6 @@ class Skull extends Flowable{ } public function asItem() : Item{ - return ItemFactory::get(ItemIds::SKULL, $this->skullType->getMagicNumber()); + return ItemFactory::getInstance()->get(ItemIds::SKULL, $this->skullType->getMagicNumber()); } } diff --git a/src/block/tile/Furnace.php b/src/block/tile/Furnace.php index 6c7bad919..425f11911 100644 --- a/src/block/tile/Furnace.php +++ b/src/block/tile/Furnace.php @@ -169,7 +169,7 @@ class Furnace extends Spawnable implements Container, Nameable{ ++$this->cookTime; if($this->cookTime >= 200){ //10 seconds - $product = ItemFactory::get($smelt->getResult()->getId(), $smelt->getResult()->getMeta(), $product->getCount() + 1); + $product = ItemFactory::getInstance()->get($smelt->getResult()->getId(), $smelt->getResult()->getMeta(), $product->getCount() + 1); $ev = new FurnaceSmeltEvent($this, $raw, $product); $ev->call(); diff --git a/src/command/defaults/GiveCommand.php b/src/command/defaults/GiveCommand.php index c84ee3345..1b0c0bbf5 100644 --- a/src/command/defaults/GiveCommand.php +++ b/src/command/defaults/GiveCommand.php @@ -62,7 +62,7 @@ class GiveCommand extends VanillaCommand{ } try{ - $item = ItemFactory::fromString($args[1]); + $item = ItemFactory::getInstance()->fromString($args[1]); }catch(\InvalidArgumentException $e){ $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.give.item.notFound", [$args[1]])); return true; diff --git a/src/command/defaults/ParticleCommand.php b/src/command/defaults/ParticleCommand.php index e9f7a649f..37ba888f1 100644 --- a/src/command/defaults/ParticleCommand.php +++ b/src/command/defaults/ParticleCommand.php @@ -180,7 +180,7 @@ class ParticleCommand extends VanillaCommand{ return new ItemBreakParticle(VanillaItems::SLIMEBALL()); case "itembreak": if($data !== null and $data !== 0){ - return new ItemBreakParticle(ItemFactory::get($data)); + return new ItemBreakParticle(ItemFactory::getInstance()->get($data)); } break; case "terrain": @@ -208,7 +208,7 @@ class ParticleCommand extends VanillaCommand{ if(strpos($name, "iconcrack_") === 0){ $d = explode("_", $name); if(count($d) === 3){ - return new ItemBreakParticle(ItemFactory::get((int) $d[1], (int) $d[2])); + return new ItemBreakParticle(ItemFactory::getInstance()->get((int) $d[1], (int) $d[2])); } }elseif(strpos($name, "blockcrack_") === 0){ $d = explode("_", $name); diff --git a/src/item/Bucket.php b/src/item/Bucket.php index c9b23ac1f..649c45a2b 100644 --- a/src/item/Bucket.php +++ b/src/item/Bucket.php @@ -42,7 +42,7 @@ class Bucket extends Item{ $stack = clone $this; $stack->pop(); - $resultItem = ItemFactory::get(ItemIds::BUCKET, $blockClicked->getFlowingForm()->getId()); + $resultItem = ItemFactory::getInstance()->get(ItemIds::BUCKET, $blockClicked->getFlowingForm()->getId()); $ev = new PlayerBucketFillEvent($player, $blockReplace, $face, $this, $resultItem); $ev->call(); if(!$ev->isCancelled()){ diff --git a/src/item/Item.php b/src/item/Item.php index fef054c6c..7dca64d85 100644 --- a/src/item/Item.php +++ b/src/item/Item.php @@ -624,7 +624,7 @@ class Item implements \JsonSerializable{ }elseif(isset($data["nbt_b64"])){ $nbt = base64_decode($data["nbt_b64"], true); } - return ItemFactory::get( + return ItemFactory::getInstance()->get( (int) $data["id"], (int) ($data["damage"] ?? 0), (int) ($data["count"] ?? 1), $nbt !== "" ? (new LittleEndianNbtSerializer())->read($nbt)->mustGetCompoundTag() : null ); } @@ -656,7 +656,7 @@ class Item implements \JsonSerializable{ */ public static function nbtDeserialize(CompoundTag $tag) : Item{ if(!$tag->hasTag("id") or !$tag->hasTag("Count")){ - return ItemFactory::get(0); + return ItemFactory::getInstance()->get(0); } $count = Binary::unsignByte($tag->getByte("Count")); @@ -664,10 +664,10 @@ class Item implements \JsonSerializable{ $idTag = $tag->getTag("id"); if($idTag instanceof ShortTag){ - $item = ItemFactory::get($idTag->getValue(), $meta, $count); + $item = ItemFactory::getInstance()->get($idTag->getValue(), $meta, $count); }elseif($idTag instanceof StringTag){ //PC item save format try{ - $item = ItemFactory::fromString($idTag->getValue() . ":$meta"); + $item = ItemFactory::getInstance()->fromString($idTag->getValue() . ":$meta"); }catch(\InvalidArgumentException $e){ //TODO: improve error handling return ItemFactory::air(); diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index 940bdaebd..02cab6d32 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -46,196 +46,203 @@ use function trim; * Manages Item instance creation and registration */ class ItemFactory{ + /** @var self|null */ + private static $instance = null; + + public static function getInstance() : self{ + if(self::$instance === null){ + self::$instance = new self; + } + return self::$instance; + } /** @var Item[] */ - private static $list = []; + private $list = []; /** @var Item|null */ private static $air = null; - public static function init() : void{ - self::$list = []; //in case of re-initializing + public function __construct(){ + $this->registerArmorItems(); + $this->registerTierToolItems(); - self::registerArmorItems(); - self::registerTierToolItems(); + $this->register(new Apple(ItemIds::APPLE, 0, "Apple")); + $this->register(new Arrow(ItemIds::ARROW, 0, "Arrow")); - self::register(new Apple(ItemIds::APPLE, 0, "Apple")); - self::register(new Arrow(ItemIds::ARROW, 0, "Arrow")); - - self::register(new BakedPotato(ItemIds::BAKED_POTATO, 0, "Baked Potato")); - self::register(new Beetroot(ItemIds::BEETROOT, 0, "Beetroot")); - self::register(new BeetrootSeeds(ItemIds::BEETROOT_SEEDS, 0, "Beetroot Seeds")); - self::register(new BeetrootSoup(ItemIds::BEETROOT_SOUP, 0, "Beetroot Soup")); - self::register(new BlazeRod(ItemIds::BLAZE_ROD, 0, "Blaze Rod")); - self::register(new Book(ItemIds::BOOK, 0, "Book")); - self::register(new Bow(ItemIds::BOW, 0, "Bow")); - self::register(new Bowl(ItemIds::BOWL, 0, "Bowl")); - self::register(new Bread(ItemIds::BREAD, 0, "Bread")); - self::register(new Bucket(ItemIds::BUCKET, 0, "Bucket")); - self::register(new Carrot(ItemIds::CARROT, 0, "Carrot")); - self::register(new ChorusFruit(ItemIds::CHORUS_FRUIT, 0, "Chorus Fruit")); - self::register(new Clock(ItemIds::CLOCK, 0, "Clock")); - self::register(new Clownfish(ItemIds::CLOWNFISH, 0, "Clownfish")); - self::register(new Coal(ItemIds::COAL, 0, "Coal")); - self::register(new Coal(ItemIds::COAL, 1, "Charcoal")); - self::register(new CocoaBeans(ItemIds::DYE, 3, "Cocoa Beans")); - self::register(new Compass(ItemIds::COMPASS, 0, "Compass")); - self::register(new CookedChicken(ItemIds::COOKED_CHICKEN, 0, "Cooked Chicken")); - self::register(new CookedFish(ItemIds::COOKED_FISH, 0, "Cooked Fish")); - self::register(new CookedMutton(ItemIds::COOKED_MUTTON, 0, "Cooked Mutton")); - self::register(new CookedPorkchop(ItemIds::COOKED_PORKCHOP, 0, "Cooked Porkchop")); - self::register(new CookedRabbit(ItemIds::COOKED_RABBIT, 0, "Cooked Rabbit")); - self::register(new CookedSalmon(ItemIds::COOKED_SALMON, 0, "Cooked Salmon")); - self::register(new Cookie(ItemIds::COOKIE, 0, "Cookie")); - self::register(new DriedKelp(ItemIds::DRIED_KELP, 0, "Dried Kelp")); - self::register(new Egg(ItemIds::EGG, 0, "Egg")); - self::register(new EnderPearl(ItemIds::ENDER_PEARL, 0, "Ender Pearl")); - self::register(new ExperienceBottle(ItemIds::EXPERIENCE_BOTTLE, 0, "Bottle o' Enchanting")); - self::register(new Fertilizer(ItemIds::DYE, 15, "Bone Meal")); - self::register(new FishingRod(ItemIds::FISHING_ROD, 0, "Fishing Rod")); - self::register(new FlintSteel(ItemIds::FLINT_STEEL, 0, "Flint and Steel")); - self::register(new GlassBottle(ItemIds::GLASS_BOTTLE, 0, "Glass Bottle")); - self::register(new GoldenApple(ItemIds::GOLDEN_APPLE, 0, "Golden Apple")); - self::register(new GoldenAppleEnchanted(ItemIds::ENCHANTED_GOLDEN_APPLE, 0, "Enchanted Golden Apple")); - self::register(new GoldenCarrot(ItemIds::GOLDEN_CARROT, 0, "Golden Carrot")); - self::register(new Item(ItemIds::BLAZE_POWDER, 0, "Blaze Powder")); - self::register(new Item(ItemIds::BLEACH, 0, "Bleach")); //EDU - self::register(new Item(ItemIds::BONE, 0, "Bone")); - self::register(new Item(ItemIds::BRICK, 0, "Brick")); - self::register(new Item(ItemIds::CHORUS_FRUIT_POPPED, 0, "Popped Chorus Fruit")); - self::register(new Item(ItemIds::CLAY_BALL, 0, "Clay")); - self::register(new Item(ItemIds::COMPOUND, 0, "Salt")); - self::register(new Item(ItemIds::COMPOUND, 1, "Sodium Oxide")); - self::register(new Item(ItemIds::COMPOUND, 2, "Sodium Hydroxide")); - self::register(new Item(ItemIds::COMPOUND, 3, "Magnesium Nitrate")); - self::register(new Item(ItemIds::COMPOUND, 4, "Iron Sulphide")); - self::register(new Item(ItemIds::COMPOUND, 5, "Lithium Hydride")); - self::register(new Item(ItemIds::COMPOUND, 6, "Sodium Hydride")); - self::register(new Item(ItemIds::COMPOUND, 7, "Calcium Bromide")); - self::register(new Item(ItemIds::COMPOUND, 8, "Magnesium Oxide")); - self::register(new Item(ItemIds::COMPOUND, 9, "Sodium Acetate")); - self::register(new Item(ItemIds::COMPOUND, 10, "Luminol")); - self::register(new Item(ItemIds::COMPOUND, 11, "Charcoal")); //??? maybe bug - self::register(new Item(ItemIds::COMPOUND, 12, "Sugar")); //??? maybe bug - self::register(new Item(ItemIds::COMPOUND, 13, "Aluminium Oxide")); - self::register(new Item(ItemIds::COMPOUND, 14, "Boron Trioxide")); - self::register(new Item(ItemIds::COMPOUND, 15, "Soap")); - self::register(new Item(ItemIds::COMPOUND, 16, "Polyethylene")); - self::register(new Item(ItemIds::COMPOUND, 17, "Rubbish")); - self::register(new Item(ItemIds::COMPOUND, 18, "Magnesium Salts")); - self::register(new Item(ItemIds::COMPOUND, 19, "Sulphate")); - self::register(new Item(ItemIds::COMPOUND, 20, "Barium Sulphate")); - self::register(new Item(ItemIds::COMPOUND, 21, "Potassium Chloride")); - self::register(new Item(ItemIds::COMPOUND, 22, "Mercuric Chloride")); - self::register(new Item(ItemIds::COMPOUND, 23, "Cerium Chloride")); - self::register(new Item(ItemIds::COMPOUND, 24, "Tungsten Chloride")); - self::register(new Item(ItemIds::COMPOUND, 25, "Calcium Chloride")); - self::register(new Item(ItemIds::COMPOUND, 26, "Water")); //??? - self::register(new Item(ItemIds::COMPOUND, 27, "Glue")); - self::register(new Item(ItemIds::COMPOUND, 28, "Hypochlorite")); - self::register(new Item(ItemIds::COMPOUND, 29, "Crude Oil")); - self::register(new Item(ItemIds::COMPOUND, 30, "Latex")); - self::register(new Item(ItemIds::COMPOUND, 31, "Potassium Iodide")); - self::register(new Item(ItemIds::COMPOUND, 32, "Sodium Fluoride")); - self::register(new Item(ItemIds::COMPOUND, 33, "Benzene")); - self::register(new Item(ItemIds::COMPOUND, 34, "Ink")); - self::register(new Item(ItemIds::COMPOUND, 35, "Hydrogen Peroxide")); - self::register(new Item(ItemIds::COMPOUND, 36, "Ammonia")); - self::register(new Item(ItemIds::COMPOUND, 37, "Sodium Hypochlorite")); - self::register(new Item(ItemIds::DIAMOND, 0, "Diamond")); - self::register(new Item(ItemIds::DRAGON_BREATH, 0, "Dragon's Breath")); - self::register(new Item(ItemIds::DYE, 0, "Ink Sac")); - self::register(new Item(ItemIds::DYE, 4, "Lapis Lazuli")); - self::register(new Item(ItemIds::EMERALD, 0, "Emerald")); - self::register(new Item(ItemIds::FEATHER, 0, "Feather")); - self::register(new Item(ItemIds::FERMENTED_SPIDER_EYE, 0, "Fermented Spider Eye")); - self::register(new Item(ItemIds::FLINT, 0, "Flint")); - self::register(new Item(ItemIds::GHAST_TEAR, 0, "Ghast Tear")); - self::register(new Item(ItemIds::GLISTERING_MELON, 0, "Glistering Melon")); - self::register(new Item(ItemIds::GLOWSTONE_DUST, 0, "Glowstone Dust")); - self::register(new Item(ItemIds::GOLD_INGOT, 0, "Gold Ingot")); - self::register(new Item(ItemIds::GOLD_NUGGET, 0, "Gold Nugget")); - self::register(new Item(ItemIds::GUNPOWDER, 0, "Gunpowder")); - self::register(new Item(ItemIds::HEART_OF_THE_SEA, 0, "Heart of the Sea")); - self::register(new Item(ItemIds::IRON_INGOT, 0, "Iron Ingot")); - self::register(new Item(ItemIds::IRON_NUGGET, 0, "Iron Nugget")); - self::register(new Item(ItemIds::LEATHER, 0, "Leather")); - self::register(new Item(ItemIds::MAGMA_CREAM, 0, "Magma Cream")); - self::register(new Item(ItemIds::NAUTILUS_SHELL, 0, "Nautilus Shell")); - self::register(new Item(ItemIds::NETHER_BRICK, 0, "Nether Brick")); - self::register(new Item(ItemIds::NETHER_QUARTZ, 0, "Nether Quartz")); - self::register(new Item(ItemIds::NETHER_STAR, 0, "Nether Star")); - self::register(new Item(ItemIds::PAPER, 0, "Paper")); - self::register(new Item(ItemIds::PRISMARINE_CRYSTALS, 0, "Prismarine Crystals")); - self::register(new Item(ItemIds::PRISMARINE_SHARD, 0, "Prismarine Shard")); - self::register(new Item(ItemIds::RABBIT_FOOT, 0, "Rabbit's Foot")); - self::register(new Item(ItemIds::RABBIT_HIDE, 0, "Rabbit Hide")); - self::register(new Item(ItemIds::SHULKER_SHELL, 0, "Shulker Shell")); - self::register(new Item(ItemIds::SLIME_BALL, 0, "Slimeball")); - self::register(new Item(ItemIds::SUGAR, 0, "Sugar")); - self::register(new Item(ItemIds::TURTLE_SHELL_PIECE, 0, "Scute")); - self::register(new Item(ItemIds::WHEAT, 0, "Wheat")); - self::register(new ItemBlock(BlockLegacyIds::ACACIA_DOOR_BLOCK, 0, ItemIds::ACACIA_DOOR)); - self::register(new ItemBlock(BlockLegacyIds::BIRCH_DOOR_BLOCK, 0, ItemIds::BIRCH_DOOR)); - self::register(new ItemBlock(BlockLegacyIds::BREWING_STAND_BLOCK, 0, ItemIds::BREWING_STAND)); - self::register(new ItemBlock(BlockLegacyIds::CAKE_BLOCK, 0, ItemIds::CAKE)); - self::register(new ItemBlock(BlockLegacyIds::CAULDRON_BLOCK, 0, ItemIds::CAULDRON)); - self::register(new ItemBlock(BlockLegacyIds::COMPARATOR_BLOCK, 0, ItemIds::COMPARATOR)); - self::register(new ItemBlock(BlockLegacyIds::DARK_OAK_DOOR_BLOCK, 0, ItemIds::DARK_OAK_DOOR)); - self::register(new ItemBlock(BlockLegacyIds::FLOWER_POT_BLOCK, 0, ItemIds::FLOWER_POT)); - self::register(new ItemBlock(BlockLegacyIds::HOPPER_BLOCK, 0, ItemIds::HOPPER)); - self::register(new ItemBlock(BlockLegacyIds::IRON_DOOR_BLOCK, 0, ItemIds::IRON_DOOR)); - self::register(new ItemBlock(BlockLegacyIds::ITEM_FRAME_BLOCK, 0, ItemIds::ITEM_FRAME)); - self::register(new ItemBlock(BlockLegacyIds::JUNGLE_DOOR_BLOCK, 0, ItemIds::JUNGLE_DOOR)); - self::register(new ItemBlock(BlockLegacyIds::NETHER_WART_PLANT, 0, ItemIds::NETHER_WART)); - self::register(new ItemBlock(BlockLegacyIds::OAK_DOOR_BLOCK, 0, ItemIds::OAK_DOOR)); - self::register(new ItemBlock(BlockLegacyIds::REPEATER_BLOCK, 0, ItemIds::REPEATER)); - self::register(new ItemBlock(BlockLegacyIds::SPRUCE_DOOR_BLOCK, 0, ItemIds::SPRUCE_DOOR)); - self::register(new ItemBlock(BlockLegacyIds::SUGARCANE_BLOCK, 0, ItemIds::SUGARCANE)); + $this->register(new BakedPotato(ItemIds::BAKED_POTATO, 0, "Baked Potato")); + $this->register(new Beetroot(ItemIds::BEETROOT, 0, "Beetroot")); + $this->register(new BeetrootSeeds(ItemIds::BEETROOT_SEEDS, 0, "Beetroot Seeds")); + $this->register(new BeetrootSoup(ItemIds::BEETROOT_SOUP, 0, "Beetroot Soup")); + $this->register(new BlazeRod(ItemIds::BLAZE_ROD, 0, "Blaze Rod")); + $this->register(new Book(ItemIds::BOOK, 0, "Book")); + $this->register(new Bow(ItemIds::BOW, 0, "Bow")); + $this->register(new Bowl(ItemIds::BOWL, 0, "Bowl")); + $this->register(new Bread(ItemIds::BREAD, 0, "Bread")); + $this->register(new Bucket(ItemIds::BUCKET, 0, "Bucket")); + $this->register(new Carrot(ItemIds::CARROT, 0, "Carrot")); + $this->register(new ChorusFruit(ItemIds::CHORUS_FRUIT, 0, "Chorus Fruit")); + $this->register(new Clock(ItemIds::CLOCK, 0, "Clock")); + $this->register(new Clownfish(ItemIds::CLOWNFISH, 0, "Clownfish")); + $this->register(new Coal(ItemIds::COAL, 0, "Coal")); + $this->register(new Coal(ItemIds::COAL, 1, "Charcoal")); + $this->register(new CocoaBeans(ItemIds::DYE, 3, "Cocoa Beans")); + $this->register(new Compass(ItemIds::COMPASS, 0, "Compass")); + $this->register(new CookedChicken(ItemIds::COOKED_CHICKEN, 0, "Cooked Chicken")); + $this->register(new CookedFish(ItemIds::COOKED_FISH, 0, "Cooked Fish")); + $this->register(new CookedMutton(ItemIds::COOKED_MUTTON, 0, "Cooked Mutton")); + $this->register(new CookedPorkchop(ItemIds::COOKED_PORKCHOP, 0, "Cooked Porkchop")); + $this->register(new CookedRabbit(ItemIds::COOKED_RABBIT, 0, "Cooked Rabbit")); + $this->register(new CookedSalmon(ItemIds::COOKED_SALMON, 0, "Cooked Salmon")); + $this->register(new Cookie(ItemIds::COOKIE, 0, "Cookie")); + $this->register(new DriedKelp(ItemIds::DRIED_KELP, 0, "Dried Kelp")); + $this->register(new Egg(ItemIds::EGG, 0, "Egg")); + $this->register(new EnderPearl(ItemIds::ENDER_PEARL, 0, "Ender Pearl")); + $this->register(new ExperienceBottle(ItemIds::EXPERIENCE_BOTTLE, 0, "Bottle o' Enchanting")); + $this->register(new Fertilizer(ItemIds::DYE, 15, "Bone Meal")); + $this->register(new FishingRod(ItemIds::FISHING_ROD, 0, "Fishing Rod")); + $this->register(new FlintSteel(ItemIds::FLINT_STEEL, 0, "Flint and Steel")); + $this->register(new GlassBottle(ItemIds::GLASS_BOTTLE, 0, "Glass Bottle")); + $this->register(new GoldenApple(ItemIds::GOLDEN_APPLE, 0, "Golden Apple")); + $this->register(new GoldenAppleEnchanted(ItemIds::ENCHANTED_GOLDEN_APPLE, 0, "Enchanted Golden Apple")); + $this->register(new GoldenCarrot(ItemIds::GOLDEN_CARROT, 0, "Golden Carrot")); + $this->register(new Item(ItemIds::BLAZE_POWDER, 0, "Blaze Powder")); + $this->register(new Item(ItemIds::BLEACH, 0, "Bleach")); //EDU + $this->register(new Item(ItemIds::BONE, 0, "Bone")); + $this->register(new Item(ItemIds::BRICK, 0, "Brick")); + $this->register(new Item(ItemIds::CHORUS_FRUIT_POPPED, 0, "Popped Chorus Fruit")); + $this->register(new Item(ItemIds::CLAY_BALL, 0, "Clay")); + $this->register(new Item(ItemIds::COMPOUND, 0, "Salt")); + $this->register(new Item(ItemIds::COMPOUND, 1, "Sodium Oxide")); + $this->register(new Item(ItemIds::COMPOUND, 2, "Sodium Hydroxide")); + $this->register(new Item(ItemIds::COMPOUND, 3, "Magnesium Nitrate")); + $this->register(new Item(ItemIds::COMPOUND, 4, "Iron Sulphide")); + $this->register(new Item(ItemIds::COMPOUND, 5, "Lithium Hydride")); + $this->register(new Item(ItemIds::COMPOUND, 6, "Sodium Hydride")); + $this->register(new Item(ItemIds::COMPOUND, 7, "Calcium Bromide")); + $this->register(new Item(ItemIds::COMPOUND, 8, "Magnesium Oxide")); + $this->register(new Item(ItemIds::COMPOUND, 9, "Sodium Acetate")); + $this->register(new Item(ItemIds::COMPOUND, 10, "Luminol")); + $this->register(new Item(ItemIds::COMPOUND, 11, "Charcoal")); //??? maybe bug + $this->register(new Item(ItemIds::COMPOUND, 12, "Sugar")); //??? maybe bug + $this->register(new Item(ItemIds::COMPOUND, 13, "Aluminium Oxide")); + $this->register(new Item(ItemIds::COMPOUND, 14, "Boron Trioxide")); + $this->register(new Item(ItemIds::COMPOUND, 15, "Soap")); + $this->register(new Item(ItemIds::COMPOUND, 16, "Polyethylene")); + $this->register(new Item(ItemIds::COMPOUND, 17, "Rubbish")); + $this->register(new Item(ItemIds::COMPOUND, 18, "Magnesium Salts")); + $this->register(new Item(ItemIds::COMPOUND, 19, "Sulphate")); + $this->register(new Item(ItemIds::COMPOUND, 20, "Barium Sulphate")); + $this->register(new Item(ItemIds::COMPOUND, 21, "Potassium Chloride")); + $this->register(new Item(ItemIds::COMPOUND, 22, "Mercuric Chloride")); + $this->register(new Item(ItemIds::COMPOUND, 23, "Cerium Chloride")); + $this->register(new Item(ItemIds::COMPOUND, 24, "Tungsten Chloride")); + $this->register(new Item(ItemIds::COMPOUND, 25, "Calcium Chloride")); + $this->register(new Item(ItemIds::COMPOUND, 26, "Water")); //??? + $this->register(new Item(ItemIds::COMPOUND, 27, "Glue")); + $this->register(new Item(ItemIds::COMPOUND, 28, "Hypochlorite")); + $this->register(new Item(ItemIds::COMPOUND, 29, "Crude Oil")); + $this->register(new Item(ItemIds::COMPOUND, 30, "Latex")); + $this->register(new Item(ItemIds::COMPOUND, 31, "Potassium Iodide")); + $this->register(new Item(ItemIds::COMPOUND, 32, "Sodium Fluoride")); + $this->register(new Item(ItemIds::COMPOUND, 33, "Benzene")); + $this->register(new Item(ItemIds::COMPOUND, 34, "Ink")); + $this->register(new Item(ItemIds::COMPOUND, 35, "Hydrogen Peroxide")); + $this->register(new Item(ItemIds::COMPOUND, 36, "Ammonia")); + $this->register(new Item(ItemIds::COMPOUND, 37, "Sodium Hypochlorite")); + $this->register(new Item(ItemIds::DIAMOND, 0, "Diamond")); + $this->register(new Item(ItemIds::DRAGON_BREATH, 0, "Dragon's Breath")); + $this->register(new Item(ItemIds::DYE, 0, "Ink Sac")); + $this->register(new Item(ItemIds::DYE, 4, "Lapis Lazuli")); + $this->register(new Item(ItemIds::EMERALD, 0, "Emerald")); + $this->register(new Item(ItemIds::FEATHER, 0, "Feather")); + $this->register(new Item(ItemIds::FERMENTED_SPIDER_EYE, 0, "Fermented Spider Eye")); + $this->register(new Item(ItemIds::FLINT, 0, "Flint")); + $this->register(new Item(ItemIds::GHAST_TEAR, 0, "Ghast Tear")); + $this->register(new Item(ItemIds::GLISTERING_MELON, 0, "Glistering Melon")); + $this->register(new Item(ItemIds::GLOWSTONE_DUST, 0, "Glowstone Dust")); + $this->register(new Item(ItemIds::GOLD_INGOT, 0, "Gold Ingot")); + $this->register(new Item(ItemIds::GOLD_NUGGET, 0, "Gold Nugget")); + $this->register(new Item(ItemIds::GUNPOWDER, 0, "Gunpowder")); + $this->register(new Item(ItemIds::HEART_OF_THE_SEA, 0, "Heart of the Sea")); + $this->register(new Item(ItemIds::IRON_INGOT, 0, "Iron Ingot")); + $this->register(new Item(ItemIds::IRON_NUGGET, 0, "Iron Nugget")); + $this->register(new Item(ItemIds::LEATHER, 0, "Leather")); + $this->register(new Item(ItemIds::MAGMA_CREAM, 0, "Magma Cream")); + $this->register(new Item(ItemIds::NAUTILUS_SHELL, 0, "Nautilus Shell")); + $this->register(new Item(ItemIds::NETHER_BRICK, 0, "Nether Brick")); + $this->register(new Item(ItemIds::NETHER_QUARTZ, 0, "Nether Quartz")); + $this->register(new Item(ItemIds::NETHER_STAR, 0, "Nether Star")); + $this->register(new Item(ItemIds::PAPER, 0, "Paper")); + $this->register(new Item(ItemIds::PRISMARINE_CRYSTALS, 0, "Prismarine Crystals")); + $this->register(new Item(ItemIds::PRISMARINE_SHARD, 0, "Prismarine Shard")); + $this->register(new Item(ItemIds::RABBIT_FOOT, 0, "Rabbit's Foot")); + $this->register(new Item(ItemIds::RABBIT_HIDE, 0, "Rabbit Hide")); + $this->register(new Item(ItemIds::SHULKER_SHELL, 0, "Shulker Shell")); + $this->register(new Item(ItemIds::SLIME_BALL, 0, "Slimeball")); + $this->register(new Item(ItemIds::SUGAR, 0, "Sugar")); + $this->register(new Item(ItemIds::TURTLE_SHELL_PIECE, 0, "Scute")); + $this->register(new Item(ItemIds::WHEAT, 0, "Wheat")); + $this->register(new ItemBlock(BlockLegacyIds::ACACIA_DOOR_BLOCK, 0, ItemIds::ACACIA_DOOR)); + $this->register(new ItemBlock(BlockLegacyIds::BIRCH_DOOR_BLOCK, 0, ItemIds::BIRCH_DOOR)); + $this->register(new ItemBlock(BlockLegacyIds::BREWING_STAND_BLOCK, 0, ItemIds::BREWING_STAND)); + $this->register(new ItemBlock(BlockLegacyIds::CAKE_BLOCK, 0, ItemIds::CAKE)); + $this->register(new ItemBlock(BlockLegacyIds::CAULDRON_BLOCK, 0, ItemIds::CAULDRON)); + $this->register(new ItemBlock(BlockLegacyIds::COMPARATOR_BLOCK, 0, ItemIds::COMPARATOR)); + $this->register(new ItemBlock(BlockLegacyIds::DARK_OAK_DOOR_BLOCK, 0, ItemIds::DARK_OAK_DOOR)); + $this->register(new ItemBlock(BlockLegacyIds::FLOWER_POT_BLOCK, 0, ItemIds::FLOWER_POT)); + $this->register(new ItemBlock(BlockLegacyIds::HOPPER_BLOCK, 0, ItemIds::HOPPER)); + $this->register(new ItemBlock(BlockLegacyIds::IRON_DOOR_BLOCK, 0, ItemIds::IRON_DOOR)); + $this->register(new ItemBlock(BlockLegacyIds::ITEM_FRAME_BLOCK, 0, ItemIds::ITEM_FRAME)); + $this->register(new ItemBlock(BlockLegacyIds::JUNGLE_DOOR_BLOCK, 0, ItemIds::JUNGLE_DOOR)); + $this->register(new ItemBlock(BlockLegacyIds::NETHER_WART_PLANT, 0, ItemIds::NETHER_WART)); + $this->register(new ItemBlock(BlockLegacyIds::OAK_DOOR_BLOCK, 0, ItemIds::OAK_DOOR)); + $this->register(new ItemBlock(BlockLegacyIds::REPEATER_BLOCK, 0, ItemIds::REPEATER)); + $this->register(new ItemBlock(BlockLegacyIds::SPRUCE_DOOR_BLOCK, 0, ItemIds::SPRUCE_DOOR)); + $this->register(new ItemBlock(BlockLegacyIds::SUGARCANE_BLOCK, 0, ItemIds::SUGARCANE)); //TODO: fix metadata for buckets with still liquid in them //the meta values are intentionally hardcoded because block IDs will change in the future - self::register(new LiquidBucket(ItemIds::BUCKET, 8, "Water Bucket", VanillaBlocks::WATER())); - self::register(new LiquidBucket(ItemIds::BUCKET, 10, "Lava Bucket", VanillaBlocks::LAVA())); - self::register(new Melon(ItemIds::MELON, 0, "Melon")); - self::register(new MelonSeeds(ItemIds::MELON_SEEDS, 0, "Melon Seeds")); - self::register(new MilkBucket(ItemIds::BUCKET, 1, "Milk Bucket")); - self::register(new Minecart(ItemIds::MINECART, 0, "Minecart")); - self::register(new MushroomStew(ItemIds::MUSHROOM_STEW, 0, "Mushroom Stew")); - self::register(new PaintingItem(ItemIds::PAINTING, 0, "Painting")); - self::register(new PoisonousPotato(ItemIds::POISONOUS_POTATO, 0, "Poisonous Potato")); - self::register(new Potato(ItemIds::POTATO, 0, "Potato")); - self::register(new Pufferfish(ItemIds::PUFFERFISH, 0, "Pufferfish")); - self::register(new PumpkinPie(ItemIds::PUMPKIN_PIE, 0, "Pumpkin Pie")); - self::register(new PumpkinSeeds(ItemIds::PUMPKIN_SEEDS, 0, "Pumpkin Seeds")); - self::register(new RabbitStew(ItemIds::RABBIT_STEW, 0, "Rabbit Stew")); - self::register(new RawBeef(ItemIds::RAW_BEEF, 0, "Raw Beef")); - self::register(new RawChicken(ItemIds::RAW_CHICKEN, 0, "Raw Chicken")); - self::register(new RawFish(ItemIds::RAW_FISH, 0, "Raw Fish")); - self::register(new RawMutton(ItemIds::RAW_MUTTON, 0, "Raw Mutton")); - self::register(new RawPorkchop(ItemIds::RAW_PORKCHOP, 0, "Raw Porkchop")); - self::register(new RawRabbit(ItemIds::RAW_RABBIT, 0, "Raw Rabbit")); - self::register(new RawSalmon(ItemIds::RAW_SALMON, 0, "Raw Salmon")); - self::register(new Redstone(ItemIds::REDSTONE, 0, "Redstone")); - self::register(new RottenFlesh(ItemIds::ROTTEN_FLESH, 0, "Rotten Flesh")); - self::register(new Shears(ItemIds::SHEARS, 0, "Shears")); - self::register(new Sign(BlockLegacyIds::STANDING_SIGN, 0, ItemIds::SIGN)); - self::register(new Sign(BlockLegacyIds::SPRUCE_STANDING_SIGN, 0, ItemIds::SPRUCE_SIGN)); - self::register(new Sign(BlockLegacyIds::BIRCH_STANDING_SIGN, 0, ItemIds::BIRCH_SIGN)); - self::register(new Sign(BlockLegacyIds::JUNGLE_STANDING_SIGN, 0, ItemIds::JUNGLE_SIGN)); - self::register(new Sign(BlockLegacyIds::ACACIA_STANDING_SIGN, 0, ItemIds::ACACIA_SIGN)); - self::register(new Sign(BlockLegacyIds::DARKOAK_STANDING_SIGN, 0, ItemIds::DARKOAK_SIGN)); - self::register(new Snowball(ItemIds::SNOWBALL, 0, "Snowball")); - self::register(new SpiderEye(ItemIds::SPIDER_EYE, 0, "Spider Eye")); - self::register(new Steak(ItemIds::STEAK, 0, "Steak")); - self::register(new Stick(ItemIds::STICK, 0, "Stick")); - self::register(new StringItem(ItemIds::STRING, 0, "String")); - self::register(new Totem(ItemIds::TOTEM, 0, "Totem of Undying")); - self::register(new WheatSeeds(ItemIds::WHEAT_SEEDS, 0, "Wheat Seeds")); - self::register(new WritableBook(ItemIds::WRITABLE_BOOK, 0, "Book & Quill")); - self::register(new WrittenBook(ItemIds::WRITTEN_BOOK, 0, "Written Book")); + $this->register(new LiquidBucket(ItemIds::BUCKET, 8, "Water Bucket", VanillaBlocks::WATER())); + $this->register(new LiquidBucket(ItemIds::BUCKET, 10, "Lava Bucket", VanillaBlocks::LAVA())); + $this->register(new Melon(ItemIds::MELON, 0, "Melon")); + $this->register(new MelonSeeds(ItemIds::MELON_SEEDS, 0, "Melon Seeds")); + $this->register(new MilkBucket(ItemIds::BUCKET, 1, "Milk Bucket")); + $this->register(new Minecart(ItemIds::MINECART, 0, "Minecart")); + $this->register(new MushroomStew(ItemIds::MUSHROOM_STEW, 0, "Mushroom Stew")); + $this->register(new PaintingItem(ItemIds::PAINTING, 0, "Painting")); + $this->register(new PoisonousPotato(ItemIds::POISONOUS_POTATO, 0, "Poisonous Potato")); + $this->register(new Potato(ItemIds::POTATO, 0, "Potato")); + $this->register(new Pufferfish(ItemIds::PUFFERFISH, 0, "Pufferfish")); + $this->register(new PumpkinPie(ItemIds::PUMPKIN_PIE, 0, "Pumpkin Pie")); + $this->register(new PumpkinSeeds(ItemIds::PUMPKIN_SEEDS, 0, "Pumpkin Seeds")); + $this->register(new RabbitStew(ItemIds::RABBIT_STEW, 0, "Rabbit Stew")); + $this->register(new RawBeef(ItemIds::RAW_BEEF, 0, "Raw Beef")); + $this->register(new RawChicken(ItemIds::RAW_CHICKEN, 0, "Raw Chicken")); + $this->register(new RawFish(ItemIds::RAW_FISH, 0, "Raw Fish")); + $this->register(new RawMutton(ItemIds::RAW_MUTTON, 0, "Raw Mutton")); + $this->register(new RawPorkchop(ItemIds::RAW_PORKCHOP, 0, "Raw Porkchop")); + $this->register(new RawRabbit(ItemIds::RAW_RABBIT, 0, "Raw Rabbit")); + $this->register(new RawSalmon(ItemIds::RAW_SALMON, 0, "Raw Salmon")); + $this->register(new Redstone(ItemIds::REDSTONE, 0, "Redstone")); + $this->register(new RottenFlesh(ItemIds::ROTTEN_FLESH, 0, "Rotten Flesh")); + $this->register(new Shears(ItemIds::SHEARS, 0, "Shears")); + $this->register(new Sign(BlockLegacyIds::STANDING_SIGN, 0, ItemIds::SIGN)); + $this->register(new Sign(BlockLegacyIds::SPRUCE_STANDING_SIGN, 0, ItemIds::SPRUCE_SIGN)); + $this->register(new Sign(BlockLegacyIds::BIRCH_STANDING_SIGN, 0, ItemIds::BIRCH_SIGN)); + $this->register(new Sign(BlockLegacyIds::JUNGLE_STANDING_SIGN, 0, ItemIds::JUNGLE_SIGN)); + $this->register(new Sign(BlockLegacyIds::ACACIA_STANDING_SIGN, 0, ItemIds::ACACIA_SIGN)); + $this->register(new Sign(BlockLegacyIds::DARKOAK_STANDING_SIGN, 0, ItemIds::DARKOAK_SIGN)); + $this->register(new Snowball(ItemIds::SNOWBALL, 0, "Snowball")); + $this->register(new SpiderEye(ItemIds::SPIDER_EYE, 0, "Spider Eye")); + $this->register(new Steak(ItemIds::STEAK, 0, "Steak")); + $this->register(new Stick(ItemIds::STICK, 0, "Stick")); + $this->register(new StringItem(ItemIds::STRING, 0, "String")); + $this->register(new Totem(ItemIds::TOTEM, 0, "Totem of Undying")); + $this->register(new WheatSeeds(ItemIds::WHEAT_SEEDS, 0, "Wheat Seeds")); + $this->register(new WritableBook(ItemIds::WRITABLE_BOOK, 0, "Book & Quill")); + $this->register(new WrittenBook(ItemIds::WRITTEN_BOOK, 0, "Written Book")); foreach(SkullType::getAll() as $skullType){ - self::register(new Skull(ItemIds::SKULL, $skullType->getMagicNumber(), $skullType->getDisplayName(), $skullType)); + $this->register(new Skull(ItemIds::SKULL, $skullType->getMagicNumber(), $skullType->getDisplayName(), $skullType)); } $dyeMap = [ @@ -247,25 +254,25 @@ class ItemFactory{ foreach(DyeColor::getAll() as $color){ //TODO: use colour object directly //TODO: add interface to dye-colour objects - self::register(new Dye(ItemIds::DYE, $dyeMap[$color->id()] ?? $color->getInvertedMagicNumber(), $color->getDisplayName() . " Dye", $color)); - self::register(new Bed(ItemIds::BED, $color->getMagicNumber(), $color->getDisplayName() . " Bed", $color)); - self::register(new Banner(ItemIds::BANNER, $color->getInvertedMagicNumber(), $color->getDisplayName() . " Banner", $color)); + $this->register(new Dye(ItemIds::DYE, $dyeMap[$color->id()] ?? $color->getInvertedMagicNumber(), $color->getDisplayName() . " Dye", $color)); + $this->register(new Bed(ItemIds::BED, $color->getMagicNumber(), $color->getDisplayName() . " Bed", $color)); + $this->register(new Banner(ItemIds::BANNER, $color->getInvertedMagicNumber(), $color->getDisplayName() . " Banner", $color)); } foreach(Potion::ALL as $type){ - self::register(new Potion(ItemIds::POTION, $type, "Potion")); - self::register(new SplashPotion(ItemIds::SPLASH_POTION, $type, "Splash Potion")); + $this->register(new Potion(ItemIds::POTION, $type, "Potion")); + $this->register(new SplashPotion(ItemIds::SPLASH_POTION, $type, "Splash Potion")); } foreach(EntityFactory::getKnownTypes() as $className){ /** @var Living|string $className */ if(is_a($className, Living::class, true) and $className::NETWORK_ID !== -1){ - self::register(new SpawnEgg(ItemIds::SPAWN_EGG, $className::NETWORK_ID, "Spawn Egg", $className)); + $this->register(new SpawnEgg(ItemIds::SPAWN_EGG, $className::NETWORK_ID, "Spawn Egg", $className)); } } foreach(TreeType::getAll() as $type){ - self::register(new Boat(ItemIds::BOAT, $type->getMagicNumber(), $type->getDisplayName() . " Boat", $type)); + $this->register(new Boat(ItemIds::BOAT, $type->getMagicNumber(), $type->getDisplayName() . " Boat", $type)); } //region --- auto-generated TODOs --- @@ -323,55 +330,55 @@ class ItemFactory{ //endregion } - private static function registerTierToolItems() : void{ - self::register(new Axe(ItemIds::DIAMOND_AXE, "Diamond Axe", ToolTier::DIAMOND())); - self::register(new Axe(ItemIds::GOLDEN_AXE, "Golden Axe", ToolTier::GOLD())); - self::register(new Axe(ItemIds::IRON_AXE, "Iron Axe", ToolTier::IRON())); - self::register(new Axe(ItemIds::STONE_AXE, "Stone Axe", ToolTier::STONE())); - self::register(new Axe(ItemIds::WOODEN_AXE, "Wooden Axe", ToolTier::WOOD())); - self::register(new Hoe(ItemIds::DIAMOND_HOE, "Diamond Hoe", ToolTier::DIAMOND())); - self::register(new Hoe(ItemIds::GOLDEN_HOE, "Golden Hoe", ToolTier::GOLD())); - self::register(new Hoe(ItemIds::IRON_HOE, "Iron Hoe", ToolTier::IRON())); - self::register(new Hoe(ItemIds::STONE_HOE, "Stone Hoe", ToolTier::STONE())); - self::register(new Hoe(ItemIds::WOODEN_HOE, "Wooden Hoe", ToolTier::WOOD())); - self::register(new Pickaxe(ItemIds::DIAMOND_PICKAXE, "Diamond Pickaxe", ToolTier::DIAMOND())); - self::register(new Pickaxe(ItemIds::GOLDEN_PICKAXE, "Golden Pickaxe", ToolTier::GOLD())); - self::register(new Pickaxe(ItemIds::IRON_PICKAXE, "Iron Pickaxe", ToolTier::IRON())); - self::register(new Pickaxe(ItemIds::STONE_PICKAXE, "Stone Pickaxe", ToolTier::STONE())); - self::register(new Pickaxe(ItemIds::WOODEN_PICKAXE, "Wooden Pickaxe", ToolTier::WOOD())); - self::register(new Shovel(ItemIds::DIAMOND_SHOVEL, "Diamond Shovel", ToolTier::DIAMOND())); - self::register(new Shovel(ItemIds::GOLDEN_SHOVEL, "Golden Shovel", ToolTier::GOLD())); - self::register(new Shovel(ItemIds::IRON_SHOVEL, "Iron Shovel", ToolTier::IRON())); - self::register(new Shovel(ItemIds::STONE_SHOVEL, "Stone Shovel", ToolTier::STONE())); - self::register(new Shovel(ItemIds::WOODEN_SHOVEL, "Wooden Shovel", ToolTier::WOOD())); - self::register(new Sword(ItemIds::DIAMOND_SWORD, "Diamond Sword", ToolTier::DIAMOND())); - self::register(new Sword(ItemIds::GOLDEN_SWORD, "Golden Sword", ToolTier::GOLD())); - self::register(new Sword(ItemIds::IRON_SWORD, "Iron Sword", ToolTier::IRON())); - self::register(new Sword(ItemIds::STONE_SWORD, "Stone Sword", ToolTier::STONE())); - self::register(new Sword(ItemIds::WOODEN_SWORD, "Wooden Sword", ToolTier::WOOD())); + private function registerTierToolItems() : void{ + $this->register(new Axe(ItemIds::DIAMOND_AXE, "Diamond Axe", ToolTier::DIAMOND())); + $this->register(new Axe(ItemIds::GOLDEN_AXE, "Golden Axe", ToolTier::GOLD())); + $this->register(new Axe(ItemIds::IRON_AXE, "Iron Axe", ToolTier::IRON())); + $this->register(new Axe(ItemIds::STONE_AXE, "Stone Axe", ToolTier::STONE())); + $this->register(new Axe(ItemIds::WOODEN_AXE, "Wooden Axe", ToolTier::WOOD())); + $this->register(new Hoe(ItemIds::DIAMOND_HOE, "Diamond Hoe", ToolTier::DIAMOND())); + $this->register(new Hoe(ItemIds::GOLDEN_HOE, "Golden Hoe", ToolTier::GOLD())); + $this->register(new Hoe(ItemIds::IRON_HOE, "Iron Hoe", ToolTier::IRON())); + $this->register(new Hoe(ItemIds::STONE_HOE, "Stone Hoe", ToolTier::STONE())); + $this->register(new Hoe(ItemIds::WOODEN_HOE, "Wooden Hoe", ToolTier::WOOD())); + $this->register(new Pickaxe(ItemIds::DIAMOND_PICKAXE, "Diamond Pickaxe", ToolTier::DIAMOND())); + $this->register(new Pickaxe(ItemIds::GOLDEN_PICKAXE, "Golden Pickaxe", ToolTier::GOLD())); + $this->register(new Pickaxe(ItemIds::IRON_PICKAXE, "Iron Pickaxe", ToolTier::IRON())); + $this->register(new Pickaxe(ItemIds::STONE_PICKAXE, "Stone Pickaxe", ToolTier::STONE())); + $this->register(new Pickaxe(ItemIds::WOODEN_PICKAXE, "Wooden Pickaxe", ToolTier::WOOD())); + $this->register(new Shovel(ItemIds::DIAMOND_SHOVEL, "Diamond Shovel", ToolTier::DIAMOND())); + $this->register(new Shovel(ItemIds::GOLDEN_SHOVEL, "Golden Shovel", ToolTier::GOLD())); + $this->register(new Shovel(ItemIds::IRON_SHOVEL, "Iron Shovel", ToolTier::IRON())); + $this->register(new Shovel(ItemIds::STONE_SHOVEL, "Stone Shovel", ToolTier::STONE())); + $this->register(new Shovel(ItemIds::WOODEN_SHOVEL, "Wooden Shovel", ToolTier::WOOD())); + $this->register(new Sword(ItemIds::DIAMOND_SWORD, "Diamond Sword", ToolTier::DIAMOND())); + $this->register(new Sword(ItemIds::GOLDEN_SWORD, "Golden Sword", ToolTier::GOLD())); + $this->register(new Sword(ItemIds::IRON_SWORD, "Iron Sword", ToolTier::IRON())); + $this->register(new Sword(ItemIds::STONE_SWORD, "Stone Sword", ToolTier::STONE())); + $this->register(new Sword(ItemIds::WOODEN_SWORD, "Wooden Sword", ToolTier::WOOD())); } - private static function registerArmorItems() : void{ - self::register(new Armor(ItemIds::CHAIN_BOOTS, 0, "Chainmail Boots", new ArmorTypeInfo(1, 196, ArmorInventory::SLOT_FEET))); - self::register(new Armor(ItemIds::DIAMOND_BOOTS, 0, "Diamond Boots", new ArmorTypeInfo(3, 430, ArmorInventory::SLOT_FEET))); - self::register(new Armor(ItemIds::GOLDEN_BOOTS, 0, "Golden Boots", new ArmorTypeInfo(1, 92, ArmorInventory::SLOT_FEET))); - self::register(new Armor(ItemIds::IRON_BOOTS, 0, "Iron Boots", new ArmorTypeInfo(2, 196, ArmorInventory::SLOT_FEET))); - self::register(new Armor(ItemIds::LEATHER_BOOTS, 0, "Leather Boots", new ArmorTypeInfo(1, 66, ArmorInventory::SLOT_FEET))); - self::register(new Armor(ItemIds::CHAIN_CHESTPLATE, 0, "Chainmail Chestplate", new ArmorTypeInfo(5, 241, ArmorInventory::SLOT_CHEST))); - self::register(new Armor(ItemIds::DIAMOND_CHESTPLATE, 0, "Diamond Chestplate", new ArmorTypeInfo(8, 529, ArmorInventory::SLOT_CHEST))); - self::register(new Armor(ItemIds::GOLDEN_CHESTPLATE, 0, "Golden Chestplate", new ArmorTypeInfo(5, 113, ArmorInventory::SLOT_CHEST))); - self::register(new Armor(ItemIds::IRON_CHESTPLATE, 0, "Iron Chestplate", new ArmorTypeInfo(6, 241, ArmorInventory::SLOT_CHEST))); - self::register(new Armor(ItemIds::LEATHER_CHESTPLATE, 0, "Leather Tunic", new ArmorTypeInfo(3, 81, ArmorInventory::SLOT_CHEST))); - self::register(new Armor(ItemIds::CHAIN_HELMET, 0, "Chainmail Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); - self::register(new Armor(ItemIds::DIAMOND_HELMET, 0, "Diamond Helmet", new ArmorTypeInfo(3, 364, ArmorInventory::SLOT_HEAD))); - self::register(new Armor(ItemIds::GOLDEN_HELMET, 0, "Golden Helmet", new ArmorTypeInfo(2, 78, ArmorInventory::SLOT_HEAD))); - self::register(new Armor(ItemIds::IRON_HELMET, 0, "Iron Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); - self::register(new Armor(ItemIds::LEATHER_HELMET, 0, "Leather Cap", new ArmorTypeInfo(1, 56, ArmorInventory::SLOT_HEAD))); - self::register(new Armor(ItemIds::CHAIN_LEGGINGS, 0, "Chainmail Leggings", new ArmorTypeInfo(4, 226, ArmorInventory::SLOT_LEGS))); - self::register(new Armor(ItemIds::DIAMOND_LEGGINGS, 0, "Diamond Leggings", new ArmorTypeInfo(6, 496, ArmorInventory::SLOT_LEGS))); - self::register(new Armor(ItemIds::GOLDEN_LEGGINGS, 0, "Golden Leggings", new ArmorTypeInfo(3, 106, ArmorInventory::SLOT_LEGS))); - self::register(new Armor(ItemIds::IRON_LEGGINGS, 0, "Iron Leggings", new ArmorTypeInfo(5, 226, ArmorInventory::SLOT_LEGS))); - self::register(new Armor(ItemIds::LEATHER_LEGGINGS, 0, "Leather Pants", new ArmorTypeInfo(2, 76, ArmorInventory::SLOT_LEGS))); + private function registerArmorItems() : void{ + $this->register(new Armor(ItemIds::CHAIN_BOOTS, 0, "Chainmail Boots", new ArmorTypeInfo(1, 196, ArmorInventory::SLOT_FEET))); + $this->register(new Armor(ItemIds::DIAMOND_BOOTS, 0, "Diamond Boots", new ArmorTypeInfo(3, 430, ArmorInventory::SLOT_FEET))); + $this->register(new Armor(ItemIds::GOLDEN_BOOTS, 0, "Golden Boots", new ArmorTypeInfo(1, 92, ArmorInventory::SLOT_FEET))); + $this->register(new Armor(ItemIds::IRON_BOOTS, 0, "Iron Boots", new ArmorTypeInfo(2, 196, ArmorInventory::SLOT_FEET))); + $this->register(new Armor(ItemIds::LEATHER_BOOTS, 0, "Leather Boots", new ArmorTypeInfo(1, 66, ArmorInventory::SLOT_FEET))); + $this->register(new Armor(ItemIds::CHAIN_CHESTPLATE, 0, "Chainmail Chestplate", new ArmorTypeInfo(5, 241, ArmorInventory::SLOT_CHEST))); + $this->register(new Armor(ItemIds::DIAMOND_CHESTPLATE, 0, "Diamond Chestplate", new ArmorTypeInfo(8, 529, ArmorInventory::SLOT_CHEST))); + $this->register(new Armor(ItemIds::GOLDEN_CHESTPLATE, 0, "Golden Chestplate", new ArmorTypeInfo(5, 113, ArmorInventory::SLOT_CHEST))); + $this->register(new Armor(ItemIds::IRON_CHESTPLATE, 0, "Iron Chestplate", new ArmorTypeInfo(6, 241, ArmorInventory::SLOT_CHEST))); + $this->register(new Armor(ItemIds::LEATHER_CHESTPLATE, 0, "Leather Tunic", new ArmorTypeInfo(3, 81, ArmorInventory::SLOT_CHEST))); + $this->register(new Armor(ItemIds::CHAIN_HELMET, 0, "Chainmail Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); + $this->register(new Armor(ItemIds::DIAMOND_HELMET, 0, "Diamond Helmet", new ArmorTypeInfo(3, 364, ArmorInventory::SLOT_HEAD))); + $this->register(new Armor(ItemIds::GOLDEN_HELMET, 0, "Golden Helmet", new ArmorTypeInfo(2, 78, ArmorInventory::SLOT_HEAD))); + $this->register(new Armor(ItemIds::IRON_HELMET, 0, "Iron Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD))); + $this->register(new Armor(ItemIds::LEATHER_HELMET, 0, "Leather Cap", new ArmorTypeInfo(1, 56, ArmorInventory::SLOT_HEAD))); + $this->register(new Armor(ItemIds::CHAIN_LEGGINGS, 0, "Chainmail Leggings", new ArmorTypeInfo(4, 226, ArmorInventory::SLOT_LEGS))); + $this->register(new Armor(ItemIds::DIAMOND_LEGGINGS, 0, "Diamond Leggings", new ArmorTypeInfo(6, 496, ArmorInventory::SLOT_LEGS))); + $this->register(new Armor(ItemIds::GOLDEN_LEGGINGS, 0, "Golden Leggings", new ArmorTypeInfo(3, 106, ArmorInventory::SLOT_LEGS))); + $this->register(new Armor(ItemIds::IRON_LEGGINGS, 0, "Iron Leggings", new ArmorTypeInfo(5, 226, ArmorInventory::SLOT_LEGS))); + $this->register(new Armor(ItemIds::LEATHER_LEGGINGS, 0, "Leather Pants", new ArmorTypeInfo(2, 76, ArmorInventory::SLOT_LEGS))); } /** @@ -384,15 +391,15 @@ class ItemFactory{ * @throws \RuntimeException if something attempted to override an already-registered item without specifying the * $override parameter. */ - public static function register(Item $item, bool $override = false) : void{ + public function register(Item $item, bool $override = false) : void{ $id = $item->getId(); $variant = $item->getMeta(); - if(!$override and self::isRegistered($id, $variant)){ + if(!$override and $this->isRegistered($id, $variant)){ throw new \RuntimeException("Trying to overwrite an already registered item"); } - self::$list[self::getListOffset($id, $variant)] = clone $item; + $this->list[self::getListOffset($id, $variant)] = clone $item; } /** @@ -400,15 +407,15 @@ class ItemFactory{ * * @throws \InvalidArgumentException */ - public static function get(int $id, int $meta = 0, int $count = 1, ?CompoundTag $tags = null) : Item{ + public function get(int $id, int $meta = 0, int $count = 1, ?CompoundTag $tags = null) : Item{ /** @var Item|null $item */ $item = null; if($meta !== -1){ - if(isset(self::$list[$offset = self::getListOffset($id, $meta)])){ - $item = clone self::$list[$offset]; - }elseif(isset(self::$list[$zero = self::getListOffset($id, 0)]) and self::$list[$zero] instanceof Durable){ + 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 self::$list[$zero]; + $item = clone $this->list[$zero]; $item->setDamage($meta); }elseif($id < 256){ //intentionally includes negatives, for extended block IDs $item = new ItemBlock($id, $meta); @@ -437,7 +444,7 @@ class ItemFactory{ * * @throws \InvalidArgumentException if the given string cannot be parsed as an item identifier */ - public static function fromString(string $str) : Item{ + public function fromString(string $str) : Item{ $b = explode(":", str_replace([" ", "minecraft:"], ["_", ""], trim($str))); if(!isset($b[1])){ $meta = 0; @@ -448,9 +455,9 @@ class ItemFactory{ } if(is_numeric($b[0])){ - $item = self::get((int) $b[0], $meta); + $item = $this->get((int) $b[0], $meta); }elseif(defined(ItemIds::class . "::" . strtoupper($b[0]))){ - $item = self::get(constant(ItemIds::class . "::" . strtoupper($b[0])), $meta); + $item = $this->get(constant(ItemIds::class . "::" . strtoupper($b[0])), $meta); }else{ throw new \InvalidArgumentException("Unable to resolve \"" . $str . "\" to a valid item"); } @@ -459,18 +466,18 @@ class ItemFactory{ } public static function air() : Item{ - return self::$air ?? (self::$air = self::get(ItemIds::AIR, 0, 0)); + return self::$air ?? (self::$air = self::getInstance()->get(ItemIds::AIR, 0, 0)); } /** * Returns whether the specified item ID is already registered in the item factory. */ - public static function isRegistered(int $id, int $variant = 0) : bool{ + public function isRegistered(int $id, int $variant = 0) : bool{ if($id < 256){ return BlockFactory::getInstance()->isRegistered($id); } - return isset(self::$list[self::getListOffset($id, $variant)]); + return isset($this->list[self::getListOffset($id, $variant)]); } private static function getListOffset(int $id, int $variant) : int{ @@ -483,7 +490,7 @@ class ItemFactory{ /** * @return Item[] */ - public static function getAllRegistered() : array{ - return self::$list; + public function getAllRegistered() : array{ + return $this->list; } } diff --git a/src/item/VanillaItems.php b/src/item/VanillaItems.php index c5ee5cce2..d8bb6b655 100644 --- a/src/item/VanillaItems.php +++ b/src/item/VanillaItems.php @@ -316,263 +316,264 @@ final class VanillaItems{ } protected static function setup() : void{ - self::register("acacia_boat", ItemFactory::get(333, 4)); - self::register("apple", ItemFactory::get(260)); - self::register("arrow", ItemFactory::get(262)); - self::register("baked_potato", ItemFactory::get(393)); - self::register("beetroot", ItemFactory::get(457)); - self::register("beetroot_seeds", ItemFactory::get(458)); - self::register("beetroot_soup", ItemFactory::get(459)); - self::register("birch_boat", ItemFactory::get(333, 2)); - self::register("black_banner", ItemFactory::get(446)); - self::register("black_bed", ItemFactory::get(355, 15)); - self::register("black_dye", ItemFactory::get(351, 16)); - self::register("blaze_powder", ItemFactory::get(377)); - self::register("blaze_rod", ItemFactory::get(369)); - self::register("bleach", ItemFactory::get(451)); - self::register("blue_banner", ItemFactory::get(446, 4)); - self::register("blue_bed", ItemFactory::get(355, 11)); - self::register("blue_dye", ItemFactory::get(351, 18)); - self::register("bone", ItemFactory::get(352)); - self::register("bone_meal", ItemFactory::get(351, 15)); - self::register("book", ItemFactory::get(340)); - self::register("bow", ItemFactory::get(261)); - self::register("bowl", ItemFactory::get(281)); - self::register("bread", ItemFactory::get(297)); - self::register("brick", ItemFactory::get(336)); - self::register("brown_banner", ItemFactory::get(446, 3)); - self::register("brown_bed", ItemFactory::get(355, 12)); - self::register("brown_dye", ItemFactory::get(351, 17)); - self::register("bucket", ItemFactory::get(325)); - self::register("cake", ItemFactory::get(354)); - self::register("carrot", ItemFactory::get(391)); - self::register("chainmail_boots", ItemFactory::get(305)); - self::register("chainmail_chestplate", ItemFactory::get(303)); - self::register("chainmail_helmet", ItemFactory::get(302)); - self::register("chainmail_leggings", ItemFactory::get(304)); - self::register("charcoal", ItemFactory::get(263, 1)); - self::register("chemical_aluminium_oxide", ItemFactory::get(499, 13)); - self::register("chemical_ammonia", ItemFactory::get(499, 36)); - self::register("chemical_barium_sulphate", ItemFactory::get(499, 20)); - self::register("chemical_benzene", ItemFactory::get(499, 33)); - self::register("chemical_boron_trioxide", ItemFactory::get(499, 14)); - self::register("chemical_calcium_bromide", ItemFactory::get(499, 7)); - self::register("chemical_calcium_chloride", ItemFactory::get(499, 25)); - self::register("chemical_cerium_chloride", ItemFactory::get(499, 23)); - self::register("chemical_charcoal", ItemFactory::get(499, 11)); - self::register("chemical_crude_oil", ItemFactory::get(499, 29)); - self::register("chemical_glue", ItemFactory::get(499, 27)); - self::register("chemical_hydrogen_peroxide", ItemFactory::get(499, 35)); - self::register("chemical_hypochlorite", ItemFactory::get(499, 28)); - self::register("chemical_ink", ItemFactory::get(499, 34)); - self::register("chemical_iron_sulphide", ItemFactory::get(499, 4)); - self::register("chemical_latex", ItemFactory::get(499, 30)); - self::register("chemical_lithium_hydride", ItemFactory::get(499, 5)); - self::register("chemical_luminol", ItemFactory::get(499, 10)); - self::register("chemical_magnesium_nitrate", ItemFactory::get(499, 3)); - self::register("chemical_magnesium_oxide", ItemFactory::get(499, 8)); - self::register("chemical_magnesium_salts", ItemFactory::get(499, 18)); - self::register("chemical_mercuric_chloride", ItemFactory::get(499, 22)); - self::register("chemical_polyethylene", ItemFactory::get(499, 16)); - self::register("chemical_potassium_chloride", ItemFactory::get(499, 21)); - self::register("chemical_potassium_iodide", ItemFactory::get(499, 31)); - self::register("chemical_rubbish", ItemFactory::get(499, 17)); - self::register("chemical_salt", ItemFactory::get(499)); - self::register("chemical_soap", ItemFactory::get(499, 15)); - self::register("chemical_sodium_acetate", ItemFactory::get(499, 9)); - self::register("chemical_sodium_fluoride", ItemFactory::get(499, 32)); - self::register("chemical_sodium_hydride", ItemFactory::get(499, 6)); - self::register("chemical_sodium_hydroxide", ItemFactory::get(499, 2)); - self::register("chemical_sodium_hypochlorite", ItemFactory::get(499, 37)); - self::register("chemical_sodium_oxide", ItemFactory::get(499, 1)); - self::register("chemical_sugar", ItemFactory::get(499, 12)); - self::register("chemical_sulphate", ItemFactory::get(499, 19)); - self::register("chemical_tungsten_chloride", ItemFactory::get(499, 24)); - self::register("chemical_water", ItemFactory::get(499, 26)); - self::register("chorus_fruit", ItemFactory::get(432)); - self::register("clay", ItemFactory::get(337)); - self::register("clock", ItemFactory::get(347)); - self::register("clownfish", ItemFactory::get(461)); - self::register("coal", ItemFactory::get(263)); - self::register("cocoa_beans", ItemFactory::get(351, 3)); - self::register("compass", ItemFactory::get(345)); - self::register("cooked_chicken", ItemFactory::get(366)); - self::register("cooked_fish", ItemFactory::get(350)); - self::register("cooked_mutton", ItemFactory::get(424)); - self::register("cooked_porkchop", ItemFactory::get(320)); - self::register("cooked_rabbit", ItemFactory::get(412)); - self::register("cooked_salmon", ItemFactory::get(463)); - self::register("cookie", ItemFactory::get(357)); - self::register("creeper_head", ItemFactory::get(397, 4)); - self::register("cyan_banner", ItemFactory::get(446, 6)); - self::register("cyan_bed", ItemFactory::get(355, 9)); - self::register("cyan_dye", ItemFactory::get(351, 6)); - self::register("dark_oak_boat", ItemFactory::get(333, 5)); - self::register("diamond", ItemFactory::get(264)); - self::register("diamond_axe", ItemFactory::get(279)); - self::register("diamond_boots", ItemFactory::get(313)); - self::register("diamond_chestplate", ItemFactory::get(311)); - self::register("diamond_helmet", ItemFactory::get(310)); - self::register("diamond_hoe", ItemFactory::get(293)); - self::register("diamond_leggings", ItemFactory::get(312)); - self::register("diamond_pickaxe", ItemFactory::get(278)); - self::register("diamond_shovel", ItemFactory::get(277)); - self::register("diamond_sword", ItemFactory::get(276)); - self::register("dragon_breath", ItemFactory::get(437)); - self::register("dragon_head", ItemFactory::get(397, 5)); - self::register("dried_kelp", ItemFactory::get(464)); - self::register("egg", ItemFactory::get(344)); - self::register("emerald", ItemFactory::get(388)); - self::register("enchanted_golden_apple", ItemFactory::get(466)); - self::register("ender_pearl", ItemFactory::get(368)); - self::register("experience_bottle", ItemFactory::get(384)); - self::register("feather", ItemFactory::get(288)); - self::register("fermented_spider_eye", ItemFactory::get(376)); - self::register("fishing_rod", ItemFactory::get(346)); - self::register("flint", ItemFactory::get(318)); - self::register("flint_and_steel", ItemFactory::get(259)); - self::register("ghast_tear", ItemFactory::get(370)); - self::register("glass_bottle", ItemFactory::get(374)); - self::register("glistering_melon", ItemFactory::get(382)); - self::register("glowstone_dust", ItemFactory::get(348)); - self::register("gold_ingot", ItemFactory::get(266)); - self::register("gold_nugget", ItemFactory::get(371)); - self::register("golden_apple", ItemFactory::get(322)); - self::register("golden_axe", ItemFactory::get(286)); - self::register("golden_boots", ItemFactory::get(317)); - self::register("golden_carrot", ItemFactory::get(396)); - self::register("golden_chestplate", ItemFactory::get(315)); - self::register("golden_helmet", ItemFactory::get(314)); - self::register("golden_hoe", ItemFactory::get(294)); - self::register("golden_leggings", ItemFactory::get(316)); - self::register("golden_pickaxe", ItemFactory::get(285)); - self::register("golden_shovel", ItemFactory::get(284)); - self::register("golden_sword", ItemFactory::get(283)); - self::register("gray_banner", ItemFactory::get(446, 8)); - self::register("gray_bed", ItemFactory::get(355, 7)); - self::register("gray_dye", ItemFactory::get(351, 8)); - self::register("green_banner", ItemFactory::get(446, 2)); - self::register("green_bed", ItemFactory::get(355, 13)); - self::register("green_dye", ItemFactory::get(351, 2)); - self::register("gunpowder", ItemFactory::get(289)); - self::register("heart_of_the_sea", ItemFactory::get(467)); - self::register("ink_sac", ItemFactory::get(351)); - self::register("iron_axe", ItemFactory::get(258)); - self::register("iron_boots", ItemFactory::get(309)); - self::register("iron_chestplate", ItemFactory::get(307)); - self::register("iron_helmet", ItemFactory::get(306)); - self::register("iron_hoe", ItemFactory::get(292)); - self::register("iron_ingot", ItemFactory::get(265)); - self::register("iron_leggings", ItemFactory::get(308)); - self::register("iron_nugget", ItemFactory::get(452)); - self::register("iron_pickaxe", ItemFactory::get(257)); - self::register("iron_shovel", ItemFactory::get(256)); - self::register("iron_sword", ItemFactory::get(267)); - self::register("jungle_boat", ItemFactory::get(333, 3)); - self::register("lapis_lazuli", ItemFactory::get(351, 4)); - self::register("lava_bucket", ItemFactory::get(325, 10)); - self::register("leather", ItemFactory::get(334)); - self::register("leather_boots", ItemFactory::get(301)); - self::register("leather_cap", ItemFactory::get(298)); - self::register("leather_pants", ItemFactory::get(300)); - self::register("leather_tunic", ItemFactory::get(299)); - self::register("light_blue_banner", ItemFactory::get(446, 12)); - self::register("light_blue_bed", ItemFactory::get(355, 3)); - self::register("light_blue_dye", ItemFactory::get(351, 12)); - self::register("light_gray_banner", ItemFactory::get(446, 7)); - self::register("light_gray_bed", ItemFactory::get(355, 8)); - self::register("light_gray_dye", ItemFactory::get(351, 7)); - self::register("lime_banner", ItemFactory::get(446, 10)); - self::register("lime_bed", ItemFactory::get(355, 5)); - self::register("lime_dye", ItemFactory::get(351, 10)); - self::register("magenta_banner", ItemFactory::get(446, 13)); - self::register("magenta_bed", ItemFactory::get(355, 2)); - self::register("magenta_dye", ItemFactory::get(351, 13)); - self::register("magma_cream", ItemFactory::get(378)); - self::register("melon", ItemFactory::get(360)); - self::register("melon_seeds", ItemFactory::get(362)); - self::register("milk_bucket", ItemFactory::get(325, 1)); - self::register("minecart", ItemFactory::get(328)); - self::register("mushroom_stew", ItemFactory::get(282)); - self::register("nautilus_shell", ItemFactory::get(465)); - self::register("nether_brick", ItemFactory::get(405)); - self::register("nether_quartz", ItemFactory::get(406)); - self::register("nether_star", ItemFactory::get(399)); - self::register("nether_wart", ItemFactory::get(372)); - self::register("oak_boat", ItemFactory::get(333)); - self::register("orange_banner", ItemFactory::get(446, 14)); - self::register("orange_bed", ItemFactory::get(355, 1)); - self::register("orange_dye", ItemFactory::get(351, 14)); - self::register("painting", ItemFactory::get(321)); - self::register("paper", ItemFactory::get(339)); - self::register("pink_banner", ItemFactory::get(446, 9)); - self::register("pink_bed", ItemFactory::get(355, 6)); - self::register("pink_dye", ItemFactory::get(351, 9)); - self::register("player_head", ItemFactory::get(397, 3)); - self::register("poisonous_potato", ItemFactory::get(394)); - self::register("popped_chorus_fruit", ItemFactory::get(433)); - self::register("potato", ItemFactory::get(392)); - self::register("potion", ItemFactory::get(373)); - self::register("prismarine_crystals", ItemFactory::get(422)); - self::register("prismarine_shard", ItemFactory::get(409)); - self::register("pufferfish", ItemFactory::get(462)); - self::register("pumpkin_pie", ItemFactory::get(400)); - self::register("pumpkin_seeds", ItemFactory::get(361)); - self::register("purple_banner", ItemFactory::get(446, 5)); - self::register("purple_bed", ItemFactory::get(355, 10)); - self::register("purple_dye", ItemFactory::get(351, 5)); - self::register("rabbit_foot", ItemFactory::get(414)); - self::register("rabbit_hide", ItemFactory::get(415)); - self::register("rabbit_stew", ItemFactory::get(413)); - self::register("raw_beef", ItemFactory::get(363)); - self::register("raw_chicken", ItemFactory::get(365)); - self::register("raw_fish", ItemFactory::get(349)); - self::register("raw_mutton", ItemFactory::get(423)); - self::register("raw_porkchop", ItemFactory::get(319)); - self::register("raw_rabbit", ItemFactory::get(411)); - self::register("raw_salmon", ItemFactory::get(460)); - self::register("red_banner", ItemFactory::get(446, 1)); - self::register("red_bed", ItemFactory::get(355, 14)); - self::register("red_dye", ItemFactory::get(351, 1)); - self::register("redstone_dust", ItemFactory::get(331)); - self::register("rotten_flesh", ItemFactory::get(367)); - self::register("scute", ItemFactory::get(468)); - self::register("shears", ItemFactory::get(359)); - self::register("shulker_shell", ItemFactory::get(445)); - self::register("skeleton_skull", ItemFactory::get(397)); - self::register("slimeball", ItemFactory::get(341)); - self::register("snowball", ItemFactory::get(332)); - self::register("spider_eye", ItemFactory::get(375)); - self::register("splash_potion", ItemFactory::get(438)); - self::register("spruce_boat", ItemFactory::get(333, 1)); - self::register("steak", ItemFactory::get(364)); - self::register("stick", ItemFactory::get(280)); - self::register("stone_axe", ItemFactory::get(275)); - self::register("stone_hoe", ItemFactory::get(291)); - self::register("stone_pickaxe", ItemFactory::get(274)); - self::register("stone_shovel", ItemFactory::get(273)); - self::register("stone_sword", ItemFactory::get(272)); - self::register("string", ItemFactory::get(287)); - self::register("sugar", ItemFactory::get(353)); - self::register("sugarcane", ItemFactory::get(338)); - self::register("totem", ItemFactory::get(450)); - self::register("water_bucket", ItemFactory::get(325, 8)); - self::register("wheat", ItemFactory::get(296)); - self::register("wheat_seeds", ItemFactory::get(295)); - self::register("white_banner", ItemFactory::get(446, 15)); - self::register("white_bed", ItemFactory::get(355)); - self::register("white_dye", ItemFactory::get(351, 19)); - self::register("wither_skeleton_skull", ItemFactory::get(397, 1)); - self::register("wooden_axe", ItemFactory::get(271)); - self::register("wooden_hoe", ItemFactory::get(290)); - self::register("wooden_pickaxe", ItemFactory::get(270)); - self::register("wooden_shovel", ItemFactory::get(269)); - self::register("wooden_sword", ItemFactory::get(268)); - self::register("writable_book", ItemFactory::get(386)); - self::register("written_book", ItemFactory::get(387)); - self::register("yellow_banner", ItemFactory::get(446, 11)); - self::register("yellow_bed", ItemFactory::get(355, 4)); - self::register("yellow_dye", ItemFactory::get(351, 11)); - self::register("zombie_head", ItemFactory::get(397, 2)); + $factory = ItemFactory::getInstance(); + self::register("acacia_boat", $factory->get(333, 4)); + self::register("apple", $factory->get(260)); + self::register("arrow", $factory->get(262)); + self::register("baked_potato", $factory->get(393)); + self::register("beetroot", $factory->get(457)); + self::register("beetroot_seeds", $factory->get(458)); + self::register("beetroot_soup", $factory->get(459)); + self::register("birch_boat", $factory->get(333, 2)); + self::register("black_banner", $factory->get(446)); + self::register("black_bed", $factory->get(355, 15)); + self::register("black_dye", $factory->get(351, 16)); + self::register("blaze_powder", $factory->get(377)); + self::register("blaze_rod", $factory->get(369)); + self::register("bleach", $factory->get(451)); + self::register("blue_banner", $factory->get(446, 4)); + self::register("blue_bed", $factory->get(355, 11)); + self::register("blue_dye", $factory->get(351, 18)); + self::register("bone", $factory->get(352)); + self::register("bone_meal", $factory->get(351, 15)); + self::register("book", $factory->get(340)); + self::register("bow", $factory->get(261)); + self::register("bowl", $factory->get(281)); + self::register("bread", $factory->get(297)); + self::register("brick", $factory->get(336)); + self::register("brown_banner", $factory->get(446, 3)); + self::register("brown_bed", $factory->get(355, 12)); + self::register("brown_dye", $factory->get(351, 17)); + self::register("bucket", $factory->get(325)); + self::register("cake", $factory->get(354)); + self::register("carrot", $factory->get(391)); + self::register("chainmail_boots", $factory->get(305)); + self::register("chainmail_chestplate", $factory->get(303)); + self::register("chainmail_helmet", $factory->get(302)); + self::register("chainmail_leggings", $factory->get(304)); + self::register("charcoal", $factory->get(263, 1)); + self::register("chemical_aluminium_oxide", $factory->get(499, 13)); + self::register("chemical_ammonia", $factory->get(499, 36)); + self::register("chemical_barium_sulphate", $factory->get(499, 20)); + self::register("chemical_benzene", $factory->get(499, 33)); + self::register("chemical_boron_trioxide", $factory->get(499, 14)); + self::register("chemical_calcium_bromide", $factory->get(499, 7)); + self::register("chemical_calcium_chloride", $factory->get(499, 25)); + self::register("chemical_cerium_chloride", $factory->get(499, 23)); + self::register("chemical_charcoal", $factory->get(499, 11)); + self::register("chemical_crude_oil", $factory->get(499, 29)); + self::register("chemical_glue", $factory->get(499, 27)); + self::register("chemical_hydrogen_peroxide", $factory->get(499, 35)); + self::register("chemical_hypochlorite", $factory->get(499, 28)); + self::register("chemical_ink", $factory->get(499, 34)); + self::register("chemical_iron_sulphide", $factory->get(499, 4)); + self::register("chemical_latex", $factory->get(499, 30)); + self::register("chemical_lithium_hydride", $factory->get(499, 5)); + self::register("chemical_luminol", $factory->get(499, 10)); + self::register("chemical_magnesium_nitrate", $factory->get(499, 3)); + self::register("chemical_magnesium_oxide", $factory->get(499, 8)); + self::register("chemical_magnesium_salts", $factory->get(499, 18)); + self::register("chemical_mercuric_chloride", $factory->get(499, 22)); + self::register("chemical_polyethylene", $factory->get(499, 16)); + self::register("chemical_potassium_chloride", $factory->get(499, 21)); + self::register("chemical_potassium_iodide", $factory->get(499, 31)); + self::register("chemical_rubbish", $factory->get(499, 17)); + self::register("chemical_salt", $factory->get(499)); + self::register("chemical_soap", $factory->get(499, 15)); + self::register("chemical_sodium_acetate", $factory->get(499, 9)); + self::register("chemical_sodium_fluoride", $factory->get(499, 32)); + self::register("chemical_sodium_hydride", $factory->get(499, 6)); + self::register("chemical_sodium_hydroxide", $factory->get(499, 2)); + self::register("chemical_sodium_hypochlorite", $factory->get(499, 37)); + self::register("chemical_sodium_oxide", $factory->get(499, 1)); + self::register("chemical_sugar", $factory->get(499, 12)); + self::register("chemical_sulphate", $factory->get(499, 19)); + self::register("chemical_tungsten_chloride", $factory->get(499, 24)); + self::register("chemical_water", $factory->get(499, 26)); + self::register("chorus_fruit", $factory->get(432)); + self::register("clay", $factory->get(337)); + self::register("clock", $factory->get(347)); + self::register("clownfish", $factory->get(461)); + self::register("coal", $factory->get(263)); + self::register("cocoa_beans", $factory->get(351, 3)); + self::register("compass", $factory->get(345)); + self::register("cooked_chicken", $factory->get(366)); + self::register("cooked_fish", $factory->get(350)); + self::register("cooked_mutton", $factory->get(424)); + self::register("cooked_porkchop", $factory->get(320)); + self::register("cooked_rabbit", $factory->get(412)); + self::register("cooked_salmon", $factory->get(463)); + self::register("cookie", $factory->get(357)); + self::register("creeper_head", $factory->get(397, 4)); + self::register("cyan_banner", $factory->get(446, 6)); + self::register("cyan_bed", $factory->get(355, 9)); + self::register("cyan_dye", $factory->get(351, 6)); + self::register("dark_oak_boat", $factory->get(333, 5)); + self::register("diamond", $factory->get(264)); + self::register("diamond_axe", $factory->get(279)); + self::register("diamond_boots", $factory->get(313)); + self::register("diamond_chestplate", $factory->get(311)); + self::register("diamond_helmet", $factory->get(310)); + self::register("diamond_hoe", $factory->get(293)); + self::register("diamond_leggings", $factory->get(312)); + self::register("diamond_pickaxe", $factory->get(278)); + self::register("diamond_shovel", $factory->get(277)); + self::register("diamond_sword", $factory->get(276)); + self::register("dragon_breath", $factory->get(437)); + self::register("dragon_head", $factory->get(397, 5)); + self::register("dried_kelp", $factory->get(464)); + self::register("egg", $factory->get(344)); + self::register("emerald", $factory->get(388)); + self::register("enchanted_golden_apple", $factory->get(466)); + self::register("ender_pearl", $factory->get(368)); + self::register("experience_bottle", $factory->get(384)); + self::register("feather", $factory->get(288)); + self::register("fermented_spider_eye", $factory->get(376)); + self::register("fishing_rod", $factory->get(346)); + self::register("flint", $factory->get(318)); + self::register("flint_and_steel", $factory->get(259)); + self::register("ghast_tear", $factory->get(370)); + self::register("glass_bottle", $factory->get(374)); + self::register("glistering_melon", $factory->get(382)); + self::register("glowstone_dust", $factory->get(348)); + self::register("gold_ingot", $factory->get(266)); + self::register("gold_nugget", $factory->get(371)); + self::register("golden_apple", $factory->get(322)); + self::register("golden_axe", $factory->get(286)); + self::register("golden_boots", $factory->get(317)); + self::register("golden_carrot", $factory->get(396)); + self::register("golden_chestplate", $factory->get(315)); + self::register("golden_helmet", $factory->get(314)); + self::register("golden_hoe", $factory->get(294)); + self::register("golden_leggings", $factory->get(316)); + self::register("golden_pickaxe", $factory->get(285)); + self::register("golden_shovel", $factory->get(284)); + self::register("golden_sword", $factory->get(283)); + self::register("gray_banner", $factory->get(446, 8)); + self::register("gray_bed", $factory->get(355, 7)); + self::register("gray_dye", $factory->get(351, 8)); + self::register("green_banner", $factory->get(446, 2)); + self::register("green_bed", $factory->get(355, 13)); + self::register("green_dye", $factory->get(351, 2)); + self::register("gunpowder", $factory->get(289)); + self::register("heart_of_the_sea", $factory->get(467)); + self::register("ink_sac", $factory->get(351)); + self::register("iron_axe", $factory->get(258)); + self::register("iron_boots", $factory->get(309)); + self::register("iron_chestplate", $factory->get(307)); + self::register("iron_helmet", $factory->get(306)); + self::register("iron_hoe", $factory->get(292)); + self::register("iron_ingot", $factory->get(265)); + self::register("iron_leggings", $factory->get(308)); + self::register("iron_nugget", $factory->get(452)); + self::register("iron_pickaxe", $factory->get(257)); + self::register("iron_shovel", $factory->get(256)); + self::register("iron_sword", $factory->get(267)); + self::register("jungle_boat", $factory->get(333, 3)); + self::register("lapis_lazuli", $factory->get(351, 4)); + self::register("lava_bucket", $factory->get(325, 10)); + self::register("leather", $factory->get(334)); + self::register("leather_boots", $factory->get(301)); + self::register("leather_cap", $factory->get(298)); + self::register("leather_pants", $factory->get(300)); + self::register("leather_tunic", $factory->get(299)); + self::register("light_blue_banner", $factory->get(446, 12)); + self::register("light_blue_bed", $factory->get(355, 3)); + self::register("light_blue_dye", $factory->get(351, 12)); + self::register("light_gray_banner", $factory->get(446, 7)); + self::register("light_gray_bed", $factory->get(355, 8)); + self::register("light_gray_dye", $factory->get(351, 7)); + self::register("lime_banner", $factory->get(446, 10)); + self::register("lime_bed", $factory->get(355, 5)); + self::register("lime_dye", $factory->get(351, 10)); + self::register("magenta_banner", $factory->get(446, 13)); + self::register("magenta_bed", $factory->get(355, 2)); + self::register("magenta_dye", $factory->get(351, 13)); + self::register("magma_cream", $factory->get(378)); + self::register("melon", $factory->get(360)); + self::register("melon_seeds", $factory->get(362)); + self::register("milk_bucket", $factory->get(325, 1)); + self::register("minecart", $factory->get(328)); + self::register("mushroom_stew", $factory->get(282)); + self::register("nautilus_shell", $factory->get(465)); + self::register("nether_brick", $factory->get(405)); + self::register("nether_quartz", $factory->get(406)); + self::register("nether_star", $factory->get(399)); + self::register("nether_wart", $factory->get(372)); + self::register("oak_boat", $factory->get(333)); + self::register("orange_banner", $factory->get(446, 14)); + self::register("orange_bed", $factory->get(355, 1)); + self::register("orange_dye", $factory->get(351, 14)); + self::register("painting", $factory->get(321)); + self::register("paper", $factory->get(339)); + self::register("pink_banner", $factory->get(446, 9)); + self::register("pink_bed", $factory->get(355, 6)); + self::register("pink_dye", $factory->get(351, 9)); + self::register("player_head", $factory->get(397, 3)); + self::register("poisonous_potato", $factory->get(394)); + self::register("popped_chorus_fruit", $factory->get(433)); + self::register("potato", $factory->get(392)); + self::register("potion", $factory->get(373)); + self::register("prismarine_crystals", $factory->get(422)); + self::register("prismarine_shard", $factory->get(409)); + self::register("pufferfish", $factory->get(462)); + self::register("pumpkin_pie", $factory->get(400)); + self::register("pumpkin_seeds", $factory->get(361)); + self::register("purple_banner", $factory->get(446, 5)); + self::register("purple_bed", $factory->get(355, 10)); + self::register("purple_dye", $factory->get(351, 5)); + self::register("rabbit_foot", $factory->get(414)); + self::register("rabbit_hide", $factory->get(415)); + self::register("rabbit_stew", $factory->get(413)); + self::register("raw_beef", $factory->get(363)); + self::register("raw_chicken", $factory->get(365)); + self::register("raw_fish", $factory->get(349)); + self::register("raw_mutton", $factory->get(423)); + self::register("raw_porkchop", $factory->get(319)); + self::register("raw_rabbit", $factory->get(411)); + self::register("raw_salmon", $factory->get(460)); + self::register("red_banner", $factory->get(446, 1)); + self::register("red_bed", $factory->get(355, 14)); + self::register("red_dye", $factory->get(351, 1)); + self::register("redstone_dust", $factory->get(331)); + self::register("rotten_flesh", $factory->get(367)); + self::register("scute", $factory->get(468)); + self::register("shears", $factory->get(359)); + self::register("shulker_shell", $factory->get(445)); + self::register("skeleton_skull", $factory->get(397)); + self::register("slimeball", $factory->get(341)); + self::register("snowball", $factory->get(332)); + self::register("spider_eye", $factory->get(375)); + self::register("splash_potion", $factory->get(438)); + self::register("spruce_boat", $factory->get(333, 1)); + self::register("steak", $factory->get(364)); + self::register("stick", $factory->get(280)); + self::register("stone_axe", $factory->get(275)); + self::register("stone_hoe", $factory->get(291)); + self::register("stone_pickaxe", $factory->get(274)); + self::register("stone_shovel", $factory->get(273)); + self::register("stone_sword", $factory->get(272)); + self::register("string", $factory->get(287)); + self::register("sugar", $factory->get(353)); + self::register("sugarcane", $factory->get(338)); + self::register("totem", $factory->get(450)); + self::register("water_bucket", $factory->get(325, 8)); + self::register("wheat", $factory->get(296)); + self::register("wheat_seeds", $factory->get(295)); + self::register("white_banner", $factory->get(446, 15)); + self::register("white_bed", $factory->get(355)); + self::register("white_dye", $factory->get(351, 19)); + self::register("wither_skeleton_skull", $factory->get(397, 1)); + self::register("wooden_axe", $factory->get(271)); + self::register("wooden_hoe", $factory->get(290)); + self::register("wooden_pickaxe", $factory->get(270)); + self::register("wooden_shovel", $factory->get(269)); + self::register("wooden_sword", $factory->get(268)); + self::register("writable_book", $factory->get(386)); + self::register("written_book", $factory->get(387)); + self::register("yellow_banner", $factory->get(446, 11)); + self::register("yellow_bed", $factory->get(355, 4)); + self::register("yellow_dye", $factory->get(351, 11)); + self::register("zombie_head", $factory->get(397, 2)); } } diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index 1a6a79a7e..e6df8382c 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -70,7 +70,7 @@ class TypeConverter{ public function recipeIngredientToCoreItemStack(RecipeIngredient $ingredient) : Item{ $meta = $ingredient->getMeta(); - return ItemFactory::get($ingredient->getId(), $meta === 0x7fff ? -1 : $meta, $ingredient->getCount()); + return ItemFactory::getInstance()->get($ingredient->getId(), $meta === 0x7fff ? -1 : $meta, $ingredient->getCount()); } public function coreItemStackToNet(Item $itemStack) : ItemStack{ @@ -124,7 +124,7 @@ class TypeConverter{ } end: - return ItemFactory::get( + return ItemFactory::getInstance()->get( $itemStack->getId(), $meta !== 0x7fff ? $meta : -1, $itemStack->getCount(), diff --git a/src/world/World.php b/src/world/World.php index 4594b5946..0dbd7ad92 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -1464,8 +1464,9 @@ class World implements ChunkManager{ if($player->isAdventure(true) and !$ev->isCancelled()){ $canBreak = false; + $itemFactory = ItemFactory::getInstance(); foreach($item->getCanDestroy() as $v){ - $entry = ItemFactory::fromString($v); + $entry = $itemFactory->fromString($v); if($entry->getBlock()->isSameType($target)){ $canBreak = true; break; @@ -1599,8 +1600,9 @@ class World implements ChunkManager{ $ev = new BlockPlaceEvent($player, $hand, $blockReplace, $blockClicked, $item); if($player->isAdventure(true) and !$ev->isCancelled()){ $canPlace = false; + $itemFactory = ItemFactory::getInstance(); foreach($item->getCanPlaceOn() as $v){ - $entry = ItemFactory::fromString($v); + $entry = $itemFactory->fromString($v); if($entry->getBlock()->isSameType($blockClicked)){ $canPlace = true; break; diff --git a/src/world/generator/Flat.php b/src/world/generator/Flat.php index ffc51eef2..59c09e652 100644 --- a/src/world/generator/Flat.php +++ b/src/world/generator/Flat.php @@ -99,6 +99,7 @@ class Flat extends Generator{ $result = []; $split = array_map('\trim', explode(',', $layers)); $y = 0; + $itemFactory = ItemFactory::getInstance(); foreach($split as $line){ preg_match('#^(?:(\d+)[x|*])?(.+)$#', $line, $matches); if(count($matches) !== 3){ @@ -107,7 +108,7 @@ class Flat extends Generator{ $cnt = $matches[1] !== "" ? (int) $matches[1] : 1; try{ - $b = ItemFactory::fromString($matches[2])->getBlock(); + $b = $itemFactory->fromString($matches[2])->getBlock(); }catch(\InvalidArgumentException $e){ throw new InvalidGeneratorOptionsException("Invalid preset layer \"$line\": " . $e->getMessage(), 0, $e); } diff --git a/tests/phpunit/inventory/BaseInventoryTest.php b/tests/phpunit/inventory/BaseInventoryTest.php index 4d9023584..9dec6b9c2 100644 --- a/tests/phpunit/inventory/BaseInventoryTest.php +++ b/tests/phpunit/inventory/BaseInventoryTest.php @@ -29,16 +29,12 @@ use pocketmine\item\ItemIds; class BaseInventoryTest extends TestCase{ - public static function setUpBeforeClass() : void{ - ItemFactory::init(); - } - public function testAddItemDifferentUserData() : void{ $inv = new class(1) extends BaseInventory{ }; - $item1 = ItemFactory::get(ItemIds::ARROW, 0, 1); - $item2 = ItemFactory::get(ItemIds::ARROW, 0, 1)->setCustomName("TEST"); + $item1 = ItemFactory::getInstance()->get(ItemIds::ARROW, 0, 1); + $item2 = ItemFactory::getInstance()->get(ItemIds::ARROW, 0, 1)->setCustomName("TEST"); $inv->addItem(clone $item1); self::assertFalse($inv->canAddItem($item2), "Item WITHOUT userdata should not stack with item WITH userdata"); diff --git a/tests/phpunit/item/ItemFactoryTest.php b/tests/phpunit/item/ItemFactoryTest.php index 9e85f0665..723eed6c8 100644 --- a/tests/phpunit/item/ItemFactoryTest.php +++ b/tests/phpunit/item/ItemFactoryTest.php @@ -28,16 +28,12 @@ use pocketmine\block\BlockFactory; class ItemFactoryTest extends TestCase{ - public function setUp() : void{ - ItemFactory::init(); - } - /** * Tests that blocks are considered to be valid registered items */ public function testItemBlockRegistered() : void{ for($id = 0; $id < 256; ++$id){ - self::assertEquals(BlockFactory::getInstance()->isRegistered($id), ItemFactory::isRegistered($id)); + self::assertEquals(BlockFactory::getInstance()->isRegistered($id), ItemFactory::getInstance()->isRegistered($id)); } } @@ -64,7 +60,7 @@ class ItemFactoryTest extends TestCase{ * @param int $meta */ public function testFromStringSingle(string $string, int $id, int $meta) : void{ - $item = ItemFactory::fromString($string); + $item = ItemFactory::getInstance()->fromString($string); self::assertEquals($id, $item->getId()); self::assertEquals($meta, $item->getMeta()); @@ -74,10 +70,10 @@ class ItemFactoryTest extends TestCase{ * Test that durable items are correctly created by the item factory */ public function testGetDurableItem() : void{ - self::assertInstanceOf(Sword::class, $i1 = ItemFactory::get(ItemIds::WOODEN_SWORD)); + self::assertInstanceOf(Sword::class, $i1 = ItemFactory::getInstance()->get(ItemIds::WOODEN_SWORD)); /** @var Sword $i1 */ self::assertSame(0, $i1->getDamage()); - self::assertInstanceOf(Sword::class, $i2 = ItemFactory::get(ItemIds::WOODEN_SWORD, 1)); + self::assertInstanceOf(Sword::class, $i2 = ItemFactory::getInstance()->get(ItemIds::WOODEN_SWORD, 1)); /** @var Sword $i2 */ self::assertSame(1, $i2->getDamage()); } diff --git a/tests/phpunit/item/ItemTest.php b/tests/phpunit/item/ItemTest.php index ee98abb3c..6a7f14dad 100644 --- a/tests/phpunit/item/ItemTest.php +++ b/tests/phpunit/item/ItemTest.php @@ -30,7 +30,6 @@ use pocketmine\item\enchantment\EnchantmentInstance; class ItemTest extends TestCase{ public static function setUpBeforeClass() : void{ - ItemFactory::init(); Enchantment::init(); } @@ -38,14 +37,14 @@ class ItemTest extends TestCase{ private $item; public function setUp() : void{ - $this->item = ItemFactory::get(ItemIds::DIAMOND_SWORD); + $this->item = ItemFactory::getInstance()->get(ItemIds::DIAMOND_SWORD); } /** * Test for issue #1145 (items aren't considered equal after NBT serializing and deserializing */ public function testItemEquals() : void{ - $item = ItemFactory::get(ItemIds::STONE)->setCustomName("HI"); + $item = ItemFactory::getInstance()->get(ItemIds::STONE)->setCustomName("HI"); $item2 = Item::nbtDeserialize($item->nbtSerialize()); self::assertTrue($item2->equals($item)); self::assertTrue($item->equals($item2)); @@ -55,7 +54,7 @@ class ItemTest extends TestCase{ * Test that same items without NBT are considered equal */ public function testItemEqualsNoNbt() : void{ - $item1 = ItemFactory::get(ItemIds::DIAMOND_SWORD); + $item1 = ItemFactory::getInstance()->get(ItemIds::DIAMOND_SWORD); $item2 = clone $item1; self::assertTrue($item1->equals($item2)); } @@ -67,7 +66,7 @@ class ItemTest extends TestCase{ public function testItemPersistsDisplayProperties() : void{ $lore = ["Line A", "Line B"]; $name = "HI"; - $item = ItemFactory::get(ItemIds::DIAMOND_SWORD); + $item = ItemFactory::getInstance()->get(ItemIds::DIAMOND_SWORD); $item->setCustomName($name); $item->setLore($lore); $item = Item::nbtDeserialize($item->nbtSerialize());