Skip to content

Commit efd9bef

Browse files
authored
Fix representative recipes not generating (#4019)
1 parent 6b9d576 commit efd9bef

File tree

3 files changed

+54
-3
lines changed

3 files changed

+54
-3
lines changed

src/main/java/com/gregtechceu/gtceu/integration/emi/recipe/GTRecipeEMICategory.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
import dev.emi.emi.api.recipe.VanillaEmiRecipeCategories;
1919
import dev.emi.emi.api.stack.EmiStack;
2020

21+
import java.util.ArrayList;
2122
import java.util.Comparator;
23+
import java.util.List;
2224
import java.util.function.Function;
2325

2426
public class GTRecipeEMICategory extends EmiRecipeCategory {
@@ -33,15 +35,31 @@ private GTRecipeEMICategory(GTRecipeCategory category) {
3335
}
3436

3537
public static void registerDisplays(EmiRegistry registry) {
38+
List<GTRecipeCategory> subCategories = new ArrayList<>();
39+
// run main categories first
3640
for (GTRecipeCategory category : GTRegistries.RECIPE_CATEGORIES) {
3741
if (!category.shouldRegisterDisplays()) continue;
3842
var type = category.getRecipeType();
39-
if (category == type.getCategory()) type.buildRepresentativeRecipes();
43+
if (category == type.getCategory()) {
44+
type.buildRepresentativeRecipes();
45+
} else {
46+
subCategories.add(category);
47+
continue;
48+
}
4049
EmiRecipeCategory emiCategory = CATEGORIES.apply(category);
4150
type.getRecipesInCategory(category).stream()
4251
.map(recipe -> new GTEmiRecipe(recipe, emiCategory))
4352
.forEach(registry::addRecipe);
4453
}
54+
// run subcategories
55+
for (var subCategory : subCategories) {
56+
if (!subCategory.shouldRegisterDisplays()) continue;
57+
var type = subCategory.getRecipeType();
58+
EmiRecipeCategory emiCategory = CATEGORIES.apply(subCategory);
59+
type.getRecipesInCategory(subCategory).stream()
60+
.map(recipe -> new GTEmiRecipe(recipe, emiCategory))
61+
.forEach(registry::addRecipe);
62+
}
4563
}
4664

4765
public static Comparator<MachineDefinition> sortDefinition = (a, b) -> {

src/main/java/com/gregtechceu/gtceu/integration/jei/recipe/GTRecipeJEICategory.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.jetbrains.annotations.NotNull;
2727
import org.jetbrains.annotations.Nullable;
2828

29+
import java.util.ArrayList;
2930
import java.util.List;
3031
import java.util.function.Function;
3132

@@ -52,13 +53,27 @@ public GTRecipeJEICategory(IJeiHelpers helpers,
5253
}
5354

5455
public static void registerRecipes(IRecipeRegistration registration) {
56+
List<GTRecipeCategory> subCategories = new ArrayList<>();
57+
// run main categories first
5558
for (GTRecipeCategory category : GTRegistries.RECIPE_CATEGORIES) {
5659
if (!category.shouldRegisterDisplays()) continue;
5760
var type = category.getRecipeType();
58-
if (category == type.getCategory()) type.buildRepresentativeRecipes();
61+
if (category == type.getCategory()) {
62+
type.buildRepresentativeRecipes();
63+
} else {
64+
subCategories.add(category);
65+
continue;
66+
}
5967
var wrapped = List.copyOf(type.getRecipesInCategory(category));
6068
registration.addRecipes(TYPES.apply(category), wrapped);
6169
}
70+
// run subcategories
71+
for (GTRecipeCategory subCategory : subCategories) {
72+
if (!subCategory.shouldRegisterDisplays()) continue;
73+
var type = subCategory.getRecipeType();
74+
var wrapped = List.copyOf(type.getRecipesInCategory(subCategory));
75+
registration.addRecipes(TYPES.apply(subCategory), wrapped);
76+
}
6277
}
6378

6479
public static void registerRecipeCatalysts(IRecipeCatalystRegistration registration) {

src/main/java/com/gregtechceu/gtceu/integration/rei/recipe/GTRecipeREICategory.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import me.shedaniel.rei.plugin.common.BuiltinPlugin;
2424
import org.jetbrains.annotations.NotNull;
2525

26+
import java.util.ArrayList;
27+
import java.util.List;
2628
import java.util.function.Function;
2729

2830
public class GTRecipeREICategory extends ModularUIDisplayCategory<GTRecipeDisplay> {
@@ -45,15 +47,31 @@ public GTRecipeREICategory(@NotNull GTRecipeCategory category) {
4547
}
4648

4749
public static void registerDisplays(DisplayRegistry registry) {
50+
List<GTRecipeCategory> subCategories = new ArrayList<>();
51+
// run main categories first
4852
for (GTRecipeCategory category : GTRegistries.RECIPE_CATEGORIES) {
4953
if (!category.shouldRegisterDisplays()) continue;
5054
var type = category.getRecipeType();
51-
if (category == type.getCategory()) type.buildRepresentativeRecipes();
55+
if (category == type.getCategory()) {
56+
type.buildRepresentativeRecipes();
57+
} else {
58+
subCategories.add(category);
59+
continue;
60+
}
5261
var identifier = CATEGORIES.apply(category);
5362
type.getRecipesInCategory(category).stream()
5463
.map(r -> new GTRecipeDisplay(r, identifier))
5564
.forEach(registry::add);
5665
}
66+
// run subcategories
67+
for (GTRecipeCategory subCategory : subCategories) {
68+
if (!subCategory.shouldRegisterDisplays()) continue;
69+
var type = subCategory.getRecipeType();
70+
var identifier = CATEGORIES.apply(subCategory);
71+
type.getRecipesInCategory(subCategory).stream()
72+
.map(r -> new GTRecipeDisplay(r, identifier))
73+
.forEach(registry::add);
74+
}
5775
}
5876

5977
public static void registerWorkStations(CategoryRegistry registry) {

0 commit comments

Comments
 (0)