2020-07-23 20:02:24 +00:00
|
|
|
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);
|
2020-08-20 23:03:47 +00:00
|
|
|
if (stack.getItem() == EnergonRelics.Items.NETWORK_CHIP_ITEM && !foundChip) {
|
2020-07-23 20:02:24 +00:00
|
|
|
foundChip = true;
|
2020-08-20 23:03:47 +00:00
|
|
|
} else if (stack.getItem() == EnergonRelics.Items.CIRCUIT_BOARD && !foundCircuit) {
|
2020-07-23 20:02:24 +00:00
|
|
|
foundCircuit = true;
|
2020-07-23 21:53:35 +00:00
|
|
|
} else if (!stack.isEmpty()) {
|
2020-07-23 20:02:24 +00:00
|
|
|
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);
|
2020-08-20 23:03:47 +00:00
|
|
|
if (stack.getItem() == EnergonRelics.Items.NETWORK_CHIP_ITEM) {
|
2020-07-23 20:02:24 +00:00
|
|
|
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()));
|
2020-08-20 23:03:47 +00:00
|
|
|
} else if (stack.getItem() == EnergonRelics.Items.NETWORK_CHIP_ITEM) {
|
2020-07-23 20:02:24 +00:00
|
|
|
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() {
|
2020-08-20 23:03:47 +00:00
|
|
|
return EnergonRelics.Extras.DUPLICATE_NETWORK_CHIP_RECIPE;
|
2020-07-23 20:02:24 +00:00
|
|
|
}
|
|
|
|
}
|