package crazypants.enderio.machine;
import net.minecraft.block.Block;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.oredict.RecipeSorter;
import net.minecraftforge.oredict.RecipeSorter.Category;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import crazypants.enderio.EnderIO;
public class ClearConfigRecipe implements IRecipe {
static {
RecipeSorter.register("EnderIO:clearConfig", ClearConfigRecipe.class, Category.SHAPELESS, "after:minecraft:shapeless");
}
private ItemStack output;
@Override
public boolean matches(InventoryCrafting inv, World world) {
int count = 0;
ItemStack input = null;
for (int i = 0; i < inv.getSizeInventory(); i++) {
ItemStack checkStack = inv.getStackInSlot(i);
if (checkStack != null && Block.getBlockFromItem(checkStack.getItem()) instanceof AbstractMachineBlock) {
count++;
}
input = count == 1 && checkStack != null ? checkStack : input;
}
if (count == 1 && input.stackTagCompound != null && input.stackTagCompound.getBoolean("eio.abstractMachine")) {
ItemStack out = input.copy();
out.stackTagCompound = new NBTTagCompound();
out.stackTagCompound.setBoolean("clearedConfig", true);
out.stackSize = 1;
output = out;
} else {
output = null;
}
return count == 1 && output != null;
}
@Override
public ItemStack getCraftingResult(InventoryCrafting inv) {
return output.copy();
}
@Override
public int getRecipeSize() {
return 1;
}
@Override
public ItemStack getRecipeOutput() {
return output;
}
@SubscribeEvent
public void onTooltip(ItemTooltipEvent event) {
if (output != null && ItemStack.areItemStacksEqual(output, event.itemStack)) {
event.toolTip.add(EnumChatFormatting.RED.toString() + EnumChatFormatting.ITALIC + EnderIO.lang.localize("machine.tooltip.clearConfig"));
}
}
}