diff --git a/src/pocketmine/inventory/CraftingManager.php b/src/pocketmine/inventory/CraftingManager.php index 91805188e..528b364a9 100644 --- a/src/pocketmine/inventory/CraftingManager.php +++ b/src/pocketmine/inventory/CraftingManager.php @@ -53,6 +53,7 @@ class CraftingManager{ public function init() : void{ $recipes = json_decode(file_get_contents(\pocketmine\RESOURCE_PATH . "vanilla" . DIRECTORY_SEPARATOR . "recipes.json"), true); + $itemDeserializerFunc = \Closure::fromCallable([Item::class, 'jsonDeserialize']); foreach($recipes as $recipe){ switch($recipe["type"]){ case "shapeless": @@ -60,8 +61,8 @@ class CraftingManager{ break; } $this->registerRecipe(new ShapelessRecipe( - array_map(function(array $data) : Item{ return Item::jsonDeserialize($data); }, $recipe["input"]), - array_map(function(array $data) : Item{ return Item::jsonDeserialize($data); }, $recipe["output"]) + array_map($itemDeserializerFunc, $recipe["input"]), + array_map($itemDeserializerFunc, $recipe["output"]) )); break; case "shaped": @@ -70,8 +71,8 @@ class CraftingManager{ } $this->registerRecipe(new ShapedRecipe( $recipe["shape"], - array_map(function(array $data) : Item{ return Item::jsonDeserialize($data); }, $recipe["input"]), - array_map(function(array $data) : Item{ return Item::jsonDeserialize($data); }, $recipe["output"]) + array_map($itemDeserializerFunc, $recipe["input"]), + array_map($itemDeserializerFunc, $recipe["output"]) )); break; case "smelting":