BloodMagic/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tweaker/BloodAltar.java
2014-10-16 05:26:15 +01:00

134 lines
3.6 KiB
Java

package WayofTime.alchemicalWizardry.common.tweaker;
import static WayofTime.alchemicalWizardry.common.tweaker.MTHelper.toStack;
import minetweaker.IUndoableAction;
import minetweaker.MineTweakerAPI;
import minetweaker.api.item.IItemStack;
import net.minecraft.item.ItemStack;
import stanhebben.zenscript.annotations.Optional;
import stanhebben.zenscript.annotations.ZenClass;
import stanhebben.zenscript.annotations.ZenMethod;
import WayofTime.alchemicalWizardry.api.altarRecipeRegistry.AltarRecipe;
import WayofTime.alchemicalWizardry.api.altarRecipeRegistry.AltarRecipeRegistry;
/**
* MineTweaker3 Blood Altar Recipe Handler by joshie *
*/
@ZenClass("mods.bloodmagic.Altar")
public class BloodAltar
{
@ZenMethod
public static void addRecipe(IItemStack output, IItemStack input, int tier, int lp, @Optional int consume, @Optional int drain) {
consume = consume > 0 ? consume : 20;
drain = drain > 0 ? drain : 20;
MineTweakerAPI.apply(new Add(new AltarRecipe(toStack(output), toStack(input), tier, lp, consume, drain, false)));
}
private static class Add implements IUndoableAction
{
private final AltarRecipe recipe;
public Add(AltarRecipe recipe)
{
this.recipe = recipe;
}
@Override
public void apply()
{
AltarRecipeRegistry.altarRecipes.add(recipe);
}
@Override
public boolean canUndo()
{
return AltarRecipeRegistry.altarRecipes != null;
}
@Override
public void undo()
{
AltarRecipeRegistry.altarRecipes.remove(recipe);
}
@Override
public String describe()
{
return "Adding Blood Altar Recipe for " + ((AltarRecipe) recipe).getResult().getDisplayName();
}
@Override
public String describeUndo()
{
return "Removing Blood Altar Recipe for " + ((AltarRecipe) recipe).getResult().getDisplayName();
}
@Override
public Object getOverrideKey()
{
return null;
}
}
@ZenMethod
public static void removeRecipe(IItemStack output) {
MineTweakerAPI.apply(new Remove(toStack(output)));
}
private static class Remove implements IUndoableAction
{
private final ItemStack output;
private AltarRecipe recipe;
public Remove(ItemStack output)
{
this.output = output;
}
@Override
public void apply()
{
for (AltarRecipe r : AltarRecipeRegistry.altarRecipes)
{
if (r.getResult() != null && r.getResult().isItemEqual(output))
{
recipe = r;
break;
}
}
AltarRecipeRegistry.altarRecipes.remove(recipe);
}
@Override
public boolean canUndo()
{
return AltarRecipeRegistry.altarRecipes != null && recipe != null;
}
@Override
public void undo()
{
AltarRecipeRegistry.altarRecipes.add(recipe);
}
@Override
public String describe()
{
return "Removing Blood Altar Recipe for " + output.getDisplayName();
}
@Override
public String describeUndo()
{
return "Restoring Blood Altar Recipe for " + output.getDisplayName();
}
@Override
public Object getOverrideKey()
{
return null;
}
}
}