Files
TinkersConstruct/src/main/java/tconstruct/plugins/nei/RecipeHandlerMelting.java
T

114 lines
3.7 KiB
Java
Raw Normal View History

package tconstruct.plugins.nei;
import codechicken.lib.gui.GuiDraw;
import codechicken.nei.NEIServerUtils;
import codechicken.nei.PositionedStack;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
import mantle.utils.ItemMetaWrapper;
import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;
import net.minecraftforge.fluids.FluidStack;
import org.lwjgl.opengl.GL11;
import tconstruct.library.crafting.Smeltery;
public class RecipeHandlerMelting extends RecipeHandlerBase {
public static final Rectangle MOLTEN_TANK = new Rectangle(115, 20, 18, 18);
public class CachedMeltingRecipe extends CachedBaseRecipe {
private PositionedStack input;
private int temperature;
private FluidTankElement output;
public CachedMeltingRecipe(ItemStack input) {
this.input = new PositionedStack(input, 28, 21);
this.temperature = Smeltery.getLiquifyTemperature(input);
this.output = new FluidTankElement(MOLTEN_TANK, 1, Smeltery.getSmelteryResult(input));
this.output.capacity = this.output.fluid != null ? this.output.fluid.amount : 1000;
}
@Override
public PositionedStack getIngredient() {
return this.input;
}
@Override
public PositionedStack getResult() {
return null;
}
@Override
public List<FluidTankElement> getFluidTanks() {
List<FluidTankElement> tanks = new ArrayList<>();
tanks.add(this.output);
return tanks;
}
}
@Override
public String getRecipeName() {
2014-10-22 22:42:01 +02:00
return StatCollector.translateToLocal("tconstruct.nei.melting");
}
@Override
public String getRecipeID() {
return "tconstruct.smeltery.melting";
}
@Override
public String getGuiTexture() {
return "tinker:textures/gui/nei/smeltery.png";
}
@Override
public void loadTransferRects() {
this.transferRects.add(
2023-01-25 23:50:09 +01:00
new RecipeTransferRect(new Rectangle(72, 20, 16, 34), this.getRecipeID()));
}
@Override
public void drawBackground(int recipe) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GuiDraw.changeTexture(this.getGuiTexture());
GuiDraw.drawTexturedModalRect(0, 0, 0, 0, 160, 55);
}
@Override
public void drawExtras(int recipe) {
int temperature = ((CachedMeltingRecipe) this.arecipes.get(recipe)).temperature;
GuiDraw.drawStringC(temperature + " C", 81, 9, 0x808080, false);
}
@Override
public void loadCraftingRecipes(String outputId, Object... results) {
if (outputId.equals(getRecipeID())) {
for (ItemMetaWrapper key : Smeltery.getSmeltingList().keySet()) {
this.arecipes.add(new CachedMeltingRecipe(new ItemStack(key.item, 1, key.meta)));
}
} else {
super.loadCraftingRecipes(outputId, results);
}
}
@Override
public void loadCraftingRecipes(FluidStack result) {
for (Entry<ItemMetaWrapper, FluidStack> pair :
Smeltery.getSmeltingList().entrySet()) {
if (areFluidsEqual(pair.getValue(), result)) {
this.arecipes.add(new CachedMeltingRecipe(new ItemStack(pair.getKey().item, 1, pair.getKey().meta)));
}
}
}
@Override
public void loadUsageRecipes(ItemStack ingred) {
for (ItemMetaWrapper key : Smeltery.getSmeltingList().keySet()) {
if (NEIServerUtils.areStacksSameTypeCrafting(new ItemStack(key.item, 1, key.meta), ingred)) {
this.arecipes.add(new CachedMeltingRecipe(new ItemStack(key.item, 1, key.meta)));
}
}
}
}