aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/recipe
diff options
context:
space:
mode:
authorboubou19 <miisterunknown@gmail.com>2024-09-12 22:30:04 +0200
committerGitHub <noreply@github.com>2024-09-12 20:30:04 +0000
commitdbc10704fdbff100d1ae592aa0ddf1dc8b1aeca0 (patch)
tree0f31ac23d82fedee110d63dd36133b3922eb5095 /src/main/java/gregtech/api/recipe
parent4603dfdeb2ec5c0c4fc322d3e5dd7a692d69508d (diff)
downloadGT5-Unofficial-dbc10704fdbff100d1ae592aa0ddf1dc8b1aeca0.tar.gz
GT5-Unofficial-dbc10704fdbff100d1ae592aa0ddf1dc8b1aeca0.tar.bz2
GT5-Unofficial-dbc10704fdbff100d1ae592aa0ddf1dc8b1aeca0.zip
Merge config categories (#3152)
Co-authored-by: miozune <miozune@gmail.com> Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/gregtech/api/recipe')
-rw-r--r--src/main/java/gregtech/api/recipe/RecipeCategories.java29
-rw-r--r--src/main/java/gregtech/api/recipe/RecipeCategory.java14
-rw-r--r--src/main/java/gregtech/api/recipe/RecipeCategoryHolder.java13
-rw-r--r--src/main/java/gregtech/api/recipe/RecipeCategorySetting.java20
4 files changed, 32 insertions, 44 deletions
diff --git a/src/main/java/gregtech/api/recipe/RecipeCategories.java b/src/main/java/gregtech/api/recipe/RecipeCategories.java
index 61eed8a8d7..3112fce705 100644
--- a/src/main/java/gregtech/api/recipe/RecipeCategories.java
+++ b/src/main/java/gregtech/api/recipe/RecipeCategories.java
@@ -3,69 +3,80 @@ package gregtech.api.recipe;
import static gregtech.api.enums.Mods.GregTech;
import static gregtech.api.recipe.RecipeCategory.createIcon;
+import gregtech.api.enums.Mods;
+import gregtech.common.config.Client;
+import gtPlusPlus.api.recipe.GTPPRecipeMaps;
+
@SuppressWarnings("unused")
public final class RecipeCategories {
- @RecipeCategoryHolder
public static final RecipeCategory arcFurnaceRecycling = new RecipeCategory(
"gt.recipe.category.arc_furnace_recycling",
RecipeMaps.arcFurnaceRecipes,
+ () -> Client.nei.recipeCategories.arcFurnaceRecycling,
builder -> builder.setDisplayImage(
createIcon(GregTech.getResourcePath("textures", "gui", "picture", "arc_furnace_recycling.png"))));
- @RecipeCategoryHolder
public static final RecipeCategory plasmaArcFurnaceRecycling = new RecipeCategory(
"gt.recipe.category.plasma_arc_furnace_recycling",
RecipeMaps.plasmaArcFurnaceRecipes,
+ () -> Client.nei.recipeCategories.plasmaArcFurnaceRecycling,
builder -> builder.setDisplayImage(
createIcon(GregTech.getResourcePath("textures", "gui", "picture", "plasma_arc_furnace_recycling.png"))));
- @RecipeCategoryHolder
public static final RecipeCategory maceratorRecycling = new RecipeCategory(
"gt.recipe.category.macerator_recycling",
RecipeMaps.maceratorRecipes,
+ () -> Client.nei.recipeCategories.maceratorRecycling,
builder -> builder.setDisplayImage(
createIcon(GregTech.getResourcePath("textures", "gui", "picture", "macerator_recycling.png"))));
- @RecipeCategoryHolder
public static final RecipeCategory fluidExtractorRecycling = new RecipeCategory(
"gt.recipe.category.fluid_extractor_recycling",
RecipeMaps.fluidExtractionRecipes,
+ () -> Client.nei.recipeCategories.fluidExtractorRecycling,
builder -> builder.setDisplayImage(
createIcon(GregTech.getResourcePath("textures", "gui", "picture", "fluid_extractor_recycling.png"))));
- @RecipeCategoryHolder
public static final RecipeCategory alloySmelterRecycling = new RecipeCategory(
"gt.recipe.category.alloy_smelter_recycling",
RecipeMaps.alloySmelterRecipes,
+ () -> Client.nei.recipeCategories.alloySmelterRecycling,
builder -> builder.setDisplayImage(
createIcon(GregTech.getResourcePath("textures", "gui", "picture", "alloy_smelter_recycling.png"))));
- @RecipeCategoryHolder
public static final RecipeCategory alloySmelterMolding = new RecipeCategory(
"gt.recipe.category.alloy_smelter_molding",
RecipeMaps.alloySmelterRecipes,
+ () -> Client.nei.recipeCategories.alloySmelterMolding,
builder -> builder.setDisplayImage(
createIcon(GregTech.getResourcePath("textures", "gui", "picture", "alloy_smelter_molding.png"))));
- @RecipeCategoryHolder
public static final RecipeCategory forgeHammerRecycling = new RecipeCategory(
"gt.recipe.category.forge_hammer_recycling",
RecipeMaps.hammerRecipes,
+ () -> Client.nei.recipeCategories.forgeHammerRecycling,
builder -> builder.setDisplayImage(
createIcon(GregTech.getResourcePath("textures", "gui", "picture", "forge_hammer_recycling.png"))));
- @RecipeCategoryHolder
public static final RecipeCategory ticPartExtruding = new RecipeCategory(
"gt.recipe.category.tic_part_extruding",
RecipeMaps.extruderRecipes,
+ () -> Client.nei.recipeCategories.ticPartExtruding,
builder -> builder.setDisplayImage(
createIcon(GregTech.getResourcePath("textures", "gui", "picture", "tic_part_extruding.png"))));
- @RecipeCategoryHolder
public static final RecipeCategory ticBoltMolding = new RecipeCategory(
"gt.recipe.category.tic_bolt_molding",
RecipeMaps.fluidSolidifierRecipes,
+ () -> Client.nei.recipeCategories.ticBoltMolding,
builder -> builder.setDisplayImage(
createIcon(GregTech.getResourcePath("textures", "gui", "picture", "tic_bolt_molding.png"))));
+
+ public static final RecipeCategory absNonAlloyRecipes = new RecipeCategory(
+ "gtpp.recipe.category.abs_non_alloy_recipes",
+ GTPPRecipeMaps.alloyBlastSmelterRecipes,
+ () -> Client.nei.recipeCategories.absNonAlloyRecipes,
+ builder -> builder.setDisplayImage(
+ createIcon(Mods.GTPlusPlus.getResourcePath("textures", "gui", "picture", "abs_non_alloy_recipes.png"))));
}
diff --git a/src/main/java/gregtech/api/recipe/RecipeCategory.java b/src/main/java/gregtech/api/recipe/RecipeCategory.java
index 9f8674e939..a597400f17 100644
--- a/src/main/java/gregtech/api/recipe/RecipeCategory.java
+++ b/src/main/java/gregtech/api/recipe/RecipeCategory.java
@@ -2,6 +2,7 @@ package gregtech.api.recipe;
import java.util.HashMap;
import java.util.Map;
+import java.util.function.Supplier;
import java.util.function.UnaryOperator;
import javax.annotation.Nullable;
@@ -18,7 +19,8 @@ import gregtech.api.util.MethodsReturnNonnullByDefault;
/**
* Allows certain recipes to be displayed on different tabs on NEI.
* <p>
- * Also apply {@link RecipeCategoryHolder} annotation to each instance to be picked up by GT config.
+ * Each entry must be declared under {@link gregtech.api.recipe.RecipeCategories}, and config entry must be added to
+ * {@link gregtech.common.config.Client.NEI.RecipeCategories}.
*/
@ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault
@@ -30,20 +32,24 @@ public final class RecipeCategory {
public final String unlocalizedName;
public final RecipeMap<?> recipeMap;
public final ModContainer ownerMod;
+ public final Supplier<RecipeCategorySetting> settingSupplier;
@Nullable
public final UnaryOperator<HandlerInfo.Builder> handlerInfoCreator;
/**
* @param unlocalizedName Unlocalized name of this category. Must be unique.
* @param recipeMap RecipeMap this category belongs to.
+ * @param settingSupplier Supplier for the setting whether to enable this category.
* @param handlerInfoCreator Supplier of handler info for the NEI handler this category belongs to.
*/
public RecipeCategory(String unlocalizedName, RecipeMap<?> recipeMap,
+ Supplier<RecipeCategorySetting> settingSupplier,
@Nullable UnaryOperator<HandlerInfo.Builder> handlerInfoCreator) {
this.unlocalizedName = unlocalizedName;
this.recipeMap = recipeMap;
this.ownerMod = Loader.instance()
.activeModContainer();
+ this.settingSupplier = settingSupplier;
this.handlerInfoCreator = handlerInfoCreator;
if (ALL_RECIPE_CATEGORIES.containsKey(unlocalizedName)) {
throw new IllegalArgumentException(
@@ -53,7 +59,11 @@ public final class RecipeCategory {
}
RecipeCategory(RecipeMap<?> recipeMap) {
- this(recipeMap.unlocalizedName, recipeMap, recipeMap.getFrontend().neiProperties.handlerInfoCreator);
+ this(
+ recipeMap.unlocalizedName,
+ recipeMap,
+ RecipeCategorySetting::getDefault,
+ recipeMap.getFrontend().neiProperties.handlerInfoCreator);
}
@Override
diff --git a/src/main/java/gregtech/api/recipe/RecipeCategoryHolder.java b/src/main/java/gregtech/api/recipe/RecipeCategoryHolder.java
deleted file mode 100644
index 0ad87e3f6f..0000000000
--- a/src/main/java/gregtech/api/recipe/RecipeCategoryHolder.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package gregtech.api.recipe;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Apply this annotation to each recipe category so that GT config will pick it up.
- */
-@Target(ElementType.FIELD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface RecipeCategoryHolder {}
diff --git a/src/main/java/gregtech/api/recipe/RecipeCategorySetting.java b/src/main/java/gregtech/api/recipe/RecipeCategorySetting.java
index 4920d64212..0f1c5b3814 100644
--- a/src/main/java/gregtech/api/recipe/RecipeCategorySetting.java
+++ b/src/main/java/gregtech/api/recipe/RecipeCategorySetting.java
@@ -1,8 +1,5 @@
package gregtech.api.recipe;
-import java.util.Locale;
-import java.util.stream.Stream;
-
import javax.annotation.ParametersAreNonnullByDefault;
import gregtech.api.util.MethodsReturnNonnullByDefault;
@@ -28,25 +25,8 @@ public enum RecipeCategorySetting {
HIDE;
public static final RecipeCategorySetting[] VALUES = values();
- public static final String[] NAMES = Stream.of(VALUES)
- .map(RecipeCategorySetting::toName)
- .toArray(String[]::new);
public static RecipeCategorySetting getDefault() {
return ENABLE;
}
-
- public String toName() {
- return toString().toLowerCase(Locale.ENGLISH);
- }
-
- public static RecipeCategorySetting find(String name) {
- for (RecipeCategorySetting setting : VALUES) {
- if (setting.toName()
- .equals(name)) {
- return setting;
- }
- }
- return getDefault();
- }
}