diff --git a/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java b/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java index 98e2fb2..b3fd648 100644 --- a/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java +++ b/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java @@ -48,17 +48,12 @@ public class Grind { @Override public void apply() { - ArrayList toRemove = new ArrayList(); - for (IGrinderEntry r : AEApi.instance().registries().grinder().getRecipes()) { if (r.getOutput().isItemEqual(stack)) { - toRemove.add(r); + recipes.add(r); } } - for (IGrinderEntry r : toRemove) { - AEApi.instance().registries().grinder().getRecipes().remove(r); - } - + super.apply(); } } diff --git a/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java b/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java index 9b8bd5c..cdf3164 100644 --- a/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java +++ b/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java @@ -63,15 +63,12 @@ public class Inscriber { @Override public void apply() { - ArrayList recipesToRemove = new ArrayList(); for (IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes()) { if (recipe != null && recipe.getOutput() != null && recipe.getOutput().isItemEqual(stack)) { - recipesToRemove.add(recipe); + recipes.add(recipe); } } - for (IInscriberRecipe recipe : recipesToRemove) { - AEApi.instance().registries().inscriber().removeRecipe(recipe); - } + super.apply(); } } diff --git a/src/main/java/modtweaker2/mods/auracascade/handlers/Pylon.java b/src/main/java/modtweaker2/mods/auracascade/handlers/Pylon.java index 873193e..33954c4 100644 --- a/src/main/java/modtweaker2/mods/auracascade/handlers/Pylon.java +++ b/src/main/java/modtweaker2/mods/auracascade/handlers/Pylon.java @@ -44,8 +44,6 @@ public class Pylon { } private static class Remove extends BaseListRemoval { - ArrayList recipesToRemove = new ArrayList(); - public Remove(ItemStack stack) { super(PylonRecipeRegistry.recipes, stack); } @@ -54,13 +52,11 @@ public class Pylon { public void apply() { for (PylonRecipe r : PylonRecipeRegistry.recipes) { if (r.result.isItemEqual(stack)) { - recipesToRemove.add(r); + recipes.add(r); } } - for (PylonRecipe r : recipesToRemove) { - recipesToRemove.remove(r); - } + super.apply(); } } diff --git a/src/main/java/modtweaker2/mods/botania/handlers/Apothecary.java b/src/main/java/modtweaker2/mods/botania/handlers/Apothecary.java index 046724c..4d2433b 100644 --- a/src/main/java/modtweaker2/mods/botania/handlers/Apothecary.java +++ b/src/main/java/modtweaker2/mods/botania/handlers/Apothecary.java @@ -59,12 +59,10 @@ public class Apothecary { public void apply() { for (RecipePetals r : BotaniaAPI.petalRecipes) { if (areEqual(r.getOutput(), stack)) { - recipe = r; - break; + recipes.add(r); } } - - BotaniaAPI.petalRecipes.remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/botania/handlers/ElvenTrade.java b/src/main/java/modtweaker2/mods/botania/handlers/ElvenTrade.java index 252b950..c64ea40 100644 --- a/src/main/java/modtweaker2/mods/botania/handlers/ElvenTrade.java +++ b/src/main/java/modtweaker2/mods/botania/handlers/ElvenTrade.java @@ -48,12 +48,10 @@ public class ElvenTrade { public void apply() { for (RecipeElvenTrade r : BotaniaAPI.elvenTradeRecipes) { if (r.getOutput() != null && areEqual(r.getOutput(), stack)) { - recipe = r; - break; + recipes.add(r); } } - - BotaniaAPI.elvenTradeRecipes.remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/botania/handlers/ManaInfusion.java b/src/main/java/modtweaker2/mods/botania/handlers/ManaInfusion.java index d0fb2cb..7b06848 100644 --- a/src/main/java/modtweaker2/mods/botania/handlers/ManaInfusion.java +++ b/src/main/java/modtweaker2/mods/botania/handlers/ManaInfusion.java @@ -63,12 +63,10 @@ public class ManaInfusion { public void apply() { for (RecipeManaInfusion r : BotaniaAPI.manaInfusionRecipes) { if (r.getOutput() != null && areEqual(r.getOutput(), stack)) { - recipe = r; - break; + recipes.add(r); } } - - BotaniaAPI.manaInfusionRecipes.remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/botania/handlers/RuneAltar.java b/src/main/java/modtweaker2/mods/botania/handlers/RuneAltar.java index 374d831..b09c65b 100644 --- a/src/main/java/modtweaker2/mods/botania/handlers/RuneAltar.java +++ b/src/main/java/modtweaker2/mods/botania/handlers/RuneAltar.java @@ -48,12 +48,10 @@ public class RuneAltar { public void apply() { for (RecipeRuneAltar r : BotaniaAPI.runeAltarRecipes) { if (r.getOutput() != null && areEqual(r.getOutput(), stack)) { - recipe = r; - break; + recipes.add(r); } } - - BotaniaAPI.runeAltarRecipes.remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/extendedworkbench/handlers/ExtendedCrafting.java b/src/main/java/modtweaker2/mods/extendedworkbench/handlers/ExtendedCrafting.java index eb6a728..a0a6837 100644 --- a/src/main/java/modtweaker2/mods/extendedworkbench/handlers/ExtendedCrafting.java +++ b/src/main/java/modtweaker2/mods/extendedworkbench/handlers/ExtendedCrafting.java @@ -86,13 +86,11 @@ public class ExtendedCrafting { if (o instanceof IExtendedRecipe) { IExtendedRecipe r = (IExtendedRecipe) o; if (r.getRecipeOutput() != null && areEqual((ItemStack) r.getRecipeOutput(), stack)) { - recipe = r; - break; + recipes.add(r); } } } - - ExtendedCraftingManager.getInstance().getRecipeList().remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java b/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java index a5db47e..6778ee6 100644 --- a/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java +++ b/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java @@ -58,13 +58,11 @@ public class Crystallizer { if (r != null) { ItemStack output = getOutput(r); if (output != null && areEqual(output, stack)) { - recipe = r; - break; + recipes.add(r); } } } - - list.remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java b/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java index 7870e58..de00ed3 100644 --- a/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java +++ b/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java @@ -56,12 +56,10 @@ public class Lacerator { for (Object r : list) { ItemStack output = getOutput(r); if (output != null && areEqual(output, stack)) { - recipe = r; - break; + recipes.add(r); } } - - list.remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Carpenter.java b/src/main/java/modtweaker2/mods/forestry/handlers/Carpenter.java index 3c1c115..cb6dc7c 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Carpenter.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Carpenter.java @@ -75,18 +75,16 @@ public class Carpenter { public Remove(List list, ItemStack stack) { super("Forestry Carpenter", list, stack); - } @Override public void apply() { for (Recipe r : RecipeManager.recipes) { if (r.getCraftingResult() != null && r.getCraftingResult().isItemEqual(stack)) { - recipe = r; - break; + recipes.add(r); } } - RecipeManager.recipes.remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Centrifuge.java b/src/main/java/modtweaker2/mods/forestry/handlers/Centrifuge.java index fb67924..d28c222 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Centrifuge.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Centrifuge.java @@ -63,11 +63,10 @@ public class Centrifuge { public void apply() { for (Recipe r : RecipeManager.recipes) { if (r.matches(stack)) { - recipe = r; - RecipeManager.recipes.remove(r); - break; + recipes.add(r); } } + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Fermenter.java b/src/main/java/modtweaker2/mods/forestry/handlers/Fermenter.java index 910afbb..316bc9f 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Fermenter.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Fermenter.java @@ -54,16 +54,13 @@ public class Fermenter { @Override public void apply() { - ArrayList recipes = new ArrayList(); for (Recipe r : RecipeManager.recipes) { if (r != null && r.resource != null && r.resource.isItemEqual(stack)) { recipes.add(r); } } - for (Recipe r : recipes) { - RecipeManager.recipes.remove(r); - } + super.apply(); } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Moistener.java b/src/main/java/modtweaker2/mods/forestry/handlers/Moistener.java index 1fc333a..242c1d7 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Moistener.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Moistener.java @@ -51,13 +51,10 @@ public class Moistener { public void apply() { for (Recipe r : RecipeManager.recipes) { if (r.product != null && r.product.isItemEqual(stack)) { - recipe = r; - break; + recipes.add(r); } } - RecipeManager.recipes.remove(recipe); - + super.apply(); } - } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Squeezer.java b/src/main/java/modtweaker2/mods/forestry/handlers/Squeezer.java index 93989f2..12cbccf 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Squeezer.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Squeezer.java @@ -57,12 +57,10 @@ public class Squeezer { public void apply() { for (Recipe r : RecipeManager.recipes) { if (r.liquid != null && r.liquid.isFluidEqual(fluid)) { - recipe = r; - break; + recipes.add(r); } } - RecipeManager.recipes.remove(recipe); - + super.apply(); } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Still.java b/src/main/java/modtweaker2/mods/forestry/handlers/Still.java index 8841669..7e5ba37 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Still.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Still.java @@ -56,13 +56,10 @@ public class Still { public void apply() { for (Recipe r : RecipeManager.recipes) { if (r.output != null && r.output.isFluidEqual(fluid)) { - recipe = r; - break; + recipes.add(r); } } - RecipeManager.recipes.remove(recipe); - + super.apply(); } - } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/ThermionicFabricator.java b/src/main/java/modtweaker2/mods/forestry/handlers/ThermionicFabricator.java index d93e8c4..c957972 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/ThermionicFabricator.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/ThermionicFabricator.java @@ -2,6 +2,9 @@ package modtweaker2.mods.forestry.handlers; import static modtweaker2.helpers.InputHelper.toFluid; import static modtweaker2.helpers.InputHelper.toStack; + +import java.util.List; + import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; @@ -28,7 +31,7 @@ public class ThermionicFabricator { @ZenMethod public static void removeSmelting(IItemStack itemInput) { - MineTweakerAPI.apply(new RemoveSmelting(toStack(itemInput))); + MineTweakerAPI.apply(new Remove(toStack(itemInput), RecipeManager.smeltings, RecipeType.Smelting)); } //second step: casting liquid + objetcs + plan into result @@ -46,7 +49,7 @@ public class ThermionicFabricator { @ZenMethod public static void removeCasts(IItemStack product) { - MineTweakerAPI.apply(new RemoveCastings(toStack(product))); + MineTweakerAPI.apply(new Remove(toStack(product), RecipeManager.recipes, RecipeType.Casting)); } /* @@ -73,53 +76,54 @@ public class ThermionicFabricator { } /* - Implements the actions to remove a smelting recipe + Implements the actions to remove recipes */ - private static class RemoveSmelting extends BaseListRemoval { + private static class Remove extends BaseListRemoval { + private final RecipeType type; - public RemoveSmelting(ItemStack input) { - super("Forestry Thermionic Fabricator (Smelting)", RecipeManager.smeltings, input); + public Remove(ItemStack input, List list, RecipeType type) { + super(String.format("Forestry Thermionic Fabricator (%s)", type.toString()), RecipeManager.smeltings, input); + this.type = type; } @Override public void apply() { - for (Smelting r : RecipeManager.smeltings) { - if (r.getResource() != null && r.getResource().isItemEqual(stack)) { - RecipeManager.smeltings.remove(r); - recipe = r; - break; - } - } + switch(type) { + case Smelting: + for (Object r : list) { + if (((Smelting)r).getResource() != null && ((Smelting)r).getResource().isItemEqual(stack)) { + recipes.add(r); + } + } + break; + + case Casting: + for (Object r : list) { + if (((Recipe)r).asIRecipe().getRecipeOutput() != null && ((Recipe)r).asIRecipe().getRecipeOutput().isItemEqual(stack)) { + recipes.add(r); + } + } + break; + } + super.apply(); } @Override public String getRecipeInfo() { - return " Input:" + stack.getDisplayName(); // + " -- Output:" + ((Smelting) recipe).getProduct().getLocalizedName(); + switch(type) { + case Smelting: + return " Input:" + stack.getDisplayName(); // + " -- Output:" + ((Smelting) recipe).getProduct().getLocalizedName(); + + case Casting: + return " Output:" + stack.getDisplayName(); // + " -- Output:" + ((Recipe) recipe).asIRecipe().getIngredients()[0].getDisplayName(); + } + + return stack.getDisplayName(); } } - /* - Implements the actions to remove a casting recipe - */ - private static class RemoveCastings extends BaseListRemoval { - - public RemoveCastings(ItemStack output) { - super("Forestry Thermionic Fabricator (Casting)", RecipeManager.recipes, output); - } - - @Override - public void apply() { - for (Recipe r : RecipeManager.recipes) { - if (r.asIRecipe().getRecipeOutput() != null && r.asIRecipe().getRecipeOutput().isItemEqual(stack)) { - recipe = r; - } - } - RecipeManager.recipes.remove(recipe); - } - - @Override - public String getRecipeInfo() { - return " Output:" + stack.getDisplayName(); // + " -- Output:" + ((Recipe) recipe).asIRecipe().getIngredients()[0].getDisplayName(); - } - } + public enum RecipeType { + Smelting, + Casting + } } diff --git a/src/main/java/modtweaker2/mods/mariculture/handlers/Crucible.java b/src/main/java/modtweaker2/mods/mariculture/handlers/Crucible.java index ddf4c91..ff94994 100644 --- a/src/main/java/modtweaker2/mods/mariculture/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/mariculture/handlers/Crucible.java @@ -62,17 +62,14 @@ public class Crucible { // recipe then removes it @Override public void apply() { - for (RecipeSmelter r : MaricultureHandlers.crucible.getRecipes()) { if (r != null) { if (r.input != null && stack != null && areEqual(r.input, stack)) { - recipe = r; - break; + recipes.add(r); } } } - if (recipe != null) - MaricultureHandlers.crucible.getRecipes().remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/mariculture/handlers/Vat.java b/src/main/java/modtweaker2/mods/mariculture/handlers/Vat.java index 5233b90..ef45f09 100644 --- a/src/main/java/modtweaker2/mods/mariculture/handlers/Vat.java +++ b/src/main/java/modtweaker2/mods/mariculture/handlers/Vat.java @@ -115,18 +115,18 @@ public class Vat { if (r != null) if (r.outputItem != null && stack != null && areEqual(r.outputItem, stack)) { if (r.outputFluid == null || (fluid != null && r.outputFluid.isFluidStackIdentical(fluid))) { - recipe = r; + recipes.add(r); break; } } if ((r.outputFluid != null && fluid != null && r.outputFluid.isFluidStackIdentical(fluid))) { - recipe = r; + recipes.add(r); break; } } - if (recipe != null) - MaricultureHandlers.vat.getRecipes().remove(recipe); + + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/metallurgy/handlers/Alloyer.java b/src/main/java/modtweaker2/mods/metallurgy/handlers/Alloyer.java index bb20e8b..dc1587f 100644 --- a/src/main/java/modtweaker2/mods/metallurgy/handlers/Alloyer.java +++ b/src/main/java/modtweaker2/mods/metallurgy/handlers/Alloyer.java @@ -52,12 +52,10 @@ public class Alloyer { public void apply() { for (AlloyRecipe r : MetallurgyHelper.alloyerRecipes) { if (r.getCraftingResult() != null && areEqual(r.getCraftingResult(), stack)) { - recipe = r; - break; + recipes.add(r); } } - - MetallurgyHelper.alloyerRecipes.remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java index 229f9f1..29d8947 100644 --- a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java +++ b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java @@ -68,12 +68,11 @@ public class Assembly { public void apply() { for (AssemblyRecipe r : (List) list) { if (r.getOutput() != null && areEqual(r.getOutput(), stack)) { - recipe = r; - break; + recipes.add(r); } } - list.remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java index 3e35114..440a225 100644 --- a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java +++ b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java @@ -52,19 +52,17 @@ public class Pressure { for (PressureChamberRecipe r : PressureChamberRecipe.chamberRecipes) { boolean matches = true; for (int i = 0; i < stacks.length; i++) { - if (!areEqual(stacks[i], r.output[i])) { + if (!areEqual(stacks[i], r.output[i])) { // possible IndexOutOfBoundsException on r.output[i] matches = false; break; } } if (matches) { - recipe = r; - break; + recipes.add(r); } } - - PressureChamberRecipe.chamberRecipes.remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java b/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java index 5d0bf43..4178fe0 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java @@ -46,14 +46,13 @@ public class BlastFurnace { @Override public void apply() { - ArrayList recipesToRemove = new ArrayList(); for (IBlastFurnaceRecipe r : RailcraftHelper.furnace) { if (r.getOutput() != null && stack.isItemEqual(r.getOutput())) { - recipesToRemove.add(r); + recipes.add(r); } } - for (IBlastFurnaceRecipe r : recipesToRemove) - RailcraftCraftingManager.blastFurnace.getRecipes().remove(r); + + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java b/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java index dae3070..a0449b7 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java @@ -93,12 +93,10 @@ public class CokeOven { public void apply() { for (ICokeOvenRecipe r : RailcraftHelper.oven) { if (r.getOutput() != null && r.getOutput().getItem().equals(stack)) { - recipe = r; - break; + recipes.add(r); } } - - RailcraftHelper.oven.remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java b/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java index d13f1f8..dafcf83 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java @@ -49,12 +49,10 @@ public class RockCrusher { public void apply() { for (IRockCrusherRecipe r : RailcraftHelper.crusher) { if (r.getInput() != null && areEqual(r.getInput(), stack)) { - recipe = r; - break; + recipes.add(r); } } - - RailcraftHelper.crusher.remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java index ac76d7f..f744c98 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java @@ -76,18 +76,15 @@ public class Casting { // Removes all matching recipes, apply is never the same for anything, so will always need to override it private static class Remove extends BaseListRemoval { - protected final LinkedList removedRecipes; protected final RecipeComponent component; public Remove(ItemStack item, ArrayList list, RecipeComponent component) { super("TConstruct Casting", list, item); - this.removedRecipes = new LinkedList(); this.component = component; } public Remove(FluidStack fluid, ArrayList list) { super("TConstruct Casting", list, fluid); - this.removedRecipes = new LinkedList(); this.component = RecipeComponent.Material; } @@ -96,45 +93,32 @@ public class Casting { public void apply() { for (Iterator iterator = ((ArrayList)list).iterator(); iterator.hasNext();) { CastingRecipe r = iterator.next(); - boolean removeRecipie = false; switch(component) { case Cast: if (r.cast != null && areEqual(r.cast, stack)) { - removeRecipie = true; + recipes.add(r); } break; case Material: if (r.castingMetal != null && r.castingMetal.isFluidEqual(fluid)) { - removeRecipie = true; + recipes.add(r); } break; case Output: if (r.output != null && areEqual(r.output, stack)) { - removeRecipie = true; + recipes.add(r); } break; } - - if(removeRecipie) { - iterator.remove(); - removedRecipes.add(r); - } } - } - - @Override - public void undo() { - for(CastingRecipe recipe : removedRecipes) { - this.list.add(recipe); - } - removedRecipes.clear(); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java index 79d5038..4969659 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java @@ -55,12 +55,10 @@ public class Drying { public void apply() { for (DryingRecipe r : (ArrayList) list) { if (r.result != null && areEqual(r.result, stack)) { - recipe = r; - break; + recipes.add(r); } } - - list.remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Modifiers.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Modifiers.java index e17d955..b791e4a 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Modifiers.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Modifiers.java @@ -29,12 +29,10 @@ public class Modifiers { public void apply() { for (ItemModifier m : (List) list) { if (m.key.equals(check)) { - recipe = m; - break; + recipes. add(m); } } - - list.remove(recipe); + super.apply(); } } } diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java index 9164be7..2f8efee 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java @@ -72,13 +72,10 @@ public class Smeltery { public void apply() { for (AlloyMix r : TConstructHelper.alloys) { if (r.result != null && fluid != null && r.result.getFluid() == fluid.getFluid()) { - recipe = r; - break; + recipes.add(r); } } - if (recipe != null) - TConstructHelper.alloys.remove(recipe); - + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/TiCTweaks.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/TiCTweaks.java index 3e88ed3..5b616da 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/TiCTweaks.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/TiCTweaks.java @@ -98,13 +98,11 @@ public class TiCTweaks { ItemStack clone = new ItemStack(r.item, 1, r.damage); if ((material != null && material.equalsIgnoreCase(r.key)) || (material == null)) { if (clone.isItemEqual(stack)) { - recipe = r; - break; + recipes.add(r); } } } - - PatternBuilder.instance.materials.remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/tfcraft/handlers/Anvil.java b/src/main/java/modtweaker2/mods/tfcraft/handlers/Anvil.java index 271878f..824de8e 100644 --- a/src/main/java/modtweaker2/mods/tfcraft/handlers/Anvil.java +++ b/src/main/java/modtweaker2/mods/tfcraft/handlers/Anvil.java @@ -65,15 +65,12 @@ public class Anvil { @Override public void apply() { - ArrayList toRemove = new ArrayList(); for (AnvilRecipe recipe : AnvilManager.getInstance().getRecipeList()){ if (recipe.getCraftingResult() != null && areEqual(recipe.getCraftingResult(), stack)){ - toRemove.add(recipe); + recipes.add(recipe); } } - for (AnvilRecipe aRecipe : toRemove){ - TFCHelper.anvilRecipes.remove(aRecipe); - } + super.apply(); } } @@ -84,16 +81,12 @@ public class Anvil { @Override public void apply() { - ArrayList toRemove = new ArrayList(); for (AnvilRecipe recipe : AnvilManager.getInstance().getRecipeList()){ if (recipe.getCraftingResult() != null && recipe.getCraftingResult() == stack){ - toRemove.add(recipe); + recipes.add(recipe); } } - for (AnvilRecipe aRecipe : toRemove){ - TFCHelper.anvilWeldRecipes.remove(aRecipe); - } + super.apply(); } } - } diff --git a/src/main/java/modtweaker2/mods/tfcraft/handlers/Barrel.java b/src/main/java/modtweaker2/mods/tfcraft/handlers/Barrel.java index e161284..33ae95a 100644 --- a/src/main/java/modtweaker2/mods/tfcraft/handlers/Barrel.java +++ b/src/main/java/modtweaker2/mods/tfcraft/handlers/Barrel.java @@ -80,20 +80,17 @@ public class Barrel { @Override public void apply() { - ArrayList toRemove = new ArrayList(); for (BarrelRecipe recipe : BarrelManager.getInstance().getRecipes()){ if (recipe.getRecipeOutIS() != null && areEqual(recipe.getRecipeOutIS(), stack)){ - toRemove.add(recipe); + recipes.add(recipe); } } for (BarrelRecipe recipe : BarrelManager.getInstance().getRecipes()){ if (recipe.getRecipeOutFluid() != null && recipe.getRecipeOutFluid().isFluidEqual(fluid)){ - toRemove.add(recipe); + recipes.add(recipe); } } - for (BarrelRecipe aRecipe : toRemove){ - TFCHelper.barrelRecipes.remove(aRecipe); - } + super.apply(); } } } diff --git a/src/main/java/modtweaker2/mods/tfcraft/handlers/Kiln.java b/src/main/java/modtweaker2/mods/tfcraft/handlers/Kiln.java index 51416ee..4ec58fa 100644 --- a/src/main/java/modtweaker2/mods/tfcraft/handlers/Kiln.java +++ b/src/main/java/modtweaker2/mods/tfcraft/handlers/Kiln.java @@ -45,17 +45,14 @@ public class Kiln { super("Kiln-Remove", TFCHelper.kilnRecipes, out); } - @Override + @Override public void apply() { - ArrayList toRemove = new ArrayList(); for (KilnRecipe recipe : KilnCraftingManager.getInstance().getRecipeList()){ if (recipe.getCraftingResult() != null && areEqual(recipe.getCraftingResult(), stack)){ - toRemove.add(recipe); + recipes.add(recipe); } } - for (KilnRecipe aRecipe : toRemove){ - TFCHelper.kilnRecipes.remove(aRecipe); - } + super.apply(); } } diff --git a/src/main/java/modtweaker2/mods/tfcraft/handlers/Quern.java b/src/main/java/modtweaker2/mods/tfcraft/handlers/Quern.java index 4a00480..f5271d4 100644 --- a/src/main/java/modtweaker2/mods/tfcraft/handlers/Quern.java +++ b/src/main/java/modtweaker2/mods/tfcraft/handlers/Quern.java @@ -44,17 +44,27 @@ public class Quern { @Override public void apply() { - ArrayList toRemove = new ArrayList(); for (QuernRecipe recipe : QuernManager.getInstance().getRecipes()){ if (recipe.getResult() !=null && areEqual(recipe.getResult(), stack)){ - toRemove.add(recipe); + recipes.add(recipe); } } - for (QuernRecipe aRecipe : toRemove){ - TFCHelper.quernRecipes.remove(aRecipe); - TFCHelper.quernVaildItems.remove(aRecipe.getInItem()); + + for (Object aRecipe : recipes){ + TFCHelper.quernVaildItems.remove(((QuernRecipe)aRecipe).getInItem()); } + + super.apply(); } + + @Override + public void undo() { + for (Object aRecipe : recipes){ + TFCHelper.quernVaildItems.add(((QuernRecipe)aRecipe).getInItem()); + } + + super.undo(); + } } } diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Arcane.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Arcane.java index 5c94787..4ef6ba3 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Arcane.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Arcane.java @@ -65,19 +65,15 @@ public class Arcane { @Override public void apply() { - ArrayList recipesToRemove = new ArrayList(); for (Object o : ThaumcraftApi.getCraftingRecipes()) { if (o != null && o instanceof IArcaneRecipe) { IArcaneRecipe r = (IArcaneRecipe) o; if (r.getRecipeOutput() != null && r.getRecipeOutput().isItemEqual(stack)) { - recipesToRemove.add(r); + recipes.add(r); } } } - for (IArcaneRecipe r : recipesToRemove) { - ThaumcraftApi.getCraftingRecipes().remove(r); - } - + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Crucible.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Crucible.java index e35eaee..d441d20 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Crucible.java @@ -54,13 +54,11 @@ public class Crucible { if (o instanceof CrucibleRecipe) { CrucibleRecipe r = (CrucibleRecipe) o; if (r.getRecipeOutput() != null && areEqual(r.getRecipeOutput(), stack)) { - recipe = r; - break; + recipes.add(r); } } } - - ThaumcraftApi.getCraftingRecipes().remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Infusion.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Infusion.java index e3fd350..f8abf8a 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Infusion.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Infusion.java @@ -119,13 +119,11 @@ public class Infusion { if (o instanceof InfusionRecipe) { InfusionRecipe r = (InfusionRecipe) o; if (r.getRecipeOutput() != null && r.getRecipeOutput() instanceof ItemStack && areEqual((ItemStack) r.getRecipeOutput(), stack)) { - recipe = r; - break; + recipes.add(r); } } } - - ThaumcraftApi.getCraftingRecipes().remove(recipe); + super.apply(); } @Override @@ -134,25 +132,25 @@ public class Infusion { } } - private static class RemoveEnchant implements IUndoableAction { + private static class RemoveEnchant extends BaseListRemoval { Enchantment enchant; - InfusionEnchantmentRecipe removed; public RemoveEnchant(Enchantment ench) { + super("Thaumcraft Infusion Enchantment", ThaumcraftApi.getCraftingRecipes()); enchant = ench; } @Override public void apply() { - for (Object recipe : ThaumcraftApi.getCraftingRecipes()) { + for (Object recipe : list) { if (recipe instanceof InfusionEnchantmentRecipe) { InfusionEnchantmentRecipe enchRecipe = (InfusionEnchantmentRecipe) recipe; if (enchRecipe.getEnchantment() == enchant) { - removed = enchRecipe; - ThaumcraftApi.getCraftingRecipes().remove(enchRecipe); + recipes.add(enchRecipe); } } } + super.apply(); } @Override @@ -160,24 +158,9 @@ public class Infusion { return "Removing Infusion Enchantment Recipe: " + enchant.getName(); } - @Override - public boolean canUndo() { - return removed != null; - } - - @Override - public void undo() { - ThaumcraftApi.getCraftingRecipes().add(removed); - } - @Override public String describeUndo() { return "Restoring Infusion Enchantment Recipe: " + enchant.getName(); } - - @Override - public String getOverrideKey() { - return null; - } } } diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java index b0b8edb..5af1a2c 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java @@ -53,23 +53,18 @@ public class Loot { } public static class Remove extends BaseListRemoval { - public Remove(List list, ItemStack stack) { super(list, stack); } @Override public void apply() { - List loot = (List) list; - WeightedRandomLoot remove = null; - for (WeightedRandomLoot stack : loot) { + for (WeightedRandomLoot stack : (List) list) { if (stack.item.isItemEqual(this.stack)) { - remove = stack; - break; + recipes.add(stack); } } - loot.remove(remove); + super.apply(); } - } } diff --git a/src/main/java/modtweaker2/utils/BaseCraftingRemoval.java b/src/main/java/modtweaker2/utils/BaseCraftingRemoval.java index 78a8c53..4fa3b53 100644 --- a/src/main/java/modtweaker2/utils/BaseCraftingRemoval.java +++ b/src/main/java/modtweaker2/utils/BaseCraftingRemoval.java @@ -16,12 +16,10 @@ public class BaseCraftingRemoval extends BaseListRemoval { public void apply() { for (IRecipe r : (List) list) { if (r.getRecipeOutput() != null && r.getRecipeOutput() instanceof ItemStack && areEqual(r.getRecipeOutput(), stack)) { - recipe = r; - break; + recipes.add(r); } } - - list.remove(recipe); + super.apply(); } @Override diff --git a/src/main/java/modtweaker2/utils/BaseListRemoval.java b/src/main/java/modtweaker2/utils/BaseListRemoval.java index d7bcd4c..b6530a5 100644 --- a/src/main/java/modtweaker2/utils/BaseListRemoval.java +++ b/src/main/java/modtweaker2/utils/BaseListRemoval.java @@ -4,6 +4,7 @@ import minetweaker.IUndoableAction; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import java.util.LinkedList; import java.util.List; public abstract class BaseListRemoval implements IUndoableAction { @@ -12,7 +13,7 @@ public abstract class BaseListRemoval implements IUndoableAction { protected final FluidStack fluid; protected final ItemStack stack; - protected Object recipe; + protected final LinkedList recipes = new LinkedList(); public BaseListRemoval(String description, List list, ItemStack stack, FluidStack fluid) { this.list = list; @@ -40,16 +41,24 @@ public abstract class BaseListRemoval implements IUndoableAction { public BaseListRemoval(String description, List list) { this(description, list, null, null); } - + + @Override + public void apply() { + for(Object recipe : recipes) { + list.remove(recipe); + } + } @Override public boolean canUndo() { - return list != null; + return list.size() > 0; } @Override public void undo() { - list.add(recipe); + for(Object recipe : recipes) { + list.add(recipe); + } } public String getRecipeInfo() { @@ -58,19 +67,19 @@ public abstract class BaseListRemoval implements IUndoableAction { @Override public String describe() { - if (recipe instanceof ItemStack) - return "Removing " + description + " Recipe for :" + ((ItemStack) recipe).getDisplayName(); - else if (recipe instanceof FluidStack) - return "Removing " + description + " Recipe for :" + ((FluidStack) recipe).getFluid().getLocalizedName(); + if (recipes.getFirst() instanceof ItemStack) + return "Removing " + description + " Recipe(s) for :" + getItemStackNames(recipes); + else if (recipes.getFirst() instanceof FluidStack) + return "Removing " + description + " Recipe(s) for :" + getFluidStackNames(recipes); else return "Removing " + description + " Recipe for :" + getRecipeInfo(); } @Override public String describeUndo() { - if (recipe instanceof ItemStack) - return "Restoring " + description + " Recipe for :" + ((ItemStack) recipe).getDisplayName(); - else if (recipe instanceof FluidStack) - return "Restoring " + description + " Recipe for :" + ((FluidStack) recipe).getFluid().getLocalizedName(); + if (recipes.getFirst() instanceof ItemStack) + return "Restoring " + description + " Recipe(s) for :" + getItemStackNames(recipes); + else if (recipes.getFirst() instanceof FluidStack) + return "Restoring " + description + " Recipe(s) for :" + getFluidStackNames(recipes); else return "Restoring " + description + " Recipe for :" + getRecipeInfo(); } @@ -78,4 +87,34 @@ public abstract class BaseListRemoval implements IUndoableAction { public Object getOverrideKey() { return null; } + + private String getItemStackNames(LinkedList list) { + if(list.size() == 1) + return ((ItemStack)list.getFirst()).getDisplayName(); + + StringBuilder sb = new StringBuilder(); + + for(Object entry : list) { + sb.append(((ItemStack)entry).getDisplayName()).append(", "); + } + + sb.setLength(sb.length() - 2); + + return sb.toString(); + } + + private String getFluidStackNames(LinkedList list) { + if(list.size() == 1) + return ((FluidStack)list.getFirst()).getFluid().getLocalizedName(); + + StringBuilder sb = new StringBuilder(); + + for(Object entry : list) { + sb.append(((FluidStack)entry).getFluid().getLocalizedName()).append(", "); + } + + sb.setLength(sb.length() - 2); + + return sb.toString(); + } }