11package  mezz .jei .library .load ;
22
33import  com .google .common .collect .ImmutableListMultimap ;
4- import  com .google .common .collect .ImmutableTable ;
54import  mezz .jei .api .IModPlugin ;
65import  mezz .jei .api .helpers .IColorHelper ;
76import  mezz .jei .api .helpers .IJeiHelpers ;
1211import  mezz .jei .api .recipe .advanced .IRecipeManagerPlugin ;
1312import  mezz .jei .api .recipe .category .IRecipeCategory ;
1413import  mezz .jei .api .recipe .category .extensions .IRecipeCategoryDecorator ;
15- import  mezz .jei .api .recipe .transfer .IRecipeTransferHandler ;
1614import  mezz .jei .api .recipe .transfer .IRecipeTransferHandlerHelper ;
15+ import  mezz .jei .api .recipe .transfer .IRecipeTransferManager ;
1716import  mezz .jei .api .runtime .IIngredientManager ;
1817import  mezz .jei .api .runtime .IIngredientVisibility ;
1918import  mezz .jei .api .runtime .IJeiFeatures ;
2019import  mezz .jei .api .runtime .IScreenHelper ;
2120import  mezz .jei .common .Internal ;
21+ import  mezz .jei .common .config .IClientToggleState ;
2222import  mezz .jei .common .config .IIngredientFilterConfig ;
23+ import  mezz .jei .common .network .IConnectionToServer ;
2324import  mezz .jei .common .platform .IPlatformFluidHelperInternal ;
2425import  mezz .jei .common .platform .Services ;
2526import  mezz .jei .common .util .StackHelper ;
2627import  mezz .jei .core .util .LoggedTimer ;
28+ import  mezz .jei .library .config .EditModeConfig ;
2729import  mezz .jei .library .config .IModIdFormatConfig ;
2830import  mezz .jei .library .config .RecipeCategorySortingConfig ;
2931import  mezz .jei .library .focus .FocusFactory ;
3032import  mezz .jei .library .gui .helpers .GuiHelper ;
3133import  mezz .jei .library .helpers .ModIdHelper ;
34+ import  mezz .jei .library .ingredients .IngredientBlacklistInternal ;
35+ import  mezz .jei .library .ingredients .IngredientVisibility ;
3236import  mezz .jei .library .ingredients .subtypes .SubtypeInterpreters ;
3337import  mezz .jei .library .ingredients .subtypes .SubtypeManager ;
3438import  mezz .jei .library .load .registration .AdvancedRegistration ;
5054import  mezz .jei .library .runtime .JeiHelpers ;
5155import  mezz .jei .library .startup .StartData ;
5256import  mezz .jei .library .transfer .RecipeTransferHandlerHelper ;
53- import  net .minecraft .world .inventory .AbstractContainerMenu ;
5457import  org .jetbrains .annotations .Unmodifiable ;
5558
5659import  java .util .List ;
5760
58- public  class  PluginLoader  {
59- 	private  final  StartData  data ;
60- 	private  final  LoggedTimer  timer ;
61- 	private  final  IIngredientManager  ingredientManager ;
62- 	private  final  JeiHelpers  jeiHelpers ;
63- 
64- 	public  PluginLoader (
65- 		StartData  data ,
66- 		IModIdFormatConfig  modIdFormatConfig ,
67- 		IIngredientFilterConfig  ingredientFilterConfig ,
68- 		IColorHelper  colorHelper 
69- 	) {
70- 		this .data  = data ;
71- 		this .timer  = new  LoggedTimer ();
61+ public  final  class  PluginLoader  {
62+ 	private  PluginLoader () {}
7263
64+ 	public  static  SubtypeManager  registerSubtypes (StartData  data ) {
7365		IPlatformFluidHelperInternal <?> fluidHelper  = Services .PLATFORM .getFluidHelper ();
7466		List <IModPlugin > plugins  = data .plugins ();
7567		SubtypeRegistration  subtypeRegistration  = new  SubtypeRegistration ();
@@ -78,27 +70,51 @@ public PluginLoader(
7870			p .registerFluidSubtypes (subtypeRegistration , fluidHelper )
7971		);
8072		SubtypeInterpreters  subtypeInterpreters  = subtypeRegistration .getInterpreters ();
81- 		SubtypeManager  subtypeManager  = new  SubtypeManager (subtypeInterpreters );
73+ 		return  new  SubtypeManager (subtypeInterpreters );
74+ 	}
8275
76+ 	public  static  IIngredientManager  registerIngredients (StartData  data , SubtypeManager  subtypeManager , IColorHelper  colorHelper , IIngredientFilterConfig  ingredientFilterConfig ) {
77+ 		List <IModPlugin > plugins  = data .plugins ();
8378		IngredientManagerBuilder  ingredientManagerBuilder  = new  IngredientManagerBuilder (subtypeManager , colorHelper );
8479		PluginCaller .callOnPlugins ("Registering ingredients" , plugins , p  -> p .registerIngredients (ingredientManagerBuilder ));
8580		PluginCaller .callOnPlugins ("Registering extra ingredients" , plugins , p  -> p .registerExtraIngredients (ingredientManagerBuilder ));
8681
8782		if  (ingredientFilterConfig .getSearchIngredientAliases ()) {
8883			PluginCaller .callOnPlugins ("Registering search ingredient aliases" , plugins , p  -> p .registerIngredientAliases (ingredientManagerBuilder ));
8984		}
85+ 		return  ingredientManagerBuilder .build ();
86+ 	}
9087
91- 		this .ingredientManager  = ingredientManagerBuilder .build ();
92- 
88+ 	public  static  JeiHelpers  createJeiHelpers (
89+ 		IModIdFormatConfig  modIdFormatConfig ,
90+ 		IColorHelper  colorHelper ,
91+ 		EditModeConfig  editModeConfig ,
92+ 		FocusFactory  focusFactory ,
93+ 		IIngredientManager  ingredientManager ,
94+ 		SubtypeManager  subtypeManager 
95+ 	) {
96+ 		VanillaRecipeFactory  vanillaRecipeFactory  = new  VanillaRecipeFactory (ingredientManager );
9397		StackHelper  stackHelper  = new  StackHelper (subtypeManager );
9498		GuiHelper  guiHelper  = new  GuiHelper (ingredientManager );
95- 		 FocusFactory   focusFactory  =  new   FocusFactory ( ingredientManager ); 
99+ 
96100		IModIdHelper  modIdHelper  = new  ModIdHelper (modIdFormatConfig , ingredientManager );
97- 		this .jeiHelpers  = new  JeiHelpers (guiHelper , stackHelper , modIdHelper , focusFactory , colorHelper , ingredientManager );
101+ 
102+ 		IClientToggleState  toggleState  = Internal .getClientToggleState ();
103+ 		IngredientBlacklistInternal  blacklist  = new  IngredientBlacklistInternal ();
104+ 		ingredientManager .registerIngredientListener (blacklist );
105+ 
106+ 		IIngredientVisibility  ingredientVisibility  = new  IngredientVisibility (
107+ 			blacklist ,
108+ 			toggleState ,
109+ 			editModeConfig ,
110+ 			ingredientManager 
111+ 		);
112+ 
113+ 		return  new  JeiHelpers (guiHelper , stackHelper , modIdHelper , focusFactory , colorHelper , ingredientManager , vanillaRecipeFactory , ingredientVisibility );
98114	}
99115
100116	@ Unmodifiable 
101- 	private  List <IRecipeCategory <?>> createRecipeCategories (List <IModPlugin > plugins , VanillaPlugin  vanillaPlugin ) {
117+ 	private  static   List <IRecipeCategory <?>> createRecipeCategories (List <IModPlugin > plugins , VanillaPlugin  vanillaPlugin ,  JeiHelpers   jeiHelpers ) {
102118		RecipeCategoryRegistration  recipeCategoryRegistration  = new  RecipeCategoryRegistration (jeiHelpers );
103119		PluginCaller .callOnPlugins ("Registering categories" , plugins , p  -> p .registerCategories (recipeCategoryRegistration ));
104120		CraftingRecipeCategory  craftingCategory  = vanillaPlugin .getCraftingCategory ()
@@ -110,44 +126,48 @@ private List<IRecipeCategory<?>> createRecipeCategories(List<IModPlugin> plugins
110126		return  recipeCategoryRegistration .getRecipeCategories ();
111127	}
112128
113- 	public  IScreenHelper  createGuiScreenHelper (List <IModPlugin > plugins , IJeiHelpers  jeiHelpers ) {
129+ 	public  static   IScreenHelper  createGuiScreenHelper (List <IModPlugin > plugins , IJeiHelpers  jeiHelpers ,  IIngredientManager   ingredientManager ) {
114130		GuiHandlerRegistration  guiHandlerRegistration  = new  GuiHandlerRegistration (jeiHelpers );
115131		PluginCaller .callOnPlugins ("Registering gui handlers" , plugins , p  -> p .registerGuiHandlers (guiHandlerRegistration ));
116132		return  guiHandlerRegistration .createGuiScreenHelper (ingredientManager );
117133	}
118134
119- 	public  ImmutableTable <Class <? extends  AbstractContainerMenu >, RecipeType <?>, IRecipeTransferHandler <?, ?>> createRecipeTransferHandlers (List <IModPlugin > plugins ) {
135+ 	public  static  IRecipeTransferManager  createRecipeTransferManager (
136+ 		List <IModPlugin > plugins ,
137+ 		JeiHelpers  jeiHelpers ,
138+ 		IConnectionToServer  connectionToServer 
139+ 	) {
120140		IStackHelper  stackHelper  = jeiHelpers .getStackHelper ();
121141		IRecipeTransferHandlerHelper  handlerHelper  = new  RecipeTransferHandlerHelper (stackHelper );
122- 		RecipeTransferRegistration  recipeTransferRegistration  = new  RecipeTransferRegistration (stackHelper , handlerHelper , this . jeiHelpers , data . serverConnection () );
142+ 		RecipeTransferRegistration  recipeTransferRegistration  = new  RecipeTransferRegistration (stackHelper , handlerHelper , jeiHelpers , connectionToServer );
123143		PluginCaller .callOnPlugins ("Registering recipes transfer handlers" , plugins , p  -> p .registerRecipeTransferHandlers (recipeTransferRegistration ));
124- 		return  recipeTransferRegistration .getRecipeTransferHandlers ();
144+ 		return  recipeTransferRegistration .createRecipeTransferManager ();
125145	}
126146
127- 	public  RecipeManager  createRecipeManager (
147+ 	public  static   RecipeManager  createRecipeManager (
128148		List <IModPlugin > plugins ,
129149		VanillaPlugin  vanillaPlugin ,
130150		RecipeCategorySortingConfig  recipeCategorySortingConfig ,
131- 		IIngredientVisibility  ingredientVisibility 
151+ 		JeiHelpers  jeiHelpers ,
152+ 		IIngredientManager  ingredientManager 
132153	) {
133- 		List <IRecipeCategory <?>> recipeCategories  = createRecipeCategories (plugins , vanillaPlugin );
154+ 		List <IRecipeCategory <?>> recipeCategories  = createRecipeCategories (plugins , vanillaPlugin ,  jeiHelpers );
134155
135156		RecipeCatalystRegistration  recipeCatalystRegistration  = new  RecipeCatalystRegistration (ingredientManager , jeiHelpers );
136157		PluginCaller .callOnPlugins ("Registering recipe catalysts" , plugins , p  -> p .registerRecipeCatalysts (recipeCatalystRegistration ));
137158		ImmutableListMultimap <RecipeType <?>, ITypedIngredient <?>> recipeCatalysts  = recipeCatalystRegistration .getRecipeCatalysts ();
138159
160+ 		LoggedTimer  timer  = new  LoggedTimer ();
139161		timer .start ("Building recipe registry" );
140162		RecipeManagerInternal  recipeManagerInternal  = new  RecipeManagerInternal (
141163			recipeCategories ,
142164			recipeCatalysts ,
143165			ingredientManager ,
144166			recipeCategorySortingConfig ,
145- 			ingredientVisibility 
167+ 			jeiHelpers . getIngredientVisibility () 
146168		);
147169		timer .stop ();
148170
149- 		VanillaRecipeFactory  vanillaRecipeFactory  = new  VanillaRecipeFactory (ingredientManager );
150- 
151171		IJeiFeatures  jeiFeatures  = Internal .getJeiFeatures ();
152172		RecipeManagerPluginHelper  recipeManagerPluginHelper  = new  RecipeManagerPluginHelper (recipeManagerInternal );
153173		AdvancedRegistration  advancedRegistration  = new  AdvancedRegistration (jeiHelpers , jeiFeatures , recipeManagerPluginHelper );
@@ -158,19 +178,11 @@ public RecipeManager createRecipeManager(
158178		recipeManagerInternal .addPlugins (recipeManagerPlugins );
159179		recipeManagerInternal .addDecorators (recipeCategoryDecorators );
160180
161- 		RecipeRegistration  recipeRegistration  = new  RecipeRegistration (jeiHelpers , ingredientManager , ingredientVisibility ,  vanillaRecipeFactory ,  recipeManagerInternal );
181+ 		RecipeRegistration  recipeRegistration  = new  RecipeRegistration (jeiHelpers , ingredientManager , recipeManagerInternal );
162182		PluginCaller .callOnPlugins ("Registering recipes" , plugins , p  -> p .registerRecipes (recipeRegistration ));
163183
164184		recipeManagerInternal .compact ();
165185
166186		return  new  RecipeManager (recipeManagerInternal , ingredientManager );
167187	}
168- 
169- 	public  IIngredientManager  getIngredientManager () {
170- 		return  ingredientManager ;
171- 	}
172- 
173- 	public  JeiHelpers  getJeiHelpers () {
174- 		return  jeiHelpers ;
175- 	}
176188}
0 commit comments