TechReborn/src/main/java/techreborn/compat/jei/RecipeUtil.java

160 lines
5.1 KiB
Java
Raw Normal View History

2016-03-13 17:08:30 +01:00
package techreborn.compat.jei;
2016-03-25 10:47:34 +01:00
import java.awt.*;
import java.text.NumberFormat;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
2016-03-13 17:08:30 +01:00
import mezz.jei.api.gui.IGuiFluidStackGroup;
import mezz.jei.api.gui.IGuiItemStackGroup;
import mezz.jei.api.gui.IRecipeLayout;
2016-09-27 18:03:57 +02:00
import mezz.jei.api.ingredients.IIngredients;
2016-03-13 17:08:30 +01:00
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.translation.I18n;
2016-03-13 17:08:30 +01:00
import net.minecraftforge.fluids.FluidStack;
2016-03-25 10:47:34 +01:00
public class RecipeUtil
{
2016-03-13 17:08:30 +01:00
private static final int color = Color.darkGray.getRGB();
2016-03-25 10:47:34 +01:00
private RecipeUtil()
{
2016-03-13 17:08:30 +01:00
}
2016-03-25 10:47:34 +01:00
public static void drawInfo(@Nonnull Minecraft minecraft, int x, int y, final double startCost,
final double euPerTick, final int tickTime)
{
2016-03-13 17:08:30 +01:00
FontRenderer fontRendererObj = minecraft.fontRendererObj;
int lineSpacing = fontRendererObj.FONT_HEIGHT + 1;
NumberFormat formatter = NumberFormat.getInstance();
String startCostEU = formatter.format(startCost);
String startCostString = I18n.translateToLocalFormatted("techreborn.jei.recipe.start.cost", startCostEU);
2016-03-13 17:08:30 +01:00
fontRendererObj.drawString(startCostString, x, y, color);
y += lineSpacing;
drawInfo(minecraft, x, y, euPerTick, tickTime);
}
2016-03-25 10:47:34 +01:00
public static void drawInfo(@Nonnull Minecraft minecraft, int x, int y, final double euPerTick, final int tickTime)
{
2016-03-13 17:08:30 +01:00
FontRenderer fontRendererObj = minecraft.fontRendererObj;
int lineSpacing = fontRendererObj.FONT_HEIGHT + 1;
String runningCostString = I18n.translateToLocalFormatted("techreborn.jei.recipe.running.cost", euPerTick);
2016-03-13 17:08:30 +01:00
fontRendererObj.drawString(runningCostString, x, y, color);
y += lineSpacing;
2016-03-25 10:47:34 +01:00
String processingTimeString1 = I18n.translateToLocalFormatted("techreborn.jei.recipe.processing.time.1",
tickTime);
2016-03-13 17:08:30 +01:00
fontRendererObj.drawString(processingTimeString1, x, y, color);
y += lineSpacing;
int seconds = tickTime / 20;
2016-03-25 10:47:34 +01:00
String processingTimeString2 = I18n.translateToLocalFormatted("techreborn.jei.recipe.processing.time.2",
seconds);
2016-03-13 17:08:30 +01:00
fontRendererObj.drawString(processingTimeString2, x + 10, y, color);
}
2016-09-27 18:03:57 +02:00
@Deprecated
2016-03-25 10:47:34 +01:00
public static void setRecipeItems(@Nonnull IRecipeLayout recipeLayout, @Nonnull BaseRecipeWrapper<?> recipe,
@Nullable int[] itemInputSlots, @Nullable int[] itemOutputSlots, @Nullable int[] fluidInputSlots,
@Nullable int[] fluidOutputSlots)
{
2016-03-13 17:08:30 +01:00
IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks();
IGuiFluidStackGroup guiFluidStacks = recipeLayout.getFluidStacks();
2016-03-25 10:47:34 +01:00
if (itemInputSlots != null)
{
2016-03-13 17:08:30 +01:00
List<List<ItemStack>> inputs = recipe.getInputs();
2016-03-25 10:47:34 +01:00
for (int i = 0; i < inputs.size() && i < itemInputSlots.length; i++)
{
2016-03-13 17:08:30 +01:00
int inputSlot = itemInputSlots[i];
guiItemStacks.set(inputSlot, inputs.get(i));
}
}
2016-03-25 10:47:34 +01:00
if (itemOutputSlots != null)
{
2016-03-13 17:08:30 +01:00
List<ItemStack> outputs = recipe.getOutputs();
2016-03-25 10:47:34 +01:00
for (int i = 0; i < outputs.size() && i < itemOutputSlots.length; i++)
{
2016-03-13 17:08:30 +01:00
int outputSlot = itemOutputSlots[i];
guiItemStacks.set(outputSlot, outputs.get(i));
}
}
2016-03-25 10:47:34 +01:00
if (fluidInputSlots != null)
{
2016-03-13 17:08:30 +01:00
List<FluidStack> fluidInputs = recipe.getFluidInputs();
2016-03-25 10:47:34 +01:00
for (int i = 0; i < fluidInputs.size() && i < fluidInputSlots.length; i++)
{
2016-03-13 17:08:30 +01:00
int inputTank = fluidInputSlots[i];
guiFluidStacks.set(inputTank, fluidInputs.get(i));
}
}
2016-03-25 10:47:34 +01:00
if (fluidOutputSlots != null)
{
2016-03-13 17:08:30 +01:00
List<FluidStack> fluidOutputs = recipe.getFluidOutputs();
2016-03-25 10:47:34 +01:00
for (int i = 0; i < fluidOutputs.size() && i < fluidOutputSlots.length; i++)
{
2016-03-13 17:08:30 +01:00
int outputTank = fluidOutputSlots[i];
guiFluidStacks.set(outputTank, fluidOutputs.get(i));
}
}
}
2016-09-27 18:03:57 +02:00
public static void setRecipeItems(@Nonnull IRecipeLayout recipeLayout, @Nonnull IIngredients ingredients,
@Nullable int[] itemInputSlots, @Nullable int[] itemOutputSlots, @Nullable int[] fluidInputSlots,
@Nullable int[] fluidOutputSlots)
{
IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks();
IGuiFluidStackGroup guiFluidStacks = recipeLayout.getFluidStacks();
if (itemInputSlots != null)
{
List<List<ItemStack>> inputs = ingredients.getInputs(ItemStack.class);
for (int i = 0; i < inputs.size() && i < itemInputSlots.length; i++)
{
int inputSlot = itemInputSlots[i];
guiItemStacks.set(inputSlot, inputs.get(i));
}
}
if (itemOutputSlots != null)
{
List<ItemStack> outputs = ingredients.getOutputs(ItemStack.class);
for (int i = 0; i < outputs.size() && i < itemOutputSlots.length; i++)
{
int outputSlot = itemOutputSlots[i];
guiItemStacks.set(outputSlot, outputs.get(i));
}
}
if (fluidInputSlots != null)
{
List<List<FluidStack>> fluidInputs = ingredients.getInputs(FluidStack.class);
for (int i = 0; i < fluidInputs.size() && i < fluidInputSlots.length; i++)
{
int inputTank = fluidInputSlots[i];
guiFluidStacks.set(inputTank, fluidInputs.get(i));
}
}
if (fluidOutputSlots != null)
{
List<FluidStack> fluidOutputs = ingredients.getOutputs(FluidStack.class);
for (int i = 0; i < fluidOutputs.size() && i < fluidOutputSlots.length; i++)
{
int outputTank = fluidOutputSlots[i];
guiFluidStacks.set(outputTank, fluidOutputs.get(i));
}
}
}
2016-03-13 17:08:30 +01:00
}