Untested fluid support for RecipeHandlers...
This commit is contained in:
parent
60f13cabe8
commit
38ee016c37
1 changed files with 101 additions and 14 deletions
|
@ -1,12 +1,18 @@
|
||||||
package resonantinduction.core.nei;
|
package resonantinduction.core.nei;
|
||||||
|
|
||||||
|
import java.awt.Point;
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import calclavia.lib.utility.LanguageUtility;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.gui.GuiScreen;
|
||||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
import net.minecraftforge.oredict.OreDictionary;
|
import net.minecraftforge.oredict.OreDictionary;
|
||||||
import resonantinduction.api.recipe.MachineRecipes;
|
import resonantinduction.api.recipe.MachineRecipes;
|
||||||
import resonantinduction.api.recipe.RecipeResource;
|
import resonantinduction.api.recipe.RecipeResource;
|
||||||
|
@ -14,7 +20,9 @@ import resonantinduction.api.recipe.RecipeResource.FluidStackResource;
|
||||||
import resonantinduction.api.recipe.RecipeResource.ItemStackResource;
|
import resonantinduction.api.recipe.RecipeResource.ItemStackResource;
|
||||||
import resonantinduction.api.recipe.RecipeResource.OreDictResource;
|
import resonantinduction.api.recipe.RecipeResource.OreDictResource;
|
||||||
import resonantinduction.core.Reference;
|
import resonantinduction.core.Reference;
|
||||||
|
import codechicken.core.gui.GuiDraw;
|
||||||
import codechicken.nei.PositionedStack;
|
import codechicken.nei.PositionedStack;
|
||||||
|
import codechicken.nei.recipe.GuiRecipe;
|
||||||
import codechicken.nei.recipe.TemplateRecipeHandler;
|
import codechicken.nei.recipe.TemplateRecipeHandler;
|
||||||
|
|
||||||
public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler
|
public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler
|
||||||
|
@ -68,12 +76,92 @@ public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler
|
||||||
this.arecipes.add(recipe);
|
this.arecipes.add(recipe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
super.loadCraftingRecipes(outputId, results);
|
super.loadCraftingRecipes(outputId, results);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawExtras(int recipeID)
|
||||||
|
{
|
||||||
|
GuiScreen gui = Minecraft.getMinecraft().currentScreen;
|
||||||
|
|
||||||
|
CachedRecipe cachedRecipe = this.arecipes.get(recipeID);
|
||||||
|
|
||||||
|
if (cachedRecipe instanceof CachedRIRecipe)
|
||||||
|
{
|
||||||
|
CachedRIRecipe recipe = (CachedRIRecipe) cachedRecipe;
|
||||||
|
for (int i = 0; i < recipe.inputFluids.length; i++)
|
||||||
|
{
|
||||||
|
FluidStack fluid = recipe.inputFluids[i];
|
||||||
|
if (fluid == null)
|
||||||
|
break;
|
||||||
|
|
||||||
|
gui.drawTexturedModelRectFromIcon(inputSlots[i][0], inputSlots[i][1], fluid.getFluid().getIcon(), 16, 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < recipe.outputFluids.length; i++)
|
||||||
|
{
|
||||||
|
FluidStack fluid = recipe.outputFluids[i];
|
||||||
|
if (fluid == null)
|
||||||
|
break;
|
||||||
|
|
||||||
|
gui.drawTexturedModelRectFromIcon(outputSlots[i][0], outputSlots[i][1], fluid.getFluid().getIcon(), 16, 16);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> handleTooltip(GuiRecipe gui, List<String> currenttip, int recipeID)
|
||||||
|
{
|
||||||
|
if(currenttip.size() == 0)
|
||||||
|
{
|
||||||
|
Point offset = gui.getRecipePosition(recipeID);
|
||||||
|
Point mouse = GuiDraw.getMousePosition();
|
||||||
|
|
||||||
|
CachedRecipe cachedRecipe = this.arecipes.get(recipeID);
|
||||||
|
|
||||||
|
if (cachedRecipe instanceof CachedRIRecipe)
|
||||||
|
{
|
||||||
|
CachedRIRecipe recipe = (CachedRIRecipe) cachedRecipe;
|
||||||
|
FluidStack fluid;
|
||||||
|
Rectangle rect;
|
||||||
|
|
||||||
|
for (int i = 0; i < recipe.inputFluids.length; i++)
|
||||||
|
{
|
||||||
|
fluid = recipe.inputFluids[i];
|
||||||
|
if (fluid == null)
|
||||||
|
break;
|
||||||
|
|
||||||
|
rect = new Rectangle(offset.x + inputSlots[i][0] - 1, offset.y + inputSlots[i][1] - 1, 18, 18);
|
||||||
|
if (rect.contains(mouse))
|
||||||
|
{
|
||||||
|
currenttip.add(fluid.getFluid().getLocalizedName());
|
||||||
|
currenttip.add(LanguageUtility.getLocal("tooltip.ri.amount").replace("%s", fluid.amount + ""));
|
||||||
|
return currenttip;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < recipe.outputFluids.length; i++)
|
||||||
|
{
|
||||||
|
fluid = recipe.outputFluids[i];
|
||||||
|
if (fluid == null)
|
||||||
|
break;
|
||||||
|
|
||||||
|
rect = new Rectangle(offset.x + outputSlots[i][0] - 1, offset.y + outputSlots[i][1] - 1, 18, 18);
|
||||||
|
if (rect.contains(mouse))
|
||||||
|
{
|
||||||
|
currenttip.add(fluid.getFluid().getLocalizedName());
|
||||||
|
currenttip.add(LanguageUtility.getLocal("tooltip.ri.amount").replace("%s", fluid.amount + ""));
|
||||||
|
return currenttip;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return currenttip;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadCraftingRecipes(ItemStack result)
|
public void loadCraftingRecipes(ItemStack result)
|
||||||
{
|
{
|
||||||
|
@ -98,10 +186,10 @@ public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler
|
||||||
this.arecipes.add(recipe);
|
this.arecipes.add(recipe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
super.loadUsageRecipes(inputId, ingredients);
|
super.loadUsageRecipes(inputId, ingredients);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -127,6 +215,9 @@ public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler
|
||||||
private List<PositionedStack> inputs = new ArrayList<PositionedStack>();
|
private List<PositionedStack> inputs = new ArrayList<PositionedStack>();
|
||||||
private List<PositionedStack> outputs = new ArrayList<PositionedStack>();
|
private List<PositionedStack> outputs = new ArrayList<PositionedStack>();
|
||||||
|
|
||||||
|
final FluidStack[] inputFluids = new FluidStack[inputSlots.length];
|
||||||
|
final FluidStack[] outputFluids = new FluidStack[outputSlots.length];
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PositionedStack> getOtherStacks()
|
public List<PositionedStack> getOtherStacks()
|
||||||
{
|
{
|
||||||
|
@ -147,9 +238,7 @@ public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler
|
||||||
}
|
}
|
||||||
else if (output instanceof FluidStackResource)
|
else if (output instanceof FluidStackResource)
|
||||||
{
|
{
|
||||||
// this.inputs.add(new PositionedStack(((FluidStackResource) output),
|
this.outputFluids[i++] = ((FluidStackResource) output).fluidStack;
|
||||||
// outputSlots[i][0], outputSlots[i++][1]));
|
|
||||||
// TODO fluidstack compatibility
|
|
||||||
}
|
}
|
||||||
this.outputs.get(this.outputs.size() - 1).generatePermutations();
|
this.outputs.get(this.outputs.size() - 1).generatePermutations();
|
||||||
}
|
}
|
||||||
|
@ -176,9 +265,7 @@ public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler
|
||||||
}
|
}
|
||||||
else if (input instanceof FluidStackResource)
|
else if (input instanceof FluidStackResource)
|
||||||
{
|
{
|
||||||
// this.inputs.add(new PositionedStack(((FluidStackResource) input),
|
this.inputFluids[i++] = ((FluidStackResource) input).fluidStack;
|
||||||
// inputSlots[i][0], inputSlots[i++][1]));
|
|
||||||
// TODO fluidstack compatibility
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.inputs.size() > 0)
|
if (this.inputs.size() > 0)
|
||||||
|
|
Loading…
Reference in a new issue