This repository has been archived on 2023-11-26. You can view files and clone it, but cannot push or open issues or pull requests.
EnergonRelics/src/main/java/com/thebrokenrail/energonrelics/recipe/DuplicateNetworkChipRecipe....

75 lines
2.5 KiB
Java

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<ItemStack> getRemainingStacks(CraftingInventory inv) {
DefaultedList<ItemStack> 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;
}
}