Implemented Blast Furnace and Smoker (#4362)

This commit is contained in:
Dylan T
2021-08-12 23:27:05 +01:00
committed by GitHub
parent 483c16cc41
commit 27e0ecf7ee
14 changed files with 235 additions and 39 deletions

View File

@ -37,8 +37,11 @@ class CraftingManager{
/** @var ShapelessRecipe[][] */
protected $shapelessRecipes = [];
/** @var FurnaceRecipeManager */
protected $furnaceRecipeManager;
/**
* @var FurnaceRecipeManager[]
* @phpstan-var array<int, FurnaceRecipeManager>
*/
protected $furnaceRecipeManagers;
/**
* @var ObjectSet
@ -48,14 +51,18 @@ class CraftingManager{
public function __construct(){
$this->recipeRegisteredCallbacks = new ObjectSet();
$this->furnaceRecipeManager = new FurnaceRecipeManager();
foreach(FurnaceType::getAll() as $furnaceType){
$this->furnaceRecipeManagers[$furnaceType->id()] = new FurnaceRecipeManager();
}
$recipeRegisteredCallbacks = $this->recipeRegisteredCallbacks;
$this->furnaceRecipeManager->getRecipeRegisteredCallbacks()->add(static function(FurnaceRecipe $recipe) use ($recipeRegisteredCallbacks) : void{
foreach($recipeRegisteredCallbacks as $callback){
$callback();
}
});
foreach($this->furnaceRecipeManagers as $furnaceRecipeManager){
$furnaceRecipeManager->getRecipeRegisteredCallbacks()->add(static function(FurnaceRecipe $recipe) use ($recipeRegisteredCallbacks) : void{
foreach($recipeRegisteredCallbacks as $callback){
$callback();
}
});
}
}
/** @phpstan-return ObjectSet<\Closure() : void> */
@ -123,8 +130,8 @@ class CraftingManager{
return $this->shapedRecipes;
}
public function getFurnaceRecipeManager() : FurnaceRecipeManager{
return $this->furnaceRecipeManager;
public function getFurnaceRecipeManager(FurnaceType $furnaceType) : FurnaceRecipeManager{
return $this->furnaceRecipeManagers[$furnaceType->id()];
}
public function registerShapedRecipe(ShapedRecipe $recipe) : void{