package modtweaker.mods.actuallyadditions.handlers; import com.blamejared.mtlib.helpers.InputHelper; import com.blamejared.mtlib.helpers.LogHelper; import com.blamejared.mtlib.utils.BaseListAddition; import com.blamejared.mtlib.utils.BaseListRemoval; import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.recipe.CompostRecipe; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import net.minecraft.block.Block; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import java.util.LinkedList; import java.util.List; import static com.blamejared.mtlib.helpers.InputHelper.toIItemStack; import static com.blamejared.mtlib.helpers.InputHelper.toStack; import static com.blamejared.mtlib.helpers.StackHelper.matches; @ZenClass("mods.actuallyadditions.Compost") public class Compost { protected static final String name = "Actually Additions Compost"; @ZenMethod public static void addRecipe(IItemStack input,IItemStack output) { if(!InputHelper.isABlock(input) || !InputHelper.isABlock(output)){ LogHelper.logWarning(String.format("Invalid %s Recipe found for %s. Input and output must be blocks.", Empowerer.name, output.toString())); return; } MineTweakerAPI.apply(new Add(new CompostRecipe(toStack(input), Block.getBlockFromItem(toStack(input).getItem()), toStack(output), Block.getBlockFromItem(toStack(output).getItem())))); } @ZenMethod public static void addRecipe(IItemStack input, IItemStack displayInput, IItemStack output, IItemStack displayOutput) { if(!InputHelper.isABlock(displayInput) || !InputHelper.isABlock(displayOutput)){ LogHelper.logWarning(String.format("Invalid %s Recipe found for %s. Input and output must be blocks.", Empowerer.name, output.toString())); return; } MineTweakerAPI.apply(new Add(new CompostRecipe(toStack(input), Block.getBlockFromItem(toStack(displayInput).getItem()), toStack(output), Block.getBlockFromItem(toStack(displayOutput).getItem())))); } private static class Add extends BaseListAddition<CompostRecipe> { public Add(CompostRecipe recipe) { super(Compost.name, ActuallyAdditionsAPI.COMPOST_RECIPES); this.recipes.add(recipe); } @Override public String getRecipeInfo(CompostRecipe recipe) { return LogHelper.getStackDescription(recipe.output); } } @ZenMethod public static void remove(IIngredient input) { List<CompostRecipe> recipes = new LinkedList<CompostRecipe>(); if (input == null) { LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); return; } for (CompostRecipe recipe : ActuallyAdditionsAPI.COMPOST_RECIPES) { if (matches(input, toIItemStack(recipe.input))) recipes.add(recipe); } if (!recipes.isEmpty()) { MineTweakerAPI.apply(new Remove(recipes)); } else { LogHelper.logWarning(String.format("No %s Recipe found for output %s. Command ignored!", Compost.name, input.toString())); } } private static class Remove extends BaseListRemoval<CompostRecipe> { public Remove(List<CompostRecipe> recipes) { super(Compost.name, ActuallyAdditionsAPI.COMPOST_RECIPES, recipes); } @Override protected String getRecipeInfo(CompostRecipe recipe) { return LogHelper.getStackDescription(recipe.output); } } }