Files
sevtech-ages-1.12.2/scripts/crafttweaker/classes/utils/recipeUtil.zs
2025-07-23 08:37:00 +03:00

158 lines
3.7 KiB
Plaintext

#priority 3400
/*
SevTech: Ages Recipe Util Script
This script is a zenClass "Util/Wrapper" for recipe adding. Which gives us an easier way
to add recipes to the game in a clean script layout using Maps/Arrays.
Note: These scripts are created and for the usage in SevTech: Ages and other
modpacks curated by DarkPacks. You can use these scripts for reference and for
learning but not for copying and pasting and claiming as your own.
*/
import crafttweaker.item.IItemStack;
import crafttweaker.item.IIngredient;
import mods.zenstages.ZenStager;
import scripts.crafttweaker.stages.stageDisabled;
zenClass RecipeUtil {
zenConstructor() {
}
/*
Process Method to handle Shapless Recipes.
*/
function processNamed(map as IIngredient[][][string][IItemStack]) {
for item, itemRecipes in map {
for recipeName, recipesInner in itemRecipes {
for i, recipe in recipesInner {
var toName = recipeName;
if (i > 0) {
toName = toName ~ "_" ~ i;
}
if (recipeName == "nameless") {
recipes.addShapeless(item, recipe);
} else {
recipes.addShapeless(toName, item, recipe);
}
}
}
}
}
function process(map as IIngredient[][][IItemStack]) {
for item, itemRecipes in map {
for recipe in itemRecipes {
recipes.addShapeless(item, recipe);
}
}
}
/*
Process Method to handle Shaped and Mirrored Recipes.
*/
function processNamed(map as IIngredient[][][][string][IItemStack], isMirrored as bool) {
for item, itemRecipes in map {
for recipeName, recipesInner in itemRecipes {
for i, recipe in recipesInner {
var toName = recipeName;
if (i > 0) {
toName = toName ~ "_" ~ i;
}
if (recipeName == "nameless") {
if (isMirrored) {
recipes.addShapedMirrored(item, recipe);
} else {
recipes.addShaped(item, recipe);
}
} else {
if (isMirrored) {
recipes.addShapedMirrored(toName, item, recipe);
} else {
recipes.addShaped(toName, item, recipe);
}
}
}
}
}
}
function process(map as IIngredient[][][][IItemStack], isMirrored as bool) {
for item, itemRecipes in map {
for recipe in itemRecipes {
if (isMirrored) {
recipes.addShapedMirrored(item, recipe);
} else {
recipes.addShaped(item, recipe);
}
}
}
}
/*
Removes recipes simple as baking a cake!
*/
function removeRecipes(removals as IItemStack[]) {
for toRemove in removals {
recipes.remove(toRemove);
}
}
function removeRecipes(removals as string[]) {
for toRemove in removals {
recipes.removeByRegex(toRemove);
}
}
/*
Process Method for handling Furnace Recipes.
*/
function processFurnace(recipesToAdd as IIngredient[][IItemStack]) {
for output, inputs in recipesToAdd {
for input in inputs {
furnace.addRecipe(output, input);
}
}
}
/*
Remove recipes from the Vanilla Furnace
*/
function removeFurnace(removals as IIngredient[]) {
for toRemove in removals {
furnace.remove(toRemove);
}
}
function removeFurnace(removals as IIngredient[IIngredient]) {
for input, output in removals {
furnace.remove(input, output);
}
}
/*
Hide an item from JEI.
You can also set true to the second param to remove the recipes also.
This also sets the Stage to Disabled incase people still have them or find them.
*/
function hideItems(removals as IIngredient[]) {
hideItems(removals, false);
}
function hideItems(removals as IIngredient[], removeRecipe as bool) {
if (removeRecipe) {
for toHide in removals {
mods.jei.JEI.removeAndHide(toHide);
ZenStager.getStage(stageDisabled.stage).addIngredient(toHide, false);
}
} else {
for toHide in removals {
for toHideItem in toHide.items {
mods.jei.JEI.hide(toHideItem);
}
}
}
}
}