diff --git a/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipe.java b/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipe.java index 2f69d93340..44861cb0f9 100644 --- a/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipe.java +++ b/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipe.java @@ -1,11 +1,14 @@ package gregtech.api.recipes.crafttweaker; import crafttweaker.annotations.ZenRegister; +import crafttweaker.api.item.IIngredient; import crafttweaker.api.item.IItemStack; +import crafttweaker.api.item.IngredientStack; import crafttweaker.api.liquid.ILiquidStack; import crafttweaker.api.minecraft.CraftTweakerMC; import crafttweaker.mc1120.item.MCItemStack; import crafttweaker.mc1120.liquid.MCLiquidStack; +import gregtech.api.recipes.CountableIngredient; import gregtech.api.recipes.Recipe; import gregtech.api.recipes.RecipeMap; import stanhebben.zenscript.annotations.Optional; @@ -31,9 +34,22 @@ public CTRecipe(RecipeMap recipeMap, Recipe backingRecipe) { } @ZenGetter("inputs") - public List getInputs() { + public List getInputs() { return this.backingRecipe.getInputs().stream() - .map(InputIngredient::new) + .filter(out -> out.getCount() > 0) + .map(ing -> new IngredientStack( + CraftTweakerMC.getIIngredient(ing.getIngredient()), + ing.getCount())) + .collect(Collectors.toList()); + } + + @ZenGetter("nonConsumable") + public List getNonConsumableInputs() { + return this.backingRecipe.getInputs().stream() + .filter(out -> out.getCount() < 1) + .map(CountableIngredient::getIngredient) + .map(CraftTweakerMC::getIIngredient) + .map(ing -> new IngredientStack(ing, 0)) .collect(Collectors.toList()); } @@ -51,6 +67,7 @@ public List getResultItemOutputs(@Optional(valueLong = -1) long rand .collect(Collectors.toList()); } + @Deprecated @ZenGetter("changedOutputs") public List getChancedOutputs() { ArrayList result = new ArrayList<>(); diff --git a/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipeBuilder.java b/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipeBuilder.java index 170c32fbcf..40093f780c 100644 --- a/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipeBuilder.java +++ b/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipeBuilder.java @@ -148,10 +148,16 @@ public CraftTweakerIngredientWrapper(IIngredient ingredient) { @Override public boolean apply(@Nullable ItemStack itemStack) { - itemStack = itemStack.copy(); + if (itemStack == null) { + // Avoiding NPE + itemStack = ItemStack.EMPTY; + } + //because CT is dump enough to compare stack sizes by default... - itemStack.setCount(ingredient.getAmount()); - return ingredient.matches(CraftTweakerMC.getIItemStack(itemStack)); + // Setting stack size to 1 to avoid problem with non-consumable ingredients (count - 0) + IItemStack stack = CraftTweakerMC.getIItemStack(itemStack).amount(1); + return ingredient.amount(1) + .matches(stack); } } diff --git a/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java b/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java index 114a4728de..f17ca34c8e 100644 --- a/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java +++ b/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java @@ -11,6 +11,13 @@ import java.util.List; +/** + * @deprecated + * 1. Not full implementation + * 2. CT provides required implementaions + * 3. Buggy + */ +@Deprecated @ZenClass("mods.gregtech.recipe.InputIngredient") @ZenRegister public class InputIngredient implements IIngredient { diff --git a/src/main/java/gregtech/api/recipes/recipes/CokeOvenRecipe.java b/src/main/java/gregtech/api/recipes/recipes/CokeOvenRecipe.java index 1ed098c0d9..f505eea931 100644 --- a/src/main/java/gregtech/api/recipes/recipes/CokeOvenRecipe.java +++ b/src/main/java/gregtech/api/recipes/recipes/CokeOvenRecipe.java @@ -1,13 +1,14 @@ package gregtech.api.recipes.recipes; import crafttweaker.annotations.ZenRegister; +import crafttweaker.api.item.IIngredient; import crafttweaker.api.item.IItemStack; +import crafttweaker.api.item.IngredientStack; import crafttweaker.api.liquid.ILiquidStack; import crafttweaker.api.minecraft.CraftTweakerMC; import crafttweaker.mc1120.liquid.MCLiquidStack; import gregtech.api.GTValues; import gregtech.api.recipes.CountableIngredient; -import gregtech.api.recipes.crafttweaker.InputIngredient; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fml.common.Optional.Method; @@ -49,8 +50,11 @@ public int getDuration() { @ZenGetter("input") @Method(modid = GTValues.MODID_CT) - public InputIngredient ctGetInput() { - return new InputIngredient(getInput()); + public IIngredient ctGetInput() { + CountableIngredient input = getInput(); + return new IngredientStack( + CraftTweakerMC.getIIngredient(input.getIngredient()), + input.getCount()); } @ZenGetter("output") diff --git a/src/main/java/gregtech/api/recipes/recipes/PrimitiveBlastFurnaceRecipe.java b/src/main/java/gregtech/api/recipes/recipes/PrimitiveBlastFurnaceRecipe.java index cfdbde8708..0b27e03748 100644 --- a/src/main/java/gregtech/api/recipes/recipes/PrimitiveBlastFurnaceRecipe.java +++ b/src/main/java/gregtech/api/recipes/recipes/PrimitiveBlastFurnaceRecipe.java @@ -1,11 +1,12 @@ package gregtech.api.recipes.recipes; import crafttweaker.annotations.ZenRegister; +import crafttweaker.api.item.IIngredient; import crafttweaker.api.item.IItemStack; +import crafttweaker.api.item.IngredientStack; import crafttweaker.api.minecraft.CraftTweakerMC; import gregtech.api.GTValues; import gregtech.api.recipes.CountableIngredient; -import gregtech.api.recipes.crafttweaker.InputIngredient; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.common.Optional.Method; import stanhebben.zenscript.annotations.ZenClass; @@ -48,8 +49,11 @@ public int getFuelAmount() { @ZenGetter("input") @Method(modid = GTValues.MODID_CT) - public InputIngredient ctGetInput() { - return new InputIngredient(getInput()); + public IIngredient ctGetInput() { + CountableIngredient input = getInput(); + return new IngredientStack( + CraftTweakerMC.getIIngredient(input.getIngredient()), + input.getCount()); } @ZenGetter("output")