mirror of
https://github.com/GTNewHorizons/ModTweaker.git
synced 2026-11-12 16:27:27 +00:00
84 lines
3.1 KiB
Java
84 lines
3.1 KiB
Java
package modtweaker2.mods.factorization.handlers;
|
|
|
|
import static modtweaker2.helpers.InputHelper.toIItemStack;
|
|
import static modtweaker2.helpers.InputHelper.toStack;
|
|
import static modtweaker2.helpers.StackHelper.matches;
|
|
|
|
import java.util.LinkedList;
|
|
import java.util.List;
|
|
|
|
import minetweaker.MineTweakerAPI;
|
|
import minetweaker.api.item.IIngredient;
|
|
import minetweaker.api.item.IItemStack;
|
|
import modtweaker2.helpers.InputHelper;
|
|
import modtweaker2.helpers.LogHelper;
|
|
import modtweaker2.helpers.ReflectionHelper;
|
|
import modtweaker2.mods.factorization.FactorizationHelper;
|
|
import modtweaker2.utils.BaseListAddition;
|
|
import modtweaker2.utils.BaseListRemoval;
|
|
import net.minecraft.item.ItemStack;
|
|
import stanhebben.zenscript.annotations.ZenClass;
|
|
import stanhebben.zenscript.annotations.ZenMethod;
|
|
|
|
|
|
@ZenClass("mods.factorization.Crystallizer")
|
|
public class Crystallizer {
|
|
|
|
public static final String name = "Factorization Crystallizer";
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
@ZenMethod
|
|
public static void addRecipe(IItemStack input, IItemStack output, IItemStack solution, double output_count) {
|
|
Object recipe = FactorizationHelper.getCrystallizerRecipe(toStack(input), toStack(output), toStack(solution), (float) output_count);
|
|
MineTweakerAPI.apply(new Add(recipe));
|
|
}
|
|
|
|
private static class Add extends BaseListAddition<Object> {
|
|
@SuppressWarnings("unchecked")
|
|
public Add(Object recipe) {
|
|
super(Crystallizer.name, FactorizationHelper.crystallizer);
|
|
recipes.add(recipe);
|
|
}
|
|
|
|
@Override
|
|
public String getRecipeInfo(Object recipe) {
|
|
return InputHelper.getStackDescription((ItemStack)ReflectionHelper.getObject(recipe, "output"));
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
@ZenMethod
|
|
public static void removeRecipe(IIngredient output) {
|
|
List<Object> recipes = new LinkedList<Object>();
|
|
|
|
for (Object r : FactorizationHelper.crystallizer) {
|
|
if (r != null) {
|
|
ItemStack out = (ItemStack) ReflectionHelper.getObject(r, "output");;
|
|
if (out != null && matches(output, toIItemStack(out))) {
|
|
recipes.add(r);
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!recipes.isEmpty()) {
|
|
MineTweakerAPI.apply(new Remove(recipes));
|
|
} else {
|
|
LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Crystallizer.name, output.toString()));
|
|
}
|
|
}
|
|
|
|
private static class Remove extends BaseListRemoval<Object> {
|
|
@SuppressWarnings("unchecked")
|
|
public Remove(List<Object> recipes) {
|
|
super(Crystallizer.name, FactorizationHelper.crystallizer, recipes);
|
|
}
|
|
|
|
@Override
|
|
public String getRecipeInfo(Object recipe) {
|
|
return InputHelper.getStackDescription((ItemStack)ReflectionHelper.getObject(recipe, "output"));
|
|
}
|
|
}
|
|
}
|