@ZenMethod public static void addRecipe( IItemStack output, IIngredient input, int turns, @stanhebben.zenscript.annotations.Optional IItemStack secondary1Output, @stanhebben.zenscript.annotations.Optional Float secondary1Chance, @stanhebben.zenscript.annotations.Optional IItemStack secondary2Output, @stanhebben.zenscript.annotations.Optional Float secondary2Chance ) { Collection<ItemStack> inStacks = CTModule.toStacks( input ).orElse( Collections.emptySet() ); for( ItemStack inStack : inStacks ) { IGrinderRecipeBuilder builder = AEApi.instance().registries().grinder().builder(); builder.withInput( inStack ) .withOutput( CTModule.toStack( output ) ) .withTurns( turns ); final ItemStack s1 = CTModule.toStack( secondary1Output ); if( !s1.isEmpty() ) { builder.withFirstOptional( s1, secondary1Chance == null ? 1.0f : secondary1Chance ); } final ItemStack s2 = CTModule.toStack( secondary2Output ); if( !s2.isEmpty() ) { builder.withFirstOptional( s2, secondary2Chance == null ? 1.0f : secondary2Chance ); } CTModule.MODIFICATIONS.add( new Add( builder.build() ) ); } }
@ZenMethod public static void addRecipe( IItemStack output, IIngredient input, boolean inscribe, @stanhebben.zenscript.annotations.Optional IIngredient top, @stanhebben.zenscript.annotations.Optional IIngredient bottom ) { Optional<Collection<ItemStack>> inStacks = CTModule.toStacks( input ); if( !inStacks.isPresent() ) { return; } Collection<ItemStack> topList = CTModule.toStacks( top ).orElse( Collections.singleton( ItemStack.EMPTY ) ); Collection<ItemStack> bottomList = CTModule.toStacks( bottom ).orElse( Collections.singleton( ItemStack.EMPTY ) ); for( ItemStack topStack : topList ) { for( ItemStack bottomStack : bottomList ) { final IInscriberRecipeBuilder builder = AEApi.instance().registries().inscriber().builder(); builder.withProcessType( inscribe ? InscriberProcessType.INSCRIBE : InscriberProcessType.PRESS ) .withOutput( CTModule.toStack( output ) ) .withInputs( inStacks.get() ); if( !topStack.isEmpty() ) { builder.withTopOptional( topStack ); } if( !bottomStack.isEmpty() ) { builder.withBottomOptional( bottomStack ); } CTModule.MODIFICATIONS.add( new Add( builder.build() ) ); } } }
@ZenMethod public static IngotMaterial createIngotMaterial(int metaItemSubId, String name, int color, String iconSet, int harvestLevel, @Optional MaterialStack[] materialComponents, @Optional float toolSpeed, @Optional int toolDurability, @Optional int blastFurnaceTemperature) { return new IngotMaterial(metaItemSubId, name, color, MaterialIconSet.getByName(iconSet), harvestLevel, validateComponentList(materialComponents), 0, null, Math.max(0.0f, toolSpeed), Math.max(0, toolDurability), blastFurnaceTemperature); }
/** * Removes recipe from Still * * @param output = liquid output * * @param fluidInput = liquid input (optional) */ @ZenMethod public static void removeRecipe(ILiquidStack output, @Optional ILiquidStack fluidInput) { ModTweaker.LATE_REMOVALS.add(new Remove(output, fluidInput)); }
/** * Removes recipe from Carpenter * * @param output = recipe result * * @param fluidInput = required type of fluid (optional) */ @ZenMethod public static void removeRecipe(IItemStack output, @Optional ILiquidStack fluidInput) { ModTweaker.LATE_REMOVALS.add(new Remove(output, fluidInput)); }
/** * Removes a recipe for the Centrifuge * * @param liquid liquid output * * @param ingredients list of ingredients (optional) */ @ZenMethod public static void removeRecipe(ILiquidStack liquid, @Optional IIngredient[] ingredients) { ModTweaker.LATE_REMOVALS.add(new Remove(liquid, ingredients)); }
@ZenMethod public static void addBasinRecipe(IItemStack output, IIngredient cast, ILiquidStack fluid, int amount, @Optional boolean consumeCast, @Optional int time) { init(); ModTweaker.LATE_ADDITIONS.add(new Add(InputHelper.toStack(output), cast, InputHelper.toFluid(fluid), amount, false, consumeCast, time)); }
@ZenMethod public static void addTableRecipe(IItemStack output, IIngredient cast, ILiquidStack fluid, int amount, @Optional boolean consumeCast, @Optional int time) { init(); ModTweaker.LATE_ADDITIONS.add(new Add(InputHelper.toStack(output), cast, InputHelper.toFluid(fluid), amount, true, consumeCast, time)); }
@ZenMethod public static void addRecipe(ILiquidStack fluid, int genAmount, @Optional int genTime) { if(genTime == 0) { genTime = 100; } ModTweaker.LATE_ADDITIONS.add(new Add(Collections.singletonList(new OilGenRecipe(fluid.getName(), genAmount, genTime)))); }
@ZenMethod public static void addFillRecipe(IIngredient input, ILiquidStack fluid, int amount, @Optional IItemStack container, @Optional Boolean boiling) { if (amount < 1 || amount > InspirationsRegistry.getCauldronMax()) { CraftTweakerAPI.logError(String.format("Ignoring Cauldron Fill recipe for %s: Invalid amount %d given, must be between 1 and %d", fluid.getDisplayName(), amount, InspirationsRegistry.getCauldronMax())); return; } ModTweaker.LATE_ADDITIONS.add(new AddFill(input, InputHelper.toFluid(fluid), amount, InputHelper.toStack(container), boiling)); }
@ZenMethod @ZenDoc("Remove matching printable items.") public static void remove(@Optional final IIngredient item) { recipes.remove(item); }