From 4c857805b677a8f4e016701ce1666d2082966a77 Mon Sep 17 00:00:00 2001 From: TheDarkDnKTv Date: Thu, 28 Oct 2021 23:44:21 +0300 Subject: [PATCH 1/4] Fixed inputs getter Closes #1439 --- .../gregtech/api/recipes/crafttweaker/CTRecipe.java | 12 +++++++++++- .../api/recipes/crafttweaker/InputIngredient.java | 6 ++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipe.java b/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipe.java index 2f69d93340..c46305b884 100644 --- a/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipe.java +++ b/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipe.java @@ -33,10 +33,19 @@ public CTRecipe(RecipeMap recipeMap, Recipe backingRecipe) { @ZenGetter("inputs") public List getInputs() { return this.backingRecipe.getInputs().stream() + .filter(out -> out.getCount() > 0) .map(InputIngredient::new) .collect(Collectors.toList()); } + @ZenGetter("nonConsumable") + public List getNonConsumableInputs() { + return this.backingRecipe.getInputs().stream() + .filter(out -> out.getCount() < 1) + .map(InputIngredient::new) + .collect(Collectors.toList()); + } + @ZenGetter("outputs") public List getOutputs() { return this.backingRecipe.getOutputs().stream() @@ -50,7 +59,8 @@ public List getResultItemOutputs(@Optional(valueLong = -1) long rand .map(MCItemStack::new) .collect(Collectors.toList()); } - + + @Deprecated @ZenGetter("changedOutputs") public List getChancedOutputs() { ArrayList result = new ArrayList<>(); diff --git a/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java b/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java index 114a4728de..9b833b88f3 100644 --- a/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java +++ b/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java @@ -16,11 +16,13 @@ public class InputIngredient implements IIngredient { private final IIngredient iingredient; + private final int amount; public InputIngredient(CountableIngredient backingIngredient) { iingredient = CraftTweakerMC .getIIngredient(backingIngredient.getIngredient()) - .amount(backingIngredient.getCount()); + .amount(1); + amount = backingIngredient.getCount(); } @Override @@ -30,7 +32,7 @@ public String getMark() { @Override public int getAmount() { - return iingredient.getAmount(); + return amount; } @Override From e21ff283680f8950dc64cbdec4048dd05548c74e Mon Sep 17 00:00:00 2001 From: TheDarkDnKTv Date: Fri, 29 Oct 2021 21:05:43 +0300 Subject: [PATCH 2/4] Fixed implementaion --- .../api/recipes/crafttweaker/CTRecipe.java | 15 +++++++++++---- .../api/recipes/crafttweaker/InputIngredient.java | 14 ++++++++++---- .../api/recipes/recipes/CokeOvenRecipe.java | 10 +++++++--- .../recipes/PrimitiveBlastFurnaceRecipe.java | 10 +++++++--- 4 files changed, 35 insertions(+), 14 deletions(-) diff --git a/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipe.java b/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipe.java index c46305b884..619f0ea052 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,18 +34,22 @@ public CTRecipe(RecipeMap recipeMap, Recipe backingRecipe) { } @ZenGetter("inputs") - public List getInputs() { + public List getInputs() { return this.backingRecipe.getInputs().stream() .filter(out -> out.getCount() > 0) - .map(InputIngredient::new) + .map(ing -> new IngredientStack( + CraftTweakerMC.getIIngredient(ing.getIngredient()), + ing.getCount())) .collect(Collectors.toList()); } @ZenGetter("nonConsumable") - public List getNonConsumableInputs() { + public List getNonConsumableInputs() { return this.backingRecipe.getInputs().stream() .filter(out -> out.getCount() < 1) - .map(InputIngredient::new) + .map(CountableIngredient::getIngredient) + .map(CraftTweakerMC::getIIngredient) + .map(ing -> new IngredientStack(ing, 0)) .collect(Collectors.toList()); } diff --git a/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java b/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java index 9b833b88f3..bcbb396a40 100644 --- a/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java +++ b/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java @@ -11,18 +11,24 @@ 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 { private final IIngredient iingredient; - private final int amount; public InputIngredient(CountableIngredient backingIngredient) { iingredient = CraftTweakerMC .getIIngredient(backingIngredient.getIngredient()) - .amount(1); - amount = backingIngredient.getCount(); + .amount(backingIngredient.getCount()); } @Override @@ -32,7 +38,7 @@ public String getMark() { @Override public int getAmount() { - return amount; + return iingredient.getAmount(); } @Override diff --git a/src/main/java/gregtech/api/recipes/recipes/CokeOvenRecipe.java b/src/main/java/gregtech/api/recipes/recipes/CokeOvenRecipe.java index 1ed098c0d9..2c732d6300 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..dfb64be07a 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") From 4eb8eb819b8836788abd44421918b2bf065177d4 Mon Sep 17 00:00:00 2001 From: TheDarkDnKTv Date: Fri, 29 Oct 2021 21:52:02 +0300 Subject: [PATCH 3/4] Fixed tabs --- .../api/recipes/crafttweaker/CTRecipe.java | 22 +++++++++---------- .../recipes/crafttweaker/InputIngredient.java | 3 +-- .../api/recipes/recipes/CokeOvenRecipe.java | 6 ++--- .../recipes/PrimitiveBlastFurnaceRecipe.java | 6 ++--- 4 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipe.java b/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipe.java index 619f0ea052..44861cb0f9 100644 --- a/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipe.java +++ b/src/main/java/gregtech/api/recipes/crafttweaker/CTRecipe.java @@ -36,23 +36,23 @@ public CTRecipe(RecipeMap recipeMap, Recipe backingRecipe) { @ZenGetter("inputs") public List getInputs() { return this.backingRecipe.getInputs().stream() - .filter(out -> out.getCount() > 0) + .filter(out -> out.getCount() > 0) .map(ing -> new IngredientStack( - CraftTweakerMC.getIIngredient(ing.getIngredient()), - ing.getCount())) + 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()); + 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()); } - + @ZenGetter("outputs") public List getOutputs() { return this.backingRecipe.getOutputs().stream() @@ -66,7 +66,7 @@ public List getResultItemOutputs(@Optional(valueLong = -1) long rand .map(MCItemStack::new) .collect(Collectors.toList()); } - + @Deprecated @ZenGetter("changedOutputs") public List getChancedOutputs() { diff --git a/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java b/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java index bcbb396a40..f17ca34c8e 100644 --- a/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java +++ b/src/main/java/gregtech/api/recipes/crafttweaker/InputIngredient.java @@ -16,7 +16,6 @@ * 1. Not full implementation * 2. CT provides required implementaions * 3. Buggy - * */ @Deprecated @ZenClass("mods.gregtech.recipe.InputIngredient") @@ -28,7 +27,7 @@ public class InputIngredient implements IIngredient { public InputIngredient(CountableIngredient backingIngredient) { iingredient = CraftTweakerMC .getIIngredient(backingIngredient.getIngredient()) - .amount(backingIngredient.getCount()); + .amount(backingIngredient.getCount()); } @Override diff --git a/src/main/java/gregtech/api/recipes/recipes/CokeOvenRecipe.java b/src/main/java/gregtech/api/recipes/recipes/CokeOvenRecipe.java index 2c732d6300..f505eea931 100644 --- a/src/main/java/gregtech/api/recipes/recipes/CokeOvenRecipe.java +++ b/src/main/java/gregtech/api/recipes/recipes/CokeOvenRecipe.java @@ -51,10 +51,10 @@ public int getDuration() { @ZenGetter("input") @Method(modid = GTValues.MODID_CT) public IIngredient ctGetInput() { - CountableIngredient input = getInput(); + CountableIngredient input = getInput(); return new IngredientStack( - CraftTweakerMC.getIIngredient(input.getIngredient()), - input.getCount()); + 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 dfb64be07a..0b27e03748 100644 --- a/src/main/java/gregtech/api/recipes/recipes/PrimitiveBlastFurnaceRecipe.java +++ b/src/main/java/gregtech/api/recipes/recipes/PrimitiveBlastFurnaceRecipe.java @@ -50,10 +50,10 @@ public int getFuelAmount() { @ZenGetter("input") @Method(modid = GTValues.MODID_CT) public IIngredient ctGetInput() { - CountableIngredient input = getInput(); + CountableIngredient input = getInput(); return new IngredientStack( - CraftTweakerMC.getIIngredient(input.getIngredient()), - input.getCount()); + CraftTweakerMC.getIIngredient(input.getIngredient()), + input.getCount()); } @ZenGetter("output") From 6eee821b831d427ab6f01add51069a02689e9aae Mon Sep 17 00:00:00 2001 From: TheDarkDnKTv Date: Wed, 5 Oct 2022 20:00:01 +0900 Subject: [PATCH 4/4] Fixed CTs not-consumable ingredients does not match recipe Caused by creating ItemStack of size 0, which is empty (air). --- .../api/recipes/crafttweaker/CTRecipeBuilder.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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); } }