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