package com.thebrokenrail.energonrelics.recipe; import com.thebrokenrail.energonrelics.EnergonRelics; import net.minecraft.inventory.CraftingInventory; import net.minecraft.item.ItemStack; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.SpecialCraftingRecipe; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.world.World; public class DuplicateNetworkChipRecipe extends SpecialCraftingRecipe { public DuplicateNetworkChipRecipe(Identifier id) { super(id); } @Override public boolean matches(CraftingInventory inv, World world) { boolean foundChip = false; boolean foundCircuit = false; for (int i = 0; i < inv.size(); i++) { ItemStack stack = inv.getStack(i); if (stack.getItem() == EnergonRelics.Items.NETWORK_CHIP_ITEM && !foundChip) { foundChip = true; } else if (stack.getItem() == EnergonRelics.Items.CIRCUIT_BOARD && !foundCircuit) { foundCircuit = true; } else if (!stack.isEmpty()) { return false; } } return foundChip && foundCircuit; } @Override public ItemStack craft(CraftingInventory inv) { ItemStack out = ItemStack.EMPTY; for (int i = 0; i < inv.size(); i++) { ItemStack stack = inv.getStack(i); if (stack.getItem() == EnergonRelics.Items.NETWORK_CHIP_ITEM) { out = stack.copy(); out.setCount(1); } } return out; } @Override public DefaultedList getRemainingStacks(CraftingInventory inv) { DefaultedList defaultedList = DefaultedList.ofSize(inv.size(), ItemStack.EMPTY); for (int i = 0; i < defaultedList.size(); ++i) { ItemStack stack = inv.getStack(i); if (stack.getItem().hasRecipeRemainder()) { defaultedList.set(i, new ItemStack(stack.getItem().getRecipeRemainder())); } else if (stack.getItem() == EnergonRelics.Items.NETWORK_CHIP_ITEM) { ItemStack newStack = stack.copy(); newStack.setCount(1); defaultedList.set(i, newStack); } } return defaultedList; } @Override public boolean fits(int width, int height) { return width >= 2 || height >= 2; } @Override public RecipeSerializer getSerializer() { return EnergonRelics.Extras.DUPLICATE_NETWORK_CHIP_RECIPE; } }