Fix forestry sapling integration

This commit is contained in:
aidancbrady 2016-02-20 11:33:45 -05:00
parent d72f4b6181
commit c9f0ed0941
5 changed files with 24 additions and 8 deletions

View file

@ -236,11 +236,6 @@ public final class StackUtils
} }
} }
public static boolean contains(ItemStack container, ItemStack contained)
{
return equalsWildcardWithNBT(contained, container) && container.stackSize >= contained.stackSize;
}
public static int hashItemStack(ItemStack stack) public static int hashItemStack(ItemStack stack)
{ {
if(stack == null || stack.getItem() == null) if(stack == null || stack.getItem() == null)

View file

@ -41,7 +41,7 @@ public class AdvancedMachineInput extends MachineInput<AdvancedMachineInput>
public boolean useItem(ItemStack[] inventory, int index, boolean deplete) public boolean useItem(ItemStack[] inventory, int index, boolean deplete)
{ {
if(StackUtils.contains(inventory[index], itemStack)) if(inputContains(inventory[index], itemStack))
{ {
if(deplete) if(deplete)
{ {

View file

@ -56,15 +56,17 @@ public class InfusionInput extends MachineInput<InfusionInput>
public boolean use(ItemStack[] inventory, int index, InfuseStorage infuseStorage, boolean deplete) public boolean use(ItemStack[] inventory, int index, InfuseStorage infuseStorage, boolean deplete)
{ {
if(StackUtils.contains(inventory[index], inputStack) && infuseStorage.contains(infuse)) if(inputContains(inventory[index], inputStack) && infuseStorage.contains(infuse))
{ {
if(deplete) if(deplete)
{ {
inventory[index] = StackUtils.subtract(inventory[index], inputStack); inventory[index] = StackUtils.subtract(inventory[index], inputStack);
infuseStorage.subtract(infuse); infuseStorage.subtract(infuse);
} }
return true; return true;
} }
return false; return false;
} }
@ -81,6 +83,7 @@ public class InfusionInput extends MachineInput<InfusionInput>
{ {
return !other.isValid(); return !other.isValid();
} }
return infuse.type == other.infuse.type && StackUtils.equalsWildcardWithNBT(inputStack, other.inputStack); return infuse.type == other.infuse.type && StackUtils.equalsWildcardWithNBT(inputStack, other.inputStack);
} }

View file

@ -41,7 +41,7 @@ public class ItemStackInput extends MachineInput<ItemStackInput>
public boolean useItemStackFromInventory(ItemStack[] inventory, int index, boolean deplete) public boolean useItemStackFromInventory(ItemStack[] inventory, int index, boolean deplete)
{ {
if(StackUtils.contains(inventory[index], ingredient)) if(inputContains(inventory[index], ingredient))
{ {
if(deplete) if(deplete)
{ {

View file

@ -1,5 +1,8 @@
package mekanism.common.recipe.inputs; package mekanism.common.recipe.inputs;
import mekanism.api.util.StackUtils;
import mekanism.common.util.MekanismUtils;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
public abstract class MachineInput<INPUT extends MachineInput<INPUT>> public abstract class MachineInput<INPUT extends MachineInput<INPUT>>
@ -22,6 +25,21 @@ public abstract class MachineInput<INPUT extends MachineInput<INPUT>>
*/ */
public abstract boolean testEquality(INPUT other); public abstract boolean testEquality(INPUT other);
public static boolean inputContains(ItemStack container, ItemStack contained)
{
if(container.stackSize >= contained.stackSize)
{
if(MekanismUtils.getOreDictName(container).contains("treeSapling"))
{
return StackUtils.equalsWildcard(contained, container);
}
return StackUtils.equalsWildcardWithNBT(contained, container) && container.stackSize >= contained.stackSize;
}
return false;
}
@Override @Override
public int hashCode() public int hashCode()
{ {