package resonantinduction.api.recipe; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; public class RecipeUtils { public static abstract class Resource { public final boolean hasChance; public final float chance; protected Resource() { this.hasChance = false; this.chance = 100; } protected Resource(float chance) { this.hasChance = true; this.chance = chance; } public boolean hasChance() { return this.hasChance; } public float getChance() { return this.chance; } } public static class ItemStackResource extends Resource { public final ItemStack itemStack; public ItemStackResource(ItemStack is) { super(); this.itemStack = is; } public ItemStackResource(ItemStack is, float chance) { super(chance); this.itemStack = is; } @Override public boolean equals(Object obj) { if (obj instanceof ItemStackResource) { return this.itemStack.isItemEqual(((ItemStackResource) obj).itemStack); } return false; } } public static class OreDictResource extends Resource { public final String name; public OreDictResource(String s) { super(); this.name = s; } public OreDictResource(String s, float chance) { super(chance); this.name = s; } @Override public boolean equals(Object obj) { if (obj instanceof OreDictResource) { return this.name.equals(((OreDictResource) obj).name); } if (obj instanceof ItemStackResource) { return this.name.equals(OreDictionary.getOreName(OreDictionary.getOreID(((ItemStackResource) obj).itemStack))); } return false; } } public static class FluidStackResource extends Resource { public final FluidStack fluidStack; public FluidStackResource(FluidStack fs) { super(); this.fluidStack = fs; } public FluidStackResource(FluidStack fs, float chance) { super(chance); this.fluidStack = fs; } @Override public boolean equals(Object obj) { return (obj instanceof FluidStack) ? ((FluidStack) obj).equals(obj) : false; } } }