22
33import  com .google .common .collect .ImmutableListMultimap ;
44import  com .google .common .collect .ImmutableSetMultimap ;
5- import  com .google .common .collect .ImmutableTable ;
65import  mezz .jei .api .IModPlugin ;
76import  mezz .jei .api .helpers .IColorHelper ;
87import  mezz .jei .api .helpers .IJeiHelpers ;
1312import  mezz .jei .api .recipe .advanced .IRecipeManagerPlugin ;
1413import  mezz .jei .api .recipe .category .IRecipeCategory ;
1514import  mezz .jei .api .recipe .category .extensions .IRecipeCategoryDecorator ;
16- import  mezz .jei .api .recipe .transfer .IRecipeTransferHandler ;
1715import  mezz .jei .api .recipe .transfer .IRecipeTransferHandlerHelper ;
16+ import  mezz .jei .api .recipe .transfer .IRecipeTransferManager ;
1817import  mezz .jei .api .runtime .IIngredientManager ;
1918import  mezz .jei .api .runtime .IIngredientVisibility ;
2019import  mezz .jei .api .runtime .IJeiFeatures ;
2120import  mezz .jei .api .runtime .IScreenHelper ;
2221import  mezz .jei .common .Internal ;
22+ import  mezz .jei .common .config .IClientToggleState ;
2323import  mezz .jei .common .config .IIngredientFilterConfig ;
24+ import  mezz .jei .common .network .IConnectionToServer ;
2425import  mezz .jei .common .platform .IPlatformFluidHelperInternal ;
2526import  mezz .jei .common .platform .Services ;
2627import  mezz .jei .common .util .StackHelper ;
2728import  mezz .jei .core .util .LoggedTimer ;
29+ import  mezz .jei .library .config .EditModeConfig ;
2830import  mezz .jei .library .config .IModIdFormatConfig ;
2931import  mezz .jei .library .config .RecipeCategorySortingConfig ;
3032import  mezz .jei .library .focus .FocusFactory ;
3133import  mezz .jei .library .gui .helpers .GuiHelper ;
34+ import  mezz .jei .library .helpers .CodecHelper ;
3235import  mezz .jei .library .helpers .ModIdHelper ;
36+ import  mezz .jei .library .ingredients .IngredientBlacklistInternal ;
37+ import  mezz .jei .library .ingredients .IngredientVisibility ;
3338import  mezz .jei .library .ingredients .subtypes .SubtypeInterpreters ;
3439import  mezz .jei .library .ingredients .subtypes .SubtypeManager ;
3540import  mezz .jei .library .load .registration .AdvancedRegistration ;
5257import  mezz .jei .library .runtime .JeiHelpers ;
5358import  mezz .jei .library .startup .StartData ;
5459import  mezz .jei .library .transfer .RecipeTransferHandlerHelper ;
55- import  net .minecraft .world .inventory .AbstractContainerMenu ;
5660import  org .jetbrains .annotations .Unmodifiable ;
5761
5862import  java .util .List ;
5963
60- public  class  PluginLoader  {
61- 	private  final  StartData  data ;
62- 	private  final  LoggedTimer  timer ;
63- 	private  final  IIngredientManager  ingredientManager ;
64- 	private  final  JeiHelpers  jeiHelpers ;
65- 
66- 	public  PluginLoader (
67- 		StartData  data ,
68- 		IModIdFormatConfig  modIdFormatConfig ,
69- 		IIngredientFilterConfig  ingredientFilterConfig ,
70- 		IColorHelper  colorHelper 
71- 	) {
72- 		this .data  = data ;
73- 		this .timer  = new  LoggedTimer ();
64+ public  final  class  PluginLoader  {
65+ 	private  PluginLoader () {}
7466
67+ 	public  static  SubtypeManager  registerSubtypes (StartData  data ) {
7568		IPlatformFluidHelperInternal <?> fluidHelper  = Services .PLATFORM .getFluidHelper ();
7669		List <IModPlugin > plugins  = data .plugins ();
7770		SubtypeRegistration  subtypeRegistration  = new  SubtypeRegistration ();
@@ -80,38 +73,65 @@ public PluginLoader(
8073			p .registerFluidSubtypes (subtypeRegistration , fluidHelper )
8174		);
8275		SubtypeInterpreters  subtypeInterpreters  = subtypeRegistration .getInterpreters ();
83- 		SubtypeManager  subtypeManager  = new  SubtypeManager (subtypeInterpreters );
76+ 		return  new  SubtypeManager (subtypeInterpreters );
77+ 	}
8478
79+ 	public  static  IIngredientManager  registerIngredients (StartData  data , SubtypeManager  subtypeManager , IColorHelper  colorHelper , IIngredientFilterConfig  ingredientFilterConfig ) {
80+ 		List <IModPlugin > plugins  = data .plugins ();
8581		IngredientManagerBuilder  ingredientManagerBuilder  = new  IngredientManagerBuilder (subtypeManager , colorHelper );
8682		PluginCaller .callOnPlugins ("Registering ingredients" , plugins , p  -> p .registerIngredients (ingredientManagerBuilder ));
8783		PluginCaller .callOnPlugins ("Registering extra ingredients" , plugins , p  -> p .registerExtraIngredients (ingredientManagerBuilder ));
8884
8985		if  (ingredientFilterConfig .getSearchIngredientAliases ()) {
9086			PluginCaller .callOnPlugins ("Registering search ingredient aliases" , plugins , p  -> p .registerIngredientAliases (ingredientManagerBuilder ));
9187		}
88+ 		return  ingredientManagerBuilder .build ();
89+ 	}
9290
93- 		this .ingredientManager  = ingredientManagerBuilder .build ();
94- 
95- 		ImmutableSetMultimap <String , String > modAliases ;
96- 		if  (ingredientFilterConfig .getSearchModAliases ()) {
97- 			ModInfoRegistration  modInfoRegistration  = new  ModInfoRegistration ();
98- 			PluginCaller .callOnPlugins ("Registering Mod Info" , plugins , p  -> p .registerModInfo (modInfoRegistration ));
99- 			modAliases  = modInfoRegistration .getModAliases ();
100- 		} else  {
101- 			modAliases  = ImmutableSetMultimap .of ();
91+ 	public  static  ImmutableSetMultimap <String , String > registerModAliases (
92+ 		StartData  data ,
93+ 		IIngredientFilterConfig  ingredientFilterConfig 
94+ 	) {
95+ 		List <IModPlugin > plugins  = data .plugins ();
96+ 		if  (!ingredientFilterConfig .getSearchModAliases ()) {
97+ 			return  ImmutableSetMultimap .of ();
10298		}
99+ 		ModInfoRegistration  modInfoRegistration  = new  ModInfoRegistration ();
100+ 		PluginCaller .callOnPlugins ("Registering Mod Info" , plugins , p  -> p .registerModInfo (modInfoRegistration ));
101+ 		return  modInfoRegistration .getModAliases ();
102+ 	}
103103
104+ 	public  static  JeiHelpers  createJeiHelpers (
105+ 		ImmutableSetMultimap <String , String > modAliases ,
106+ 		IModIdFormatConfig  modIdFormatConfig ,
107+ 		IColorHelper  colorHelper ,
108+ 		EditModeConfig  editModeConfig ,
109+ 		FocusFactory  focusFactory ,
110+ 		CodecHelper  codecHelper ,
111+ 		IIngredientManager  ingredientManager ,
112+ 		SubtypeManager  subtypeManager 
113+ 	) {
104114		VanillaRecipeFactory  vanillaRecipeFactory  = new  VanillaRecipeFactory (ingredientManager );
105- 
106115		StackHelper  stackHelper  = new  StackHelper (subtypeManager );
107116		GuiHelper  guiHelper  = new  GuiHelper (ingredientManager );
108- 		FocusFactory  focusFactory  = new  FocusFactory (ingredientManager );
109117		IModIdHelper  modIdHelper  = new  ModIdHelper (modIdFormatConfig , ingredientManager , modAliases );
110- 		this .jeiHelpers  = new  JeiHelpers (guiHelper , stackHelper , modIdHelper , focusFactory , colorHelper , ingredientManager , vanillaRecipeFactory );
118+ 
119+ 		IClientToggleState  toggleState  = Internal .getClientToggleState ();
120+ 		IngredientBlacklistInternal  blacklist  = new  IngredientBlacklistInternal ();
121+ 		ingredientManager .registerIngredientListener (blacklist );
122+ 
123+ 		IIngredientVisibility  ingredientVisibility  = new  IngredientVisibility (
124+ 			blacklist ,
125+ 			toggleState ,
126+ 			editModeConfig ,
127+ 			ingredientManager 
128+ 		);
129+ 
130+ 		return  new  JeiHelpers (guiHelper , stackHelper , modIdHelper , focusFactory , colorHelper , ingredientManager , vanillaRecipeFactory , codecHelper , ingredientVisibility );
111131	}
112132
113133	@ Unmodifiable 
114- 	private  List <IRecipeCategory <?>> createRecipeCategories (List <IModPlugin > plugins , VanillaPlugin  vanillaPlugin ) {
134+ 	private  static   List <IRecipeCategory <?>> createRecipeCategories (List <IModPlugin > plugins , VanillaPlugin  vanillaPlugin ,  JeiHelpers   jeiHelpers ) {
115135		RecipeCategoryRegistration  recipeCategoryRegistration  = new  RecipeCategoryRegistration (jeiHelpers );
116136		PluginCaller .callOnPlugins ("Registering categories" , plugins , p  -> p .registerCategories (recipeCategoryRegistration ));
117137		CraftingRecipeCategory  craftingCategory  = vanillaPlugin .getCraftingCategory ()
@@ -123,41 +143,48 @@ private List<IRecipeCategory<?>> createRecipeCategories(List<IModPlugin> plugins
123143		return  recipeCategoryRegistration .getRecipeCategories ();
124144	}
125145
126- 	public  IScreenHelper  createGuiScreenHelper (List <IModPlugin > plugins , IJeiHelpers  jeiHelpers ) {
146+ 	public  static   IScreenHelper  createGuiScreenHelper (List <IModPlugin > plugins , IJeiHelpers  jeiHelpers ,  IIngredientManager   ingredientManager ) {
127147		GuiHandlerRegistration  guiHandlerRegistration  = new  GuiHandlerRegistration (jeiHelpers );
128148		PluginCaller .callOnPlugins ("Registering gui handlers" , plugins , p  -> p .registerGuiHandlers (guiHandlerRegistration ));
129149		return  guiHandlerRegistration .createGuiScreenHelper (ingredientManager );
130150	}
131151
132- 	public  ImmutableTable <Class <? extends  AbstractContainerMenu >, RecipeType <?>, IRecipeTransferHandler <?, ?>> createRecipeTransferHandlers (VanillaPlugin  vanillaPlugin , List <IModPlugin > plugins ) {
152+ 	public  static  IRecipeTransferManager  createRecipeTransferManager (
153+ 		VanillaPlugin  vanillaPlugin ,
154+ 		List <IModPlugin > plugins ,
155+ 		JeiHelpers  jeiHelpers ,
156+ 		IConnectionToServer  connectionToServer 
157+ 	) {
133158		IStackHelper  stackHelper  = jeiHelpers .getStackHelper ();
134159		CraftingRecipeCategory  craftingCategory  = vanillaPlugin .getCraftingCategory ()
135160			.orElseThrow (() -> new  NullPointerException ("vanilla crafting category" ));
136161		IRecipeTransferHandlerHelper  handlerHelper  = new  RecipeTransferHandlerHelper (stackHelper , craftingCategory );
137- 		RecipeTransferRegistration  recipeTransferRegistration  = new  RecipeTransferRegistration (stackHelper , handlerHelper , this . jeiHelpers , data . serverConnection () );
162+ 		RecipeTransferRegistration  recipeTransferRegistration  = new  RecipeTransferRegistration (stackHelper , handlerHelper , jeiHelpers , connectionToServer );
138163		PluginCaller .callOnPlugins ("Registering recipes transfer handlers" , plugins , p  -> p .registerRecipeTransferHandlers (recipeTransferRegistration ));
139- 		return  recipeTransferRegistration .getRecipeTransferHandlers ();
164+ 		return  recipeTransferRegistration .createRecipeTransferManager ();
140165	}
141166
142- 	public  RecipeManager  createRecipeManager (
167+ 	public  static   RecipeManager  createRecipeManager (
143168		List <IModPlugin > plugins ,
144169		VanillaPlugin  vanillaPlugin ,
145170		RecipeCategorySortingConfig  recipeCategorySortingConfig ,
146- 		IIngredientVisibility  ingredientVisibility 
171+ 		JeiHelpers  jeiHelpers ,
172+ 		IIngredientManager  ingredientManager 
147173	) {
148- 		List <IRecipeCategory <?>> recipeCategories  = createRecipeCategories (plugins , vanillaPlugin );
174+ 		List <IRecipeCategory <?>> recipeCategories  = createRecipeCategories (plugins , vanillaPlugin ,  jeiHelpers );
149175
150176		RecipeCatalystRegistration  recipeCatalystRegistration  = new  RecipeCatalystRegistration (ingredientManager , jeiHelpers );
151177		PluginCaller .callOnPlugins ("Registering recipe catalysts" , plugins , p  -> p .registerRecipeCatalysts (recipeCatalystRegistration ));
152178		ImmutableListMultimap <RecipeType <?>, ITypedIngredient <?>> recipeCatalysts  = recipeCatalystRegistration .getRecipeCatalysts ();
153179
180+ 		LoggedTimer  timer  = new  LoggedTimer ();
154181		timer .start ("Building recipe registry" );
155182		RecipeManagerInternal  recipeManagerInternal  = new  RecipeManagerInternal (
156183			recipeCategories ,
157184			recipeCatalysts ,
158185			ingredientManager ,
159186			recipeCategorySortingConfig ,
160- 			ingredientVisibility 
187+ 			jeiHelpers . getIngredientVisibility () 
161188		);
162189		timer .stop ();
163190
@@ -171,19 +198,11 @@ public RecipeManager createRecipeManager(
171198		recipeManagerInternal .addPlugins (recipeManagerPlugins );
172199		recipeManagerInternal .addDecorators (recipeCategoryDecorators );
173200
174- 		RecipeRegistration  recipeRegistration  = new  RecipeRegistration (jeiHelpers , ingredientManager , ingredientVisibility ,  recipeManagerInternal );
201+ 		RecipeRegistration  recipeRegistration  = new  RecipeRegistration (jeiHelpers , ingredientManager , recipeManagerInternal );
175202		PluginCaller .callOnPlugins ("Registering recipes" , plugins , p  -> p .registerRecipes (recipeRegistration ));
176203
177204		recipeManagerInternal .compact ();
178205
179206		return  new  RecipeManager (recipeManagerInternal , ingredientManager );
180207	}
181- 
182- 	public  IIngredientManager  getIngredientManager () {
183- 		return  ingredientManager ;
184- 	}
185- 
186- 	public  JeiHelpers  getJeiHelpers () {
187- 		return  jeiHelpers ;
188- 	}
189208}
0 commit comments