diff --git a/src/main/java/gregtech/api/metatileentity/multiblock/MultiblockDisplayText.java b/src/main/java/gregtech/api/metatileentity/multiblock/MultiblockDisplayText.java index 9127d5ca68c..2ae4f3cab97 100644 --- a/src/main/java/gregtech/api/metatileentity/multiblock/MultiblockDisplayText.java +++ b/src/main/java/gregtech/api/metatileentity/multiblock/MultiblockDisplayText.java @@ -2,12 +2,17 @@ import gregtech.api.GTValues; import gregtech.api.capability.IEnergyContainer; +import gregtech.api.recipes.Recipe; import gregtech.api.util.GTUtility; import gregtech.api.util.TextComponentUtil; import gregtech.api.util.TextFormattingUtil; import gregtech.common.ConfigHolder; +import net.minecraft.item.ItemStack; import net.minecraft.util.text.*; +import net.minecraftforge.fluids.FluidStack; + +import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.function.Consumer; @@ -478,5 +483,42 @@ public Builder addCustom(Consumer> customConsumer) { customConsumer.accept(textList); return this; } + + /** While the Multiblock is active, add lines which display the outputs of the currently run recipe. */ + public Builder addRecipeOutputsLine(@Nullable Recipe recipe) { + if (!isStructureFormed || !isActive) { + return this; + } + if (recipe == null) { + return this; + } + if (!recipe.getAllItemOutputs().isEmpty()) { + textList.add(TextComponentUtil.translationWithColor(TextFormatting.GRAY, + "gregtech.multiblock.recipe_outputs", itemOutputsToString(recipe.getAllItemOutputs()))); + } + if (!recipe.getAllFluidOutputs().isEmpty()) { + textList.add(TextComponentUtil.translationWithColor(TextFormatting.GRAY, + "gregtech.multiblock.recipe_outputs", fluidOutputsToString(recipe.getAllFluidOutputs()))); + } + return this; + } + + private String fluidOutputsToString(List stacks) { + StringBuilder output = new StringBuilder(); + for (FluidStack stack : stacks) { + output.append(stack.amount).append("L of ").append(stack.getLocalizedName()).append(", "); + } + String str = output.toString(); + return str.substring(0, str.length() - 2); + } + + private String itemOutputsToString(List stacks) { + StringBuilder output = new StringBuilder(); + for (ItemStack stack : stacks) { + output.append(stack.getCount()).append("x ").append(stack.getDisplayName()).append(", "); + } + String str = output.toString(); + return str.substring(0, str.length() - 2); + } } } diff --git a/src/main/java/gregtech/api/metatileentity/multiblock/RecipeMapMultiblockController.java b/src/main/java/gregtech/api/metatileentity/multiblock/RecipeMapMultiblockController.java index 4949074c91a..a5d738dbf41 100644 --- a/src/main/java/gregtech/api/metatileentity/multiblock/RecipeMapMultiblockController.java +++ b/src/main/java/gregtech/api/metatileentity/multiblock/RecipeMapMultiblockController.java @@ -151,7 +151,8 @@ protected void addDisplayText(List textList) { .addEnergyTierLine(GTUtility.getTierByVoltage(recipeMapWorkable.getMaxVoltage())) .addParallelsLine(recipeMapWorkable.getParallelLimit()) .addWorkingStatusLine() - .addProgressLine(recipeMapWorkable.getProgressPercent()); + .addProgressLine(recipeMapWorkable.getProgressPercent()) + .addRecipeOutputsLine(recipeMapWorkable.getPreviousRecipe()); } @Override diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index 484c7e258ff..e2f22efb8fb 100644 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -5821,6 +5821,8 @@ gregtech.multiblock.hpca.info_coolant_name=PCB Coolant gregtech.multiblock.hpca.info_bridging_enabled=Bridging Enabled gregtech.multiblock.hpca.info_bridging_disabled=Bridging Disabled +gregtech.multiblock.recipe_outputs=Crafting: %s + gregtech.command.usage=Usage: /gregtech gregtech.command.worldgen.usage=Usage: /gregtech worldgen gregtech.command.worldgen.reload.usage=Usage: /gregtech worldgen reload