Files
Advanced-Botany/src/main/java/ab/api/recipe/RecipeAdvancedPlate.java
T

70 lines
1.7 KiB
Java
Raw Normal View History

2022-02-15 19:03:43 +03:00
package ab.api.recipe;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
public class RecipeAdvancedPlate {
private ItemStack output;
2022-02-20 16:31:36 +03:00
private int color;
2022-02-15 19:03:43 +03:00
private List<ItemStack> inputs;
private int mana;
2022-02-20 16:31:36 +03:00
public RecipeAdvancedPlate(ItemStack output, int mana, int color, ItemStack... inputs) {
2022-02-15 19:03:43 +03:00
this.output = output;
this.mana = mana;
2022-02-20 16:31:36 +03:00
this.color = color;
2022-02-15 19:03:43 +03:00
List<ItemStack> inputsToSet = new ArrayList();
for (ItemStack obj : inputs)
inputsToSet.add(obj);
this.inputs = inputsToSet;
}
public List<ItemStack> getInputs() {
return new ArrayList(this.inputs);
}
public ItemStack getOutput() {
return this.output;
}
public int getManaUsage() {
return this.mana;
}
2022-02-20 16:31:36 +03:00
public int getColor() {
return this.color;
}
2022-02-15 19:03:43 +03:00
public boolean matches(IInventory inv) {
List<ItemStack> inputsMissing = new ArrayList(this.inputs);
for (int i = 1; i < inv.getSizeInventory(); i++) {
ItemStack stack = inv.getStackInSlot(i);
if (stack == null)
break;
int stackIndex = -1;
for (int j = 0; j < inputsMissing.size(); j++) {
ItemStack input = inputsMissing.get(j);
if (input instanceof ItemStack && simpleAreStacksEqual(input.copy(), stack)) {
stackIndex = j;
break;
}
}
if (stackIndex != -1) {
inputsMissing.remove(stackIndex);
} else {
return false;
}
}
return inputsMissing.isEmpty();
}
boolean simpleAreStacksEqual(ItemStack input, ItemStack stack) {
if(input.getItemDamage() == 32767)
input.setItemDamage(stack.getItemDamage());
return (input.getItem() == stack.getItem() && input.getItemDamage() == stack.getItemDamage());
}
}