aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/api
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2023-12-04 06:26:09 +0900
committerGitHub <noreply@github.com>2023-12-03 22:26:09 +0100
commitb6caaf255da083516286321155ef339b60a07393 (patch)
tree89416c1d29e63de37cb43295a81913de3c24e015 /src/main/java/gtPlusPlus/api
parent4ff3ef790f4e22cc80986258f13f8a8643fda0dc (diff)
downloadGT5-Unofficial-b6caaf255da083516286321155ef339b60a07393.tar.gz
GT5-Unofficial-b6caaf255da083516286321155ef339b60a07393.tar.bz2
GT5-Unofficial-b6caaf255da083516286321155ef339b60a07393.zip
Migrate to new RecipeMap (#788)
* Remove reference to GTPP_Recipe itself * Remove GTPP_Recipe_Map_Internal * Move recipemaps to separated class * Remove unused recipemaps * Migrate GT++ recipemaps Remove sElementalDuplicatorRecipes in favor of GT replicatorRecipes supporting findRecipe * Migrate the rest * Adjust catalyst priorities * Add ABS non-alloy recipe category * Remove s prefixes from recipemaps * Adapt to GT_StreamUtil rename * Adjust recipe catalysts * Fix build * update gradle+bs+deps (cherry picked from commit 8b185c7a4d881d38580cc98456265ebb751b6d93) * update deps --------- Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/gtPlusPlus/api')
-rw-r--r--src/main/java/gtPlusPlus/api/recipe/ChemicalPlantFrontend.java68
-rw-r--r--src/main/java/gtPlusPlus/api/recipe/GTPPRecipeCategories.java19
-rw-r--r--src/main/java/gtPlusPlus/api/recipe/GTPPRecipeMaps.java157
-rw-r--r--src/main/java/gtPlusPlus/api/recipe/MillingFrontend.java46
-rw-r--r--src/main/java/gtPlusPlus/api/recipe/TGSFrontend.java68
5 files changed, 358 insertions, 0 deletions
diff --git a/src/main/java/gtPlusPlus/api/recipe/ChemicalPlantFrontend.java b/src/main/java/gtPlusPlus/api/recipe/ChemicalPlantFrontend.java
new file mode 100644
index 0000000000..42d1fb9f50
--- /dev/null
+++ b/src/main/java/gtPlusPlus/api/recipe/ChemicalPlantFrontend.java
@@ -0,0 +1,68 @@
+package gtPlusPlus.api.recipe;
+
+import static net.minecraft.util.EnumChatFormatting.GRAY;
+
+import java.util.List;
+
+import javax.annotation.ParametersAreNonnullByDefault;
+
+import com.gtnewhorizons.modularui.api.math.Pos2d;
+
+import gregtech.api.recipe.BasicUIPropertiesBuilder;
+import gregtech.api.recipe.NEIRecipePropertiesBuilder;
+import gregtech.api.recipe.RecipeMapFrontend;
+import gregtech.api.util.MethodsReturnNonnullByDefault;
+import gregtech.common.gui.modularui.UIHelper;
+import gregtech.nei.GT_NEI_DefaultHandler;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+
+@ParametersAreNonnullByDefault
+@MethodsReturnNonnullByDefault
+public class ChemicalPlantFrontend extends RecipeMapFrontend {
+
+ public ChemicalPlantFrontend(BasicUIPropertiesBuilder uiPropertiesBuilder,
+ NEIRecipePropertiesBuilder neiPropertiesBuilder) {
+ super(uiPropertiesBuilder, neiPropertiesBuilder);
+ }
+
+ @Override
+ public List<Pos2d> getItemInputPositions(int itemInputCount) {
+ return UIHelper.getGridPositions(itemInputCount, 7, 6, itemInputCount, 1);
+ }
+
+ @Override
+ public List<Pos2d> getItemOutputPositions(int itemOutputCount) {
+ return UIHelper.getGridPositions(itemOutputCount, 106, 15, 2);
+ }
+
+ @Override
+ public List<Pos2d> getFluidInputPositions(int fluidInputCount) {
+ return UIHelper.getGridPositions(fluidInputCount, 7, 41, fluidInputCount, 1);
+ }
+
+ @Override
+ public List<Pos2d> getFluidOutputPositions(int fluidOutputCount) {
+ return UIHelper.getGridPositions(fluidOutputCount, 142, 15, 1, fluidOutputCount);
+ }
+
+ @Override
+ protected List<String> handleNEIItemInputTooltip(List<String> currentTip,
+ GT_NEI_DefaultHandler.FixedPositionedStack pStack) {
+ if (ItemUtils.isCatalyst(pStack.item)) {
+ currentTip.add(GRAY + "Does not always get consumed in the process");
+ currentTip.add(GRAY + "Higher tier pipe casings allow this item to last longer");
+ } else {
+ super.handleNEIItemInputTooltip(currentTip, pStack);
+ }
+ return currentTip;
+ }
+
+ @Override
+ protected void drawNEIOverlayForInput(GT_NEI_DefaultHandler.FixedPositionedStack stack) {
+ if (ItemUtils.isCatalyst(stack.item)) {
+ drawNEIOverlayText("NC*", stack);
+ } else {
+ super.drawNEIOverlayForInput(stack);
+ }
+ }
+}
diff --git a/src/main/java/gtPlusPlus/api/recipe/GTPPRecipeCategories.java b/src/main/java/gtPlusPlus/api/recipe/GTPPRecipeCategories.java
new file mode 100644
index 0000000000..2d1aff7add
--- /dev/null
+++ b/src/main/java/gtPlusPlus/api/recipe/GTPPRecipeCategories.java
@@ -0,0 +1,19 @@
+package gtPlusPlus.api.recipe;
+
+import static gregtech.api.recipe.RecipeCategory.createIcon;
+
+import gregtech.api.enums.Mods;
+import gregtech.api.recipe.RecipeCategory;
+import gregtech.api.recipe.RecipeCategoryHolder;
+
+public class GTPPRecipeCategories {
+
+ @RecipeCategoryHolder
+ public static final RecipeCategory absNonAlloyRecipes = new RecipeCategory(
+ "gtpp.recipe.category.abs_non_alloy_recipes",
+ GTPPRecipeMaps.alloyBlastSmelterRecipes,
+ builder -> builder.setDisplayImage(
+ createIcon(
+ Mods.GTPlusPlus
+ .getResourcePath("textures", "gui", "picture", "abs_non_alloy_recipes.png"))));
+}
diff --git a/src/main/java/gtPlusPlus/api/recipe/GTPPRecipeMaps.java b/src/main/java/gtPlusPlus/api/recipe/GTPPRecipeMaps.java
new file mode 100644
index 0000000000..9d02865c5b
--- /dev/null
+++ b/src/main/java/gtPlusPlus/api/recipe/GTPPRecipeMaps.java
@@ -0,0 +1,157 @@
+package gtPlusPlus.api.recipe;
+
+import java.util.Arrays;
+import java.util.Collections;
+
+import net.minecraft.util.StatCollector;
+
+import com.gtnewhorizons.modularui.common.widget.ProgressBar;
+
+import gregtech.api.gui.modularui.GT_UITextures;
+import gregtech.api.recipe.RecipeMap;
+import gregtech.api.recipe.RecipeMapBackend;
+import gregtech.api.recipe.RecipeMapBuilder;
+import gregtech.api.recipe.maps.FluidOnlyFrontend;
+import gregtech.api.recipe.maps.FuelBackend;
+import gregtech.api.recipe.maps.LargeNEIFrontend;
+import gregtech.api.util.GT_Utility;
+import gregtech.nei.formatter.FuelSpecialValueFormatter;
+import gregtech.nei.formatter.HeatingCoilSpecialValueFormatter;
+import gregtech.nei.formatter.SimpleSpecialValueFormatter;
+import gtPlusPlus.core.util.math.MathUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.xmod.gregtech.api.gui.GTPP_UITextures;
+
+public class GTPPRecipeMaps {
+
+ public static final RecipeMap<RecipeMapBackend> cokeOvenRecipes = RecipeMapBuilder.of("gtpp.recipe.cokeoven")
+ .maxIO(2, 9, 1, 1).minInputs(1, 0).progressBar(GT_UITextures.PROGRESSBAR_SIFT, ProgressBar.Direction.DOWN)
+ .build();
+ public static final RecipeMap<RecipeMapBackend> multiblockMassFabricatorRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.matterfab2").maxIO(2, 0, 1, 1).build();
+ public static final RecipeMap<FuelBackend> rocketFuels = RecipeMapBuilder
+ .of("gtpp.recipe.rocketenginefuel", FuelBackend::new).maxIO(0, 0, 1, 0)
+ .neiSpecialInfoFormatter(
+ recipeInfo -> Collections.singletonList(
+ StatCollector.translateToLocalFormatted(
+ "GT5U.nei.fuel",
+ GT_Utility.formatNumbers(recipeInfo.recipe.mSpecialValue * 3000L))))
+ .build();
+ public static final RecipeMap<RecipeMapBackend> quantumForceTransformerRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.quantumforcesmelter").maxIO(6, 6, 6, 6).minInputs(1, 0)
+ .progressBar(GT_UITextures.PROGRESSBAR_ARROW_MULTIPLE)
+ .neiSpecialInfoFormatter(new SimpleSpecialValueFormatter("GT5U.nei.tier")).frontend(LargeNEIFrontend::new)
+ .build();
+ public static final RecipeMap<RecipeMapBackend> chemicalDehydratorRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.chemicaldehydrator").maxIO(2, 9, 1, 1)
+ .progressBar(GT_UITextures.PROGRESSBAR_SIFT, ProgressBar.Direction.DOWN).build();
+ public static final RecipeMap<RecipeMapBackend> vacuumFurnaceRecipes = RecipeMapBuilder.of("gtpp.recipe.vacfurnace")
+ .maxIO(9, 9, 3, 3).minInputs(1, 0).neiSpecialInfoFormatter(HeatingCoilSpecialValueFormatter.INSTANCE)
+ .frontend(LargeNEIFrontend::new).build();
+ public static final RecipeMap<RecipeMapBackend> alloyBlastSmelterRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.alloyblastsmelter").maxIO(9, 9, 3, 3).minInputs(1, 0).frontend(LargeNEIFrontend::new)
+ .build();
+ public static final RecipeMap<RecipeMapBackend> liquidFluorineThoriumReactorRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.lftr").maxIO(0, 0, 6, 6).minInputs(0, 2).frontend(FluidOnlyFrontend::new)
+ .neiSpecialInfoFormatter(recipeInfo -> {
+ final long eut = recipeInfo.recipe.mSpecialValue;
+ final int duration = recipeInfo.recipe.mDuration;
+ return Arrays.asList(
+ StatCollector.translateToLocalFormatted("gtpp.nei.lftr.power", GT_Utility.formatNumbers(eut)),
+ StatCollector.translateToLocalFormatted(
+ "gtpp.nei.lftr.dynamo",
+ MathUtils.formatNumbers(duration * eut)),
+ StatCollector.translateToLocalFormatted(
+ "gtpp.nei.lftr.total",
+ MathUtils.formatNumbers(duration * eut * 4)));
+ }).build();
+ public static final RecipeMap<RecipeMapBackend> nuclearSaltProcessingPlantRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.nuclearsaltprocessingplant").maxIO(1, 6, 2, 3).frontend(LargeNEIFrontend::new).build();
+ public static final RecipeMap<RecipeMapBackend> millingRecipes = RecipeMapBuilder.of("gtpp.recipe.oremill")
+ .maxIO(3, 1, 0, 0).minInputs(1, 0).frontend(MillingFrontend::new).build();
+ public static final RecipeMap<RecipeMapBackend> fissionFuelProcessingRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.fissionfuel").maxIO(0, 0, 6, 1).frontend(FluidOnlyFrontend::new).build();
+ public static final RecipeMap<RecipeMapBackend> coldTrapRecipes = RecipeMapBuilder.of("gtpp.recipe.coldtrap")
+ .maxIO(2, 9, 1, 1).progressBar(GT_UITextures.PROGRESSBAR_SIFT, ProgressBar.Direction.DOWN).build();
+ public static final RecipeMap<RecipeMapBackend> reactorProcessingUnitRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.reactorprocessingunit").maxIO(2, 9, 1, 1)
+ .progressBar(GT_UITextures.PROGRESSBAR_SIFT, ProgressBar.Direction.DOWN).build();
+ public static final RecipeMap<RecipeMapBackend> simpleWasherRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.simplewasher").maxIO(1, 1, 1, 0)
+ .slotOverlays(
+ (index, isFluid, isOutput, isSpecial) -> !isFluid && !isOutput ? GT_UITextures.OVERLAY_SLOT_CAULDRON
+ : null)
+ .progressBar(GT_UITextures.PROGRESSBAR_ARROW_MULTIPLE).build();
+ public static final RecipeMap<RecipeMapBackend> molecularTransformerRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.moleculartransformer").maxIO(1, 1, 0, 0)
+ .slotOverlays(
+ (index, isFluid, isOutput,
+ isSpecial) -> !isFluid && !isOutput ? GT_UITextures.OVERLAY_SLOT_MICROSCOPE : null)
+ .neiHandlerInfo(
+ builder -> builder.setDisplayStack(
+ ItemUtils.getItemStackFromFQRN("AdvancedSolarPanel:BlockMolecularTransformer", 1)))
+ .build();
+ public static final RecipeMap<RecipeMapBackend> chemicalPlantRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.fluidchemicaleactor").maxIO(4, 4, 4, 2)
+ .slotOverlays((index, isFluid, isOutput, isSpecial) -> {
+ if (isFluid) {
+ if (isOutput) {
+ return GT_UITextures.OVERLAY_SLOT_VIAL_2;
+ }
+ return GT_UITextures.OVERLAY_SLOT_MOLECULAR_3;
+ }
+ if (isOutput) {
+ return GT_UITextures.OVERLAY_SLOT_VIAL_1;
+ }
+ return GT_UITextures.OVERLAY_SLOT_MOLECULAR_1;
+ }).progressBar(GTPP_UITextures.PROGRESSBAR_FLUID_REACTOR, ProgressBar.Direction.CIRCULAR_CW)
+ .progressBarPos(82, 24).neiSpecialInfoFormatter(recipeInfo -> {
+ int tier = recipeInfo.recipe.mSpecialValue + 1;
+ String materialName = StatCollector.translateToLocal("gtpp.nei.chemplant.tier." + tier);
+ return Collections.singletonList(
+ StatCollector.translateToLocalFormatted("GT5U.nei.tier", tier + " - " + materialName));
+ }).frontend(ChemicalPlantFrontend::new).build();
+ public static final RecipeMap<FuelBackend> rtgFuels = RecipeMapBuilder
+ .of("gtpp.recipe.RTGgenerators", FuelBackend::new).maxIO(1, 0, 0, 0)
+ .neiSpecialInfoFormatter(new SimpleSpecialValueFormatter("gtpp.nei.rtg.days", 365)).build();
+ public static final RecipeMap<RecipeMapBackend> thermalBoilerRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.thermalgeneratorfuel").maxIO(9, 9, 3, 3).frontend(LargeNEIFrontend::new).build();
+ public static final RecipeMap<RecipeMapBackend> solarTowerRecipes = RecipeMapBuilder.of("gtpp.recipe.solartower")
+ .maxIO(0, 0, 1, 1)
+ .neiSpecialInfoFormatter(
+ recipeInfo -> Arrays.asList(
+ StatCollector.translateToLocal("gtpp.nei.solar_tower.1"),
+ StatCollector.translateToLocal("gtpp.nei.solar_tower.2"),
+ StatCollector.translateToLocal("gtpp.nei.solar_tower.3")))
+ .frontend(FluidOnlyFrontend::new).build();
+ public static final RecipeMap<RecipeMapBackend> cyclotronRecipes = RecipeMapBuilder.of("gtpp.recipe.cyclotron")
+ .maxIO(9, 9, 1, 1).build();
+ public static final RecipeMap<RecipeMapBackend> fishPondRecipes = RecipeMapBuilder.of("gtpp.recipe.fishpond")
+ .maxIO(1, 1, 0, 0)
+ .slotOverlays(
+ (index, isFluid, isOutput, isSpecial) -> !isFluid && !isOutput ? GT_UITextures.OVERLAY_SLOT_CAULDRON
+ : null)
+ .progressBar(GT_UITextures.PROGRESSBAR_ARROW_MULTIPLE).build();
+ public static final RecipeMap<RecipeMapBackend> spargeTowerFakeRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.spargetower").maxIO(0, 0, 9, 9).disableRegisterNEI().build();
+ public static final RecipeMap<RecipeMapBackend> advancedFreezerRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.cryogenicfreezer").maxIO(1, 1, 2, 1).build();
+ public static final RecipeMap<RecipeMapBackend> centrifugeNonCellRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.multicentrifuge").maxIO(6, 6, 6, 6).progressBar(GT_UITextures.PROGRESSBAR_EXTRACT)
+ .frontend(LargeNEIFrontend::new).build();
+ public static final RecipeMap<RecipeMapBackend> electrolyzerNonCellRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.multielectro").maxIO(6, 6, 6, 6).progressBar(GT_UITextures.PROGRESSBAR_EXTRACT)
+ .frontend(LargeNEIFrontend::new).build();
+ public static final RecipeMap<RecipeMapBackend> mixerNonCellRecipes = RecipeMapBuilder.of("gtpp.recipe.multimixer")
+ .maxIO(9, 9, 6, 6).progressBar(GT_UITextures.PROGRESSBAR_MIXER, ProgressBar.Direction.CIRCULAR_CW)
+ .frontend(LargeNEIFrontend::new).build();
+ public static final RecipeMap<RecipeMapBackend> chemicalDehydratorNonCellRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.multidehydrator").maxIO(6, 9, 3, 3).frontend(LargeNEIFrontend::new).build();
+ public static final RecipeMap<FuelBackend> semiFluidFuels = RecipeMapBuilder
+ .of("gtpp.recipe.semifluidgeneratorfuels", FuelBackend::new).maxIO(0, 0, 1, 0)
+ .neiSpecialInfoFormatter(FuelSpecialValueFormatter.INSTANCE).build();
+ public static final RecipeMap<RecipeMapBackend> flotationCellRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.flotationcell").maxIO(6, 0, 1, 1).build();
+ public static final RecipeMap<RecipeMapBackend> treeGrowthSimulatorFakeRecipes = RecipeMapBuilder
+ .of("gtpp.recipe.treefarm").maxIO(1, 2, 1, 0).minInputs(1, 0).frontend(TGSFrontend::new).build();
+}
diff --git a/src/main/java/gtPlusPlus/api/recipe/MillingFrontend.java b/src/main/java/gtPlusPlus/api/recipe/MillingFrontend.java
new file mode 100644
index 0000000000..924dcf3a0e
--- /dev/null
+++ b/src/main/java/gtPlusPlus/api/recipe/MillingFrontend.java
@@ -0,0 +1,46 @@
+package gtPlusPlus.api.recipe;
+
+import static net.minecraft.util.EnumChatFormatting.GRAY;
+
+import java.util.List;
+
+import javax.annotation.ParametersAreNonnullByDefault;
+
+import net.minecraft.util.StatCollector;
+
+import gregtech.api.recipe.BasicUIPropertiesBuilder;
+import gregtech.api.recipe.NEIRecipePropertiesBuilder;
+import gregtech.api.recipe.RecipeMapFrontend;
+import gregtech.api.util.MethodsReturnNonnullByDefault;
+import gregtech.nei.GT_NEI_DefaultHandler;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+
+@ParametersAreNonnullByDefault
+@MethodsReturnNonnullByDefault
+public class MillingFrontend extends RecipeMapFrontend {
+
+ public MillingFrontend(BasicUIPropertiesBuilder uiPropertiesBuilder,
+ NEIRecipePropertiesBuilder neiPropertiesBuilder) {
+ super(uiPropertiesBuilder, neiPropertiesBuilder);
+ }
+
+ @Override
+ protected List<String> handleNEIItemInputTooltip(List<String> currentTip,
+ GT_NEI_DefaultHandler.FixedPositionedStack pStack) {
+ if (ItemUtils.isMillingBall(pStack.item)) {
+ currentTip.add(GRAY + StatCollector.translateToLocal("gtpp.nei.milling.not_consumed"));
+ } else {
+ super.handleNEIItemInputTooltip(currentTip, pStack);
+ }
+ return currentTip;
+ }
+
+ @Override
+ protected void drawNEIOverlayForInput(GT_NEI_DefaultHandler.FixedPositionedStack stack) {
+ if (ItemUtils.isMillingBall(stack.item)) {
+ drawNEIOverlayText("NC*", stack);
+ } else {
+ super.drawNEIOverlayForInput(stack);
+ }
+ }
+}
diff --git a/src/main/java/gtPlusPlus/api/recipe/TGSFrontend.java b/src/main/java/gtPlusPlus/api/recipe/TGSFrontend.java
new file mode 100644
index 0000000000..10a9fe4da6
--- /dev/null
+++ b/src/main/java/gtPlusPlus/api/recipe/TGSFrontend.java
@@ -0,0 +1,68 @@
+package gtPlusPlus.api.recipe;
+
+import static net.minecraft.util.EnumChatFormatting.GRAY;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import javax.annotation.ParametersAreNonnullByDefault;
+
+import net.minecraft.util.StatCollector;
+
+import gregtech.api.recipe.BasicUIPropertiesBuilder;
+import gregtech.api.recipe.NEIRecipePropertiesBuilder;
+import gregtech.api.recipe.RecipeMapFrontend;
+import gregtech.api.util.MethodsReturnNonnullByDefault;
+import gregtech.nei.GT_NEI_DefaultHandler;
+import gregtech.nei.RecipeDisplayInfo;
+import gregtech.nei.formatter.INEISpecialInfoFormatter;
+import gtPlusPlus.core.item.ModItems;
+
+@ParametersAreNonnullByDefault
+@MethodsReturnNonnullByDefault
+public class TGSFrontend extends RecipeMapFrontend {
+
+ public TGSFrontend(BasicUIPropertiesBuilder uiPropertiesBuilder, NEIRecipePropertiesBuilder neiPropertiesBuilder) {
+ super(uiPropertiesBuilder, neiPropertiesBuilder.neiSpecialInfoFormatter(new TGSSpecialValueFormatter()));
+ }
+
+ @Override
+ protected void drawEnergyInfo(RecipeDisplayInfo recipeInfo) {}
+
+ @Override
+ protected void drawDurationInfo(RecipeDisplayInfo recipeInfo) {}
+
+ @Override
+ protected List<String> handleNEIItemOutputTooltip(List<String> currentTip,
+ GT_NEI_DefaultHandler.FixedPositionedStack pStack) {
+ if (ModItems.fluidFertBasic != null && pStack.isChanceBased()) {
+ currentTip.add(
+ GRAY + StatCollector.translateToLocalFormatted(
+ "gtpp.nei.tgs.sapling",
+ StatCollector.translateToLocal(ModItems.fluidFertBasic.getUnlocalizedName())));
+ } else {
+ super.handleNEIItemOutputTooltip(currentTip, pStack);
+ }
+ return currentTip;
+ }
+
+ @Override
+ protected void drawNEIOverlayForOutput(GT_NEI_DefaultHandler.FixedPositionedStack stack) {}
+
+ private static class TGSSpecialValueFormatter implements INEISpecialInfoFormatter {
+
+ @Override
+ public List<String> format(RecipeDisplayInfo recipeInfo) {
+ if (ModItems.fluidFertBasic == null) {
+ return Collections.emptyList();
+ }
+ return Arrays.asList(
+ StatCollector.translateToLocal("gtpp.nei.tgs.1"),
+ StatCollector.translateToLocalFormatted(
+ "gtpp.nei.tgs.2",
+ StatCollector.translateToLocal(ModItems.fluidFertBasic.getUnlocalizedName())),
+ StatCollector.translateToLocal("gtpp.nei.tgs.3"));
+ }
+ }
+}