From da33cc6fabcd9b14fe11251b438e7ea525d50db0 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Mon, 29 Jun 2015 16:36:35 +0200 Subject: [PATCH 01/31] ModTweaker2 Rework - Revised base classes for IUndoableAction - Reordered lots of code, so stuck actions should be less frequent - Added wildcard support to many "remove" methods - Started working on exist & duplicate checks --- src/main/java/modtweaker2/ClientEvents.java | 3 - src/main/java/modtweaker2/ModTweaker2.java | 5 +- .../java/modtweaker2/helpers/ForgeHelper.java | 5 +- .../java/modtweaker2/helpers/InputHelper.java | 80 ++++- .../java/modtweaker2/helpers/LogHelper.java | 16 + .../java/modtweaker2/helpers/StackHelper.java | 89 +++++- .../mods/appeng/AppliedEnergistics.java | 2 - .../mods/appeng/AppliedEnergisticsHelper.java | 77 +++++ .../mods/appeng/handlers/Grind.java | 116 ++++--- .../mods/appeng/handlers/Inscriber.java | 148 ++++++--- .../auracascade/aura/AuraBracketHandler.java | 6 +- .../mods/auracascade/aura/AuraLogger.java | 5 +- .../mods/auracascade/handlers/Pylon.java | 70 ++-- .../mods/botania/handlers/Apothecary.java | 66 ++-- .../mods/botania/handlers/ElvenTrade.java | 62 ++-- .../mods/botania/handlers/ManaInfusion.java | 60 ++-- .../mods/botania/handlers/RuneAltar.java | 63 ++-- .../mods/exnihilo/handlers/Crucible.java | 31 +- .../mods/exnihilo/handlers/Hammer.java | 6 - .../handlers/ExtendedCrafting.java | 58 ++-- .../factorization/handlers/Crystallizer.java | 78 +++-- .../factorization/handlers/Lacerator.java | 69 ++-- .../factorization/handlers/SlagFurnace.java | 85 ++--- .../mods/forestry/handlers/Carpenter.java | 63 ++-- .../mods/forestry/handlers/Centrifuge.java | 80 +++-- .../mods/forestry/handlers/Fermenter.java | 180 +++++++++-- .../mods/forestry/handlers/Moistener.java | 59 ++-- .../mods/forestry/handlers/Squeezer.java | 58 +++- .../mods/forestry/handlers/Still.java | 57 ++-- .../handlers/ThermionicFabricator.java | 159 +++++----- .../mods/fsp/handlers/Crucible.java | 121 ++++--- .../mods/fsp/handlers/Furnace.java | 57 ++-- .../mods/mariculture/MaricultureHelper.java | 5 +- .../mods/mariculture/handlers/Anvil.java | 52 ++- .../mods/mariculture/handlers/Casting.java | 68 ++-- .../mods/mariculture/handlers/Crucible.java | 124 +++++--- .../mods/mariculture/handlers/Fishing.java | 9 +- .../mods/mariculture/handlers/Vat.java | 126 ++++---- .../modtweaker2/mods/mekanism/Mekanism.java | 110 +++---- .../mods/mekanism/MekanismHelper.java | 54 ++-- .../handlers/ChemicalCrystallizer.java | 68 ++-- .../handlers/ChemicalDissolution.java | 180 +++++------ .../mekanism/handlers/ChemicalInfuser.java | 72 ++--- .../mekanism/handlers/ChemicalInjection.java | 76 ++--- .../mekanism/handlers/ChemicalOxidizer.java | 72 ++--- .../mekanism/handlers/ChemicalWasher.java | 130 ++++---- .../mods/mekanism/handlers/Combiner.java | 70 ++-- .../mods/mekanism/handlers/Compressor.java | 70 ++-- .../mods/mekanism/handlers/Crusher.java | 64 ++-- .../mods/mekanism/handlers/Enrichment.java | 64 ++-- .../mods/mekanism/handlers/Purification.java | 124 ++++---- .../mods/mekanism/handlers/Reaction.java | 84 ++--- .../mods/mekanism/handlers/Sawmill.java | 122 +++---- .../mods/mekanism/handlers/Separator.java | 144 ++++----- .../handlers/v8/ChemicalCrystallizer.java | 168 +++++----- .../handlers/v8/ChemicalDissolution.java | 168 +++++----- .../mekanism/handlers/v8/ChemicalInfuser.java | 170 +++++----- .../handlers/v8/ChemicalInjection.java | 172 +++++----- .../mods/mekanism/handlers/v8/Infuser.java | 180 +++++------ .../mods/mekanism/util/AddMekanismRecipe.java | 134 ++++---- .../mekanism/util/RemoveMekanismRecipe.java | 300 +++++++++--------- .../mods/metallurgy/handlers/Alloyer.java | 60 ++-- .../mods/metallurgy/handlers/Crusher.java | 49 ++- .../pneumaticcraft/handlers/Assembly.java | 69 ++-- .../pneumaticcraft/handlers/Pressure.java | 67 ++-- .../mods/railcraft/handlers/BlastFurnace.java | 63 ++-- .../mods/railcraft/handlers/CokeOven.java | 47 +-- .../mods/railcraft/handlers/RockCrusher.java | 64 ++-- .../railcraft/handlers/RollingMachine.java | 44 +-- .../mods/tconstruct/TConstructHelper.java | 21 +- .../mods/tconstruct/handlers/Casting.java | 126 ++++---- .../mods/tconstruct/handlers/Drying.java | 61 ++-- .../mods/tconstruct/handlers/Modifiers.java | 39 ++- .../mods/tconstruct/handlers/Smeltery.java | 118 +++++-- .../mods/tconstruct/handlers/TiCTweaks.java | 65 ++-- .../mods/tfcraft/handlers/Anvil.java | 112 ++++--- .../mods/tfcraft/handlers/Barrel.java | 103 +++--- .../mods/tfcraft/handlers/Kiln.java | 60 ++-- .../mods/tfcraft/handlers/Quern.java | 91 ++++-- .../mods/thaumcraft/Thaumcraft.java | 2 +- .../mods/thaumcraft/handlers/Arcane.java | 91 +++--- .../mods/thaumcraft/handlers/Aspects.java | 21 +- .../mods/thaumcraft/handlers/Crucible.java | 77 +++-- .../mods/thaumcraft/handlers/Infusion.java | 199 ++++++------ .../mods/thaumcraft/handlers/Loot.java | 77 +++-- .../mods/thaumcraft/handlers/Research.java | 1 - .../mods/thaumcraft/handlers/Warp.java | 1 - .../mods/thaumcraft/research/AddPage.java | 3 +- .../thaumcraft/research/RefreshResearch.java | 3 +- .../research/commands/ResearchLogger.java | 4 +- .../thermalexpansion/handlers/Crucible.java | 4 +- .../thermalexpansion/handlers/Furnace.java | 1 - .../thermalexpansion/handlers/Pulverizer.java | 1 - .../thermalexpansion/handlers/Sawmill.java | 1 - .../thermalexpansion/handlers/Smelter.java | 8 +- .../thermalexpansion/handlers/Transposer.java | 8 +- .../java/modtweaker2/utils/ArrayUtils.java | 2 - .../utils/BaseCraftingAddition.java | 64 +--- .../utils/BaseCraftingRemoval.java | 52 +-- .../utils/BaseDescriptionAddition.java | 36 --- .../utils/BaseDescriptionRemoval.java | 35 -- .../modtweaker2/utils/BaseListAddition.java | 110 +++---- .../utils/BaseListModification.java | 118 +++++++ .../modtweaker2/utils/BaseListRemoval.java | 184 ++++------- .../modtweaker2/utils/BaseMapAddition.java | 124 ++++---- .../utils/BaseMapModification.java | 50 +++ .../modtweaker2/utils/BaseMapRemoval.java | 119 ++++--- .../utils/BaseMultiModification.java | 50 +++ .../utils/BaseMultipleListRemoval.java | 83 ----- .../java/modtweaker2/utils/BaseSetVar.java | 57 ---- .../java/modtweaker2/utils/BaseUndoable.java | 57 +++- .../java/modtweaker2/utils/TweakerPlugin.java | 2 - 112 files changed, 4596 insertions(+), 3522 deletions(-) create mode 100644 src/main/java/modtweaker2/mods/appeng/AppliedEnergisticsHelper.java delete mode 100644 src/main/java/modtweaker2/utils/BaseDescriptionAddition.java delete mode 100644 src/main/java/modtweaker2/utils/BaseDescriptionRemoval.java create mode 100644 src/main/java/modtweaker2/utils/BaseListModification.java create mode 100644 src/main/java/modtweaker2/utils/BaseMapModification.java create mode 100644 src/main/java/modtweaker2/utils/BaseMultiModification.java delete mode 100644 src/main/java/modtweaker2/utils/BaseMultipleListRemoval.java delete mode 100644 src/main/java/modtweaker2/utils/BaseSetVar.java diff --git a/src/main/java/modtweaker2/ClientEvents.java b/src/main/java/modtweaker2/ClientEvents.java index 233b51d..abcfb4f 100644 --- a/src/main/java/modtweaker2/ClientEvents.java +++ b/src/main/java/modtweaker2/ClientEvents.java @@ -4,11 +4,8 @@ import static modtweaker2.helpers.LogHelper.print; import minetweaker.api.item.IItemStack; import minetweaker.api.minecraft.MineTweakerMC; import minetweaker.api.player.IPlayer; -import modtweaker2.utils.TweakerPlugin; import net.minecraft.client.Minecraft; import net.minecraft.client.settings.GameSettings; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.event.entity.player.ItemTooltipEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; diff --git a/src/main/java/modtweaker2/ModTweaker2.java b/src/main/java/modtweaker2/ModTweaker2.java index 27cc611..ee0b502 100644 --- a/src/main/java/modtweaker2/ModTweaker2.java +++ b/src/main/java/modtweaker2/ModTweaker2.java @@ -2,10 +2,8 @@ package modtweaker2; import java.io.File; -import minetweaker.MineTweakerAPI; import minetweaker.MineTweakerImplementationAPI; import minetweaker.MineTweakerImplementationAPI.ReloadEvent; -import minetweaker.mc1710.MineTweakerMod; import minetweaker.runtime.providers.ScriptProviderDirectory; import minetweaker.util.IEventHandler; import modtweaker2.mods.appeng.AppliedEnergistics; @@ -18,7 +16,6 @@ import modtweaker2.mods.factorization.Factorization; import modtweaker2.mods.forestry.Forestry; import modtweaker2.mods.fsp.Steamcraft; import modtweaker2.mods.mariculture.Mariculture; -import modtweaker2.mods.mekanism.Mekanism; import modtweaker2.mods.metallurgy.Metallurgy; import modtweaker2.mods.pneumaticcraft.PneumaticCraft; import modtweaker2.mods.railcraft.Railcraft; @@ -74,7 +71,7 @@ public class ModTweaker2 { TweakerPlugin.register("extendedWorkbench", ExtendedWorkbench.class); TweakerPlugin.register("factorization", Factorization.class); TweakerPlugin.register("Mariculture", Mariculture.class); - TweakerPlugin.register("Mekanism", Mekanism.class); +// TweakerPlugin.register("Mekanism", Mekanism.class); TweakerPlugin.register("Metallurgy", Metallurgy.class); TweakerPlugin.register("PneumaticCraft", PneumaticCraft.class); TweakerPlugin.register("Railcraft", Railcraft.class); diff --git a/src/main/java/modtweaker2/helpers/ForgeHelper.java b/src/main/java/modtweaker2/helpers/ForgeHelper.java index fc39853..4b1ec70 100644 --- a/src/main/java/modtweaker2/helpers/ForgeHelper.java +++ b/src/main/java/modtweaker2/helpers/ForgeHelper.java @@ -1,11 +1,12 @@ package modtweaker2.helpers; +import static modtweaker2.helpers.ReflectionHelper.getFinalObject; +import static modtweaker2.helpers.ReflectionHelper.getStaticObject; + import java.lang.reflect.Constructor; import java.util.HashMap; import java.util.List; import java.util.Map; -import static modtweaker2.helpers.ReflectionHelper.*; - import net.minecraft.item.ItemStack; import net.minecraft.util.StatCollector; diff --git a/src/main/java/modtweaker2/helpers/InputHelper.java b/src/main/java/modtweaker2/helpers/InputHelper.java index 4f2b552..39d9f0c 100644 --- a/src/main/java/modtweaker2/helpers/InputHelper.java +++ b/src/main/java/modtweaker2/helpers/InputHelper.java @@ -2,13 +2,16 @@ package modtweaker2.helpers; import java.util.ArrayList; -import minetweaker.MineTweakerAPI; import minetweaker.api.entity.IEntity; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; import minetweaker.api.oredict.IOreDictEntry; +import minetweaker.mc1710.data.NBTConverter; +import minetweaker.mc1710.item.MCItemStack; +import minetweaker.mc1710.liquid.MCLiquidStack; import net.minecraft.entity.Entity; +import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; @@ -18,11 +21,55 @@ import net.minecraftforge.fluids.FluidStack; public class InputHelper { public static boolean isABlock(IItemStack block) { if (!(isABlock(toStack(block)))) { - MineTweakerAPI.getLogger().logError("Item must be a block, or you must specify a block to render as when adding a TConstruct Melting recipe"); + LogHelper.logError("Item must be a block, or you must specify a block to render as when adding a TConstruct Melting recipe"); return false; } else return true; } + + /** + * Returns a string representation of the item which can also be used in scripts + */ + public static String getStackDescription(ItemStack stack) { + if(stack != null) { + StringBuilder sb = new StringBuilder(); + + // Creates a name like or + sb.append('<'); + sb.append(Item.itemRegistry.getNameForObject(stack.getItem())); + if(stack.getItemDamage() == 32767) { + sb.append(":*"); + } else if (stack.getItemDamage() > 0) { + sb.append(":").append(stack.getItemDamage()); + } + sb.append('>'); + + // Do we have a tag? (e.g. .withTag({}) ) + if(stack.getTagCompound() != null) + { + sb.append(".withTag("); + sb.append(NBTConverter.from(stack.getTagCompound(), true)); + sb.append(')'); + } + + // Do we have a stack size > 1? + if(stack.stackSize > 1) { + sb.append(" * ").append(stack.stackSize); + } + + return sb.toString(); + } else { + return "null object"; + } + } + + public static String getStackDescription(FluidStack stack) { + if(stack != null) { + return ""; + } else { + return "null object"; + } + } public static IItemStack[] toStacks(IIngredient[] iIngredient) { ArrayList stacks = new ArrayList(); @@ -52,12 +99,39 @@ public class InputHelper { else { Object internal = iStack.getInternal(); if (internal == null || !(internal instanceof ItemStack)) { - MineTweakerAPI.getLogger().logError("Not a valid item stack: " + iStack); + LogHelper.logError("Not a valid item stack: " + iStack); } return (ItemStack) internal; } } + + public static IIngredient toIngredient(ItemStack stack) { + return toIItemStack(stack); + } + + public static IIngredient toIngredient(FluidStack stack) { + if(stack == null) + return null; + + return new MCLiquidStack(stack); + } + + public static IItemStack toIItemStack(ItemStack stack) { + if(stack == null) { + return null; + } + + return new MCItemStack(stack); + } + + public static ILiquidStack toILiquidStack(FluidStack stack) { + if(stack == null) { + return null; + } + + return new MCLiquidStack(stack); + } public static ItemStack[] toStacks(IItemStack[] iStack) { if (iStack == null) diff --git a/src/main/java/modtweaker2/helpers/LogHelper.java b/src/main/java/modtweaker2/helpers/LogHelper.java index f3adf57..cc8b444 100644 --- a/src/main/java/modtweaker2/helpers/LogHelper.java +++ b/src/main/java/modtweaker2/helpers/LogHelper.java @@ -21,4 +21,20 @@ public class LogHelper { System.out.println(string); MineTweakerAPI.logCommand(string); } + + public static void logError(String message) { + MineTweakerAPI.logError("[ModTweaker2] " + message); + } + + public static void logError(String message, Throwable exception) { + MineTweakerAPI.logError("[ModTweaker2] " + message, exception); + } + + public static void logWarning(String message) { + MineTweakerAPI.logWarning("[ModTweaker2] " + message); + } + + public static void logInfo(String message) { + MineTweakerAPI.logInfo("[ModTweaker2] " + message); + } } diff --git a/src/main/java/modtweaker2/helpers/StackHelper.java b/src/main/java/modtweaker2/helpers/StackHelper.java index 77529ed..694e84c 100644 --- a/src/main/java/modtweaker2/helpers/StackHelper.java +++ b/src/main/java/modtweaker2/helpers/StackHelper.java @@ -1,19 +1,90 @@ package modtweaker2.helpers; -//import modtweaker2.mods.botania.Botania; +import static modtweaker2.helpers.InputHelper.toStack; +import minetweaker.api.item.IIngredient; +import minetweaker.api.item.IItemStack; +import minetweaker.api.liquid.ILiquidStack; import modtweaker2.mods.botania.Botania; import modtweaker2.utils.TweakerPlugin; import net.minecraft.item.ItemStack; public class StackHelper { - // Stack is the stack that is part of a recipe, stack2 is the one input - // trying to match - public static boolean areEqual(ItemStack stack, ItemStack stack2) { - if (stack == null || stack2 == null) + /** + * Compares two ItemStack instances, trying to match the referenced item. + */ + public static boolean areEqual(ItemStack stack1, ItemStack stack2) { + if (stack1 == null || stack2 == null) { return false; - else if (TweakerPlugin.isLoaded("Botania") && Botania.isSubtile(stack) && Botania.isSubtile(stack2)) { - return Botania.subtileMatches(stack, stack2); - } else - return stack.isItemEqual(stack2); + } else if (TweakerPlugin.isLoaded("Botania") && Botania.isSubtile(stack1) && Botania.isSubtile(stack2)) { + return Botania.subtileMatches(stack1, stack2); + } else { + return stack1.isItemEqual(stack2); + } } + + /** + * Compares two ItemStack instances if they reference the same object or + * are both null. If false, the method areEqual() is called to check if the + * two instances reference the same item. + */ + public static boolean areEqualOrNull(ItemStack stack1, ItemStack stack2) { + // Check if they reference the same object or are are both null + if(stack1 == stack2) { + return true; + } + + return(areEqual(stack1, stack2)); + } + + /** + * Adds extra check to IIngredient matches() for Botania special flowers + */ + public static boolean matches(IIngredient ingredient, IItemStack itemStack) { + if(ingredient == null) { + return false; + } + + if(!ingredient.matches(itemStack)) { + return false; + } + + // Do we have a wildcard (<*>) or an actual item? + if(ingredient.getItems() != null) { + for(IItemStack item : ingredient.getItems()) { + if(areEqual(toStack(item), toStack(itemStack))) { + return true; + } + } + } else { + return true; + } + + return false; + } + + /** + * This function compares an ingredient with a fluid. MCLiquidStack.matches() function + * is currently broken in MineTweaker3, thus this function is only a workaround. + */ + public static boolean matches(IIngredient ingredient, ILiquidStack liquidStack) { + if(ingredient == null) { + return false; + } + + // Do we have a wildcard (<*>) ? + if(ingredient.matches(liquidStack)) { + return true; + } + + // Does ingredient reference liquids? + if(ingredient.getLiquids() != null) { + for (ILiquidStack liquid : ingredient.getLiquids()) { + if(InputHelper.toFluid(liquid).isFluidEqual(InputHelper.toFluid(liquidStack))) { + return true; + } + } + } + + return false; + } } diff --git a/src/main/java/modtweaker2/mods/appeng/AppliedEnergistics.java b/src/main/java/modtweaker2/mods/appeng/AppliedEnergistics.java index abeb0a1..42ba6af 100644 --- a/src/main/java/modtweaker2/mods/appeng/AppliedEnergistics.java +++ b/src/main/java/modtweaker2/mods/appeng/AppliedEnergistics.java @@ -9,7 +9,5 @@ public class AppliedEnergistics { public AppliedEnergistics() { MineTweakerAPI.registerClass(Inscriber.class); MineTweakerAPI.registerClass(Grind.class); - } - } diff --git a/src/main/java/modtweaker2/mods/appeng/AppliedEnergisticsHelper.java b/src/main/java/modtweaker2/mods/appeng/AppliedEnergisticsHelper.java new file mode 100644 index 0000000..c1579d1 --- /dev/null +++ b/src/main/java/modtweaker2/mods/appeng/AppliedEnergisticsHelper.java @@ -0,0 +1,77 @@ +package modtweaker2.mods.appeng; + +import static modtweaker2.helpers.StackHelper.areEqualOrNull; +import net.minecraft.item.ItemStack; +import appeng.api.features.IGrinderEntry; +import appeng.api.features.IInscriberRecipe; + +public class AppliedEnergisticsHelper { + /** + * Compares two IInscriberRecipe objects, if they are the same or have the same inputs + */ + public static boolean equals(IInscriberRecipe r1, IInscriberRecipe r2) { + if(r1 == r2) { + return true; + } + + if (r1 == null || r2 == null) { + return false; + } + + if(!areEqualOrNull(r1.getTopOptional().orNull(), r2.getTopOptional().orNull())) { + return false; + } + + if(!areEqualOrNull(r1.getBottomOptional().orNull(), r2.getBottomOptional().orNull())) { + return false; + } + + if(r1.getInputs() == null && r2.getInputs() != null || r1.getInputs() != null && r2.getInputs() == null) { + return false; + } + + if(r1.getInputs() != null && r2.getInputs() != null) { + if(r1.getInputs().size() != r2.getInputs().size()) { + return false; + } + + // Check if every item in recipe 1 is in recipe 2 + for(ItemStack i1 : r1.getInputs()) { + boolean found = false; + + for(ItemStack i2 : r2.getInputs()) { + if(areEqualOrNull(i1, i2)) { + found = true; + } + } + + if(!found) { + return false; + } + } + } + + return true; + } + + /** + * Compares two IGrinderEntry objects, if they are the same or have the same inputs + */ + public static boolean equals(IGrinderEntry r1, IGrinderEntry r2) { + if(r1 == r2) { + return true; + } + + if (r1 == null || r2 == null) { + return false; + } + + if(!areEqualOrNull(r1.getInput(), r2.getInput())) { + return false; + } + + return true; + } + + +} diff --git a/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java b/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java index c4cdd5e..578765f 100644 --- a/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java +++ b/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java @@ -1,14 +1,20 @@ package modtweaker2.mods.appeng.handlers; -import java.util.ArrayList; -import java.util.List; +import static modtweaker2.helpers.InputHelper.getStackDescription; +import static modtweaker2.helpers.InputHelper.toIngredient; +import static modtweaker2.helpers.InputHelper.toStack; + +import java.util.LinkedList; -import net.minecraft.item.ItemStack; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.mods.appeng.AppliedEnergisticsHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import appeng.api.AEApi; @@ -17,49 +23,83 @@ import appeng.core.features.registries.entries.AppEngGrinderRecipe; @ZenClass("mods.appeng.Grinder") public class Grind { + + protected static final String name = "Applied Energistics 2 Grinder"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void addRecipe(IItemStack input, IItemStack output, int energy, @Optional IItemStack output2, @Optional float chance2, @Optional IItemStack output3, @Optional float chance3) { + // Create recipe + IGrinderEntry recipe; + + if(output2 != null && output3 != null) + recipe = new AppEngGrinderRecipe(InputHelper.toStack(input), InputHelper.toStack(output), InputHelper.toStack(output2), InputHelper.toStack(output3), chance2, chance3, energy); + else if(output2 != null) + recipe = new AppEngGrinderRecipe(InputHelper.toStack(input), InputHelper.toStack(output), InputHelper.toStack(output2), chance2, energy); + else + recipe = new AppEngGrinderRecipe(InputHelper.toStack(input), InputHelper.toStack(output), energy); + + // Check if the recipe is already present, we don't want to add duplicates + for(IGrinderEntry r : AEApi.instance().registries().grinder().getRecipes()) { + if(r != null && AppliedEnergisticsHelper.equals(r, recipe)) { + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", Grind.name, InputHelper.getStackDescription(toStack(input)))); + return; + } + } + + MineTweakerAPI.apply(new Add(recipe)); + } + + private static class Add extends BaseListAddition { + + public Add(IGrinderEntry recipe) { + super(Grind.name, AEApi.instance().registries().grinder().getRecipes()); + recipes.add(recipe); + } + + @Override + public String getRecipeInfo(IGrinderEntry recipe) { + return getStackDescription(recipe.getInput()); + } + + @Override + protected boolean equals(IGrinderEntry recipe, IGrinderEntry otherRecipe) { + return AppliedEnergisticsHelper.equals(recipe, otherRecipe); + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod - public static void addRecipe(IItemStack input, IItemStack output, int energy) { - MineTweakerAPI.apply(new Add(new AppEngGrinderRecipe(InputHelper.toStack(input), InputHelper.toStack(output), energy))); + public static void removeRecipe(IIngredient output) { + // Get list of existing recipes, matching with parameter + LinkedList result = new LinkedList(); + + for(IGrinderEntry entry : AEApi.instance().registries().grinder().getRecipes()) { + if(entry != null && entry.getOutput() != null && output.contains(toIngredient(entry.getOutput()))) { + result.add(entry); + } + } + + // Check if we found the recipes and apply the action + if(!result.isEmpty()) { + MineTweakerAPI.apply(new Remove(result)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Grind.name, output.toString())); + } } - private static class Add extends BaseListAddition { - - public Add(AppEngGrinderRecipe recipe) { - super(AEApi.instance().registries().grinder().getRecipes(), recipe); + private static class Remove extends BaseListRemoval { + public Remove(LinkedList recipes) { + super(Grind.name, AEApi.instance().registries().grinder().getRecipes(), recipes); } @Override - public void apply() { - AEApi.instance().registries().grinder().getRecipes().add((AppEngGrinderRecipe) recipe); + public String getRecipeInfo(IGrinderEntry recipe) { + return getStackDescription(recipe.getOutput()); } } - @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); - } - - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Applied Energistics 2 Grinder", AEApi.instance().registries().grinder().getRecipes(), stack); - } - - @Override - public void apply() { - for (IGrinderEntry r : AEApi.instance().registries().grinder().getRecipes()) { - if (r.getOutput().isItemEqual(stack)) { - recipes.add(r); - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return stack.getDisplayName(); - } - - } - } \ No newline at end of file diff --git a/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java b/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java index 6f1893d..fae2561 100644 --- a/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java +++ b/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java @@ -1,77 +1,151 @@ package modtweaker2.mods.appeng.handlers; +import static modtweaker2.helpers.InputHelper.getStackDescription; +import static modtweaker2.helpers.InputHelper.toIngredient; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.InputHelper.toStacks; -import java.util.ArrayList; +import java.util.LinkedList; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.mods.appeng.AppliedEnergisticsHelper; import modtweaker2.utils.ArrayUtils; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import appeng.api.AEApi; import appeng.api.features.IInscriberRecipe; import appeng.api.features.InscriberProcessType; import appeng.core.features.registries.entries.InscriberRecipe; -import appeng.recipes.handlers.Inscribe; @ZenClass("mods.appeng.Inscriber") public class Inscriber { + + protected static final String name = "Applied Energistics 2 Inscriber"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(IItemStack[] imprintable, IItemStack plateA, IItemStack plateB, IItemStack out, String type) { - MineTweakerAPI.apply(new Add(new InscriberRecipe(ArrayUtils.toArrayList(toStacks(imprintable)), toStack(out), toStack(plateA), toStack(plateB), InscriberProcessType.valueOf(type)))); - for (IItemStack stack : imprintable) { - AEApi.instance().registries().inscriber().getInputs().add(toStack(stack)); - - } - if (plateA != null) - AEApi.instance().registries().inscriber().getOptionals().add(toStack(plateA)); - - if (plateB != null) - AEApi.instance().registries().inscriber().getOptionals().add(toStack(plateB)); - + // Create recipe + IInscriberRecipe recipe = new InscriberRecipe(ArrayUtils.toArrayList(toStacks(imprintable)), toStack(out), toStack(plateA), toStack(plateB), InscriberProcessType.valueOf(type)); + + // Check if the recipe is already present, we don't want to add duplicates + for(IInscriberRecipe r : AEApi.instance().registries().inscriber().getRecipes()) { + if(r != null && AppliedEnergisticsHelper.equals(r, recipe)) { + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", Inscriber.name, InputHelper.getStackDescription(toStack(out)))); + return; + } + } + + MineTweakerAPI.apply(new Add(recipe)); } - public static class Add extends BaseListAddition { - + public static class Add extends BaseListAddition { public Add(IInscriberRecipe recipe) { - super(recipe.toString(), AEApi.instance().registries().inscriber().getRecipes(), recipe); + super(Inscriber.name, AEApi.instance().registries().inscriber().getRecipes()); + recipes.add(recipe); } @Override public void apply() { - AEApi.instance().registries().inscriber().addRecipe((IInscriberRecipe) recipe); - } + if(recipes.isEmpty()) { + return; + } + for(IInscriberRecipe recipe : recipes) { + try { + AEApi.instance().registries().inscriber().addRecipe(recipe); + successful.add(recipe); + } catch (Exception ex) { LogHelper.logError("Error adding inscriber recipe.", ex); } + } + } + + @Override + public void undo() { + if(successful.isEmpty()) { + return; + } + + for(IInscriberRecipe recipe : successful) { + try { + AEApi.instance().registries().inscriber().removeRecipe(recipe); + } catch (Exception ex) { LogHelper.logError("Error removing inscriber recipe.", ex); } + } + } + + @Override + public String getRecipeInfo(IInscriberRecipe recipe) { + return getStackDescription(recipe.getOutput()); + } + + @Override + protected boolean equals(IInscriberRecipe recipe, IInscriberRecipe otherRecipe) { + return AppliedEnergisticsHelper.equals(recipe, otherRecipe); + } } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output))); + public static void removeRecipe(IIngredient output) { + // Get list of existing recipes, matching with parameter + LinkedList result = new LinkedList(); + + for(IInscriberRecipe entry : AEApi.instance().registries().inscriber().getRecipes()) { + if(entry != null && entry.getOutput() != null && output.contains(toIngredient(entry.getOutput()))) { + result.add(entry); + } + } + + // Check if we found the recipes and apply the action + if(!result.isEmpty()) { + MineTweakerAPI.apply(new Remove(result)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Inscriber.name, output.toString())); + } } - public static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Applied Energistics 2 Inscriber", AEApi.instance().registries().inscriber().getRecipes(), stack); - } - - @Override - public void apply() { - for (IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes()) { - if (recipe != null && recipe.getOutput() != null && recipe.getOutput().isItemEqual(stack)) { - recipes.add(recipe); - } - } - super.apply(); + public static class Remove extends BaseListRemoval { + public Remove(LinkedList recipes) { + super(Inscriber.name, AEApi.instance().registries().inscriber().getRecipes(), recipes); } - @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + @Override + public void apply() { + if(this.recipes.isEmpty()) { + return; + } + + for(IInscriberRecipe recipe : recipes) { + try { + AEApi.instance().registries().inscriber().removeRecipe(recipe); + successful.add(recipe); + } catch (Exception ex) { LogHelper.logError("Error removing inscriber recipe.", ex); } + } + } + + @Override + public void undo() { + if(successful.isEmpty()) { + return; + } + + for(IInscriberRecipe recipe : successful) { + try { + AEApi.instance().registries().inscriber().addRecipe(recipe); + } catch (Exception ex) { LogHelper.logError("Error restoring inscriber recipe.", ex); } + } + } + + @Override + public String getRecipeInfo(IInscriberRecipe recipe) { + return getStackDescription(recipe.getOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/auracascade/aura/AuraBracketHandler.java b/src/main/java/modtweaker2/mods/auracascade/aura/AuraBracketHandler.java index 2b9c989..d773a5f 100644 --- a/src/main/java/modtweaker2/mods/auracascade/aura/AuraBracketHandler.java +++ b/src/main/java/modtweaker2/mods/auracascade/aura/AuraBracketHandler.java @@ -2,8 +2,6 @@ package modtweaker2.mods.auracascade.aura; import java.util.List; -import mekanism.api.gas.Gas; -import mekanism.api.gas.GasRegistry; import minetweaker.IBracketHandler; import minetweaker.MineTweakerAPI; import minetweaker.annotations.BracketHandler; @@ -56,8 +54,8 @@ public class AuraBracketHandler implements IBracketHandler { } private IZenSymbol find(IEnvironmentGlobal environment, List tokens, int startIndex, int endIndex) { - StringBuilder valueBuilder = new StringBuilder(); -// } + //StringBuilder valueBuilder = new StringBuilder(); + for (EnumAura a : EnumAura.values()) { for (int i = startIndex; i < endIndex; i++) { Token token = tokens.get(i); diff --git a/src/main/java/modtweaker2/mods/auracascade/aura/AuraLogger.java b/src/main/java/modtweaker2/mods/auracascade/aura/AuraLogger.java index f53b9bd..aaf62bd 100644 --- a/src/main/java/modtweaker2/mods/auracascade/aura/AuraLogger.java +++ b/src/main/java/modtweaker2/mods/auracascade/aura/AuraLogger.java @@ -1,14 +1,11 @@ package modtweaker2.mods.auracascade.aura; -import java.util.Set; - -import pixlepix.auracascade.data.EnumAura; import minetweaker.MineTweakerAPI; import minetweaker.MineTweakerImplementationAPI; import minetweaker.api.player.IPlayer; import minetweaker.api.server.ICommandFunction; import modtweaker2.ModTweaker2; -import net.minecraft.entity.EntityList; +import pixlepix.auracascade.data.EnumAura; public class AuraLogger implements ICommandFunction { diff --git a/src/main/java/modtweaker2/mods/auracascade/handlers/Pylon.java b/src/main/java/modtweaker2/mods/auracascade/handlers/Pylon.java index 33954c4..1cba0a8 100644 --- a/src/main/java/modtweaker2/mods/auracascade/handlers/Pylon.java +++ b/src/main/java/modtweaker2/mods/auracascade/handlers/Pylon.java @@ -1,16 +1,20 @@ package modtweaker2.mods.auracascade.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import java.util.ArrayList; +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.mods.auracascade.AuraCascadeHelper; import modtweaker2.mods.auracascade.aura.IAuraStack; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraft.item.ItemStack; import pixlepix.auracascade.data.recipe.PylonRecipe; import pixlepix.auracascade.data.recipe.PylonRecipeComponent; import pixlepix.auracascade.data.recipe.PylonRecipeRegistry; @@ -19,7 +23,11 @@ import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.auraCascade.Pylon") public class Pylon { + + protected static final String name = "Aura Cascade Pylon"; + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(IItemStack ouput, IAuraStack stack, IItemStack input) { addRecipe(ouput, stack, input, stack, input, stack, input, stack, input); @@ -27,37 +35,53 @@ public class Pylon { @ZenMethod public static void addRecipe(IItemStack ouput, IAuraStack aura1, IItemStack input1, IAuraStack aura2, IItemStack input2, IAuraStack aura3, IItemStack input3, IAuraStack aura4, IItemStack input4) { - MineTweakerAPI.apply(new Add(new PylonRecipe(toStack(ouput), new PylonRecipeComponent(AuraCascadeHelper.toAura(aura1), toStack(input1)), new PylonRecipeComponent(AuraCascadeHelper.toAura(aura2), toStack(input2)), new PylonRecipeComponent(AuraCascadeHelper.toAura(aura3), toStack(input3)), new PylonRecipeComponent(AuraCascadeHelper.toAura(aura1), toStack(input4))))); + List recipes = new LinkedList(); + + recipes.add(new PylonRecipe(toStack(ouput), new PylonRecipeComponent(AuraCascadeHelper.toAura(aura1), toStack(input1)), new PylonRecipeComponent(AuraCascadeHelper.toAura(aura2), toStack(input2)), new PylonRecipeComponent(AuraCascadeHelper.toAura(aura3), toStack(input3)), new PylonRecipeComponent(AuraCascadeHelper.toAura(aura1), toStack(input4)))); + + MineTweakerAPI.apply(new Add(recipes)); } - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { - public Add(PylonRecipe recipe) { - super(PylonRecipeRegistry.recipes, recipe); + public Add(List recipes) { + super(Pylon.name, PylonRecipeRegistry.recipes, recipes); } - + + @Override + protected String getRecipeInfo(PylonRecipe recipe) { + return InputHelper.getStackDescription(recipe.result); + } } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack ouput) { - MineTweakerAPI.apply(new Remove(toStack(ouput))); + public static void removeRecipe(IIngredient output) { + List recipes = new LinkedList(); + + for (PylonRecipe r : PylonRecipeRegistry.recipes) { + if (output.matches(toIItemStack(r.result))) { + recipes.add(r); + } + } + + // Check if we found the recipes and apply the action + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Pylon.name, output.toString())); + } } - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super(PylonRecipeRegistry.recipes, stack); - } - - @Override - public void apply() { - for (PylonRecipe r : PylonRecipeRegistry.recipes) { - if (r.result.isItemEqual(stack)) { - recipes.add(r); - } - } - - super.apply(); + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(Pylon.name, PylonRecipeRegistry.recipes, recipes); } + @Override + protected String getRecipeInfo(PylonRecipe recipe) { + return InputHelper.getStackDescription(recipe.result); + } } } diff --git a/src/main/java/modtweaker2/mods/botania/handlers/Apothecary.java b/src/main/java/modtweaker2/mods/botania/handlers/Apothecary.java index 4d2433b..6e14090 100644 --- a/src/main/java/modtweaker2/mods/botania/handlers/Apothecary.java +++ b/src/main/java/modtweaker2/mods/botania/handlers/Apothecary.java @@ -1,14 +1,20 @@ package modtweaker2.mods.botania.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toObjects; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import vazkii.botania.api.BotaniaAPI; @@ -17,6 +23,11 @@ import vazkii.botania.common.item.block.ItemBlockSpecialFlower; @ZenClass("mods.botania.Apothecary") public class Apothecary { + + protected static final String name = "Botania Petal"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(IItemStack output, IIngredient[] input) { MineTweakerAPI.apply(new Add(new RecipePetals(toStack(output), toObjects(input)))); @@ -24,50 +35,55 @@ public class Apothecary { @ZenMethod public static void addRecipe(String output, IIngredient[] input) { - MineTweakerAPI.apply(new Add(new RecipePetals(ItemBlockSpecialFlower.ofType(output), toObjects(input)))); + addRecipe(toIItemStack(ItemBlockSpecialFlower.ofType(output)), input); } - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(RecipePetals recipe) { - super("Botania Petal Recipe", BotaniaAPI.petalRecipes, recipe); + super("Botania Petal", BotaniaAPI.petalRecipes); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((RecipePetals) recipe).getOutput().getDisplayName(); + public String getRecipeInfo(RecipePetals recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output))); + public static void removeRecipe(IIngredient output) { + // Get list of existing recipes, matching with parameter + LinkedList result = new LinkedList(); + + for(RecipePetals entry : BotaniaAPI.petalRecipes) { + if(entry != null && entry.getOutput() != null && matches(output, toIItemStack(entry.getOutput()))) { + result.add(entry); + } + } + + // Check if we found the recipes and apply the action + if(!result.isEmpty()) { + MineTweakerAPI.apply(new Remove(result)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Apothecary.name, output.toString())); + } } @ZenMethod public static void removeRecipe(String output) { - MineTweakerAPI.apply(new Remove(ItemBlockSpecialFlower.ofType(output))); + removeRecipe(toIItemStack(ItemBlockSpecialFlower.ofType(output))); } - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Botania Petal recipe", BotaniaAPI.petalRecipes, stack); + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(Apothecary.name, BotaniaAPI.petalRecipes, recipes); } @Override - public void apply() { - for (RecipePetals r : BotaniaAPI.petalRecipes) { - if (areEqual(r.getOutput(), stack)) { - recipes.add(r); - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(RecipePetals recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/botania/handlers/ElvenTrade.java b/src/main/java/modtweaker2/mods/botania/handlers/ElvenTrade.java index c64ea40..0260c17 100644 --- a/src/main/java/modtweaker2/mods/botania/handlers/ElvenTrade.java +++ b/src/main/java/modtweaker2/mods/botania/handlers/ElvenTrade.java @@ -1,14 +1,20 @@ package modtweaker2.mods.botania.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toObjects; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import vazkii.botania.api.BotaniaAPI; @@ -16,47 +22,57 @@ import vazkii.botania.api.recipe.RecipeElvenTrade; @ZenClass("mods.botania.ElvenTrade") public class ElvenTrade { + + protected static final String name = "Botania Eleven Trade"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(IItemStack output, IIngredient[] input) { MineTweakerAPI.apply(new Add(new RecipeElvenTrade(toStack(output), toObjects(input)))); } - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(RecipeElvenTrade recipe) { - super("Botania Eleven Trade", BotaniaAPI.elvenTradeRecipes, recipe); + super(ElvenTrade.name, BotaniaAPI.elvenTradeRecipes); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((RecipeElvenTrade) recipe).getOutput().getDisplayName(); + public String getRecipeInfo(RecipeElvenTrade recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output))); + public static void removeRecipe(IIngredient output) { + // Get list of existing recipes, matching with parameter + LinkedList recipes = new LinkedList(); + + for(RecipeElvenTrade entry : BotaniaAPI.elvenTradeRecipes) { + if(entry != null && entry.getOutput() != null && matches(output, toIItemStack(entry.getOutput()))) { + recipes.add(entry); + } + } + + // Check if we found the recipes and apply the action + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", ElvenTrade.name, output.toString())); + } } - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Botania Elven Trade", BotaniaAPI.elvenTradeRecipes, stack); + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(ElvenTrade.name, BotaniaAPI.elvenTradeRecipes, recipes); } @Override - public void apply() { - for (RecipeElvenTrade r : BotaniaAPI.elvenTradeRecipes) { - if (r.getOutput() != null && areEqual(r.getOutput(), stack)) { - recipes.add(r); - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(RecipeElvenTrade recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/botania/handlers/ManaInfusion.java b/src/main/java/modtweaker2/mods/botania/handlers/ManaInfusion.java index 7b06848..f9623f9 100644 --- a/src/main/java/modtweaker2/mods/botania/handlers/ManaInfusion.java +++ b/src/main/java/modtweaker2/mods/botania/handlers/ManaInfusion.java @@ -1,14 +1,20 @@ package modtweaker2.mods.botania.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toObject; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import vazkii.botania.api.BotaniaAPI; @@ -17,6 +23,9 @@ import vazkii.botania.api.recipe.RecipeManaInfusion; @ZenClass("mods.botania.ManaInfusion") public class ManaInfusion { + + protected static final String name = "Botania Mana Infusion"; + @ZenMethod public static void addInfusion(IItemStack output, IIngredient input, int mana) { MineTweakerAPI.apply(new Add(new RecipeManaInfusion(toStack(output), toObject(input), mana))); @@ -36,42 +45,47 @@ public class ManaInfusion { MineTweakerAPI.apply(new Add(recipe)); } - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(RecipeManaInfusion recipe) { - super("Botania Mana Infusion", BotaniaAPI.manaInfusionRecipes, recipe); + super(ManaInfusion.name, BotaniaAPI.manaInfusionRecipes); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((RecipeManaInfusion) recipe).getOutput().getDisplayName(); + public String getRecipeInfo(RecipeManaInfusion recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output))); + public static void removeRecipe(IIngredient output) { + // Get list of existing recipes, matching with parameter + List recipes = new LinkedList(); + + for (RecipeManaInfusion r : BotaniaAPI.manaInfusionRecipes) { + if (r.getOutput() != null && matches(output, toIItemStack(r.getOutput()))) { + recipes.add(r); + } + } + + // Check if we found the recipes and apply the action + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", ManaInfusion.name, output.toString())); + } } - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Botania Mana Infusion", BotaniaAPI.manaInfusionRecipes, stack); + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(ManaInfusion.name, BotaniaAPI.manaInfusionRecipes, recipes); } @Override - public void apply() { - for (RecipeManaInfusion r : BotaniaAPI.manaInfusionRecipes) { - if (r.getOutput() != null && areEqual(r.getOutput(), stack)) { - recipes.add(r); - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(RecipeManaInfusion recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/botania/handlers/RuneAltar.java b/src/main/java/modtweaker2/mods/botania/handlers/RuneAltar.java index b09c65b..a2ee14b 100644 --- a/src/main/java/modtweaker2/mods/botania/handlers/RuneAltar.java +++ b/src/main/java/modtweaker2/mods/botania/handlers/RuneAltar.java @@ -1,14 +1,20 @@ package modtweaker2.mods.botania.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toObjects; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import vazkii.botania.api.BotaniaAPI; @@ -16,47 +22,58 @@ import vazkii.botania.api.recipe.RecipeRuneAltar; @ZenClass("mods.botania.RuneAltar") public class RuneAltar { + + protected static final String name = "Botania Rune Altar"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(IItemStack output, IIngredient[] input, int mana) { MineTweakerAPI.apply(new Add(new RecipeRuneAltar(toStack(output), mana, toObjects(input)))); } - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(RecipeRuneAltar recipe) { - super("Botania Rune Altar", BotaniaAPI.runeAltarRecipes, recipe); + super(RuneAltar.name, BotaniaAPI.runeAltarRecipes); + + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((RecipeRuneAltar) recipe).getOutput().getDisplayName(); + public String getRecipeInfo(RecipeRuneAltar recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output))); + public static void removeRecipe(IIngredient output) { + // Get list of existing recipes, matching with parameter + List recipes = new LinkedList(); + + for (RecipeRuneAltar r : BotaniaAPI.runeAltarRecipes) { + if (r != null && r.getOutput() != null && matches(output, toIItemStack(r.getOutput()))) { + recipes.add(r); + } + } + + // Check if we found the recipes and apply the action + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", ElvenTrade.name, output.toString())); + } } - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Botania Rune Altar", BotaniaAPI.runeAltarRecipes, stack); + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(RuneAltar.name, BotaniaAPI.runeAltarRecipes, recipes); } @Override - public void apply() { - for (RecipeRuneAltar r : BotaniaAPI.runeAltarRecipes) { - if (r.getOutput() != null && areEqual(r.getOutput(), stack)) { - recipes.add(r); - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(RecipeRuneAltar recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/exnihilo/handlers/Crucible.java b/src/main/java/modtweaker2/mods/exnihilo/handlers/Crucible.java index b0a3f32..191a1d4 100644 --- a/src/main/java/modtweaker2/mods/exnihilo/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/exnihilo/handlers/Crucible.java @@ -3,10 +3,14 @@ package modtweaker2.mods.exnihilo.handlers; import static modtweaker2.helpers.InputHelper.isABlock; import static modtweaker2.helpers.InputHelper.toFluid; import static modtweaker2.helpers.InputHelper.toStack; + +import java.util.Map.Entry; + import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; +import modtweaker2.helpers.InputHelper; import modtweaker2.utils.BaseMapAddition; import modtweaker2.utils.BaseMapRemoval; import net.minecraft.block.Block; @@ -20,6 +24,7 @@ import exnihilo.registries.helpers.Meltable; @ZenClass("mods.exnihilo.Crucible") public class Crucible { + /************************************************ Crucible Melting ************************************************/ //Adding a Ex Nihilo Crucible recipe @ZenMethod @@ -32,14 +37,15 @@ public class Crucible { } //Passes the list to the map list implementation, and adds the recipe - private static class AddRecipe extends BaseMapAddition { + private static class AddRecipe extends BaseMapAddition { public AddRecipe(Meltable recipe) { - super("ExNihilo Crucible", CrucibleRegistry.entries, recipe.block + ":" + recipe.meta, recipe); + super("ExNihilo Crucible", CrucibleRegistry.entries); + recipes.put(recipe.block + ":" + recipe.meta, recipe); } - + @Override - public String getRecipeInfo() { - return new ItemStack(((Meltable) recipe).block, 1, ((Meltable) recipe).meta).getDisplayName(); + protected String getRecipeInfo(Entry recipe) { + return InputHelper.getStackDescription(new ItemStack(recipe.getValue().block, 1, recipe.getValue().meta)); } } @@ -54,14 +60,21 @@ public class Crucible { } //Removes a recipe, will always remove the key, so all should be good - private static class RemoveRecipe extends BaseMapRemoval { + private static class RemoveRecipe extends BaseMapRemoval { public RemoveRecipe(ItemStack stack) { - super("ExNihilo Crucible", CrucibleRegistry.entries, Block.getBlockFromItem(stack.getItem()) + ":" + stack.getItemDamage(), stack); + super("ExNihilo Crucible", CrucibleRegistry.entries); + + String key = Block.getBlockFromItem(stack.getItem()) + ":" + stack.getItemDamage(); + + for(Entry entry : map.entrySet()) { + if(entry.getKey().equals(key)) + recipes.put(entry.getKey(), entry.getValue()); + } } @Override - public String getRecipeInfo() { - return ((ItemStack) stack).getDisplayName(); + protected String getRecipeInfo(Entry recipe) { + return InputHelper.getStackDescription(new ItemStack(recipe.getValue().block, 1, recipe.getValue().meta)); } } diff --git a/src/main/java/modtweaker2/mods/exnihilo/handlers/Hammer.java b/src/main/java/modtweaker2/mods/exnihilo/handlers/Hammer.java index 6c27e89..cb25307 100644 --- a/src/main/java/modtweaker2/mods/exnihilo/handlers/Hammer.java +++ b/src/main/java/modtweaker2/mods/exnihilo/handlers/Hammer.java @@ -2,20 +2,14 @@ package modtweaker2.mods.exnihilo.handlers; import static modtweaker2.helpers.InputHelper.isABlock; import static modtweaker2.helpers.InputHelper.toStack; - -import java.util.List; - import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; import net.minecraft.block.Block; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import exnihilo.registries.HammerRegistry; -import exnihilo.registries.helpers.Smashable; -import exnihilo.utils.ItemInfo; @ZenClass("mods.exnihilo.Hammer") public class Hammer { diff --git a/src/main/java/modtweaker2/mods/extendedworkbench/handlers/ExtendedCrafting.java b/src/main/java/modtweaker2/mods/extendedworkbench/handlers/ExtendedCrafting.java index a0a6837..7db7b57 100644 --- a/src/main/java/modtweaker2/mods/extendedworkbench/handlers/ExtendedCrafting.java +++ b/src/main/java/modtweaker2/mods/extendedworkbench/handlers/ExtendedCrafting.java @@ -2,24 +2,30 @@ package modtweaker2.mods.extendedworkbench.handlers; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.InputHelper.toStacks; -import static modtweaker2.helpers.StackHelper.areEqual; import java.util.Arrays; +import java.util.List; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import modtweaker2.utils.BaseListAddition; -import modtweaker2.utils.BaseListRemoval; +import modtweaker2.helpers.LogHelper; +import modtweaker2.utils.BaseCraftingAddition; +import modtweaker2.utils.BaseCraftingRemoval; import naruto1310.extendedWorkbench.crafting.ExtendedCraftingManager; import naruto1310.extendedWorkbench.crafting.ExtendedShapedRecipes; import naruto1310.extendedWorkbench.crafting.ExtendedShapelessRecipes; import naruto1310.extendedWorkbench.crafting.IExtendedRecipe; import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.extendedworkbench") public class ExtendedCrafting { + + public static final String name = "Extended Workbench"; + @ZenMethod public static void addShaped(IItemStack output, IItemStack[][] ingredients) { MineTweakerAPI.apply(new Add(getShapedRecipe(output, ingredients))); @@ -30,17 +36,10 @@ public class ExtendedCrafting { MineTweakerAPI.apply(new Add(new ExtendedShapelessRecipes(toStack(output), Arrays.asList(toStacks(ingredients))))); } - private static class Add extends BaseListAddition { + private static class Add extends BaseCraftingAddition { public Add(IExtendedRecipe recipe) { - super("Extended Workbench", ExtendedCraftingManager.getInstance().getRecipeList(), recipe); - } - - @Override - public String getRecipeInfo() { - Object out = ((IExtendedRecipe) recipe).getRecipeOutput(); - if (out != null) { - return ((ItemStack) out).getDisplayName(); - } else return super.getRecipeInfo(); + super(ExtendedCrafting.name, ExtendedCraftingManager.getInstance().getRecipeList()); + recipes.add(recipe); } } @@ -71,32 +70,13 @@ public class ExtendedCrafting { ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output))); - } - - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Extended Workbench", ExtendedCraftingManager.getInstance().getRecipeList(), stack); - } - - @Override - public void apply() { - for (Object o : ExtendedCraftingManager.getInstance().getRecipeList()) { - if (o instanceof IExtendedRecipe) { - IExtendedRecipe r = (IExtendedRecipe) o; - if (r.getRecipeOutput() != null && areEqual((ItemStack) r.getRecipeOutput(), stack)) { - recipes.add(r); - } - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public static void removeRecipe(IIngredient output) { + List recipes = BaseCraftingRemoval.getRecipes(ExtendedCraftingManager.getInstance().getRecipeList(), output); + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new BaseCraftingRemoval(ExtendedCrafting.name, ExtendedCraftingManager.getInstance().getRecipeList(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", ExtendedCrafting.name, output)); } } - } diff --git a/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java b/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java index 6778ee6..3c0cccd 100644 --- a/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java +++ b/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java @@ -1,9 +1,17 @@ package modtweaker2.mods.factorization.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +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; @@ -15,59 +23,59 @@ 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(toStack(input), recipe)); + MineTweakerAPI.apply(new Add(recipe)); } - private static class Add extends BaseListAddition { - private final ItemStack output; - - public Add(ItemStack output, Object recipe) { - super("Crystallizer", FactorizationHelper.crystallizer, recipe); - this.output = output; + private static class Add extends BaseListAddition { + public Add(Object recipe) { + super(Crystallizer.name, FactorizationHelper.crystallizer); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return output.getDisplayName(); + public String getRecipeInfo(Object recipe) { + return InputHelper.getStackDescription((ItemStack)ReflectionHelper.getObject(recipe, "output")); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output))); - } - - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Crystallizer", FactorizationHelper.crystallizer, stack); - } - - //Returns the output ItemStack - private ItemStack getOutput(Object o) { - return (ItemStack) ReflectionHelper.getObject(o, "output"); - } - - @Override - public void apply() { - for (Object r : list) { - if (r != null) { - ItemStack output = getOutput(r); - if (output != null && areEqual(output, stack)) { - recipes.add(r); - } + public static void removeRecipe(IIngredient output) { + List recipes = new LinkedList(); + + 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); } } - super.apply(); + } + + 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 { + public Remove(List recipes) { + super(Crystallizer.name, FactorizationHelper.crystallizer, recipes); } @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(Object recipe) { + return InputHelper.getStackDescription((ItemStack)ReflectionHelper.getObject(recipe, "output")); } } } diff --git a/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java b/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java index de00ed3..fe7a7ea 100644 --- a/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java +++ b/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java @@ -1,9 +1,17 @@ package modtweaker2.mods.factorization.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +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; @@ -14,57 +22,58 @@ import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.factorization.Lacerator") public class Lacerator { + + public static final String name = "Factorization Lacerator"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(IItemStack input, IItemStack output, double probability) { Object recipe = FactorizationHelper.getLaceratorRecipe(toStack(input), toStack(output), (float) probability); MineTweakerAPI.apply(new Add(toStack(input), recipe)); } - private static class Add extends BaseListAddition { - private final ItemStack output; - + private static class Add extends BaseListAddition { public Add(ItemStack output, Object recipe) { - super("Lacerator", FactorizationHelper.lacerator, recipe); - this.output = output; + super(Lacerator.name, FactorizationHelper.lacerator); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return output.getDisplayName(); + public String getRecipeInfo(Object recipe) { + return InputHelper.getStackDescription((ItemStack) ReflectionHelper.getObject(recipe, "output")); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output))); - } - - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Lacerator", FactorizationHelper.lacerator, stack); - } - - //Returns the output ItemStack - private ItemStack getOutput(Object o) { - return (ItemStack) ReflectionHelper.getObject(o, "output"); - } - - @Override - public void apply() { - for (Object r : list) { - ItemStack output = getOutput(r); - if (output != null && areEqual(output, stack)) { + public static void removeRecipe(IIngredient output) { + List recipes = new LinkedList(); + for (Object r : FactorizationHelper.lacerator) { + if(r != null) { + ItemStack out = (ItemStack) ReflectionHelper.getObject(r, "output"); + if (output != null && matches(output, toIItemStack(out))) { recipes.add(r); } } - super.apply(); + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored", Lacerator.name, output.toString())); + } + } + + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(Lacerator.name, FactorizationHelper.lacerator, recipes); } @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(Object recipe) { + return InputHelper.getStackDescription((ItemStack) ReflectionHelper.getObject(recipe, "output")); } } } diff --git a/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java b/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java index e09e71f..31cfa77 100644 --- a/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java +++ b/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java @@ -1,74 +1,81 @@ package modtweaker2.mods.factorization.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +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.BaseMultipleListRemoval; -import modtweaker2.utils.BaseMultipleListRemoval.Position; +import modtweaker2.utils.BaseListRemoval; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.factorization.SlagFurnace") public class SlagFurnace { + + public static final String name = "Factorization Slag Furnace"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(IItemStack input, IItemStack output2, double chance2, IItemStack output1, double chance1) { Object recipe = FactorizationHelper.getSlagFurnaceRecipe(toStack(input), (float) chance1, toStack(output1), (float) chance2, toStack(output2)); MineTweakerAPI.apply(new Add(toStack(input), recipe)); } - private static class Add extends BaseListAddition { - private final ItemStack input; - + private static class Add extends BaseListAddition { public Add(ItemStack input, Object recipe) { - super("Slag Furnace", FactorizationHelper.slag, recipe); - this.input = input; + super(SlagFurnace.name, FactorizationHelper.slag); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return input.getDisplayName(); + public String getRecipeInfo(Object recipe) { + return InputHelper.getStackDescription((ItemStack) ReflectionHelper.getObject(recipe, "input")); } } - // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack input) { - MineTweakerAPI.apply(new Remove(toStack(input), Position.ALL)); + public static void removeRecipe(IIngredient input) { + List recipes = new LinkedList(); + + for(Object r : FactorizationHelper.slag) { + if(r != null) { + ItemStack in = (ItemStack) ReflectionHelper.getObject(r, "input"); + + if(matches(input, toIItemStack(in))) { + recipes.add(r); + } + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", SlagFurnace.name, input)); + } } - @ZenMethod - public static void removeFirst(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output), Position.FIRST)); - } - - @ZenMethod - public static void removeLast(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output), Position.LAST)); - } - - private static class Remove extends BaseMultipleListRemoval { - public Remove(ItemStack stack, Position pos) { - super("Slag Furnace", FactorizationHelper.slag, stack, pos); + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(SlagFurnace.name, FactorizationHelper.slag, recipes); } - @Override - protected boolean isEqual(Object recipe, Object search) { - ItemStack input = (ItemStack) ReflectionHelper.getObject(recipe, "input"); - if (input != null && areEqual(input, (ItemStack) search)) { - return true; - } else - return false; - } - - @Override - public String getRecipeInfo() { - return ((ItemStack) search).getDisplayName(); - } + @Override + public String getRecipeInfo(Object recipe) { + return InputHelper.getStackDescription((ItemStack) ReflectionHelper.getObject(recipe, "input")); + } } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Carpenter.java b/src/main/java/modtweaker2/mods/forestry/handlers/Carpenter.java index cb6dc7c..13ed6cb 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Carpenter.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Carpenter.java @@ -1,15 +1,21 @@ package modtweaker2.mods.forestry.handlers; import static modtweaker2.helpers.InputHelper.toFluid; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.InputHelper.toStacks; +import static modtweaker2.helpers.StackHelper.matches; import java.util.ArrayList; +import java.util.LinkedList; import java.util.List; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.forestry.ForestryHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -24,7 +30,11 @@ import forestry.factory.gadgets.MachineCarpenter.RecipeManager; @ZenClass("mods.forestry.Carpenter") public class Carpenter { + + public static final String name = "Forestry Carpenter"; + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(int packagingTime, ILiquidStack liquid, IItemStack[] ingredients, IItemStack ingredient, IItemStack product) { ArrayList stacks = new ArrayList(); @@ -45,10 +55,11 @@ public class Carpenter { return null; } - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(Recipe recipe) { - super("Forestry Carpenter", MachineCarpenter.RecipeManager.recipes, recipe); + super(Carpenter.name, MachineCarpenter.RecipeManager.recipes); + recipes.add(recipe); // The Carpenter has a list of valid Fluids, access them via // Relfection because of private @@ -59,37 +70,43 @@ public class Carpenter { ForestryHelper.addCarpenterRecipeBox(recipe.getBox()); } } - + @Override - public String getRecipeInfo(){ - return ((MachineCarpenter.Recipe) recipe).getCraftingResult().getDisplayName(); + protected String getRecipeInfo(Recipe recipe) { + return InputHelper.getStackDescription(recipe.getCraftingResult()); } } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(MachineCarpenter.RecipeManager.recipes, toStack(output))); + public static void removeRecipe(IIngredient output) { + List recipes = new LinkedList(); + + for(Recipe recipe : RecipeManager.recipes) { + if(recipe != null && recipe.getCraftingResult() != null && matches(output, toIItemStack(recipe.getCraftingResult()))) { + recipes.add(recipe); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Carpenter.name, output.toString())); + } + + } - private static class Remove extends BaseListRemoval { + private static class Remove extends BaseListRemoval { - public Remove(List list, ItemStack stack) { - super("Forestry Carpenter", list, stack); + public Remove(List recipes) { + super(Carpenter.name, RecipeManager.recipes, recipes); } - + @Override - public void apply() { - for (Recipe r : RecipeManager.recipes) { - if (r.getCraftingResult() != null && r.getCraftingResult().isItemEqual(stack)) { - recipes.add(r); - } - } - super.apply(); - } - - @Override - public String getRecipeInfo(){ - return "Removed recipe for: " + stack.getDisplayName(); + protected String getRecipeInfo(Recipe recipe) { + return InputHelper.getStackDescription(recipe.getCraftingResult()); } } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Centrifuge.java b/src/main/java/modtweaker2/mods/forestry/handlers/Centrifuge.java index d28c222..5ef7eac 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Centrifuge.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Centrifuge.java @@ -1,12 +1,18 @@ package modtweaker2.mods.forestry.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; import java.util.HashMap; +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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; import net.minecraft.item.ItemStack; @@ -19,6 +25,10 @@ import forestry.factory.gadgets.MachineCentrifuge.RecipeManager; @ZenClass("mods.forestry.Centrifuge") public class Centrifuge { + public static final String name = "Forestry Centrifuge"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(int timePerItem, IItemStack itemInput, IItemStack[] output, int[] chances) { HashMap products = new HashMap(); @@ -31,47 +41,47 @@ public class Centrifuge { MineTweakerAPI.apply(new Add(new Recipe(timePerItem, toStack(itemInput), products))); } - @ZenMethod - public static void removeRecipe(IItemStack itemInput) { - MineTweakerAPI.apply(new Remove(RecipeManager.recipes, toStack(itemInput))); + private static class Add extends BaseListAddition { + + public Add(Recipe recipe) { + super(Centrifuge.name, RecipeManager.recipes); + recipes.add(recipe); + } + + @Override + protected String getRecipeInfo(Recipe recipe) { + return InputHelper.getStackDescription(recipe.resource); + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void removeRecipe(IIngredient input) { + List recipes = new LinkedList(); + + for(Recipe recipe : RecipeManager.recipes) { + if(recipe != null && matches(input, toIItemStack(recipe.resource))) { + recipes.add(recipe); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Centrifuge.name, input.toString())); + } } - /* - Implements the actions to add the recipe - */ - private static class Add extends BaseListAddition { + private static class Remove extends BaseListRemoval { - public Add(Recipe recipe) { - super("Forestry Centrifuge", RecipeManager.recipes, recipe); - } - @Override - public String getRecipeInfo() { - return " Input:" + ((Recipe) recipe).resource.getDisplayName(); - } - } - - /* - Implements the actions to remove the recipe - */ - private static class Remove extends BaseListRemoval { - - public Remove(List list, ItemStack input) { - super("Forestry Centrifuge", RecipeManager.recipes, input); + public Remove(List recipes) { + super(Centrifuge.name, RecipeManager.recipes, recipes); } @Override - public void apply() { - for (Recipe r : RecipeManager.recipes) { - if (r.matches(stack)) { - recipes.add(r); - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return " Input:" + stack.getDisplayName(); + protected String getRecipeInfo(Recipe recipe) { + return InputHelper.getStackDescription(recipe.resource); } } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Fermenter.java b/src/main/java/modtweaker2/mods/forestry/handlers/Fermenter.java index 316bc9f..32d7d22 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Fermenter.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Fermenter.java @@ -1,67 +1,179 @@ package modtweaker2.mods.forestry.handlers; -import static modtweaker2.helpers.InputHelper.getFluid; import static modtweaker2.helpers.InputHelper.toFluid; +import static modtweaker2.helpers.InputHelper.toIItemStack; +import static modtweaker2.helpers.InputHelper.toILiquidStack; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; -import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.Fluid; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; -import forestry.factory.gadgets.MachineFermenter; import forestry.factory.gadgets.MachineFermenter.Recipe; import forestry.factory.gadgets.MachineFermenter.RecipeManager; @ZenClass("mods.forestry.Fermenter") public class Fermenter { + public static final String name = "Forestry Fermenter"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(IItemStack resource, ILiquidStack liquid, int fermentationValue, float modifier, ILiquidStack output) { MineTweakerAPI.apply(new Add(new Recipe(toStack(resource), fermentationValue, modifier, toFluid(output), toFluid(liquid)))); - MachineFermenter.RecipeManager.recipeFluidInputs.add(getFluid(liquid)); - MachineFermenter.RecipeManager.recipeFluidOutputs.add(getFluid(output)); } - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(Recipe recipe) { - super("Forestry Fermenter", MachineFermenter.RecipeManager.recipes, recipe); + super(Fermenter.name, RecipeManager.recipes); + recipes.add(recipe); } - - @Override - public String getRecipeInfo() { - return ((Recipe) recipe).output.getLocalizedName(); - } - } - - @ZenMethod - public static void removeRecipe(IItemStack input) { - MineTweakerAPI.apply(new Remove(MachineFermenter.RecipeManager.recipes, toStack(input))); - } - - private static class Remove extends BaseListRemoval { - - public Remove(List list, ItemStack stack) { - super(list, stack); - - } - + @Override public void apply() { - for (Recipe r : RecipeManager.recipes) { - if (r != null && r.resource != null && r.resource.isItemEqual(stack)) { - recipes.add(r); - - } - } - super.apply(); + // add liquids to valid input / output + for(Recipe recipe : successful) { + RecipeManager.recipeFluidInputs.add(recipe.liquid.getFluid()); + RecipeManager.recipeFluidOutputs.add(recipe.output.getFluid()); + } + + super.apply(); + } + + @Override + public void undo() { + super.undo(); + + // Tidy up valid inputs + for(Iterator iter = RecipeManager.recipeFluidInputs.iterator(); iter.hasNext();) { + boolean found = false; + Fluid fluid = iter.next(); + for(Recipe recipe : list) { + if(recipe != null && recipe.liquid != null && recipe.liquid.getFluid().equals(fluid)) { + found = true; + } + } + + if(!found) { + iter.remove(); + } + } + + // Tidy up valid outputs + for(Iterator iter = RecipeManager.recipeFluidOutputs.iterator(); iter.hasNext();) { + boolean found = false; + Fluid fluid = iter.next(); + for(Recipe recipe : list) { + if(recipe != null && recipe.output != null && recipe.output.getFluid().equals(fluid)) { + found = true; + } + } + + if(!found) { + iter.remove(); + } + } } + @Override + public String getRecipeInfo(Recipe recipe) { + return InputHelper.getStackDescription(recipe.output); + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void removeRecipe(IIngredient input) { + List recipes = new LinkedList(); + + for(Recipe recipe : RecipeManager.recipes) { + // check for input items + if(recipe != null && recipe.resource != null && matches(input, toIItemStack(recipe.resource))) { + recipes.add(recipe); + } + + // check for input liquids + if(recipe != null && recipe.resource != null && matches(input, toILiquidStack(recipe.liquid))) { + recipes.add(recipe); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Fermenter.name, input.toString())); + } + } + + private static class Remove extends BaseListRemoval { + + public Remove(List recipes) { + super(Fermenter.name, RecipeManager.recipes, recipes); + } + + @Override + public void apply() { + super.apply(); + + // Tidy up valid inputs + for(Iterator iter = RecipeManager.recipeFluidInputs.iterator(); iter.hasNext();) { + boolean found = false; + Fluid fluid = iter.next(); + for(Recipe recipe : list) { + if(recipe != null && recipe.liquid != null && recipe.liquid.getFluid().equals(fluid)) { + found = true; + } + } + + if(!found) { + iter.remove(); + } + } + + // Tidy up valid outputs + for(Iterator iter = RecipeManager.recipeFluidOutputs.iterator(); iter.hasNext();) { + boolean found = false; + Fluid fluid = iter.next(); + for(Recipe recipe : list) { + if(recipe != null && recipe.output != null && recipe.output.getFluid().equals(fluid)) { + found = true; + } + } + + if(!found) { + iter.remove(); + } + } + } + + @Override + public void undo() { + // add liquids to valid input / output + for(Recipe recipe : successful) { + RecipeManager.recipeFluidInputs.add(recipe.liquid.getFluid()); + RecipeManager.recipeFluidOutputs.add(recipe.output.getFluid()); + } + + super.undo(); + } + + @Override + public String getRecipeInfo(Recipe recipe) { + return InputHelper.getStackDescription(recipe.output); + } } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Moistener.java b/src/main/java/modtweaker2/mods/forestry/handlers/Moistener.java index 242c1d7..f43d0c4 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Moistener.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Moistener.java @@ -1,14 +1,19 @@ package modtweaker2.mods.forestry.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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import forestry.factory.gadgets.MachineMoistener; @@ -17,6 +22,10 @@ import forestry.factory.gadgets.MachineMoistener.RecipeManager; @ZenClass("mods.forestry.Moistener") public class Moistener { + + public static final String name = "Forestry Moistener"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod public static void addRecipe(int timePerItem, IItemStack resource, IItemStack product) { @@ -24,37 +33,45 @@ public class Moistener { } - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(Recipe recipe) { - super("Forestry Moistener", MachineMoistener.RecipeManager.recipes, recipe); + super(Moistener.name, MachineMoistener.RecipeManager.recipes); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((Recipe) recipe).product.getDisplayName(); + public String getRecipeInfo(Recipe recipe) { + return InputHelper.getStackDescription(recipe.product); } } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(MachineMoistener.RecipeManager.recipes, toStack(output))); + public static void removeRecipe(IIngredient output) { + List recipes = new LinkedList(); + + for (Recipe recipe : RecipeManager.recipes) { + if (recipe != null && recipe.product != null && matches(output, toIItemStack(recipe.product))) { + recipes.add(recipe); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Moistener.name, output.toString())); + } } - private static class Remove extends BaseListRemoval { - - public Remove(List list, ItemStack stack) { - super(list, stack); - + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(Moistener.name, RecipeManager.recipes, recipes); } - @Override - public void apply() { - for (Recipe r : RecipeManager.recipes) { - if (r.product != null && r.product.isItemEqual(stack)) { - recipes.add(r); - } - } - super.apply(); - } + @Override + public String getRecipeInfo(Recipe recipe) { + return InputHelper.getStackDescription(recipe.product); + } } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Squeezer.java b/src/main/java/modtweaker2/mods/forestry/handlers/Squeezer.java index 12cbccf..2271ff2 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Squeezer.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Squeezer.java @@ -2,18 +2,23 @@ package modtweaker2.mods.forestry.handlers; import static modtweaker2.helpers.InputHelper.getFluid; import static modtweaker2.helpers.InputHelper.toFluid; +import static modtweaker2.helpers.InputHelper.toILiquidStack; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.InputHelper.toStacks; +import static modtweaker2.helpers.StackHelper.matches; import java.util.Arrays; +import java.util.LinkedList; import java.util.List; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraftforge.fluids.FluidStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import forestry.factory.gadgets.MachineSqueezer; @@ -22,6 +27,10 @@ import forestry.factory.gadgets.MachineSqueezer.RecipeManager; @ZenClass("mods.forestry.Squeezer") public class Squeezer { + + public static final String name = "Forestry Squeezer"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod public static void addRecipe(int timePerItem, IItemStack[] resources, ILiquidStack liquid, IItemStack remnants, int chance) { @@ -30,38 +39,53 @@ public class Squeezer { MachineSqueezer.RecipeManager.recipeInputs.addAll(Arrays.asList(toStacks(resources))); } - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(Recipe recipe) { - super("Forestry Squeezer", MachineSqueezer.RecipeManager.recipes, recipe); + super(Squeezer.name, MachineSqueezer.RecipeManager.recipes); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((Recipe) recipe).liquid.getLocalizedName(); + public String getRecipeInfo(Recipe recipe) { + return InputHelper.getStackDescription(recipe.liquid); } } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(ILiquidStack liquid) { - MineTweakerAPI.apply(new Remove(MachineSqueezer.RecipeManager.recipes, toFluid(liquid))); + public static void removeRecipe(IIngredient liquid) { + List recipes = new LinkedList(); + + for (Recipe r : RecipeManager.recipes) { + if (r != null && r.liquid != null && matches(liquid, toILiquidStack(r.liquid))) { + recipes.add(r); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Squeezer.name, liquid.toString())); + } + } - private static class Remove extends BaseListRemoval { - - public Remove(List list, FluidStack liquid) { - super(list, liquid); + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(Squeezer.name, MachineSqueezer.RecipeManager.recipes, recipes); } @Override public void apply() { - for (Recipe r : RecipeManager.recipes) { - if (r.liquid != null && r.liquid.isFluidEqual(fluid)) { - recipes.add(r); - } - } + super.apply(); } - + + @Override + public String getRecipeInfo(Recipe recipe) { + return InputHelper.getStackDescription(recipe.liquid); + } } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Still.java b/src/main/java/modtweaker2/mods/forestry/handlers/Still.java index 7e5ba37..6986c0a 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Still.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Still.java @@ -2,14 +2,18 @@ package modtweaker2.mods.forestry.handlers; import static modtweaker2.helpers.InputHelper.getFluid; import static modtweaker2.helpers.InputHelper.toFluid; +import static modtweaker2.helpers.InputHelper.toILiquidStack; +import static modtweaker2.helpers.StackHelper.matches; +import java.util.LinkedList; import java.util.List; import minetweaker.MineTweakerAPI; import minetweaker.api.liquid.ILiquidStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraftforge.fluids.FluidStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import forestry.factory.gadgets.MachineStill; @@ -18,6 +22,10 @@ import forestry.factory.gadgets.MachineStill.RecipeManager; @ZenClass("mods.forestry.Still") public class Still { + + public static final String name = "Forestry Still"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod public static void addRecipe(int timePerUnit, ILiquidStack input, ILiquidStack output) { @@ -29,37 +37,46 @@ public class Still { MachineStill.RecipeManager.recipeFluidOutputs.add(getFluid(output)); } - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(Recipe recipe) { - super("Forestry Still", MachineStill.RecipeManager.recipes, recipe); + super("Forestry Still", MachineStill.RecipeManager.recipes); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((Recipe) recipe).output.getLocalizedName(); + public String getRecipeInfo(Recipe recipe) { + return InputHelper.getStackDescription(recipe.output); } } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod public static void removeRecipe(ILiquidStack output, ILiquidStack input) { - MineTweakerAPI.apply(new Remove(MachineStill.RecipeManager.recipes, toFluid(input))); + List recipes = new LinkedList(); + + for (Recipe r : RecipeManager.recipes) { + if (r != null && r.output != null && matches(output, toILiquidStack(r.output))) { + recipes.add(r); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Still.name, output.toString())); + } } - private static class Remove extends BaseListRemoval { - - public Remove(List list, FluidStack input) { - super(list, input); + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(Still.name, RecipeManager.recipes, recipes); } - - @Override - public void apply() { - for (Recipe r : RecipeManager.recipes) { - if (r.output != null && r.output.isFluidEqual(fluid)) { - recipes.add(r); - } - } - super.apply(); - } + + @Override + public String getRecipeInfo(Recipe recipe) { + return InputHelper.getStackDescription(recipe.output); + } } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/ThermionicFabricator.java b/src/main/java/modtweaker2/mods/forestry/handlers/ThermionicFabricator.java index 12c6314..6771cd3 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/ThermionicFabricator.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/ThermionicFabricator.java @@ -1,13 +1,19 @@ package modtweaker2.mods.forestry.handlers; import static modtweaker2.helpers.InputHelper.toFluid; +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 minetweaker.api.liquid.ILiquidStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; import net.minecraft.item.ItemStack; @@ -21,18 +27,20 @@ import forestry.factory.gadgets.MachineFabricator.Smelting; @ZenClass("mods.forestry.ThermionicFabricator") public class ThermionicFabricator { + + public static final String nameSmelting = "Forestry Thermionic Fabricator (Smelting)"; + public static final String nameCasting = "Forestry Thermionic Fabricator (Casting)"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //first production step: smelting item into liquid @ZenMethod public static void addSmelting(IItemStack itemInput, int meltingPoint, int fluidOutput) { //The machines internal tank accept only liquid glass, therefor this function only accept the amount and hardcode the fluid to glass - MineTweakerAPI.apply(new Add(new Smelting(toStack(itemInput), FluidRegistry.getFluidStack("glass", fluidOutput), meltingPoint))); + MineTweakerAPI.apply(new AddSmelting(new Smelting(toStack(itemInput), FluidRegistry.getFluidStack("glass", fluidOutput), meltingPoint))); } - @ZenMethod - public static void removeSmelting(IItemStack itemInput) { - MineTweakerAPI.apply(new Remove(toStack(itemInput), RecipeManager.smeltings, RecipeType.Smelting)); - } + //second step: casting liquid + objetcs + plan into result @ZenMethod @@ -44,86 +52,95 @@ public class ThermionicFabricator { } } - MineTweakerAPI.apply(new Add(new Recipe(toStack(plan), toFluid(fluidInput), new ShapedRecipeCustom(3, 3, flatList, toStack(product))))); - } - - @ZenMethod - public static void removeCasts(IItemStack product) { - MineTweakerAPI.apply(new Remove(toStack(product), RecipeManager.recipes, RecipeType.Casting)); + MineTweakerAPI.apply(new AddCast(new Recipe(toStack(plan), toFluid(fluidInput), new ShapedRecipeCustom(3, 3, flatList, toStack(product))))); } /* Implements the actions to add a recipe Since the machine has two crafting Steps, this is a constructors for both */ - private static class Add extends BaseListAddition { + private static class AddSmelting extends BaseListAddition { - public Add(Smelting recipe) { - super("Forestry Thermionic Fabricator (Smelting)", RecipeManager.smeltings, recipe); + public AddSmelting(Smelting recipe) { + super(ThermionicFabricator.nameSmelting, RecipeManager.smeltings); + recipes.add(recipe); } - public Add(Recipe recipe) { - super("Forestry Thermionic Fabricator (Casting)", RecipeManager.recipes, recipe); + @Override + public String getRecipeInfo(Smelting recipe) { + return InputHelper.getStackDescription(recipe.getResource()); + } + } + + private static class AddCast extends BaseListAddition { + + public AddCast(Recipe recipe) { + super(ThermionicFabricator.nameCasting, RecipeManager.recipes); + recipes.add(recipe); + } + + @Override + public String getRecipeInfo(Recipe recipe) { + return InputHelper.getStackDescription(recipe.getPlan()); + } + } + + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void removeSmelting(IIngredient itemInput) { + List recipes = new LinkedList(); + + for (Smelting r : RecipeManager.smeltings) { + if (r != null && r.getResource() != null && matches(itemInput, toIItemStack(r.getResource()))) { + recipes.add(r); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveSmelting(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", ThermionicFabricator.nameSmelting, itemInput.toString())); + } + } + + @ZenMethod + public static void removeCasts(IIngredient product) { + List recipes = new LinkedList(); + + for (Recipe r : RecipeManager.recipes) { + if (r != null && r.asIRecipe().getRecipeOutput() != null && matches(product, toIItemStack(r.asIRecipe().getRecipeOutput()))) { + recipes.add(r); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveCasts(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", ThermionicFabricator.nameSmelting, product.toString())); + } + } + + private static class RemoveSmelting extends BaseListRemoval { + public RemoveSmelting(List recipes) { + super(ThermionicFabricator.nameSmelting, RecipeManager.smeltings, recipes); } @Override - public String getRecipeInfo() { - if (recipe instanceof Smelting) - return " Input:" + ((Smelting) recipe).getResource().getDisplayName(); - else - return "Output: " + ((Recipe) recipe).asIRecipe().getRecipeOutput().getDisplayName(); + public String getRecipeInfo(Smelting recipe) { + return InputHelper.getStackDescription(recipe.getResource()); } } + + private static class RemoveCasts extends BaseListRemoval { + public RemoveCasts(List recipes) { + super(ThermionicFabricator.nameCasting, RecipeManager.recipes, recipes); + } - /* - Implements the actions to remove recipes - */ - private static class Remove extends BaseListRemoval { - private final RecipeType type; - - public Remove(ItemStack input, List list, RecipeType type) { - super(String.format("Forestry Thermionic Fabricator (%s)", type.toString()), list, input); - this.type = type; - } - - @Override - public void apply() { - 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() { - 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(); - } - } - - public enum RecipeType { - Smelting, - Casting + @Override + public String getRecipeInfo(Recipe recipe) { + return InputHelper.getStackDescription(recipe.getPlan()); + } } } diff --git a/src/main/java/modtweaker2/mods/fsp/handlers/Crucible.java b/src/main/java/modtweaker2/mods/fsp/handlers/Crucible.java index 13fa184..e4b9e13 100644 --- a/src/main/java/modtweaker2/mods/fsp/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/fsp/handlers/Crucible.java @@ -1,12 +1,23 @@ package modtweaker2.mods.fsp.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; import static modtweaker2.mods.fsp.FSPHelper.getLiquid; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseMapAddition; import modtweaker2.utils.BaseMapRemoval; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import org.apache.commons.lang3.tuple.MutablePair; @@ -20,6 +31,11 @@ import flaxbeard.steamcraft.api.Tuple3; @ZenClass("mods.fsp.Crucible") public class Crucible { + + public static final String nameLiquid = "FSP Crucible (Liquid)"; + public static final String nameMelting = "FSP Crucible (Liquid)"; + public static final String nameDunking = "FSP Crucible (Dunking)"; + @ZenMethod public static void addLiquid(String name, IItemStack ingot, IItemStack plate, IItemStack nugget, int r, int g, int b) { MineTweakerAPI.apply(new AddLiquid(new CrucibleLiquid(name, toStack(ingot), toStack(plate), toStack(nugget), null, r, g, b))); @@ -30,14 +46,15 @@ public class Crucible { MineTweakerAPI.apply(new AddLiquid(new CrucibleLiquid(name, toStack(ingot), toStack(plate), toStack(nugget), new CrucibleFormula(getLiquid(l1), n1, getLiquid(l2), n2, n3), r, g, b))); } - private static class AddLiquid extends BaseListAddition { + private static class AddLiquid extends BaseListAddition { public AddLiquid(CrucibleLiquid recipe) { - super("FSP Crucible Liquid", SteamcraftRegistry.liquids, recipe); + super(nameLiquid, SteamcraftRegistry.liquids); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((CrucibleLiquid) recipe).name; + public String getRecipeInfo(CrucibleLiquid recipe) { + return recipe.name; } } @@ -50,41 +67,43 @@ public class Crucible { } } - private static class AddMelting extends BaseMapAddition { - private final ItemStack stack; - - public AddMelting(ItemStack stack, Object key, Object recipe) { - super("FSP Crucible Melting", SteamcraftRegistry.smeltThings, key, recipe); - this.stack = stack; + private static class AddMelting extends BaseMapAddition, MutablePair> { + public AddMelting(ItemStack stack, MutablePair key, MutablePair recipe) { + super(nameMelting, SteamcraftRegistry.smeltThings); + map.put(key, recipe); } @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + protected String getRecipeInfo(Entry, MutablePair> recipe) { + return InputHelper.getStackDescription(new ItemStack(recipe.getKey().left, 1, recipe.getKey().right)); } } @ZenMethod - public static void removeMelting(IItemStack input) { - MineTweakerAPI.apply(new RemoveMelting(toStack(input), MutablePair.of(toStack(input).getItem(), toStack(input).getItemDamage()))); - } - - private static class RemoveMelting extends BaseMapRemoval { - private final ItemStack stack; - - public RemoveMelting(ItemStack stack, Object key) { - super("FSP Crucible Melting", SteamcraftRegistry.smeltThings, key); - this.stack = stack; + public static void removeMelting(IIngredient input) { + Map, MutablePair> recipes = new HashMap, MutablePair>(); + + for(Entry, MutablePair> entry : SteamcraftRegistry.smeltThings.entrySet()) { + if(matches(input, toIItemStack(new ItemStack(entry.getKey().left, 1, entry.getKey().right)))) { + recipes.put(entry.getKey(), entry.getValue()); + } } - public void apply(){ - SteamcraftRegistry.smeltThings.remove(stack); - MutablePair pair; + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMelting(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipes found for %s", Crucible.nameMelting, input)); + } + } + + private static class RemoveMelting extends BaseMapRemoval, MutablePair> { + public RemoveMelting(Map, MutablePair> recipes) { + super(nameMelting, SteamcraftRegistry.smeltThings, recipes); } @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + protected String getRecipeInfo(Entry, MutablePair> recipe) { + return InputHelper.getStackDescription(new ItemStack(recipe.getKey().left, 1, recipe.getKey().right)); } } @@ -93,40 +112,50 @@ public class Crucible { ItemStack stack = toStack(input); CrucibleLiquid fluid = getLiquid(liquid); if (fluid != null) { - MineTweakerAPI.apply(new AddDunking(toStack(input), new Tuple3(stack.getItem(), stack.getItemDamage(), fluid), MutablePair.of(volume, toStack(output)))); + MineTweakerAPI.apply(new AddDunking(new Tuple3(stack.getItem(), stack.getItemDamage(), fluid), MutablePair.of(volume, toStack(output)))); } } - private static class AddDunking extends BaseMapAddition { - private final ItemStack stack; - - public AddDunking(ItemStack stack, Object key, Object recipe) { - super("FSP Crucible Dunking", SteamcraftRegistry.dunkThings, key, recipe); - this.stack = stack; + private static class AddDunking extends BaseMapAddition> { + public AddDunking(Tuple3 key, MutablePair recipe) { + super(Crucible.nameDunking, SteamcraftRegistry.dunkThings); + recipes.put(key, recipe); } @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(Entry> recipe) { + return InputHelper.getStackDescription(recipe.getValue().right); } } @ZenMethod - public static void removeDunking(IItemStack input, String liquid) { - MineTweakerAPI.apply(new RemoveDunking(toStack(input), new Tuple3(toStack(input).getItem(), toStack(input).getItemDamage(), getLiquid(liquid)))); + public static void removeDunking(IIngredient input, String liquid) { + Map> recipes = new HashMap>(); + + for(Entry> recipe : SteamcraftRegistry.dunkThings.entrySet()) { + if(recipe.getValue() != null && recipe.getValue().right != null && matches(input, toIItemStack(recipe.getValue().right))) { + if(((CrucibleLiquid)recipe.getKey().third).equals(getLiquid(liquid))) { + recipes.put(recipe.getKey(), recipe.getValue()); + } + } + + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveDunking(recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s and %s. Command ignored!", Crucible.nameDunking, input.toString(), liquid)); + } } - private static class RemoveDunking extends BaseMapRemoval { - private final ItemStack stack; - - public RemoveDunking(ItemStack stack, Object key) { - super("FSP Crucible Dunking", SteamcraftRegistry.dunkThings, key); - this.stack = stack; + private static class RemoveDunking extends BaseMapRemoval> { + public RemoveDunking(Map> recipes) { + super(Crucible.nameDunking, SteamcraftRegistry.dunkThings, recipes); } @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(Entry> recipe) { + return InputHelper.getStackDescription(recipe.getValue().right); } } } diff --git a/src/main/java/modtweaker2/mods/fsp/handlers/Furnace.java b/src/main/java/modtweaker2/mods/fsp/handlers/Furnace.java index 4cc1fa0..f1a63f2 100644 --- a/src/main/java/modtweaker2/mods/fsp/handlers/Furnace.java +++ b/src/main/java/modtweaker2/mods/fsp/handlers/Furnace.java @@ -1,10 +1,21 @@ package modtweaker2.mods.fsp.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseMapAddition; import modtweaker2.utils.BaseMapRemoval; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import org.apache.commons.lang3.tuple.MutablePair; @@ -15,41 +26,51 @@ import flaxbeard.steamcraft.api.SteamcraftRegistry; @ZenClass("mods.fsp.Furnace") public class Furnace { + + public static final String name = "FSP Furnace (Steamed Foods)"; + @ZenMethod public static void addSteamFood(IItemStack input, IItemStack output) { MineTweakerAPI.apply(new AddSteamFood(toStack(input), MutablePair.of(toStack(input).getItem(), toStack(input).getItemDamage()), MutablePair.of(toStack(output).getItem(), toStack(output).getItemDamage()))); } - private static class AddSteamFood extends BaseMapAddition { - private final ItemStack stack; - - public AddSteamFood(ItemStack stack, MutablePair key, MutablePair recipe) { - super("FSP Furnace - Steam Food", SteamcraftRegistry.steamedFoods, key, recipe); - this.stack = stack; + private static class AddSteamFood extends BaseMapAddition, MutablePair> { + public AddSteamFood(ItemStack stack, MutablePair key, MutablePair recipe) { + super(Furnace.name, SteamcraftRegistry.steamedFoods); + recipes.put(key, recipe); } @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(Entry, MutablePair> recipe) { + return InputHelper.getStackDescription(new ItemStack(recipe.getKey().left, 1, recipe.getKey().right)); } } @ZenMethod - public static void removeSteamFood(IItemStack input) { - MineTweakerAPI.apply(new RemoveSteamFood(toStack(input), MutablePair.of(toStack(input).getItem(), toStack(input).getItemDamage()))); + public static void removeSteamFood(IIngredient input) { + Map, MutablePair> recipes = new HashMap, MutablePair>(); + + for(Entry, MutablePair> recipe : SteamcraftRegistry.steamedFoods.entrySet()) { + if(matches(input, toIItemStack(new ItemStack(recipe.getKey().left, 1, recipe.getKey().right)))) { + recipes.put(recipe.getKey(), recipe.getValue()); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveSteamFood(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Furnace.name, input.toString())); + } } - private static class RemoveSteamFood extends BaseMapRemoval { - private final ItemStack stack; - - public RemoveSteamFood(ItemStack stack, MutablePair key) { - super("FSP Furnace - Steam Food", SteamcraftRegistry.steamedFoods, key); - this.stack = stack; + private static class RemoveSteamFood extends BaseMapRemoval, MutablePair> { + public RemoveSteamFood(Map, MutablePair> recipes) { + super(Furnace.name, SteamcraftRegistry.steamedFoods, recipes); } @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(Entry, MutablePair> recipe) { + return InputHelper.getStackDescription(new ItemStack(recipe.getKey().left, 1, recipe.getKey().right)); } } } diff --git a/src/main/java/modtweaker2/mods/mariculture/MaricultureHelper.java b/src/main/java/modtweaker2/mods/mariculture/MaricultureHelper.java index 3fa258a..2db7fd3 100644 --- a/src/main/java/modtweaker2/mods/mariculture/MaricultureHelper.java +++ b/src/main/java/modtweaker2/mods/mariculture/MaricultureHelper.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import mariculture.api.core.FuelInfo; import mariculture.api.core.MaricultureHandlers; import mariculture.api.fishery.Fishing; import mariculture.api.fishery.Loot; @@ -15,7 +16,7 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; public class MaricultureHelper { - public static Map fuels = null; + public static Map fuels = null; public static HashMap> loot = null; static { @@ -27,7 +28,7 @@ public class MaricultureHelper { private MaricultureHelper() {} - //Helper for getting the key that is used when adding/removing fuels + // Helper for getting the key that is used when adding/removing fuels public static String getKey(Object o) { if (o instanceof String) return (String) o; else if (o instanceof ItemStack) { diff --git a/src/main/java/modtweaker2/mods/mariculture/handlers/Anvil.java b/src/main/java/modtweaker2/mods/mariculture/handlers/Anvil.java index 17760da..2a6ed11 100644 --- a/src/main/java/modtweaker2/mods/mariculture/handlers/Anvil.java +++ b/src/main/java/modtweaker2/mods/mariculture/handlers/Anvil.java @@ -1,33 +1,47 @@ package modtweaker2.mods.mariculture.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + import mariculture.api.core.IAnvilHandler.RecipeAnvil; import mariculture.api.core.MaricultureHandlers; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.mariculture.MaricultureHelper; import modtweaker2.utils.BaseMapAddition; import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mariculture.Anvil") public class Anvil { - //Adding a Mariculture Anvil recipe + + public static final String name = "Mariculture Anvil"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(IItemStack input, IItemStack output, int hits) { MineTweakerAPI.apply(new Add(new RecipeAnvil(toStack(input), toStack(output), hits))); } - private static class Add extends BaseMapAddition { + private static class Add extends BaseMapAddition { public Add(RecipeAnvil recipe) { - super("Mariculture Anvil", MaricultureHandlers.anvil.getRecipes(), MaricultureHelper.getKey(recipe.input), recipe); + super("Mariculture Anvil", MaricultureHandlers.anvil.getRecipes()); + recipes.put(MaricultureHelper.getKey(recipe.input), recipe); } @Override - public String getRecipeInfo() { - return ((RecipeAnvil) recipe).output.getDisplayName(); + public String getRecipeInfo(Entry recipe) { + return InputHelper.getStackDescription(recipe.getValue().output); } } @@ -35,18 +49,30 @@ public class Anvil { //Removing a Mariculture Anvil recipe @ZenMethod - public static void removeRecipe(IItemStack input) { - MineTweakerAPI.apply(new Remove(toStack(input))); + public static void removeRecipe(IIngredient input) { + Map recipes = new HashMap(); + + for(Entry recipe : MaricultureHandlers.anvil.getRecipes().entrySet()) { + if(recipe != null && recipe.getValue() != null && recipe.getValue().input != null && matches(input, toIItemStack(recipe.getValue().input))) { + recipes.put(recipe.getKey(), recipe.getValue()); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Anvil.name, input.toString())); + } } - private static class Remove extends BaseMapRemoval { - public Remove(ItemStack stack) { - super("Mariculture Anvil", MaricultureHandlers.anvil.getRecipes(), MaricultureHelper.getKey(stack), stack); + private static class Remove extends BaseMapRemoval { + public Remove(Map recipes) { + super("Mariculture Anvil", MaricultureHandlers.anvil.getRecipes(), recipes); } @Override - public String getRecipeInfo() { - return ((ItemStack) stack).getDisplayName(); + public String getRecipeInfo(Entry recipe) { + return InputHelper.getStackDescription(recipe.getValue().output); } } } diff --git a/src/main/java/modtweaker2/mods/mariculture/handlers/Casting.java b/src/main/java/modtweaker2/mods/mariculture/handlers/Casting.java index 78ffb5b..ae78fc4 100644 --- a/src/main/java/modtweaker2/mods/mariculture/handlers/Casting.java +++ b/src/main/java/modtweaker2/mods/mariculture/handlers/Casting.java @@ -1,26 +1,36 @@ package modtweaker2.mods.mariculture.handlers; import static modtweaker2.helpers.InputHelper.toFluid; +import static modtweaker2.helpers.InputHelper.toIItemStack; +import static modtweaker2.helpers.InputHelper.toILiquidStack; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; import mariculture.api.core.MaricultureHandlers; import mariculture.api.core.RecipeCasting; import mariculture.api.core.RecipeCasting.RecipeNuggetCasting; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; +import modtweaker2.helpers.InputHelper; import modtweaker2.mods.mariculture.MaricultureHelper; import modtweaker2.utils.BaseMapAddition; import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mariculture.Casting") public class Casting { - //Adding Mariculture Casting Recipes + + public static final String name = "Mariculture Casting"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addNuggetRecipe(ILiquidStack input, IItemStack output) { MineTweakerAPI.apply(new Add(new RecipeNuggetCasting(toFluid(input), toStack(output)), MaricultureHandlers.casting.getNuggetRecipes())); @@ -36,43 +46,63 @@ public class Casting { MineTweakerAPI.apply(new Add(new RecipeNuggetCasting(toFluid(input), toStack(output)), MaricultureHandlers.casting.getBlockRecipes())); } - private static class Add extends BaseMapAddition { - public Add(RecipeCasting recipe, HashMap map) { - super("Mariculture Casting", map, MaricultureHelper.getKey(recipe.fluid), recipe); + private static class Add extends BaseMapAddition { + public Add(RecipeCasting recipe, HashMap map) { + super(Casting.name, map); + recipes.put(MaricultureHelper.getKey(recipe.fluid), recipe); } @Override - public String getRecipeInfo() { - return ((RecipeCasting) recipe).output.getDisplayName(); + public String getRecipeInfo(Entry recipe) { + return InputHelper.getStackDescription(recipe.getValue().output); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Removing Mariculture Casting Recipes @ZenMethod - public static void removeNuggetRecipe(IItemStack input) { - MineTweakerAPI.apply(new Remove(toStack(input), MaricultureHandlers.casting.getNuggetRecipes())); + public static void removeNuggetRecipe(IIngredient ingredient) { + removeRecipe(ingredient, MaricultureHandlers.casting.getNuggetRecipes()); } @ZenMethod - public static void removeIngotRecipe(IItemStack input) { - MineTweakerAPI.apply(new Remove(toStack(input), MaricultureHandlers.casting.getIngotRecipes())); + public static void removeIngotRecipe(IIngredient ingredient) { + removeRecipe(ingredient, MaricultureHandlers.casting.getIngotRecipes()); } @ZenMethod - public static void removeBlockRecipe(IItemStack input) { - MineTweakerAPI.apply(new Remove(toStack(input), MaricultureHandlers.casting.getBlockRecipes())); + public static void removeBlockRecipe(IIngredient ingredient) { + removeRecipe(ingredient, MaricultureHandlers.casting.getBlockRecipes()); + } + + public static void removeRecipe(IIngredient ingredient, HashMap map) { + Map recipes = new HashMap(); + + for(Entry recipe : map.entrySet()) { + if(recipe != null && recipe.getValue() != null) { + if(recipe.getValue().fluid != null && matches(ingredient, toILiquidStack(recipe.getValue().fluid))) { + recipes.put(recipe.getKey(), recipe.getValue()); + } + + if(recipe.getValue().output != null && matches(ingredient, toIItemStack(recipe.getValue().output))) { + recipes.put(recipe.getKey(), recipe.getValue()); + } + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(map, recipes)); + } } - private static class Remove extends BaseMapRemoval { - public Remove(ItemStack stack, HashMap map) { - super("Mariculture Casting", map, MaricultureHelper.getKey(stack), stack); + private static class Remove extends BaseMapRemoval { + public Remove(Map map, Map recipes) { + super(Casting.name, map, recipes); } @Override - public String getRecipeInfo() { - return ((ItemStack) stack).getDisplayName(); + public String getRecipeInfo(Entry recipe) { + return InputHelper.getStackDescription(recipe.getValue().output); } } } diff --git a/src/main/java/modtweaker2/mods/mariculture/handlers/Crucible.java b/src/main/java/modtweaker2/mods/mariculture/handlers/Crucible.java index ff94994..e4edc8c 100644 --- a/src/main/java/modtweaker2/mods/mariculture/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/mariculture/handlers/Crucible.java @@ -1,14 +1,25 @@ package modtweaker2.mods.mariculture.handlers; import static modtweaker2.helpers.InputHelper.toFluid; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +import static modtweaker2.helpers.StackHelper.matches; + +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + import mariculture.api.core.FuelInfo; import mariculture.api.core.MaricultureHandlers; import mariculture.api.core.RecipeSmelter; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.mariculture.MaricultureHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -21,6 +32,9 @@ import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mariculture.Crucible") public class Crucible { + + public static final String nameSmelting = "Mariculture Crucible (Smelting)"; + public static final String nameFuel = "Mariculture Crucible (Fuel)"; /********************************************** Mariculture Crucible Recipes **********************************************/ @@ -32,14 +46,15 @@ public class Crucible { } // Passes the list to the base list implementation, and adds the recipe - private static class AddRecipe extends BaseListAddition { + private static class AddRecipe extends BaseListAddition { public AddRecipe(RecipeSmelter recipe) { - super("Mariculture Crucible", MaricultureHandlers.crucible.getRecipes(), recipe); + super(Crucible.nameSmelting, MaricultureHandlers.crucible.getRecipes()); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((RecipeSmelter) recipe).input.getDisplayName(); + public String getRecipeInfo(RecipeSmelter recipe) { + return InputHelper.getStackDescription(recipe.input); } } @@ -47,35 +62,34 @@ public class Crucible { // Removing a Mariculture Crucible recipe @ZenMethod - public static void removeRecipe(IItemStack input) { - MineTweakerAPI.apply(new RemoveRecipe(toStack(input))); + public static void removeRecipe(IIngredient input) { + List recipes = new LinkedList(); + + for (RecipeSmelter r : MaricultureHandlers.crucible.getRecipes()) { + if (r != null) { + if (r.input != null && matches(input, toIItemStack(r.input))) { + recipes.add(r); + } + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveRecipe(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored", Crucible.nameSmelting, input.toString())); + } + } - // Removes a recipe, apply is never the same for anything, so will always - // need to override it - private static class RemoveRecipe extends BaseListRemoval { - public RemoveRecipe(ItemStack stack) { - super("Mariculture Crucible", MaricultureHandlers.crucible.getRecipes(), stack); - } - - // Loops through the registry, to find the item that matches, saves that - // 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)) { - recipes.add(r); - } - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + private static class RemoveRecipe extends BaseListRemoval { + public RemoveRecipe(List recipes) { + super(Crucible.nameSmelting, MaricultureHandlers.crucible.getRecipes(), recipes); } + + @Override + public String getRecipeInfo(RecipeSmelter recipe) { + return InputHelper.getStackDescription(recipe.input); + } } /********************************************** Crucible Fuels **********************************************/ @@ -95,42 +109,58 @@ public class Crucible { } // Passes the list to the base map implementation, and adds the recipe - private static class AddFuel extends BaseMapAddition { + private static class AddFuel extends BaseMapAddition { public AddFuel(Object o, FuelInfo info) { - super("Mariculture Crucible Fuel", MaricultureHelper.fuels, MaricultureHelper.getKey(o), info); + super(Crucible.nameFuel, MaricultureHelper.fuels); + recipes.put(MaricultureHelper.getKey(o), info); } - @Override - public String getRecipeInfo() { - return (String) key; - } + @Override + public String getRecipeInfo(Entry recipe) { + return (String) recipe.getKey(); + } } // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod public static void removeFuel(IItemStack fuel) { - MineTweakerAPI.apply(new RemoveFuel(fuel)); + removeFuelEntry(fuel); } @ZenMethod public static void removeFuel(ILiquidStack fuel) { - MineTweakerAPI.apply(new RemoveFuel(fuel)); + removeFuelEntry(fuel); } @ZenMethod public static void removeFuel(String fuel) { - MineTweakerAPI.apply(new RemoveFuel(fuel)); + removeFuelEntry(fuel); + } + + public static void removeFuelEntry(Object o) { + String key = MaricultureHelper.getKey(o); + Map recipes = new HashMap(); + + for(Entry entry : MaricultureHelper.fuels.entrySet()) { + if(key.matches((String)entry.getKey())) { + recipes.put(key, entry.getValue()); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveFuel(recipes)); + } } // Removes a recipe, will always remove the key, so all should be good - private static class RemoveFuel extends BaseMapRemoval { - public RemoveFuel(Object o) { - super("Mariculture Crucible Fuel", MaricultureHelper.fuels, MaricultureHelper.getKey(o), null); + private static class RemoveFuel extends BaseMapRemoval { + public RemoveFuel(Map recipes) { + super(Crucible.nameFuel, MaricultureHelper.fuels, recipes); } - @Override - public String getRecipeInfo() { - return (String) key; - } + @Override + public String getRecipeInfo(Entry recipe) { + return (String) recipe.getKey(); + } } } diff --git a/src/main/java/modtweaker2/mods/mariculture/handlers/Fishing.java b/src/main/java/modtweaker2/mods/mariculture/handlers/Fishing.java index c957ca7..6d1a749 100644 --- a/src/main/java/modtweaker2/mods/mariculture/handlers/Fishing.java +++ b/src/main/java/modtweaker2/mods/mariculture/handlers/Fishing.java @@ -14,8 +14,7 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; import modtweaker2.helpers.ReflectionHelper; import modtweaker2.mods.mariculture.MaricultureHelper; -import modtweaker2.utils.BaseDescriptionAddition; -import modtweaker2.utils.BaseDescriptionRemoval; +import modtweaker2.utils.BaseUndoable; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; @@ -67,7 +66,7 @@ public class Fishing { } } - private static class AddLoot extends BaseDescriptionAddition { + private static class AddLoot extends BaseUndoable { private final Loot loot; public AddLoot(Loot loot, String description) { @@ -80,6 +79,7 @@ public class Fishing { ArrayList list = MaricultureHelper.loot.get(loot.rarity); list.add(loot); MaricultureHelper.loot.put(loot.rarity, list); + success = true; } @Override @@ -103,7 +103,7 @@ public class Fishing { MineTweakerAPI.apply(new RemoveLoot(toStack(loot))); } - private static class RemoveLoot extends BaseDescriptionRemoval { + private static class RemoveLoot extends BaseUndoable { private HashMap loot; private final ItemStack stack; @@ -119,6 +119,7 @@ public class Fishing { apply(Rarity.JUNK); apply(Rarity.GOOD); apply(Rarity.RARE); + success = true; } //Performs the apply function on all rarity types diff --git a/src/main/java/modtweaker2/mods/mariculture/handlers/Vat.java b/src/main/java/modtweaker2/mods/mariculture/handlers/Vat.java index ef45f09..08816ef 100644 --- a/src/main/java/modtweaker2/mods/mariculture/handlers/Vat.java +++ b/src/main/java/modtweaker2/mods/mariculture/handlers/Vat.java @@ -1,22 +1,34 @@ package modtweaker2.mods.mariculture.handlers; import static modtweaker2.helpers.InputHelper.toFluid; +import static modtweaker2.helpers.InputHelper.toIItemStack; +import static modtweaker2.helpers.InputHelper.toILiquidStack; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +import static modtweaker2.helpers.StackHelper.matches; + +import java.util.LinkedList; +import java.util.List; + import mariculture.api.core.MaricultureHandlers; import mariculture.api.core.RecipeVat; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mariculture.Vat") public class Vat { + + public static final String name = "Mariculture Vat"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // Adding a Mariculture Vat recipe @ZenMethod public static void addRecipe(ILiquidStack fluid1, ILiquidStack fluid2, ILiquidStack outputFluid, int time) { @@ -64,74 +76,82 @@ public class Vat { } // Passes the list to the base list implementation, and adds the recipe - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(RecipeVat recipe) { - super("Mariculture Vat", MaricultureHandlers.vat.getRecipes(), recipe); + super("Mariculture Vat", MaricultureHandlers.vat.getRecipes()); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - if (((RecipeVat) recipe).outputItem != null) - return ((RecipeVat) recipe).outputItem.getDisplayName(); - else - return ((RecipeVat) recipe).outputFluid.getFluid().getLocalizedName(); + public String getRecipeInfo(RecipeVat recipe) { + if(recipe.outputItem != null) { + return InputHelper.getStackDescription(recipe.outputItem); + } else { + return InputHelper.getStackDescription(recipe.outputFluid); + } } } - // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Removing a Mariculture Vat recipe @ZenMethod - public static void removeRecipe(IItemStack outputItem) { - MineTweakerAPI.apply(new Remove(toStack(outputItem), null)); + public static void removeRecipe(IIngredient ingredient) { + List recipes = new LinkedList(); + + for(RecipeVat r : MaricultureHandlers.vat.getRecipes()) { + if(r != null) { + if(r.outputItem != null && matches(ingredient, toIItemStack(r.outputItem))) { + recipes.add(r); + } + else if(r.outputFluid != null && matches(ingredient, toILiquidStack(r.outputFluid))) { + recipes.add(r); + } + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipes found for %s. Command ignored!", Vat.name, ingredient.toString())); + } } @ZenMethod - public static void removeRecipe(ILiquidStack outputFluid) { - MineTweakerAPI.apply(new Remove(null, toFluid(outputFluid))); - } - - @ZenMethod - public static void removeRecipe(IItemStack outputItem, ILiquidStack outputFluid) { - MineTweakerAPI.apply(new Remove(toStack(outputItem), toFluid(outputFluid))); + public static void removeRecipe(IIngredient outputItem, IIngredient outputFluid) { + List recipes = new LinkedList(); + + for (RecipeVat r : MaricultureHandlers.vat.getRecipes()) { + if (r != null) { + if (r.outputItem != null && matches(outputItem, toIItemStack(r.outputItem))) { + if (r.outputFluid != null && matches(outputFluid, toILiquidStack(r.outputFluid))) { + recipes.add(r); + } + } + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipes found for %s and %s. Command ignored!", Vat.name, outputItem.toString(), outputFluid.toString())); + } } // Removes a recipe, apply is never the same for anything, so will always // need to override it - private static class Remove extends BaseListRemoval { - private FluidStack fluid = null; - - public Remove(ItemStack stack, FluidStack fluid) { - super("Mariculture Vat", MaricultureHandlers.vat.getRecipes(), stack); - if (fluid != null) - this.fluid = fluid; + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super("Mariculture Vat", MaricultureHandlers.vat.getRecipes(), recipes); } - // Loops through the registry, to find the item that matches, saves that - // recipe then removes it - @Override - public void apply() { - for (RecipeVat r : MaricultureHandlers.vat.getRecipes()) { - if (r != null) - if (r.outputItem != null && stack != null && areEqual(r.outputItem, stack)) { - if (r.outputFluid == null || (fluid != null && r.outputFluid.isFluidStackIdentical(fluid))) { - recipes.add(r); - break; - } - } - - if ((r.outputFluid != null && fluid != null && r.outputFluid.isFluidStackIdentical(fluid))) { - recipes.add(r); - break; - } - } - - super.apply(); - } - - @Override - public String getRecipeInfo() { - return stack != null ? stack.getDisplayName() : fluid.getFluid().getLocalizedName(); - } + @Override + public String getRecipeInfo(RecipeVat recipe) { + if(recipe.outputItem != null) { + return InputHelper.getStackDescription(recipe.outputItem); + } else { + return InputHelper.getStackDescription(recipe.outputFluid); + } + } } } diff --git a/src/main/java/modtweaker2/mods/mekanism/Mekanism.java b/src/main/java/modtweaker2/mods/mekanism/Mekanism.java index eb88dcd..f71cbd9 100644 --- a/src/main/java/modtweaker2/mods/mekanism/Mekanism.java +++ b/src/main/java/modtweaker2/mods/mekanism/Mekanism.java @@ -1,56 +1,56 @@ -package modtweaker2.mods.mekanism; - -import java.util.regex.Pattern; - -import minetweaker.MineTweakerAPI; -import modtweaker2.mods.mekanism.gas.GasBracketHandler; -import modtweaker2.mods.mekanism.handlers.v8.ChemicalInfuser; -import modtweaker2.mods.mekanism.handlers.v8.ChemicalInjection; -import modtweaker2.mods.mekanism.handlers.ChemicalOxidizer; -import modtweaker2.mods.mekanism.handlers.ChemicalWasher; -import modtweaker2.mods.mekanism.handlers.Combiner; -import modtweaker2.mods.mekanism.handlers.Compressor; -import modtweaker2.mods.mekanism.handlers.Crusher; -import modtweaker2.mods.mekanism.handlers.Enrichment; -import modtweaker2.mods.mekanism.handlers.Purification; -import modtweaker2.mods.mekanism.handlers.Reaction; -import modtweaker2.mods.mekanism.handlers.Sawmill; -import modtweaker2.mods.mekanism.handlers.Separator; -import modtweaker2.mods.mekanism.handlers.v8.ChemicalCrystallizer; -import modtweaker2.mods.mekanism.handlers.v8.ChemicalDissolution; -import modtweaker2.mods.mekanism.handlers.v8.Infuser; -import modtweaker2.utils.TweakerPlugin; -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.ModContainer; - -public class Mekanism extends TweakerPlugin { - public static final boolean v7 = isV7(); - public Mekanism() { - MineTweakerAPI.registerBracketHandler(new GasBracketHandler()); - MineTweakerAPI.registerClass(Combiner.class); - MineTweakerAPI.registerClass(Compressor.class); - MineTweakerAPI.registerClass(Crusher.class); - MineTweakerAPI.registerClass(Enrichment.class); - MineTweakerAPI.registerClass(Infuser.class); - MineTweakerAPI.registerClass(Purification.class); - MineTweakerAPI.registerClass(Reaction.class); - MineTweakerAPI.registerClass(Sawmill.class); - MineTweakerAPI.registerClass(Separator.class); +//package modtweaker2.mods.mekanism; +// +//import java.util.regex.Pattern; +// +//import minetweaker.MineTweakerAPI; +//import modtweaker2.mods.mekanism.gas.GasBracketHandler; +//import modtweaker2.mods.mekanism.handlers.ChemicalOxidizer; +//import modtweaker2.mods.mekanism.handlers.ChemicalWasher; +//import modtweaker2.mods.mekanism.handlers.Combiner; +//import modtweaker2.mods.mekanism.handlers.Compressor; +//import modtweaker2.mods.mekanism.handlers.Crusher; +//import modtweaker2.mods.mekanism.handlers.Enrichment; +//import modtweaker2.mods.mekanism.handlers.Purification; +//import modtweaker2.mods.mekanism.handlers.Reaction; +//import modtweaker2.mods.mekanism.handlers.Sawmill; +//import modtweaker2.mods.mekanism.handlers.Separator; +//import modtweaker2.mods.mekanism.handlers.v8.ChemicalCrystallizer; +//import modtweaker2.mods.mekanism.handlers.v8.ChemicalDissolution; +//import modtweaker2.mods.mekanism.handlers.v8.ChemicalInfuser; +//import modtweaker2.mods.mekanism.handlers.v8.ChemicalInjection; +//import modtweaker2.mods.mekanism.handlers.v8.Infuser; +//import modtweaker2.utils.TweakerPlugin; +//import cpw.mods.fml.common.Loader; +//import cpw.mods.fml.common.ModContainer; +// +//public class Mekanism extends TweakerPlugin { +// public static final boolean v7 = isV7(); +// public Mekanism() { +// MineTweakerAPI.registerBracketHandler(new GasBracketHandler()); +// MineTweakerAPI.registerClass(Combiner.class); +// MineTweakerAPI.registerClass(Compressor.class); +// MineTweakerAPI.registerClass(Crusher.class); +// MineTweakerAPI.registerClass(Enrichment.class); +// MineTweakerAPI.registerClass(Infuser.class); +// MineTweakerAPI.registerClass(Purification.class); +// MineTweakerAPI.registerClass(Reaction.class); +// MineTweakerAPI.registerClass(Sawmill.class); +// MineTweakerAPI.registerClass(Separator.class); +//// MineTweakerAPI.registerClass(ChemicalCrystallizer.class); // MineTweakerAPI.registerClass(ChemicalCrystallizer.class); - MineTweakerAPI.registerClass(ChemicalCrystallizer.class); - MineTweakerAPI.registerClass(ChemicalDissolution.class); - MineTweakerAPI.registerClass(ChemicalInfuser.class); - MineTweakerAPI.registerClass(ChemicalInjection.class); - MineTweakerAPI.registerClass(ChemicalOxidizer.class); - MineTweakerAPI.registerClass(ChemicalWasher.class); - } - - public static boolean isV7(){ - Pattern version = Pattern.compile("7.*"); - for (ModContainer loadedMod : Loader.instance().getActiveModList()) - { - if (loadedMod.getModId().equals("Mekanism") && version.matcher(loadedMod.getVersion()).find()) return true; - } - return false; - } -} +// MineTweakerAPI.registerClass(ChemicalDissolution.class); +// MineTweakerAPI.registerClass(ChemicalInfuser.class); +// MineTweakerAPI.registerClass(ChemicalInjection.class); +// MineTweakerAPI.registerClass(ChemicalOxidizer.class); +// MineTweakerAPI.registerClass(ChemicalWasher.class); +// } +// +// public static boolean isV7(){ +// Pattern version = Pattern.compile("7.*"); +// for (ModContainer loadedMod : Loader.instance().getActiveModList()) +// { +// if (loadedMod.getModId().equals("Mekanism") && version.matcher(loadedMod.getVersion()).find()) return true; +// } +// return false; +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/MekanismHelper.java b/src/main/java/modtweaker2/mods/mekanism/MekanismHelper.java index 07a64a7..a71d754 100644 --- a/src/main/java/modtweaker2/mods/mekanism/MekanismHelper.java +++ b/src/main/java/modtweaker2/mods/mekanism/MekanismHelper.java @@ -1,27 +1,27 @@ -package modtweaker2.mods.mekanism; - -import mekanism.api.gas.GasRegistry; -import mekanism.api.gas.GasStack; -import minetweaker.api.item.IIngredient; -import modtweaker2.mods.mekanism.gas.IGasStack; - -public class MekanismHelper { - private MekanismHelper() {} - - public static GasStack toGas(IGasStack iStack) { - if (iStack == null) { - return null; - } else return new GasStack(GasRegistry.getGas(iStack.getName()), iStack.getAmount()); - } - - public static GasStack[] toGases(IIngredient[] input) { - return toGases((IGasStack[]) input); - } - - public static GasStack[] toGases(IGasStack[] iStack) { - GasStack[] stack = new GasStack[iStack.length]; - for (int i = 0; i < stack.length; i++) - stack[i] = toGas(iStack[i]); - return stack; - } -} +//package modtweaker2.mods.mekanism; +// +//import mekanism.api.gas.GasRegistry; +//import mekanism.api.gas.GasStack; +//import minetweaker.api.item.IIngredient; +//import modtweaker2.mods.mekanism.gas.IGasStack; +// +//public class MekanismHelper { +// private MekanismHelper() {} +// +// public static GasStack toGas(IGasStack iStack) { +// if (iStack == null) { +// return null; +// } else return new GasStack(GasRegistry.getGas(iStack.getName()), iStack.getAmount()); +// } +// +// public static GasStack[] toGases(IIngredient[] input) { +// return toGases((IGasStack[]) input); +// } +// +// public static GasStack[] toGases(IGasStack[] iStack) { +// GasStack[] stack = new GasStack[iStack.length]; +// for (int i = 0; i < stack.length; i++) +// stack[i] = toGas(iStack[i]); +// return stack; +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalCrystallizer.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalCrystallizer.java index edf0f0e..1c2d7cd 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalCrystallizer.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalCrystallizer.java @@ -1,34 +1,34 @@ -package modtweaker2.mods.mekanism.handlers; - -import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.machines.CrystallizerRecipe; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.chemical.Crystallizer") -public class ChemicalCrystallizer { - @ZenMethod - public static void addRecipe(IGasStack input, IItemStack output) { - if (Mekanism.v7) - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_CRYSTALLIZER", Recipe.CHEMICAL_CRYSTALLIZER.get(), toGas(input), toStack(output))); - else - { - CrystallizerRecipe recipe = new CrystallizerRecipe(toGas(input), toStack(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_CRYSTALLIZER", Recipe.CHEMICAL_CRYSTALLIZER.get(), recipe.getInput(), recipe)); - } - } - - @ZenMethod - public static void removeRecipe(IItemStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_CRYSTALLIZER", Recipe.CHEMICAL_CRYSTALLIZER.get(), toStack(output))); - } -} +//package modtweaker2.mods.mekanism.handlers; +// +//import static modtweaker2.helpers.InputHelper.toStack; +//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.machines.CrystallizerRecipe; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.item.IItemStack; +//import modtweaker2.mods.mekanism.Mekanism; +//import modtweaker2.mods.mekanism.gas.IGasStack; +//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.chemical.Crystallizer") +//public class ChemicalCrystallizer { +// @ZenMethod +// public static void addRecipe(IGasStack input, IItemStack output) { +// if (Mekanism.v7) +// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_CRYSTALLIZER", Recipe.CHEMICAL_CRYSTALLIZER.get(), toGas(input), toStack(output))); +// else +// { +// CrystallizerRecipe recipe = new CrystallizerRecipe(toGas(input), toStack(output)); +// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_CRYSTALLIZER", Recipe.CHEMICAL_CRYSTALLIZER.get(), recipe.getInput(), recipe)); +// } +// } +// +// @ZenMethod +// public static void removeRecipe(IItemStack output) { +// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_CRYSTALLIZER", Recipe.CHEMICAL_CRYSTALLIZER.get(), toStack(output))); +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalDissolution.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalDissolution.java index 82aaace..04889f0 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalDissolution.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalDissolution.java @@ -1,90 +1,90 @@ -package modtweaker2.mods.mekanism.handlers; - -import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; -import static modtweaker2.mods.mekanism.MekanismHelper.toGas; - -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import mekanism.api.gas.GasStack; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.machines.DissolutionRecipe; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import minetweaker.api.oredict.IOreDictEntry; -import modtweaker2.helpers.InputHelper; -import modtweaker2.mods.mekanism.Mekanism; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -import net.minecraft.item.ItemStack; -import net.minecraftforge.oredict.OreDictionary; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.chemical.Dissolution") -public class ChemicalDissolution { - @ZenMethod - public static void addRecipe(IItemStack input, IGasStack output) { - if (Mekanism.v7) - { - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), toStack(input), toGas(output))); - } - else { - DissolutionRecipe recipe = new DissolutionRecipe(toStack(input), toGas(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), recipe.getInput(), recipe)); - } - } - - @ZenMethod - public static void removeRecipe(IItemStack input) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new Remove("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), toStack(input))); - } - - @ZenMethod - public static void removeRecipe(IOreDictEntry input) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - List stacks = OreDictionary.getOres(InputHelper.toString(input)); - for (ItemStack stack : stacks) { - MineTweakerAPI.apply(new Remove("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), stack)); - } - } - - @ZenMethod - public static void removeRecipe(IGasStack input) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new Remove("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), toGas(input))); - } - - private static class Remove extends RemoveMekanismRecipe { - public Remove(String string, Map map, Object key) { - super(string, map, key); - } - - @Override - public void apply() { - Iterator it = map.entrySet().iterator(); - while (it.hasNext()) { - Map.Entry pairs = (Map.Entry) it.next(); - ItemStack key = (ItemStack) pairs.getKey(); - GasStack value = (GasStack) pairs.getValue(); - if (key != null) { - if (this.key instanceof ItemStack && areEqual(key, (ItemStack) this.key)) { - this.key = key; - break; - } else if (this.key instanceof GasStack && value.isGasEqual((GasStack) this.key)) { - this.key = key; - break; - } - } - - } - - recipe = map.get(key); - map.remove(key); - } - } -} +//package modtweaker2.mods.mekanism.handlers; +// +//import static modtweaker2.helpers.InputHelper.toStack; +//import static modtweaker2.helpers.StackHelper.areEqual; +//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +// +//import java.util.Iterator; +//import java.util.List; +//import java.util.Map; +// +//import mekanism.api.gas.GasStack; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.machines.DissolutionRecipe; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.item.IItemStack; +//import minetweaker.api.oredict.IOreDictEntry; +//import modtweaker2.helpers.InputHelper; +//import modtweaker2.mods.mekanism.Mekanism; +//import modtweaker2.mods.mekanism.gas.IGasStack; +//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +//import net.minecraft.item.ItemStack; +//import net.minecraftforge.oredict.OreDictionary; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.chemical.Dissolution") +//public class ChemicalDissolution { +// @ZenMethod +// public static void addRecipe(IItemStack input, IGasStack output) { +// if (Mekanism.v7) +// { +// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), toStack(input), toGas(output))); +// } +// else { +// DissolutionRecipe recipe = new DissolutionRecipe(toStack(input), toGas(output)); +// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), recipe.getInput(), recipe)); +// } +// } +// +// @ZenMethod +// public static void removeRecipe(IItemStack input) { +// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// MineTweakerAPI.apply(new Remove("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), toStack(input))); +// } +// +// @ZenMethod +// public static void removeRecipe(IOreDictEntry input) { +// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// List stacks = OreDictionary.getOres(InputHelper.toString(input)); +// for (ItemStack stack : stacks) { +// MineTweakerAPI.apply(new Remove("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), stack)); +// } +// } +// +// @ZenMethod +// public static void removeRecipe(IGasStack input) { +// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// MineTweakerAPI.apply(new Remove("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), toGas(input))); +// } +// +// private static class Remove extends RemoveMekanismRecipe { +// public Remove(String string, Map map, Object key) { +// super(string, map, key); +// } +// +// @Override +// public void apply() { +// Iterator it = map.entrySet().iterator(); +// while (it.hasNext()) { +// Map.Entry pairs = (Map.Entry) it.next(); +// ItemStack key = (ItemStack) pairs.getKey(); +// GasStack value = (GasStack) pairs.getValue(); +// if (key != null) { +// if (this.key instanceof ItemStack && areEqual(key, (ItemStack) this.key)) { +// this.key = key; +// break; +// } else if (this.key instanceof GasStack && value.isGasEqual((GasStack) this.key)) { +// this.key = key; +// break; +// } +// } +// +// } +// +// recipe = map.get(key); +// map.remove(key); +// } +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInfuser.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInfuser.java index 53277ae..1147232 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInfuser.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInfuser.java @@ -1,36 +1,36 @@ -package modtweaker2.mods.mekanism.handlers; - -import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.ChemicalPairInput; -import mekanism.common.recipe.machines.ChemicalInfuserRecipe; -import minetweaker.MineTweakerAPI; -import modtweaker2.mods.mekanism.Mekanism; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.chemical.Infuser") -public class ChemicalInfuser { - @ZenMethod - public static void addRecipe(IGasStack left, IGasStack right, IGasStack out) { - if (Mekanism.v7) { - ChemicalPairInput pair = new ChemicalPairInput(toGas(left), toGas(right)); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INFUSER", Recipe.CHEMICAL_INFUSER.get(), pair, toGas(out))); - } else { - ChemicalInfuserRecipe recipe = new ChemicalInfuserRecipe(toGas(left), toGas(right), toGas(out)); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INFUSER", Recipe.CHEMICAL_INFUSER.get(), recipe.getInput(), recipe)); - } - } - - @ZenMethod - public static void removeRecipe(IGasStack output) { - if (!Mekanism.v7) - throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_INFUSER", Recipe.CHEMICAL_INFUSER.get(), toGas(output))); - - - } -} +//package modtweaker2.mods.mekanism.handlers; +// +//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.inputs.ChemicalPairInput; +//import mekanism.common.recipe.machines.ChemicalInfuserRecipe; +//import minetweaker.MineTweakerAPI; +//import modtweaker2.mods.mekanism.Mekanism; +//import modtweaker2.mods.mekanism.gas.IGasStack; +//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.chemical.Infuser") +//public class ChemicalInfuser { +// @ZenMethod +// public static void addRecipe(IGasStack left, IGasStack right, IGasStack out) { +// if (Mekanism.v7) { +// ChemicalPairInput pair = new ChemicalPairInput(toGas(left), toGas(right)); +// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INFUSER", Recipe.CHEMICAL_INFUSER.get(), pair, toGas(out))); +// } else { +// ChemicalInfuserRecipe recipe = new ChemicalInfuserRecipe(toGas(left), toGas(right), toGas(out)); +// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INFUSER", Recipe.CHEMICAL_INFUSER.get(), recipe.getInput(), recipe)); +// } +// } +// +// @ZenMethod +// public static void removeRecipe(IGasStack output) { +// if (!Mekanism.v7) +// throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_INFUSER", Recipe.CHEMICAL_INFUSER.get(), toGas(output))); +// +// +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInjection.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInjection.java index a21395f..03331b3 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInjection.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInjection.java @@ -1,38 +1,38 @@ -package modtweaker2.mods.mekanism.handlers; - -import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.AdvancedMachineInput; -import mekanism.common.recipe.machines.InjectionRecipe; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.chemical.Injection") -public class ChemicalInjection { - @ZenMethod - public static void addRecipe(IItemStack input, IGasStack gas, IItemStack output) { - if (Mekanism.v7) - { - AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), toGas(gas).getGas()); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INJECTION_CHAMBER", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), aInput, toStack(output))); - } - else - { - InjectionRecipe recipe = new InjectionRecipe(toStack(input), gas.getName(), toStack(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INJECTION_CHAMBER", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), recipe.getInput(), recipe)); - } - } - - @ZenMethod - public static void removeRecipe(IItemStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_INJECTION_CHAMBER", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), toStack(output))); - } -} +//package modtweaker2.mods.mekanism.handlers; +// +//import static modtweaker2.helpers.InputHelper.toStack; +//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.inputs.AdvancedMachineInput; +//import mekanism.common.recipe.machines.InjectionRecipe; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.item.IItemStack; +//import modtweaker2.mods.mekanism.Mekanism; +//import modtweaker2.mods.mekanism.gas.IGasStack; +//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.chemical.Injection") +//public class ChemicalInjection { +// @ZenMethod +// public static void addRecipe(IItemStack input, IGasStack gas, IItemStack output) { +// if (Mekanism.v7) +// { +// AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), toGas(gas).getGas()); +// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INJECTION_CHAMBER", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), aInput, toStack(output))); +// } +// else +// { +// InjectionRecipe recipe = new InjectionRecipe(toStack(input), gas.getName(), toStack(output)); +// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INJECTION_CHAMBER", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), recipe.getInput(), recipe)); +// } +// } +// +// @ZenMethod +// public static void removeRecipe(IItemStack output) { +// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_INJECTION_CHAMBER", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), toStack(output))); +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalOxidizer.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalOxidizer.java index 5db57c6..c72a07e 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalOxidizer.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalOxidizer.java @@ -1,36 +1,36 @@ -package modtweaker2.mods.mekanism.handlers; - -import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.machines.OxidationRecipe; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.chemical.Oxidizer") -public class ChemicalOxidizer { - @ZenMethod - public static void addRecipe(IItemStack input, IGasStack output) { - if (Mekanism.v7) - { - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_OXIDIZER", Recipe.CHEMICAL_OXIDIZER.get(), toStack(input), toGas(output))); - } - else - { - OxidationRecipe recipe = new OxidationRecipe(toStack(input), toGas(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_OXIDIZER", Recipe.CHEMICAL_OXIDIZER.get(), recipe.getInput(), recipe)); - } - } - - @ZenMethod - public static void removeRecipe(IGasStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_OXIDIZER", Recipe.CHEMICAL_OXIDIZER.get(), toGas(output))); - } -} +//package modtweaker2.mods.mekanism.handlers; +// +//import static modtweaker2.helpers.InputHelper.toStack; +//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.machines.OxidationRecipe; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.item.IItemStack; +//import modtweaker2.mods.mekanism.Mekanism; +//import modtweaker2.mods.mekanism.gas.IGasStack; +//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.chemical.Oxidizer") +//public class ChemicalOxidizer { +// @ZenMethod +// public static void addRecipe(IItemStack input, IGasStack output) { +// if (Mekanism.v7) +// { +// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_OXIDIZER", Recipe.CHEMICAL_OXIDIZER.get(), toStack(input), toGas(output))); +// } +// else +// { +// OxidationRecipe recipe = new OxidationRecipe(toStack(input), toGas(output)); +// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_OXIDIZER", Recipe.CHEMICAL_OXIDIZER.get(), recipe.getInput(), recipe)); +// } +// } +// +// @ZenMethod +// public static void removeRecipe(IGasStack output) { +// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_OXIDIZER", Recipe.CHEMICAL_OXIDIZER.get(), toGas(output))); +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalWasher.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalWasher.java index 523fb1f..58862e9 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalWasher.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalWasher.java @@ -1,65 +1,65 @@ -package modtweaker2.mods.mekanism.handlers; - -import static modtweaker2.mods.mekanism.MekanismHelper.toGas; - -import java.util.Iterator; -import java.util.Map; - -import mekanism.api.gas.GasStack; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.machines.WasherRecipe; -import minetweaker.MineTweakerAPI; -import modtweaker2.mods.mekanism.Mekanism; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.chemical.Washer") -public class ChemicalWasher { - @ZenMethod - public static void addRecipe(IGasStack input, IGasStack output) { - if (Mekanism.v7) - { - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_WASHER", Recipe.CHEMICAL_WASHER.get(), toGas(input), toGas(output))); - } - else - { - WasherRecipe recipe = new WasherRecipe(toGas(input), toGas(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_WASHER", Recipe.CHEMICAL_WASHER.get(), recipe.getInput(), recipe)); - } - } - - @ZenMethod - public static void removeRecipe(IGasStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new Remove("CHEMICAL_WASHER", Recipe.CHEMICAL_WASHER.get(), toGas(output))); - } - - private static class Remove extends RemoveMekanismRecipe { - public Remove(String string, Map map, Object key) { - super(string, map, key); - } - - @Override - public void apply() { - Iterator it = map.entrySet().iterator(); - while (it.hasNext()) { - Map.Entry pairs = (Map.Entry) it.next(); - GasStack key = (GasStack) pairs.getKey(); - GasStack value = (GasStack) pairs.getValue(); - if (key != null) { - if (this.key instanceof GasStack && value.isGasEqual((GasStack) this.key)) { - this.key = key; - break; - } - } - - } - - recipe = map.get(key); - map.remove(key); - } - } -} +//package modtweaker2.mods.mekanism.handlers; +// +//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +// +//import java.util.Iterator; +//import java.util.Map; +// +//import mekanism.api.gas.GasStack; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.machines.WasherRecipe; +//import minetweaker.MineTweakerAPI; +//import modtweaker2.mods.mekanism.Mekanism; +//import modtweaker2.mods.mekanism.gas.IGasStack; +//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.chemical.Washer") +//public class ChemicalWasher { +// @ZenMethod +// public static void addRecipe(IGasStack input, IGasStack output) { +// if (Mekanism.v7) +// { +// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_WASHER", Recipe.CHEMICAL_WASHER.get(), toGas(input), toGas(output))); +// } +// else +// { +// WasherRecipe recipe = new WasherRecipe(toGas(input), toGas(output)); +// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_WASHER", Recipe.CHEMICAL_WASHER.get(), recipe.getInput(), recipe)); +// } +// } +// +// @ZenMethod +// public static void removeRecipe(IGasStack output) { +// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// MineTweakerAPI.apply(new Remove("CHEMICAL_WASHER", Recipe.CHEMICAL_WASHER.get(), toGas(output))); +// } +// +// private static class Remove extends RemoveMekanismRecipe { +// public Remove(String string, Map map, Object key) { +// super(string, map, key); +// } +// +// @Override +// public void apply() { +// Iterator it = map.entrySet().iterator(); +// while (it.hasNext()) { +// Map.Entry pairs = (Map.Entry) it.next(); +// GasStack key = (GasStack) pairs.getKey(); +// GasStack value = (GasStack) pairs.getValue(); +// if (key != null) { +// if (this.key instanceof GasStack && value.isGasEqual((GasStack) this.key)) { +// this.key = key; +// break; +// } +// } +// +// } +// +// recipe = map.get(key); +// map.remove(key); +// } +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Combiner.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Combiner.java index 983d79f..ad95894 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Combiner.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Combiner.java @@ -1,35 +1,35 @@ -package modtweaker2.mods.mekanism.handlers; - -import static modtweaker2.helpers.InputHelper.toStack; -import mekanism.api.gas.GasRegistry; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.AdvancedMachineInput; -import mekanism.common.recipe.machines.CombinerRecipe; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; -import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.Combiner") -public class Combiner { - @ZenMethod - public static void addRecipe(IItemStack input, IItemStack output) { - AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), GasRegistry.getGas("liquidStone")); - if (Mekanism.v7) - MineTweakerAPI.apply(new AddMekanismRecipe("COMBINER", Recipe.COMBINER.get(), aInput, toStack(output))); - else - { - CombinerRecipe recipe = new CombinerRecipe(toStack(input), toStack(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("COMBINER", Recipe.COMBINER.get(), recipe.getInput(), recipe)); - } - } - - @ZenMethod - public static void removeRecipe(IItemStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("COMBINER", Recipe.COMBINER.get(), toStack(output))); - } -} +//package modtweaker2.mods.mekanism.handlers; +// +//import static modtweaker2.helpers.InputHelper.toStack; +//import mekanism.api.gas.GasRegistry; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.inputs.AdvancedMachineInput; +//import mekanism.common.recipe.machines.CombinerRecipe; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.item.IItemStack; +//import modtweaker2.mods.mekanism.Mekanism; +//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.Combiner") +//public class Combiner { +// @ZenMethod +// public static void addRecipe(IItemStack input, IItemStack output) { +// AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), GasRegistry.getGas("liquidStone")); +// if (Mekanism.v7) +// MineTweakerAPI.apply(new AddMekanismRecipe("COMBINER", Recipe.COMBINER.get(), aInput, toStack(output))); +// else +// { +// CombinerRecipe recipe = new CombinerRecipe(toStack(input), toStack(output)); +// MineTweakerAPI.apply(new AddMekanismRecipe("COMBINER", Recipe.COMBINER.get(), recipe.getInput(), recipe)); +// } +// } +// +// @ZenMethod +// public static void removeRecipe(IItemStack output) { +// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// MineTweakerAPI.apply(new RemoveMekanismRecipe("COMBINER", Recipe.COMBINER.get(), toStack(output))); +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Compressor.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Compressor.java index 25898a8..b432a3a 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Compressor.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Compressor.java @@ -1,35 +1,35 @@ -package modtweaker2.mods.mekanism.handlers; - -import static modtweaker2.helpers.InputHelper.toStack; -import mekanism.api.gas.GasRegistry; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.AdvancedMachineInput; -import mekanism.common.recipe.machines.OsmiumCompressorRecipe; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; -import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.Compressor") -public class Compressor { - @ZenMethod - public static void addRecipe(IItemStack input, IItemStack output) { - AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), GasRegistry.getGas("liquidOsmium")); - if (Mekanism.v7) - MineTweakerAPI.apply(new AddMekanismRecipe("OSMIUM_COMPRESSOR", Recipe.OSMIUM_COMPRESSOR.get(), aInput, toStack(output))); - else - { - OsmiumCompressorRecipe recipe = new OsmiumCompressorRecipe(toStack(input), toStack(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("OSMIUM_COMPRESSOR", Recipe.OSMIUM_COMPRESSOR.get(), recipe.getInput(), recipe)); - } - } - - @ZenMethod - public static void removeRecipe(IItemStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("OSMIUM_COMPRESSOR", Recipe.OSMIUM_COMPRESSOR.get(), toStack(output))); - } -} +//package modtweaker2.mods.mekanism.handlers; +// +//import static modtweaker2.helpers.InputHelper.toStack; +//import mekanism.api.gas.GasRegistry; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.inputs.AdvancedMachineInput; +//import mekanism.common.recipe.machines.OsmiumCompressorRecipe; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.item.IItemStack; +//import modtweaker2.mods.mekanism.Mekanism; +//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.Compressor") +//public class Compressor { +// @ZenMethod +// public static void addRecipe(IItemStack input, IItemStack output) { +// AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), GasRegistry.getGas("liquidOsmium")); +// if (Mekanism.v7) +// MineTweakerAPI.apply(new AddMekanismRecipe("OSMIUM_COMPRESSOR", Recipe.OSMIUM_COMPRESSOR.get(), aInput, toStack(output))); +// else +// { +// OsmiumCompressorRecipe recipe = new OsmiumCompressorRecipe(toStack(input), toStack(output)); +// MineTweakerAPI.apply(new AddMekanismRecipe("OSMIUM_COMPRESSOR", Recipe.OSMIUM_COMPRESSOR.get(), recipe.getInput(), recipe)); +// } +// } +// +// @ZenMethod +// public static void removeRecipe(IItemStack output) { +// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// MineTweakerAPI.apply(new RemoveMekanismRecipe("OSMIUM_COMPRESSOR", Recipe.OSMIUM_COMPRESSOR.get(), toStack(output))); +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Crusher.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Crusher.java index 637e8b8..b26d843 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Crusher.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Crusher.java @@ -1,32 +1,32 @@ -package modtweaker2.mods.mekanism.handlers; - -import static modtweaker2.helpers.InputHelper.toStack; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.machines.CrusherRecipe; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; -import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.Crusher") -public class Crusher { - @ZenMethod - public static void addRecipe(IItemStack input, IItemStack output) { - if (Mekanism.v7) - MineTweakerAPI.apply(new AddMekanismRecipe("CRUSHER", Recipe.CRUSHER.get(), toStack(input), toStack(output))); - else - { - CrusherRecipe recipe = new CrusherRecipe(toStack(input), toStack(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("CRUSHER", Recipe.CRUSHER.get(), recipe.getInput(), recipe)); - } - } - - @ZenMethod - public static void removeRecipe(IItemStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("CRUSHER", Recipe.CRUSHER.get(), toStack(output))); - } -} +//package modtweaker2.mods.mekanism.handlers; +// +//import static modtweaker2.helpers.InputHelper.toStack; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.machines.CrusherRecipe; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.item.IItemStack; +//import modtweaker2.mods.mekanism.Mekanism; +//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.Crusher") +//public class Crusher { +// @ZenMethod +// public static void addRecipe(IItemStack input, IItemStack output) { +// if (Mekanism.v7) +// MineTweakerAPI.apply(new AddMekanismRecipe("CRUSHER", Recipe.CRUSHER.get(), toStack(input), toStack(output))); +// else +// { +// CrusherRecipe recipe = new CrusherRecipe(toStack(input), toStack(output)); +// MineTweakerAPI.apply(new AddMekanismRecipe("CRUSHER", Recipe.CRUSHER.get(), recipe.getInput(), recipe)); +// } +// } +// +// @ZenMethod +// public static void removeRecipe(IItemStack output) { +// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// MineTweakerAPI.apply(new RemoveMekanismRecipe("CRUSHER", Recipe.CRUSHER.get(), toStack(output))); +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Enrichment.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Enrichment.java index 863ccde..17b7ae2 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Enrichment.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Enrichment.java @@ -1,32 +1,32 @@ -package modtweaker2.mods.mekanism.handlers; - -import static modtweaker2.helpers.InputHelper.toStack; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.machines.EnrichmentRecipe; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; -import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.Enrichment") -public class Enrichment { - @ZenMethod - public static void addRecipe(IItemStack input, IItemStack output) { - if (Mekanism.v7) - MineTweakerAPI.apply(new AddMekanismRecipe("ENRICHMENT_CHAMBER", Recipe.ENRICHMENT_CHAMBER.get(), toStack(input), toStack(output))); - else - { - EnrichmentRecipe recipe = new EnrichmentRecipe(toStack(input), toStack(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("ENRICHMENT_CHAMBER", Recipe.ENRICHMENT_CHAMBER.get(), recipe.getInput(), recipe)); - } - } - - @ZenMethod - public static void removeRecipe(IItemStack input) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("ENRICHMENT_CHAMBER", Recipe.ENRICHMENT_CHAMBER.get(), toStack(input))); - } -} +//package modtweaker2.mods.mekanism.handlers; +// +//import static modtweaker2.helpers.InputHelper.toStack; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.machines.EnrichmentRecipe; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.item.IItemStack; +//import modtweaker2.mods.mekanism.Mekanism; +//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.Enrichment") +//public class Enrichment { +// @ZenMethod +// public static void addRecipe(IItemStack input, IItemStack output) { +// if (Mekanism.v7) +// MineTweakerAPI.apply(new AddMekanismRecipe("ENRICHMENT_CHAMBER", Recipe.ENRICHMENT_CHAMBER.get(), toStack(input), toStack(output))); +// else +// { +// EnrichmentRecipe recipe = new EnrichmentRecipe(toStack(input), toStack(output)); +// MineTweakerAPI.apply(new AddMekanismRecipe("ENRICHMENT_CHAMBER", Recipe.ENRICHMENT_CHAMBER.get(), recipe.getInput(), recipe)); +// } +// } +// +// @ZenMethod +// public static void removeRecipe(IItemStack input) { +// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// MineTweakerAPI.apply(new RemoveMekanismRecipe("ENRICHMENT_CHAMBER", Recipe.ENRICHMENT_CHAMBER.get(), toStack(input))); +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Purification.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Purification.java index 5f8a95d..76ed5f9 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Purification.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Purification.java @@ -1,62 +1,62 @@ -package modtweaker2.mods.mekanism.handlers; - -import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; - -import java.util.Map; - -import mekanism.api.gas.GasRegistry; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.AdvancedMachineInput; -import mekanism.common.recipe.machines.PurificationRecipe; -import mekanism.common.recipe.outputs.MachineOutput; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; -import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.Purification") -public class Purification { - @ZenMethod - public static void addRecipe(IItemStack input, IItemStack output) { - if (Mekanism.v7) - { - AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), GasRegistry.getGas("oxygen")); - MineTweakerAPI.apply(new AddMekanismRecipe("PURIFICATION_CHAMBER", Recipe.PURIFICATION_CHAMBER.get(), aInput, toStack(output))); - } - else - { - PurificationRecipe recipe = new PurificationRecipe(toStack(input), toStack(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("PURIFICATION_CHAMBER", Recipe.PURIFICATION_CHAMBER.get(), recipe.getInput(), recipe)); - } - } - - @ZenMethod - public static void removeRecipe(IItemStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new Remove(toStack(output))); - } - - private static class Remove extends BaseMapRemoval { - public Remove(ItemStack stack) { - super("Purification Chamber", Recipe.PURIFICATION_CHAMBER.get(), stack); - } - - //We must search through the recipe entries so that we can assign the correct key for removal - @Override - public void apply() { - for (Map.Entry entry : ((Map) map).entrySet()) { - if (entry.getValue() != null && areEqual(entry.getValue(), (ItemStack) stack)) { - key = entry.getKey(); - break; - } - } - - super.apply(); - } - } -} +//package modtweaker2.mods.mekanism.handlers; +// +//import static modtweaker2.helpers.InputHelper.toStack; +//import static modtweaker2.helpers.StackHelper.areEqual; +// +//import java.util.Map; +// +//import mekanism.api.gas.GasRegistry; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.inputs.AdvancedMachineInput; +//import mekanism.common.recipe.machines.PurificationRecipe; +//import mekanism.common.recipe.outputs.MachineOutput; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.item.IItemStack; +//import modtweaker2.mods.mekanism.Mekanism; +//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +//import modtweaker2.utils.BaseMapRemoval; +//import net.minecraft.item.ItemStack; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.Purification") +//public class Purification { +// @ZenMethod +// public static void addRecipe(IItemStack input, IItemStack output) { +// if (Mekanism.v7) +// { +// AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), GasRegistry.getGas("oxygen")); +// MineTweakerAPI.apply(new AddMekanismRecipe("PURIFICATION_CHAMBER", Recipe.PURIFICATION_CHAMBER.get(), aInput, toStack(output))); +// } +// else +// { +// PurificationRecipe recipe = new PurificationRecipe(toStack(input), toStack(output)); +// MineTweakerAPI.apply(new AddMekanismRecipe("PURIFICATION_CHAMBER", Recipe.PURIFICATION_CHAMBER.get(), recipe.getInput(), recipe)); +// } +// } +// +// @ZenMethod +// public static void removeRecipe(IItemStack output) { +// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// MineTweakerAPI.apply(new Remove(toStack(output))); +// } +// +// private static class Remove extends BaseMapRemoval { +// public Remove(ItemStack stack) { +// super("Purification Chamber", Recipe.PURIFICATION_CHAMBER.get(), stack); +// } +// +// //We must search through the recipe entries so that we can assign the correct key for removal +// @Override +// public void apply() { +// for (Map.Entry entry : ((Map) map).entrySet()) { +// if (entry.getValue() != null && areEqual(entry.getValue(), (ItemStack) stack)) { +// key = entry.getKey(); +// break; +// } +// } +// +// super.apply(); +// } +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Reaction.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Reaction.java index 5bfb04a..fdb058d 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Reaction.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Reaction.java @@ -1,42 +1,42 @@ -package modtweaker2.mods.mekanism.handlers; - -import static modtweaker2.helpers.InputHelper.toFluid; -import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.PressurizedInput; -import mekanism.common.recipe.machines.PressurizedRecipe; -import mekanism.common.recipe.outputs.PressurizedOutput; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.mods.mekanism.Mekanism; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.Reaction") -public class Reaction { - @ZenMethod - public static void addRecipe(IItemStack solid, ILiquidStack liquid, IGasStack gas, IItemStack outItem, IGasStack outGas, double energy, int ticks) { - if (Mekanism.v7) - { - PressurizedInput input = new PressurizedInput(toStack(solid), toFluid(liquid), toGas(gas)); - PressurizedRecipe recipe = new PressurizedRecipe(input, new PressurizedOutput(toStack(outItem), toGas(outGas)), energy, ticks); - MineTweakerAPI.apply(new AddMekanismRecipe("PRESSURIZED_REACTION_CHAMBER", Recipe.PRESSURIZED_REACTION_CHAMBER.get(), input, recipe)); - } - else { - mekanism.common.recipe.machines.PressurizedRecipe recipe = new mekanism.common.recipe.machines.PressurizedRecipe(toStack(solid), toFluid(liquid), toGas(gas), toStack(outItem), toGas(outGas), energy, ticks); - MineTweakerAPI.apply(new AddMekanismRecipe("PRESSURIZED_REACTION_CHAMBER", Recipe.PRESSURIZED_REACTION_CHAMBER.get(), recipe.getInput(), recipe)); - } - } - - @ZenMethod - public static void removeRecipe(IItemStack outItem, IGasStack outGas) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - PressurizedOutput output = new PressurizedOutput(toStack(outItem), toGas(outGas)); - MineTweakerAPI.apply(new RemoveMekanismRecipe("PRESSURIZED_REACTION_CHAMBER", Recipe.PRESSURIZED_REACTION_CHAMBER.get(), output)); - } -} +//package modtweaker2.mods.mekanism.handlers; +// +//import static modtweaker2.helpers.InputHelper.toFluid; +//import static modtweaker2.helpers.InputHelper.toStack; +//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.inputs.PressurizedInput; +//import mekanism.common.recipe.machines.PressurizedRecipe; +//import mekanism.common.recipe.outputs.PressurizedOutput; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.item.IItemStack; +//import minetweaker.api.liquid.ILiquidStack; +//import modtweaker2.mods.mekanism.Mekanism; +//import modtweaker2.mods.mekanism.gas.IGasStack; +//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.Reaction") +//public class Reaction { +// @ZenMethod +// public static void addRecipe(IItemStack solid, ILiquidStack liquid, IGasStack gas, IItemStack outItem, IGasStack outGas, double energy, int ticks) { +// if (Mekanism.v7) +// { +// PressurizedInput input = new PressurizedInput(toStack(solid), toFluid(liquid), toGas(gas)); +// PressurizedRecipe recipe = new PressurizedRecipe(input, new PressurizedOutput(toStack(outItem), toGas(outGas)), energy, ticks); +// MineTweakerAPI.apply(new AddMekanismRecipe("PRESSURIZED_REACTION_CHAMBER", Recipe.PRESSURIZED_REACTION_CHAMBER.get(), input, recipe)); +// } +// else { +// mekanism.common.recipe.machines.PressurizedRecipe recipe = new mekanism.common.recipe.machines.PressurizedRecipe(toStack(solid), toFluid(liquid), toGas(gas), toStack(outItem), toGas(outGas), energy, ticks); +// MineTweakerAPI.apply(new AddMekanismRecipe("PRESSURIZED_REACTION_CHAMBER", Recipe.PRESSURIZED_REACTION_CHAMBER.get(), recipe.getInput(), recipe)); +// } +// } +// +// @ZenMethod +// public static void removeRecipe(IItemStack outItem, IGasStack outGas) { +// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// PressurizedOutput output = new PressurizedOutput(toStack(outItem), toGas(outGas)); +// MineTweakerAPI.apply(new RemoveMekanismRecipe("PRESSURIZED_REACTION_CHAMBER", Recipe.PRESSURIZED_REACTION_CHAMBER.get(), output)); +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Sawmill.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Sawmill.java index cb9eefa..cf4645d 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Sawmill.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Sawmill.java @@ -1,61 +1,61 @@ -package modtweaker2.mods.mekanism.handlers; - -import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; - -import java.util.Map; - -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.machines.SawmillRecipe; -import mekanism.common.recipe.outputs.ChanceOutput; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; -import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; -import stanhebben.zenscript.annotations.Optional; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.Sawmill") -public class Sawmill { - @ZenMethod - public static void addRecipe(IItemStack input, IItemStack output1, @Optional IItemStack output2, @Optional double chance) { - if (Mekanism.v7) - { - ChanceOutput chanceOutput = new ChanceOutput(toStack(output1), toStack(output2), chance); - MineTweakerAPI.apply(new AddMekanismRecipe("PRECISION_SAWMILL", Recipe.PRECISION_SAWMILL.get(), toStack(input), chanceOutput)); - } - else - { - SawmillRecipe recipe = chance>0?new SawmillRecipe(toStack(input), toStack(output1), toStack(output2), chance) : new SawmillRecipe(toStack(input), toStack(output1)); - MineTweakerAPI.apply(new AddMekanismRecipe("PRECISION_SAWMILL", Recipe.PRECISION_SAWMILL.get(), recipe.getInput(), recipe)); - } - } - - @ZenMethod - public static void removeRecipe(IItemStack input) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new Remove(toStack(input))); - } - - private static class Remove extends BaseMapRemoval { - public Remove(ItemStack stack) { - super("Precision Sawmill", Recipe.PRECISION_SAWMILL.get(), stack); - } - - //We must search through the recipe entries so that we can assign the correct key for removal - @Override - public void apply() { - for (Map.Entry entry : ((Map) map).entrySet()) { - if (entry.getKey() != null && areEqual(entry.getKey(), (ItemStack) stack)) { - key = entry.getKey(); - break; - } - } - - super.apply(); - } - } -} +//package modtweaker2.mods.mekanism.handlers; +// +//import static modtweaker2.helpers.InputHelper.toStack; +//import static modtweaker2.helpers.StackHelper.areEqual; +// +//import java.util.Map; +// +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.machines.SawmillRecipe; +//import mekanism.common.recipe.outputs.ChanceOutput; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.item.IItemStack; +//import modtweaker2.mods.mekanism.Mekanism; +//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +//import modtweaker2.utils.BaseMapRemoval; +//import net.minecraft.item.ItemStack; +//import stanhebben.zenscript.annotations.Optional; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.Sawmill") +//public class Sawmill { +// @ZenMethod +// public static void addRecipe(IItemStack input, IItemStack output1, @Optional IItemStack output2, @Optional double chance) { +// if (Mekanism.v7) +// { +// ChanceOutput chanceOutput = new ChanceOutput(toStack(output1), toStack(output2), chance); +// MineTweakerAPI.apply(new AddMekanismRecipe("PRECISION_SAWMILL", Recipe.PRECISION_SAWMILL.get(), toStack(input), chanceOutput)); +// } +// else +// { +// SawmillRecipe recipe = chance>0?new SawmillRecipe(toStack(input), toStack(output1), toStack(output2), chance) : new SawmillRecipe(toStack(input), toStack(output1)); +// MineTweakerAPI.apply(new AddMekanismRecipe("PRECISION_SAWMILL", Recipe.PRECISION_SAWMILL.get(), recipe.getInput(), recipe)); +// } +// } +// +// @ZenMethod +// public static void removeRecipe(IItemStack input) { +// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// MineTweakerAPI.apply(new Remove(toStack(input))); +// } +// +// private static class Remove extends BaseMapRemoval { +// public Remove(ItemStack stack) { +// super("Precision Sawmill", Recipe.PRECISION_SAWMILL.get(), stack); +// } +// +// //We must search through the recipe entries so that we can assign the correct key for removal +// @Override +// public void apply() { +// for (Map.Entry entry : ((Map) map).entrySet()) { +// if (entry.getKey() != null && areEqual(entry.getKey(), (ItemStack) stack)) { +// key = entry.getKey(); +// break; +// } +// } +// +// super.apply(); +// } +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Separator.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Separator.java index af08c3f..a37555f 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Separator.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Separator.java @@ -1,72 +1,72 @@ -package modtweaker2.mods.mekanism.handlers; - -import static modtweaker2.helpers.InputHelper.toFluid; -import static modtweaker2.mods.mekanism.MekanismHelper.toGas; - -import java.util.Map; - -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.ChemicalPairInput; -import mekanism.common.recipe.machines.SeparatorRecipe; -import mekanism.common.recipe.outputs.ChemicalPairOutput; -import minetweaker.MineTweakerAPI; -import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.mods.mekanism.Mekanism; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraftforge.fluids.FluidStack; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.Separator") -public class Separator { - @ZenMethod - public static void addRecipe(ILiquidStack input, IGasStack gas1, IGasStack gas2) { - if (Mekanism.v7) - { - ChemicalPairInput pair = new ChemicalPairInput(toGas(gas1), toGas(gas2)); - MineTweakerAPI.apply(new AddMekanismRecipe("ELECTROLYTIC_SEPARATOR", Recipe.ELECTROLYTIC_SEPARATOR.get(), toFluid(input), pair)); - } else - { - throw new UnsupportedOperationException("Syntax for v8 is: Fluid, Energy, Gas, Gas"); - } - } - - @ZenMethod - public static void addRecipe(ILiquidStack input, double energy, IGasStack gas1, IGasStack gas2) { - if (Mekanism.v7) - { - throw new UnsupportedOperationException("Syntax for v7 is: Fluid, Gas, Gas"); - } else - { - SeparatorRecipe recipe = new SeparatorRecipe(toFluid(input), energy, toGas(gas1), toGas(gas2)); - MineTweakerAPI.apply(new AddMekanismRecipe("ELECTROLYTIC_SEPARATOR", Recipe.ELECTROLYTIC_SEPARATOR.get(), recipe.getInput(), recipe)); - } - } - - @ZenMethod - public static void removeRecipe(ILiquidStack input) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new Remove(toFluid(input))); - } - - private static class Remove extends BaseMapRemoval { - public Remove(FluidStack stack) { - super("Electrolytic Separator", Recipe.ELECTROLYTIC_SEPARATOR.get(), stack); - } - - //We must search through the recipe entries so that we can assign the correct key for removal - @Override - public void apply() { - for (Map.Entry entry : ((Map) map).entrySet()) { - if (entry.getKey() != null && entry.getKey().isFluidEqual((FluidStack) stack)) { - key = entry.getKey(); - break; - } - } - - super.apply(); - } - } -} +//package modtweaker2.mods.mekanism.handlers; +// +//import static modtweaker2.helpers.InputHelper.toFluid; +//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +// +//import java.util.Map; +// +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.inputs.ChemicalPairInput; +//import mekanism.common.recipe.machines.SeparatorRecipe; +//import mekanism.common.recipe.outputs.ChemicalPairOutput; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.liquid.ILiquidStack; +//import modtweaker2.mods.mekanism.Mekanism; +//import modtweaker2.mods.mekanism.gas.IGasStack; +//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +//import modtweaker2.utils.BaseMapRemoval; +//import net.minecraftforge.fluids.FluidStack; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.Separator") +//public class Separator { +// @ZenMethod +// public static void addRecipe(ILiquidStack input, IGasStack gas1, IGasStack gas2) { +// if (Mekanism.v7) +// { +// ChemicalPairInput pair = new ChemicalPairInput(toGas(gas1), toGas(gas2)); +// MineTweakerAPI.apply(new AddMekanismRecipe("ELECTROLYTIC_SEPARATOR", Recipe.ELECTROLYTIC_SEPARATOR.get(), toFluid(input), pair)); +// } else +// { +// throw new UnsupportedOperationException("Syntax for v8 is: Fluid, Energy, Gas, Gas"); +// } +// } +// +// @ZenMethod +// public static void addRecipe(ILiquidStack input, double energy, IGasStack gas1, IGasStack gas2) { +// if (Mekanism.v7) +// { +// throw new UnsupportedOperationException("Syntax for v7 is: Fluid, Gas, Gas"); +// } else +// { +// SeparatorRecipe recipe = new SeparatorRecipe(toFluid(input), energy, toGas(gas1), toGas(gas2)); +// MineTweakerAPI.apply(new AddMekanismRecipe("ELECTROLYTIC_SEPARATOR", Recipe.ELECTROLYTIC_SEPARATOR.get(), recipe.getInput(), recipe)); +// } +// } +// +// @ZenMethod +// public static void removeRecipe(ILiquidStack input) { +// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); +// MineTweakerAPI.apply(new Remove(toFluid(input))); +// } +// +// private static class Remove extends BaseMapRemoval { +// public Remove(FluidStack stack) { +// super("Electrolytic Separator", Recipe.ELECTROLYTIC_SEPARATOR.get(), stack); +// } +// +// //We must search through the recipe entries so that we can assign the correct key for removal +// @Override +// public void apply() { +// for (Map.Entry entry : ((Map) map).entrySet()) { +// if (entry.getKey() != null && entry.getKey().isFluidEqual((FluidStack) stack)) { +// key = entry.getKey(); +// break; +// } +// } +// +// super.apply(); +// } +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalCrystallizer.java b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalCrystallizer.java index b8e37e4..456205a 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalCrystallizer.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalCrystallizer.java @@ -1,85 +1,83 @@ -package modtweaker2.mods.mekanism.handlers.v8; - -import static modtweaker2.mods.mekanism.MekanismHelper.toGas; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import mekanism.api.gas.GasStack; -import mekanism.common.KeySync.KeySet; -import mekanism.common.recipe.RecipeHandler; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.GasInput; -import mekanism.common.recipe.machines.CrystallizerRecipe; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.helpers.InputHelper; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.utils.BaseMapAddition; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.chemical.Crystallizer") -public class ChemicalCrystallizer { - - @ZenMethod - public static void addRecipe(IItemStack output, IGasStack input) { - MineTweakerAPI.apply(new Add(new ChemicalCrystallizerRecipe(toGas(input), InputHelper.toStack(output)))); - } - - private static class Add extends BaseMapAddition { - - public Add(ChemicalCrystallizerRecipe recipe) { - super("Chemical Crystallizer", Recipe.CHEMICAL_CRYSTALLIZER.get(), recipe.inputGas, recipe.outputItem); - } - - @Override - public void apply() { - RecipeHandler.addChemicalCrystallizerRecipe((GasStack) key, (ItemStack) recipe); - } - - } - - private static class ChemicalCrystallizerRecipe { - public GasStack inputGas; - public ItemStack outputItem; - - public ChemicalCrystallizerRecipe(GasStack inputGas, ItemStack outputItem) { - this.inputGas = inputGas; - this.outputItem = outputItem; - - } - } - - @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); - } - - private static class Remove extends BaseMapRemoval { - - public Remove(ItemStack stack) { - super("Chemical Crystallizer", Recipe.CHEMICAL_CRYSTALLIZER.get(), stack); - } - - @SuppressWarnings("unchecked") - @Override - public void apply() { - List gasesToRemove = new ArrayList(); - for(GasInput stack : (Set)Recipe.CHEMICAL_CRYSTALLIZER.get().keySet()){ - CrystallizerRecipe crystalRecipe= (CrystallizerRecipe)Recipe.CHEMICAL_CRYSTALLIZER.get().get(stack); - if(crystalRecipe.getOutput().output.isItemEqual((ItemStack) this.stack)){ - gasesToRemove.add(stack); - } - } - for(GasInput stack : gasesToRemove){ - Recipe.CHEMICAL_CRYSTALLIZER.get().remove(stack); - } - } - - } -} +//package modtweaker2.mods.mekanism.handlers.v8; +// +//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +// +//import java.util.ArrayList; +//import java.util.List; +//import java.util.Set; +// +//import mekanism.api.gas.GasStack; +//import mekanism.common.recipe.RecipeHandler; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.inputs.GasInput; +//import mekanism.common.recipe.machines.CrystallizerRecipe; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.item.IItemStack; +//import modtweaker2.helpers.InputHelper; +//import modtweaker2.mods.mekanism.gas.IGasStack; +//import modtweaker2.utils.BaseMapAddition; +//import modtweaker2.utils.BaseMapRemoval; +//import net.minecraft.item.ItemStack; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.chemical.Crystallizer") +//public class ChemicalCrystallizer { +// +// @ZenMethod +// public static void addRecipe(IItemStack output, IGasStack input) { +// MineTweakerAPI.apply(new Add(new ChemicalCrystallizerRecipe(toGas(input), InputHelper.toStack(output)))); +// } +// +// private static class Add extends BaseMapAddition { +// +// public Add(ChemicalCrystallizerRecipe recipe) { +// super("Chemical Crystallizer", Recipe.CHEMICAL_CRYSTALLIZER.get(), recipe.inputGas, recipe.outputItem); +// } +// +// @Override +// public void apply() { +// RecipeHandler.addChemicalCrystallizerRecipe((GasStack) key, (ItemStack) recipe); +// } +// +// } +// +// private static class ChemicalCrystallizerRecipe { +// public GasStack inputGas; +// public ItemStack outputItem; +// +// public ChemicalCrystallizerRecipe(GasStack inputGas, ItemStack outputItem) { +// this.inputGas = inputGas; +// this.outputItem = outputItem; +// +// } +// } +// +// @ZenMethod +// public static void removeRecipe(IItemStack output) { +// MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); +// } +// +// private static class Remove extends BaseMapRemoval { +// +// public Remove(ItemStack stack) { +// super("Chemical Crystallizer", Recipe.CHEMICAL_CRYSTALLIZER.get(), stack); +// } +// +// @SuppressWarnings("unchecked") +// @Override +// public void apply() { +// List gasesToRemove = new ArrayList(); +// for(GasInput stack : (Set)Recipe.CHEMICAL_CRYSTALLIZER.get().keySet()){ +// CrystallizerRecipe crystalRecipe= (CrystallizerRecipe)Recipe.CHEMICAL_CRYSTALLIZER.get().get(stack); +// if(crystalRecipe.getOutput().output.isItemEqual((ItemStack) this.stack)){ +// gasesToRemove.add(stack); +// } +// } +// for(GasInput stack : gasesToRemove){ +// Recipe.CHEMICAL_CRYSTALLIZER.get().remove(stack); +// } +// } +// +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalDissolution.java b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalDissolution.java index 0cd5c61..882f6bf 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalDissolution.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalDissolution.java @@ -1,84 +1,84 @@ -package modtweaker2.mods.mekanism.handlers.v8; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import mekanism.api.gas.GasStack; -import mekanism.common.recipe.RecipeHandler; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.ItemStackInput; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.helpers.InputHelper; -import modtweaker2.mods.mekanism.MekanismHelper; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.utils.BaseMapAddition; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.chemical.Dissolution") -public class ChemicalDissolution { - - @ZenMethod - public static void addRecipe(IGasStack output, IItemStack input) { - MineTweakerAPI.apply(new Add(new DissolutionRecipe(MekanismHelper.toGas(output), InputHelper.toStack(input)))); - } - - private static class Add extends BaseMapAddition { - - public DissolutionRecipe recipe; - - public Add(DissolutionRecipe recipe) { - super("Dissolution Infuser", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), recipe.input, recipe.output); - this.recipe = recipe; - } - - @Override - public void apply() { - RecipeHandler.addChemicalDissolutionChamberRecipe(recipe.input, recipe.output); - - } - } - - private static class DissolutionRecipe { - public GasStack output; - public ItemStack input; - - public DissolutionRecipe(GasStack output, ItemStack input) { - this.output = output; - this.input = input; - } - - } - - @ZenMethod - public static void removeRecipe(IGasStack output) { - MineTweakerAPI.apply(new Remove(MekanismHelper.toGas(output))); - } - - private static class Remove extends BaseMapRemoval { - - public Remove(GasStack stack) { - super("Dissolution Infuser", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), stack); - } - - @SuppressWarnings("unchecked") - @Override - public void apply() { - List toRemove = new ArrayList(); - for (ItemStackInput stack : (Set) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().keySet()) { - mekanism.common.recipe.machines.DissolutionRecipe recipe = (mekanism.common.recipe.machines.DissolutionRecipe) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().get(stack); - if (recipe.getOutput().output.isGasEqual((GasStack) this.stack)) { - toRemove.add(stack); - } - } - for (ItemStackInput stack : toRemove) { - Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().remove(stack); - } - } - - } -} +//package modtweaker2.mods.mekanism.handlers.v8; +// +//import java.util.ArrayList; +//import java.util.List; +//import java.util.Set; +// +//import mekanism.api.gas.GasStack; +//import mekanism.common.recipe.RecipeHandler; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.inputs.ItemStackInput; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.item.IItemStack; +//import modtweaker2.helpers.InputHelper; +//import modtweaker2.mods.mekanism.MekanismHelper; +//import modtweaker2.mods.mekanism.gas.IGasStack; +//import modtweaker2.utils.BaseMapAddition; +//import modtweaker2.utils.BaseMapRemoval; +//import net.minecraft.item.ItemStack; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.chemical.Dissolution") +//public class ChemicalDissolution { +// +// @ZenMethod +// public static void addRecipe(IGasStack output, IItemStack input) { +// MineTweakerAPI.apply(new Add(new DissolutionRecipe(MekanismHelper.toGas(output), InputHelper.toStack(input)))); +// } +// +// private static class Add extends BaseMapAddition { +// +// public DissolutionRecipe recipe; +// +// public Add(DissolutionRecipe recipe) { +// super("Dissolution Infuser", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), recipe.input, recipe.output); +// this.recipe = recipe; +// } +// +// @Override +// public void apply() { +// RecipeHandler.addChemicalDissolutionChamberRecipe(recipe.input, recipe.output); +// +// } +// } +// +// private static class DissolutionRecipe { +// public GasStack output; +// public ItemStack input; +// +// public DissolutionRecipe(GasStack output, ItemStack input) { +// this.output = output; +// this.input = input; +// } +// +// } +// +// @ZenMethod +// public static void removeRecipe(IGasStack output) { +// MineTweakerAPI.apply(new Remove(MekanismHelper.toGas(output))); +// } +// +// private static class Remove extends BaseMapRemoval { +// +// public Remove(GasStack stack) { +// super("Dissolution Infuser", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), stack); +// } +// +// @SuppressWarnings("unchecked") +// @Override +// public void apply() { +// List toRemove = new ArrayList(); +// for (ItemStackInput stack : (Set) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().keySet()) { +// mekanism.common.recipe.machines.DissolutionRecipe recipe = (mekanism.common.recipe.machines.DissolutionRecipe) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().get(stack); +// if (recipe.getOutput().output.isGasEqual((GasStack) this.stack)) { +// toRemove.add(stack); +// } +// } +// for (ItemStackInput stack : toRemove) { +// Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().remove(stack); +// } +// } +// +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInfuser.java b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInfuser.java index fae3b50..423b60f 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInfuser.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInfuser.java @@ -1,85 +1,85 @@ -package modtweaker2.mods.mekanism.handlers.v8; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import mekanism.api.gas.GasStack; -import mekanism.common.recipe.RecipeHandler; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.ChemicalPairInput; -import mekanism.common.recipe.machines.ChemicalInfuserRecipe; -import mekanism.common.recipe.outputs.GasOutput; -import minetweaker.MineTweakerAPI; -import modtweaker2.mods.mekanism.MekanismHelper; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.utils.BaseMapAddition; -import modtweaker2.utils.BaseMapRemoval; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.chemical.Infuser") -public class ChemicalInfuser { - - @ZenMethod - public static void addRecipe(IGasStack output, IGasStack inputLeft, IGasStack inputRight) { - MineTweakerAPI.apply(new Add(new InfuserRecipe(MekanismHelper.toGas(output), MekanismHelper.toGas(inputLeft), MekanismHelper.toGas(inputRight)))); - } - - private static class Add extends BaseMapAddition { - - public InfuserRecipe recipe; - - public Add(InfuserRecipe recipe) { - super("Chemical Infuser", Recipe.CHEMICAL_INFUSER.get(), new ChemicalPairInput(recipe.inputLeft, recipe.inputRight), new GasOutput(recipe.output)); - this.recipe = recipe; - } - - @Override - public void apply() { - RecipeHandler.addChemicalInfuserRecipe(recipe.inputLeft, recipe.inputRight, recipe.output); - - } - } - - private static class InfuserRecipe { - public GasStack output; - public GasStack inputLeft; - public GasStack inputRight; - - public InfuserRecipe(GasStack output, GasStack inputLeft, GasStack inputRight) { - this.output = output; - this.inputLeft = inputLeft; - this.inputRight = inputRight; - } - - } - - @ZenMethod - public static void removeRecipe(IGasStack output) { - MineTweakerAPI.apply(new Remove(MekanismHelper.toGas(output))); - } - - private static class Remove extends BaseMapRemoval { - - public Remove(GasStack stack) { - super("Chemical Infuser", Recipe.CHEMICAL_INFUSER.get(), stack); - } - - @SuppressWarnings("unchecked") - @Override - public void apply() { - List toRemove = new ArrayList(); - for (ChemicalPairInput stack : (Set) Recipe.CHEMICAL_INFUSER.get().keySet()) { - ChemicalInfuserRecipe recipe = (ChemicalInfuserRecipe) Recipe.CHEMICAL_INFUSER.get().get(stack); - if (recipe.getOutput().output.isGasEqual((GasStack)this.stack)) { - toRemove.add(stack); - } - } - for (ChemicalPairInput stack : toRemove) { - Recipe.CHEMICAL_INFUSER.get().remove(stack); - } - } - - } -} +//package modtweaker2.mods.mekanism.handlers.v8; +// +//import java.util.ArrayList; +//import java.util.List; +//import java.util.Set; +// +//import mekanism.api.gas.GasStack; +//import mekanism.common.recipe.RecipeHandler; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.inputs.ChemicalPairInput; +//import mekanism.common.recipe.machines.ChemicalInfuserRecipe; +//import mekanism.common.recipe.outputs.GasOutput; +//import minetweaker.MineTweakerAPI; +//import modtweaker2.mods.mekanism.MekanismHelper; +//import modtweaker2.mods.mekanism.gas.IGasStack; +//import modtweaker2.utils.BaseMapAddition; +//import modtweaker2.utils.BaseMapRemoval; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.chemical.Infuser") +//public class ChemicalInfuser { +// +// @ZenMethod +// public static void addRecipe(IGasStack output, IGasStack inputLeft, IGasStack inputRight) { +// MineTweakerAPI.apply(new Add(new InfuserRecipe(MekanismHelper.toGas(output), MekanismHelper.toGas(inputLeft), MekanismHelper.toGas(inputRight)))); +// } +// +// private static class Add extends BaseMapAddition { +// +// public InfuserRecipe recipe; +// +// public Add(InfuserRecipe recipe) { +// super("Chemical Infuser", Recipe.CHEMICAL_INFUSER.get(), new ChemicalPairInput(recipe.inputLeft, recipe.inputRight), new GasOutput(recipe.output)); +// this.recipe = recipe; +// } +// +// @Override +// public void apply() { +// RecipeHandler.addChemicalInfuserRecipe(recipe.inputLeft, recipe.inputRight, recipe.output); +// +// } +// } +// +// private static class InfuserRecipe { +// public GasStack output; +// public GasStack inputLeft; +// public GasStack inputRight; +// +// public InfuserRecipe(GasStack output, GasStack inputLeft, GasStack inputRight) { +// this.output = output; +// this.inputLeft = inputLeft; +// this.inputRight = inputRight; +// } +// +// } +// +// @ZenMethod +// public static void removeRecipe(IGasStack output) { +// MineTweakerAPI.apply(new Remove(MekanismHelper.toGas(output))); +// } +// +// private static class Remove extends BaseMapRemoval { +// +// public Remove(GasStack stack) { +// super("Chemical Infuser", Recipe.CHEMICAL_INFUSER.get(), stack); +// } +// +// @SuppressWarnings("unchecked") +// @Override +// public void apply() { +// List toRemove = new ArrayList(); +// for (ChemicalPairInput stack : (Set) Recipe.CHEMICAL_INFUSER.get().keySet()) { +// ChemicalInfuserRecipe recipe = (ChemicalInfuserRecipe) Recipe.CHEMICAL_INFUSER.get().get(stack); +// if (recipe.getOutput().output.isGasEqual((GasStack)this.stack)) { +// toRemove.add(stack); +// } +// } +// for (ChemicalPairInput stack : toRemove) { +// Recipe.CHEMICAL_INFUSER.get().remove(stack); +// } +// } +// +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInjection.java b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInjection.java index 1a6eab0..29270df 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInjection.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInjection.java @@ -1,86 +1,86 @@ -package modtweaker2.mods.mekanism.handlers.v8; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import mekanism.api.gas.GasStack; -import mekanism.common.recipe.RecipeHandler; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.AdvancedMachineInput; -import mekanism.common.recipe.outputs.ItemStackOutput; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.helpers.InputHelper; -import modtweaker2.mods.mekanism.MekanismHelper; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.utils.BaseMapAddition; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.chemical.Injection") -public class ChemicalInjection { - - @ZenMethod - public static void addRecipe(IItemStack output, IItemStack input, IGasStack gas) { - MineTweakerAPI.apply(new Add(new InjectionRecipe(InputHelper.toStack(output), InputHelper.toStack(input), MekanismHelper.toGas(gas)))); - } - - private static class Add extends BaseMapAddition { - - public InjectionRecipe recipe; - - public Add(InjectionRecipe recipe) { - super("Chemical Injection", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), recipe.input, recipe.output); - this.recipe = recipe; - } - - @Override - public void apply() { - RecipeHandler.addChemicalInjectionChamberRecipe(recipe.input, recipe.gas.getGas().getLocalizedName(), recipe.output); - } - } - - private static class InjectionRecipe { - public ItemStack output; - public ItemStack input; - public GasStack gas; - - public InjectionRecipe(ItemStack output, ItemStack input, GasStack gas) { - this.output = output; - this.input = input; - this.gas = gas; - } - - } - - @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); - } - - private static class Remove extends BaseMapRemoval { - - public Remove(ItemStack output) { - super("Chemical Injection", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), output); - } - - @SuppressWarnings("unchecked") - @Override - public void apply() { - List toRemove = new ArrayList(); - for (AdvancedMachineInput stack : (Set) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().keySet()) { - ItemStackOutput recipe = (ItemStackOutput) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().get(stack); - if (recipe.output.isItemEqual((ItemStack)this.stack)) { - toRemove.add(stack); - } - } - for (AdvancedMachineInput stack : toRemove) { - Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().remove(stack); - } - } - - } -} +//package modtweaker2.mods.mekanism.handlers.v8; +// +//import java.util.ArrayList; +//import java.util.List; +//import java.util.Set; +// +//import mekanism.api.gas.GasStack; +//import mekanism.common.recipe.RecipeHandler; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.inputs.AdvancedMachineInput; +//import mekanism.common.recipe.outputs.ItemStackOutput; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.item.IItemStack; +//import modtweaker2.helpers.InputHelper; +//import modtweaker2.mods.mekanism.MekanismHelper; +//import modtweaker2.mods.mekanism.gas.IGasStack; +//import modtweaker2.utils.BaseMapAddition; +//import modtweaker2.utils.BaseMapRemoval; +//import net.minecraft.item.ItemStack; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.chemical.Injection") +//public class ChemicalInjection { +// +// @ZenMethod +// public static void addRecipe(IItemStack output, IItemStack input, IGasStack gas) { +// MineTweakerAPI.apply(new Add(new InjectionRecipe(InputHelper.toStack(output), InputHelper.toStack(input), MekanismHelper.toGas(gas)))); +// } +// +// private static class Add extends BaseMapAddition { +// +// public InjectionRecipe recipe; +// +// public Add(InjectionRecipe recipe) { +// super("Chemical Injection", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), recipe.input, recipe.output); +// this.recipe = recipe; +// } +// +// @Override +// public void apply() { +// RecipeHandler.addChemicalInjectionChamberRecipe(recipe.input, recipe.gas.getGas().getLocalizedName(), recipe.output); +// } +// } +// +// private static class InjectionRecipe { +// public ItemStack output; +// public ItemStack input; +// public GasStack gas; +// +// public InjectionRecipe(ItemStack output, ItemStack input, GasStack gas) { +// this.output = output; +// this.input = input; +// this.gas = gas; +// } +// +// } +// +// @ZenMethod +// public static void removeRecipe(IItemStack output) { +// MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); +// } +// +// private static class Remove extends BaseMapRemoval { +// +// public Remove(ItemStack output) { +// super("Chemical Injection", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), output); +// } +// +// @SuppressWarnings("unchecked") +// @Override +// public void apply() { +// List toRemove = new ArrayList(); +// for (AdvancedMachineInput stack : (Set) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().keySet()) { +// ItemStackOutput recipe = (ItemStackOutput) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().get(stack); +// if (recipe.output.isItemEqual((ItemStack)this.stack)) { +// toRemove.add(stack); +// } +// } +// for (AdvancedMachineInput stack : toRemove) { +// Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().remove(stack); +// } +// } +// +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/Infuser.java b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/Infuser.java index 00dfaec..506b509 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/Infuser.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/Infuser.java @@ -1,90 +1,90 @@ -package modtweaker2.mods.mekanism.handlers.v8; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import mekanism.api.infuse.InfuseRegistry; -import mekanism.api.infuse.InfuseType; -import mekanism.common.recipe.RecipeHandler; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.InfusionInput; -import mekanism.common.recipe.machines.MetallurgicInfuserRecipe; -import mekanism.common.recipe.outputs.ItemStackOutput; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.helpers.InputHelper; -import modtweaker2.utils.BaseMapAddition; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.Infuser") -public class Infuser { - - @ZenMethod - public static void addRecipe(IItemStack output, IItemStack input, int amount, String infuseType) { - InfuseType type = InfuseRegistry.get(infuseType); - MineTweakerAPI.apply(new Add(new InfuserRecipe(InputHelper.toStack(output), InputHelper.toStack(input), amount, type))); - } - - private static class Add extends BaseMapAddition { - - public InfuserRecipe recipe; - - public Add(InfuserRecipe recipe) { - super("Metallurgic Infuser", Recipe.METALLURGIC_INFUSER.get(), new InfusionInput(recipe.type, recipe.amount, recipe.input), new ItemStackOutput(recipe.output)); - this.recipe = recipe; - } - - @Override - public void apply() { - RecipeHandler.addMetallurgicInfuserRecipe(recipe.type, recipe.amount, recipe.input, recipe.output); - - } - } - - private static class InfuserRecipe { - public ItemStack output; - public ItemStack input; - public int amount; - public InfuseType type; - - public InfuserRecipe(ItemStack output, ItemStack input, int amount, InfuseType type) { - this.output = output; - this.input = input; - this.amount = amount; - this.type = type; - } - - } - - @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); - } - - private static class Remove extends BaseMapRemoval { - - public Remove(ItemStack stack) { - super("Metallurgic Infuser", Recipe.METALLURGIC_INFUSER.get(), stack); - } - - @SuppressWarnings("unchecked") - @Override - public void apply() { - List toRemove = new ArrayList(); - for (InfusionInput stack : (Set) Recipe.METALLURGIC_INFUSER.get().keySet()) { - MetallurgicInfuserRecipe recipe = (MetallurgicInfuserRecipe) Recipe.METALLURGIC_INFUSER.get().get(stack); - if (recipe.getOutput().output.isItemEqual((ItemStack) this.stack)) { - toRemove.add(stack); - } - } - for (InfusionInput stack : toRemove) { - Recipe.METALLURGIC_INFUSER.get().remove(stack); - } - } - - } -} +//package modtweaker2.mods.mekanism.handlers.v8; +// +//import java.util.ArrayList; +//import java.util.List; +//import java.util.Set; +// +//import mekanism.api.infuse.InfuseRegistry; +//import mekanism.api.infuse.InfuseType; +//import mekanism.common.recipe.RecipeHandler; +//import mekanism.common.recipe.RecipeHandler.Recipe; +//import mekanism.common.recipe.inputs.InfusionInput; +//import mekanism.common.recipe.machines.MetallurgicInfuserRecipe; +//import mekanism.common.recipe.outputs.ItemStackOutput; +//import minetweaker.MineTweakerAPI; +//import minetweaker.api.item.IItemStack; +//import modtweaker2.helpers.InputHelper; +//import modtweaker2.utils.BaseMapAddition; +//import modtweaker2.utils.BaseMapRemoval; +//import net.minecraft.item.ItemStack; +//import stanhebben.zenscript.annotations.ZenClass; +//import stanhebben.zenscript.annotations.ZenMethod; +// +//@ZenClass("mods.mekanism.Infuser") +//public class Infuser { +// +// @ZenMethod +// public static void addRecipe(IItemStack output, IItemStack input, int amount, String infuseType) { +// InfuseType type = InfuseRegistry.get(infuseType); +// MineTweakerAPI.apply(new Add(new InfuserRecipe(InputHelper.toStack(output), InputHelper.toStack(input), amount, type))); +// } +// +// private static class Add extends BaseMapAddition { +// +// public InfuserRecipe recipe; +// +// public Add(InfuserRecipe recipe) { +// super("Metallurgic Infuser", Recipe.METALLURGIC_INFUSER.get(), new InfusionInput(recipe.type, recipe.amount, recipe.input), new ItemStackOutput(recipe.output)); +// this.recipe = recipe; +// } +// +// @Override +// public void apply() { +// RecipeHandler.addMetallurgicInfuserRecipe(recipe.type, recipe.amount, recipe.input, recipe.output); +// +// } +// } +// +// private static class InfuserRecipe { +// public ItemStack output; +// public ItemStack input; +// public int amount; +// public InfuseType type; +// +// public InfuserRecipe(ItemStack output, ItemStack input, int amount, InfuseType type) { +// this.output = output; +// this.input = input; +// this.amount = amount; +// this.type = type; +// } +// +// } +// +// @ZenMethod +// public static void removeRecipe(IItemStack output) { +// MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); +// } +// +// private static class Remove extends BaseMapRemoval { +// +// public Remove(ItemStack stack) { +// super("Metallurgic Infuser", Recipe.METALLURGIC_INFUSER.get(), stack); +// } +// +// @SuppressWarnings("unchecked") +// @Override +// public void apply() { +// List toRemove = new ArrayList(); +// for (InfusionInput stack : (Set) Recipe.METALLURGIC_INFUSER.get().keySet()) { +// MetallurgicInfuserRecipe recipe = (MetallurgicInfuserRecipe) Recipe.METALLURGIC_INFUSER.get().get(stack); +// if (recipe.getOutput().output.isItemEqual((ItemStack) this.stack)) { +// toRemove.add(stack); +// } +// } +// for (InfusionInput stack : toRemove) { +// Recipe.METALLURGIC_INFUSER.get().remove(stack); +// } +// } +// +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/util/AddMekanismRecipe.java b/src/main/java/modtweaker2/mods/mekanism/util/AddMekanismRecipe.java index 92d3ad8..5a6db24 100644 --- a/src/main/java/modtweaker2/mods/mekanism/util/AddMekanismRecipe.java +++ b/src/main/java/modtweaker2/mods/mekanism/util/AddMekanismRecipe.java @@ -1,67 +1,67 @@ -package modtweaker2.mods.mekanism.util; - -import java.util.Map; - -import mekanism.api.gas.GasStack; -import mekanism.common.recipe.inputs.ChemicalPairInput; -import mekanism.common.recipe.inputs.InfusionInput; -import mekanism.common.recipe.machines.PressurizedRecipe; -import mekanism.common.recipe.outputs.ChanceOutput; -import mekanism.common.recipe.outputs.ChemicalPairOutput; -import mekanism.common.recipe.outputs.PressurizedOutput; -import modtweaker2.mods.mekanism.Mekanism; -import modtweaker2.utils.BaseMapAddition; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; - -public class AddMekanismRecipe extends BaseMapAddition { - public AddMekanismRecipe(String str, Map map, Object key, Object recipe) { - super(str.toLowerCase(), map, key, recipe); - } - - @Override - public String describe() { - if (Mekanism.v7) { - if (recipe instanceof ItemStack) - return "Adding " + description + " Recipe for : " + ((ItemStack) recipe).getDisplayName(); - else if (recipe instanceof FluidStack) - return "Adding " + description + " Recipe for : " + ((FluidStack) recipe).getFluid().getLocalizedName(); - else if (recipe instanceof ChemicalPairInput) - return "Adding " + description + " Recipe for : " + ((ChemicalPairInput) recipe).leftGas.getGas().getLocalizedName(); - else if (recipe instanceof ChanceOutput) - return "Adding " + description + " Recipe for : " + ((ChanceOutput) recipe).primaryOutput.getDisplayName(); - else if (recipe instanceof GasStack) - return "Adding " + description + " Recipe for : " + ((GasStack) recipe).getGas().getLocalizedName(); - else if (recipe instanceof PressurizedRecipe) - return "Adding " + description + " Recipe for : " + ((PressurizedRecipe) recipe).getOutput().getItemOutput().getDisplayName(); - else if (recipe instanceof InfusionInput) - return "Adding " + description + " Recipe for : " + ((InfusionInput) recipe).inputStack.getDisplayName(); - else - return super.getRecipeInfo(); - } - return ""; - } - - @Override - public String describeUndo() { - if (Mekanism.isV7()) { - 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(); - else if (recipe instanceof ChemicalPairOutput) - return "Removing " + description + " Recipe for : " + ((ChemicalPairOutput) recipe).leftGas.getGas().getLocalizedName(); - else if (recipe instanceof ChanceOutput) - return "Removing " + description + " Recipe for : " + ((ChanceOutput) recipe).primaryOutput.getDisplayName(); - else if (recipe instanceof GasStack) - return "Removing " + description + " Recipe for : " + ((GasStack) recipe).getGas().getLocalizedName(); - else if (recipe instanceof PressurizedOutput) - return "Removing " + description + " Recipe for : " + ((PressurizedOutput) recipe).getItemOutput().getDisplayName(); - else if (recipe instanceof InfusionInput) - return "Removing " + description + " Recipe for : " + ((InfusionInput) recipe).inputStack.getDisplayName(); - else - return super.getRecipeInfo(); - } - return ""; - } -} +//package modtweaker2.mods.mekanism.util; +// +//import java.util.Map; +// +//import mekanism.api.gas.GasStack; +//import mekanism.common.recipe.inputs.ChemicalPairInput; +//import mekanism.common.recipe.inputs.InfusionInput; +//import mekanism.common.recipe.machines.PressurizedRecipe; +//import mekanism.common.recipe.outputs.ChanceOutput; +//import mekanism.common.recipe.outputs.ChemicalPairOutput; +//import mekanism.common.recipe.outputs.PressurizedOutput; +//import modtweaker2.mods.mekanism.Mekanism; +//import modtweaker2.utils.BaseMapAddition; +//import net.minecraft.item.ItemStack; +//import net.minecraftforge.fluids.FluidStack; +// +//public class AddMekanismRecipe extends BaseMapAddition { +// public AddMekanismRecipe(String str, Map map, Object key, Object recipe) { +// super(str.toLowerCase(), map, key, recipe); +// } +// +// @Override +// public String describe() { +// if (Mekanism.v7) { +// if (recipe instanceof ItemStack) +// return "Adding " + description + " Recipe for : " + ((ItemStack) recipe).getDisplayName(); +// else if (recipe instanceof FluidStack) +// return "Adding " + description + " Recipe for : " + ((FluidStack) recipe).getFluid().getLocalizedName(); +// else if (recipe instanceof ChemicalPairInput) +// return "Adding " + description + " Recipe for : " + ((ChemicalPairInput) recipe).leftGas.getGas().getLocalizedName(); +// else if (recipe instanceof ChanceOutput) +// return "Adding " + description + " Recipe for : " + ((ChanceOutput) recipe).primaryOutput.getDisplayName(); +// else if (recipe instanceof GasStack) +// return "Adding " + description + " Recipe for : " + ((GasStack) recipe).getGas().getLocalizedName(); +// else if (recipe instanceof PressurizedRecipe) +// return "Adding " + description + " Recipe for : " + ((PressurizedRecipe) recipe).getOutput().getItemOutput().getDisplayName(); +// else if (recipe instanceof InfusionInput) +// return "Adding " + description + " Recipe for : " + ((InfusionInput) recipe).inputStack.getDisplayName(); +// else +// return super.getRecipeInfo(); +// } +// return ""; +// } +// +// @Override +// public String describeUndo() { +// if (Mekanism.isV7()) { +// 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(); +// else if (recipe instanceof ChemicalPairOutput) +// return "Removing " + description + " Recipe for : " + ((ChemicalPairOutput) recipe).leftGas.getGas().getLocalizedName(); +// else if (recipe instanceof ChanceOutput) +// return "Removing " + description + " Recipe for : " + ((ChanceOutput) recipe).primaryOutput.getDisplayName(); +// else if (recipe instanceof GasStack) +// return "Removing " + description + " Recipe for : " + ((GasStack) recipe).getGas().getLocalizedName(); +// else if (recipe instanceof PressurizedOutput) +// return "Removing " + description + " Recipe for : " + ((PressurizedOutput) recipe).getItemOutput().getDisplayName(); +// else if (recipe instanceof InfusionInput) +// return "Removing " + description + " Recipe for : " + ((InfusionInput) recipe).inputStack.getDisplayName(); +// else +// return super.getRecipeInfo(); +// } +// return ""; +// } +//} diff --git a/src/main/java/modtweaker2/mods/mekanism/util/RemoveMekanismRecipe.java b/src/main/java/modtweaker2/mods/mekanism/util/RemoveMekanismRecipe.java index 7b83eb3..9e412c7 100644 --- a/src/main/java/modtweaker2/mods/mekanism/util/RemoveMekanismRecipe.java +++ b/src/main/java/modtweaker2/mods/mekanism/util/RemoveMekanismRecipe.java @@ -1,150 +1,150 @@ -package modtweaker2.mods.mekanism.util; - -import static modtweaker2.helpers.StackHelper.areEqual; - -import java.util.Iterator; -import java.util.Map; - -import mekanism.api.gas.GasStack; -import mekanism.common.recipe.inputs.InfusionInput; -import mekanism.common.recipe.inputs.PressurizedInput; -import mekanism.common.recipe.machines.PressurizedRecipe; -import mekanism.common.recipe.outputs.ChanceOutput; -import mekanism.common.recipe.outputs.ChemicalPairOutput; -import mekanism.common.recipe.outputs.PressurizedOutput; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; - -public class RemoveMekanismRecipe extends BaseMapRemoval { - private Object tmp; - - public RemoveMekanismRecipe(String string, Map map, Object key) { - super(string.toLowerCase().replace('_', ' '), map, key, null); - this.tmp = key; - } - - @Override - public void apply() { - try { - Iterator it = map.entrySet().iterator(); - - while (it.hasNext()) { - Map.Entry pairs = (Map.Entry) it.next(); - if (pairs != null) { - Object value = pairs.getValue(); - if (value != null && tmp != null) { - if (tmp instanceof ItemStack && value instanceof ItemStack) { - if (areEqual(((ItemStack) tmp), (ItemStack) value)) { - key = pairs.getKey(); - break; - } - } - - if (tmp instanceof FluidStack && value instanceof FluidStack) { - if (((FluidStack) tmp).isFluidEqual((FluidStack) value)) { - key = pairs.getKey(); - break; - } - } - - if (tmp instanceof GasStack && value instanceof GasStack) { - if (((GasStack) tmp).isGasEqual((GasStack) value)) { - key = pairs.getKey(); - break; - } - } - - if (tmp instanceof ItemStack && value instanceof InfusionInput) { - if (areEqual(((ItemStack) tmp), ((InfusionInput) value).inputStack)) { - key = pairs.getKey(); - break; - } - } - - if (tmp instanceof ChemicalPairOutput && value instanceof ChemicalPairOutput) { - ChemicalPairOutput par1 = (ChemicalPairOutput) tmp; - ChemicalPairOutput par2 = (ChemicalPairOutput) value; - if (par1.leftGas.isGasEqual(par2.leftGas) && par1.rightGas.isGasEqual(par2.rightGas)) { - key = pairs.getKey(); - break; - } - } - - if (tmp instanceof ChanceOutput && value instanceof ChanceOutput) { - ChanceOutput par1 = (ChanceOutput) tmp; - ChanceOutput par2 = (ChanceOutput) value; - if (areEqual(par1.primaryOutput, par2.primaryOutput)) { - if (par1.secondaryOutput == null || (par1.secondaryOutput != null && par2.secondaryOutput != null && areEqual(par1.secondaryOutput, par2.secondaryOutput))) { - key = pairs.getKey(); - break; - } - } - } - - if (tmp instanceof PressurizedOutput && value instanceof PressurizedRecipe) { - PressurizedOutput par1 = (PressurizedOutput) tmp; - PressurizedOutput par2 = ((PressurizedRecipe) value).recipeOutput; - if (areEqual(par1.getItemOutput(), (par2.getItemOutput()))) { - if (par1.getGasOutput().isGasEqual(par2.getGasOutput())) { - key = pairs.getKey(); - break; - - } - } - } - } - - it.remove(); - } - } - - recipe = map.get(key); - - } catch (Exception e) { - e.printStackTrace(); - } - - map.remove(key); - } - - @Override - public String describe() { - if (tmp instanceof ItemStack) - return "Removing " + description + " Recipe for : " + ((ItemStack) tmp).getDisplayName(); - else if (tmp instanceof FluidStack) - return "Removing " + description + " Recipe for : " + ((FluidStack) tmp).getFluid().getLocalizedName(); - else if (tmp instanceof ChemicalPairOutput) - return "Removing " + description + " Recipe for : " + ((ChemicalPairOutput) tmp).leftGas.getGas().getLocalizedName(); - else if (tmp instanceof ChanceOutput) - return "Removing " + description + " Recipe for : " + ((ChanceOutput) tmp).primaryOutput.getDisplayName(); - else if (tmp instanceof GasStack) - return "Removing " + description + " Recipe for : " + ((GasStack) tmp).getGas().getLocalizedName(); - else if (tmp instanceof PressurizedInput) - return "Removing " + description + " Recipe for : " + ((PressurizedInput) tmp).getSolid().getDisplayName(); - else if (tmp instanceof InfusionInput) - return "Removing " + description + " Recipe for : " + ((InfusionInput) tmp).inputStack.getDisplayName(); - else - return super.getRecipeInfo(); - } - - @Override - public String describeUndo() { - if (tmp instanceof ItemStack) - return "Restoring " + description + " Recipe for : " + ((ItemStack) tmp).getDisplayName(); - else if (tmp instanceof FluidStack) - return "Restoring " + description + " Recipe for : " + ((FluidStack) tmp).getFluid().getLocalizedName(); - else if (tmp instanceof ChemicalPairOutput) - return "Restoring " + description + " Recipe for : " + ((ChemicalPairOutput) tmp).leftGas.getGas().getLocalizedName(); - else if (tmp instanceof ChanceOutput) - return "Restoring " + description + " Recipe for : " + ((ChanceOutput) tmp).primaryOutput.getDisplayName(); - else if (tmp instanceof GasStack) - return "Restoring " + description + " Recipe for : " + ((GasStack) tmp).getGas().getLocalizedName(); - else if (tmp instanceof PressurizedInput) - return "Restoring " + description + " Recipe for : " + ((PressurizedInput) tmp).getSolid().getDisplayName(); - else if (tmp instanceof InfusionInput) - return "Restoring " + description + " Recipe for : " + ((InfusionInput) tmp).inputStack.getDisplayName(); - else - return super.getRecipeInfo(); - } -} +//package modtweaker2.mods.mekanism.util; +// +//import static modtweaker2.helpers.StackHelper.areEqual; +// +//import java.util.Iterator; +//import java.util.Map; +// +//import mekanism.api.gas.GasStack; +//import mekanism.common.recipe.inputs.InfusionInput; +//import mekanism.common.recipe.inputs.PressurizedInput; +//import mekanism.common.recipe.machines.PressurizedRecipe; +//import mekanism.common.recipe.outputs.ChanceOutput; +//import mekanism.common.recipe.outputs.ChemicalPairOutput; +//import mekanism.common.recipe.outputs.PressurizedOutput; +//import modtweaker2.utils.BaseMapRemoval; +//import net.minecraft.item.ItemStack; +//import net.minecraftforge.fluids.FluidStack; +// +//public class RemoveMekanismRecipe extends BaseMapRemoval { +// private Object tmp; +// +// public RemoveMekanismRecipe(String string, Map map, Object key) { +// super(string.toLowerCase().replace('_', ' '), map, key, null); +// this.tmp = key; +// } +// +// @Override +// public void apply() { +// try { +// Iterator it = map.entrySet().iterator(); +// +// while (it.hasNext()) { +// Map.Entry pairs = (Map.Entry) it.next(); +// if (pairs != null) { +// Object value = pairs.getValue(); +// if (value != null && tmp != null) { +// if (tmp instanceof ItemStack && value instanceof ItemStack) { +// if (areEqual(((ItemStack) tmp), (ItemStack) value)) { +// key = pairs.getKey(); +// break; +// } +// } +// +// if (tmp instanceof FluidStack && value instanceof FluidStack) { +// if (((FluidStack) tmp).isFluidEqual((FluidStack) value)) { +// key = pairs.getKey(); +// break; +// } +// } +// +// if (tmp instanceof GasStack && value instanceof GasStack) { +// if (((GasStack) tmp).isGasEqual((GasStack) value)) { +// key = pairs.getKey(); +// break; +// } +// } +// +// if (tmp instanceof ItemStack && value instanceof InfusionInput) { +// if (areEqual(((ItemStack) tmp), ((InfusionInput) value).inputStack)) { +// key = pairs.getKey(); +// break; +// } +// } +// +// if (tmp instanceof ChemicalPairOutput && value instanceof ChemicalPairOutput) { +// ChemicalPairOutput par1 = (ChemicalPairOutput) tmp; +// ChemicalPairOutput par2 = (ChemicalPairOutput) value; +// if (par1.leftGas.isGasEqual(par2.leftGas) && par1.rightGas.isGasEqual(par2.rightGas)) { +// key = pairs.getKey(); +// break; +// } +// } +// +// if (tmp instanceof ChanceOutput && value instanceof ChanceOutput) { +// ChanceOutput par1 = (ChanceOutput) tmp; +// ChanceOutput par2 = (ChanceOutput) value; +// if (areEqual(par1.primaryOutput, par2.primaryOutput)) { +// if (par1.secondaryOutput == null || (par1.secondaryOutput != null && par2.secondaryOutput != null && areEqual(par1.secondaryOutput, par2.secondaryOutput))) { +// key = pairs.getKey(); +// break; +// } +// } +// } +// +// if (tmp instanceof PressurizedOutput && value instanceof PressurizedRecipe) { +// PressurizedOutput par1 = (PressurizedOutput) tmp; +// PressurizedOutput par2 = ((PressurizedRecipe) value).recipeOutput; +// if (areEqual(par1.getItemOutput(), (par2.getItemOutput()))) { +// if (par1.getGasOutput().isGasEqual(par2.getGasOutput())) { +// key = pairs.getKey(); +// break; +// +// } +// } +// } +// } +// +// it.remove(); +// } +// } +// +// recipe = map.get(key); +// +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// map.remove(key); +// } +// +// @Override +// public String describe() { +// if (tmp instanceof ItemStack) +// return "Removing " + description + " Recipe for : " + ((ItemStack) tmp).getDisplayName(); +// else if (tmp instanceof FluidStack) +// return "Removing " + description + " Recipe for : " + ((FluidStack) tmp).getFluid().getLocalizedName(); +// else if (tmp instanceof ChemicalPairOutput) +// return "Removing " + description + " Recipe for : " + ((ChemicalPairOutput) tmp).leftGas.getGas().getLocalizedName(); +// else if (tmp instanceof ChanceOutput) +// return "Removing " + description + " Recipe for : " + ((ChanceOutput) tmp).primaryOutput.getDisplayName(); +// else if (tmp instanceof GasStack) +// return "Removing " + description + " Recipe for : " + ((GasStack) tmp).getGas().getLocalizedName(); +// else if (tmp instanceof PressurizedInput) +// return "Removing " + description + " Recipe for : " + ((PressurizedInput) tmp).getSolid().getDisplayName(); +// else if (tmp instanceof InfusionInput) +// return "Removing " + description + " Recipe for : " + ((InfusionInput) tmp).inputStack.getDisplayName(); +// else +// return super.getRecipeInfo(); +// } +// +// @Override +// public String describeUndo() { +// if (tmp instanceof ItemStack) +// return "Restoring " + description + " Recipe for : " + ((ItemStack) tmp).getDisplayName(); +// else if (tmp instanceof FluidStack) +// return "Restoring " + description + " Recipe for : " + ((FluidStack) tmp).getFluid().getLocalizedName(); +// else if (tmp instanceof ChemicalPairOutput) +// return "Restoring " + description + " Recipe for : " + ((ChemicalPairOutput) tmp).leftGas.getGas().getLocalizedName(); +// else if (tmp instanceof ChanceOutput) +// return "Restoring " + description + " Recipe for : " + ((ChanceOutput) tmp).primaryOutput.getDisplayName(); +// else if (tmp instanceof GasStack) +// return "Restoring " + description + " Recipe for : " + ((GasStack) tmp).getGas().getLocalizedName(); +// else if (tmp instanceof PressurizedInput) +// return "Restoring " + description + " Recipe for : " + ((PressurizedInput) tmp).getSolid().getDisplayName(); +// else if (tmp instanceof InfusionInput) +// return "Restoring " + description + " Recipe for : " + ((InfusionInput) tmp).inputStack.getDisplayName(); +// else +// return super.getRecipeInfo(); +// } +//} diff --git a/src/main/java/modtweaker2/mods/metallurgy/handlers/Alloyer.java b/src/main/java/modtweaker2/mods/metallurgy/handlers/Alloyer.java index dc1587f..acc0655 100644 --- a/src/main/java/modtweaker2/mods/metallurgy/handlers/Alloyer.java +++ b/src/main/java/modtweaker2/mods/metallurgy/handlers/Alloyer.java @@ -1,13 +1,19 @@ package modtweaker2.mods.metallurgy.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +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.mods.metallurgy.MetallurgyHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @@ -15,52 +21,50 @@ import com.teammetallurgy.metallurgy.recipes.AlloyerRecipes.AlloyRecipe; @ZenClass("mods.metallurgy.Alloyer") public class Alloyer { - //Adding a Metallurgy Alloyer recipe + + public static final String name = "Metallurgy Alloyer"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(IItemStack first, IItemStack base, IItemStack result) { MineTweakerAPI.apply(new Add(MetallurgyHelper.getAlloyRecipe(toStack(first), toStack(base), toStack(result)))); } - //Passes the list to the base list implementation, and adds the recipe - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(AlloyRecipe recipe) { - super("Metallurgy Alloyer", MetallurgyHelper.alloyerRecipes, recipe); + super(Alloyer.name, MetallurgyHelper.alloyerRecipes); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((AlloyRecipe) recipe).getCraftingResult().getDisplayName(); + public String getRecipeInfo(AlloyRecipe recipe) { + return InputHelper.getStackDescription(recipe.getCraftingResult()); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Removing a Metallurgy Alloyer recipe @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output))); + public static void removeRecipe(IIngredient output) { + List recipes = new LinkedList(); + + for (AlloyRecipe r : MetallurgyHelper.alloyerRecipes) { + if (r != null && r.getCraftingResult() != null && matches(output, toIItemStack(r.getCraftingResult()))) { + recipes.add(r); + } + } + MineTweakerAPI.apply(new Remove(recipes)); } - //Removes a recipe, apply is never the same for anything, so will always need to override it - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Metallurgy Alloyer", MetallurgyHelper.alloyerRecipes, stack); - } - - //Loops through the registry, to find the item that matches, saves that recipe then removes it - @Override - public void apply() { - for (AlloyRecipe r : MetallurgyHelper.alloyerRecipes) { - if (r.getCraftingResult() != null && areEqual(r.getCraftingResult(), stack)) { - recipes.add(r); - } - } - super.apply(); + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(Alloyer.name, MetallurgyHelper.alloyerRecipes, recipes); } @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(AlloyRecipe recipe) { + return InputHelper.getStackDescription(recipe.getCraftingResult()); } } } diff --git a/src/main/java/modtweaker2/mods/metallurgy/handlers/Crusher.java b/src/main/java/modtweaker2/mods/metallurgy/handlers/Crusher.java index 9fda247..0ca43bd 100644 --- a/src/main/java/modtweaker2/mods/metallurgy/handlers/Crusher.java +++ b/src/main/java/modtweaker2/mods/metallurgy/handlers/Crusher.java @@ -2,8 +2,12 @@ package modtweaker2.mods.metallurgy.handlers; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.StackHelper.areEqual; + +import java.util.Map.Entry; + import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; +import modtweaker2.helpers.InputHelper; import modtweaker2.mods.metallurgy.MetallurgyHelper; import modtweaker2.utils.BaseMapAddition; import modtweaker2.utils.BaseMapRemoval; @@ -19,24 +23,34 @@ public class Crusher { MineTweakerAPI.apply(new Add(toStack(input), toStack(output))); } - private static class Add extends BaseMapAddition { + private static class Add extends BaseMapAddition { private final ItemStack stack; public Add(ItemStack input, ItemStack output) { - super("Metallurgy Crusher", MetallurgyHelper.crusherMetaList, MetallurgyHelper.getCrusherKey(input), output); + super("Metallurgy Crusher", MetallurgyHelper.crusherMetaList); this.stack = input; + recipes.put(MetallurgyHelper.getCrusherKey(input), output); } @Override public void apply() { super.apply(); - addToInput(stack, (ItemStack) recipe); + for(Entry recipe : successful.entrySet()) { + addToInput(stack, recipe.getValue()); + } } @Override public void undo() { super.undo(); - removeFromInput(stack, (ItemStack) recipe); + for(Entry recipe : successful.entrySet()) { + removeFromInput(stack, recipe.getValue()); + } + } + + @Override + protected String getRecipeInfo(Entry recipe) { + return InputHelper.getStackDescription(recipe.getValue()); } } @@ -48,26 +62,35 @@ public class Crusher { MineTweakerAPI.apply(new Remove(toStack(input))); } - private static class Remove extends BaseMapRemoval { + private static class Remove extends BaseMapRemoval { + private ItemStack stack; + public Remove(ItemStack stack) { - super("Metallurgy Crusher", MetallurgyHelper.crusherMetaList, MetallurgyHelper.getCrusherKey(stack), stack); - } - - @Override - public String getRecipeInfo() { - return ((ItemStack) stack).getDisplayName(); + super("Metallurgy Crusher", MetallurgyHelper.crusherMetaList); + + map.put(MetallurgyHelper.getCrusherKey(stack), MetallurgyHelper.crusherMetaList.get(MetallurgyHelper.getCrusherKey(stack))); + this.stack = stack; } @Override public void apply() { super.apply(); - removeFromInput(((ItemStack) stack), (ItemStack) recipe); + for(Entry recipe : successful.entrySet()) { + removeFromInput(stack, recipe.getValue()); + } } @Override public void undo() { super.undo(); - addToInput(((ItemStack) stack), (ItemStack) recipe); + for(Entry recipe : successful.entrySet()) { + addToInput(stack, recipe.getValue()); + } + } + + @Override + protected String getRecipeInfo(Entry recipe) { + return InputHelper.getStackDescription(recipe.getValue()); } } diff --git a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java index 29d8947..ad2ea56 100644 --- a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java +++ b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java @@ -1,21 +1,28 @@ package modtweaker2.mods.pneumaticcraft.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraft.item.ItemStack; import pneumaticCraft.api.recipe.AssemblyRecipe; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.pneumaticcraft.Assembly") public class Assembly { + + public static final String name = "PneumaticCraft Assembly"; + @ZenMethod public static void addDrillRecipe(IItemStack input, IItemStack output) { MineTweakerAPI.apply(new Add(new AssemblyRecipe(toStack(input), toStack(output)), AssemblyRecipe.drillRecipes)); @@ -31,53 +38,59 @@ public class Assembly { MineTweakerAPI.apply(new Add(new AssemblyRecipe(toStack(input), toStack(output)), AssemblyRecipe.drillLaserRecipes)); } - private static class Add extends BaseListAddition { - public Add(AssemblyRecipe recipe, List list) { - super("Pneumaticraft Assembly", list, recipe); + private static class Add extends BaseListAddition { + public Add(AssemblyRecipe recipe, List list) { + super(Assembly.name, list); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((AssemblyRecipe) recipe).getOutput().getDisplayName(); + public String getRecipeInfo(AssemblyRecipe recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeDrillRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output), AssemblyRecipe.drillRecipes)); + public static void removeDrillRecipe(IIngredient output) { + removeRecipe(AssemblyRecipe.drillRecipes, output); } @ZenMethod - public static void removeLaserRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output), AssemblyRecipe.laserRecipes)); + public static void removeLaserRecipe(IIngredient output) { + removeRecipe(AssemblyRecipe.laserRecipes, output); } @ZenMethod - public static void removeLaserDrillRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output), AssemblyRecipe.drillLaserRecipes)); + public static void removeLaserDrillRecipe(IIngredient output) { + removeRecipe(AssemblyRecipe.drillLaserRecipes, output); } - - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack, List list) { - super("Pneumaticraft Assembly", list, stack); - } - - @Override - public void apply() { - for (AssemblyRecipe r : (List) list) { - if (r.getOutput() != null && areEqual(r.getOutput(), stack)) { - recipes.add(r); - } + + public static void removeRecipe(List list, IIngredient output) { + List recipes = new LinkedList(); + + for (AssemblyRecipe r : list) { + if (r.getOutput() != null && matches(output, toIItemStack(r.getOutput()))) { + recipes.add(r); } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(list, recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Assembly.name, output.toString())); + } + } - super.apply(); + private static class Remove extends BaseListRemoval { + public Remove(List list, List recipes) { + super(Assembly.name, list, recipes); } @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(AssemblyRecipe recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java index 440a225..d2f62e4 100644 --- a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java +++ b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java @@ -1,9 +1,16 @@ package modtweaker2.mods.pneumaticcraft.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStacks; -import static modtweaker2.helpers.StackHelper.areEqual; +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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; import net.minecraft.item.ItemStack; @@ -13,48 +20,41 @@ import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.pneumaticcraft.Pressure") public class Pressure { + + public static final String name = "PneumaticCraft Pressure Chamber"; + @ZenMethod public static void addRecipe(IItemStack[] input, double pressure, IItemStack[] output, boolean asBlock) { MineTweakerAPI.apply(new Add(new PressureChamberRecipe(toStacks(input), (float) pressure, toStacks(output), asBlock))); } - private static class Add extends BaseListAddition { - private ItemStack stack; - + private static class Add extends BaseListAddition { public Add(PressureChamberRecipe recipe) { - super("Pneumaticraft Pressure Chamber", PressureChamberRecipe.chamberRecipes, recipe); - this.stack = recipe.output[0]; + super(Pressure.name, PressureChamberRecipe.chamberRecipes); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(PressureChamberRecipe recipe) { + return InputHelper.getStackDescription(recipe.output[0]); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack[] output) { - MineTweakerAPI.apply(new Remove(toStacks(output))); - } - - private static class Remove extends BaseListRemoval { - private final ItemStack[] stacks; - - public Remove(ItemStack[] stacks) { - super("Pneumaticraft Pressure Chamber", PressureChamberRecipe.chamberRecipes, stacks[0]); - this.stacks = stacks; - } - - @Override - public void apply() { - for (PressureChamberRecipe r : PressureChamberRecipe.chamberRecipes) { + public static void removeRecipe(IIngredient[] output) { + List recipes = new LinkedList(); + + for (PressureChamberRecipe r : PressureChamberRecipe.chamberRecipes) { + if(r != null) { boolean matches = true; - for (int i = 0; i < stacks.length; i++) { - if (!areEqual(stacks[i], r.output[i])) { // possible IndexOutOfBoundsException on r.output[i] - matches = false; - break; + for (IIngredient ingredient : output) { + for(ItemStack stack : r.output) { + if (!matches(ingredient, toIItemStack(stack))) { + matches = false; + break; + } } } @@ -62,12 +62,19 @@ public class Pressure { recipes.add(r); } } - super.apply(); } + MineTweakerAPI.apply(new Remove(recipes)); + } + + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(Pressure.name, PressureChamberRecipe.chamberRecipes, recipes); + } + @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(PressureChamberRecipe recipe) { + return InputHelper.getStackDescription(recipe.output[0]); } } } diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java b/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java index 4c5efa6..98d8c91 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java @@ -1,62 +1,71 @@ package modtweaker2.mods.railcraft.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +import static modtweaker2.helpers.StackHelper.matches; -import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import mods.railcraft.api.crafting.IBlastFurnaceRecipe; -import mods.railcraft.api.crafting.RailcraftCraftingManager; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.railcraft.RailcraftHelper; 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.railcraft.BlastFurnace") public class BlastFurnace { + + public static final String name = "Railcraft Blast Furnace"; + @ZenMethod public static void addRecipe(IItemStack input, boolean matchDamage, boolean matchNBT, int cookTime, IItemStack output) { MineTweakerAPI.apply(new Add(RailcraftHelper.getBlastFurnaceRecipe(toStack(input), matchDamage, matchNBT, cookTime, toStack(output)))); } - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(IBlastFurnaceRecipe recipe) { - super("Blast Furnace", RailcraftHelper.furnace, recipe); + super(BlastFurnace.name, (List)RailcraftHelper.furnace); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((IBlastFurnaceRecipe) recipe).getOutput().getDisplayName(); + public String getRecipeInfo(IBlastFurnaceRecipe recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); } } @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output))); + public static void removeRecipe(IIngredient output) { + List recipes = new LinkedList(); + + for (IBlastFurnaceRecipe r : RailcraftHelper.furnace) { + if (r != null && r.getOutput() != null && matches(output, toIItemStack(r.getOutput()))) { + recipes.add(r); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", BlastFurnace.name, output.toString())); + } } - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Blast Furnace", RailcraftHelper.furnace, stack); + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(BlastFurnace.name, (List)RailcraftHelper.furnace, recipes); } - @Override - public void apply() { - for (IBlastFurnaceRecipe r : RailcraftHelper.furnace) { - if (r.getOutput() != null && stack.isItemEqual(r.getOutput())) { - recipes.add(r); - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return stack.getDisplayName(); - } + @Override + public String getRecipeInfo(IBlastFurnaceRecipe recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); + } } } diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java b/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java index a0449b7..14f15c2 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java @@ -1,18 +1,22 @@ package modtweaker2.mods.railcraft.handlers; import static modtweaker2.helpers.InputHelper.toFluid; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; -import java.lang.reflect.Field; +import java.util.LinkedList; import java.util.List; import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; import mods.railcraft.api.crafting.ICokeOvenRecipe; import mods.railcraft.common.util.crafting.CokeOvenCraftingManager; -import mods.railcraft.common.util.crafting.CokeOvenCraftingManager.CokeOvenRecipe; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.railcraft.RailcraftHelper; import modtweaker2.utils.BaseListRemoval; import net.minecraft.item.ItemStack; @@ -22,6 +26,9 @@ import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.railcraft.CokeOven") public class CokeOven { + + public static final String name = "Railcraft Coke Oven"; + @ZenMethod public static void addRecipe(IItemStack input, boolean matchDamage, boolean matchNBT, IItemStack output, ILiquidStack fluidOutput, int cookTime) { MineTweakerAPI.apply(new Add(toStack(input), matchDamage, matchNBT, toStack(output), toFluid(fluidOutput), cookTime)); @@ -80,28 +87,30 @@ public class CokeOven { ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output))); + public static void removeRecipe(IIngredient output) { + List recipes = new LinkedList(); + + for (ICokeOvenRecipe r : RailcraftHelper.oven) { + if (r.getOutput() != null && matches(output, toIItemStack(r.getOutput()))) { + recipes.add(r); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", CokeOven.name, output.toString())); + } } - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Coke Oven", RailcraftHelper.oven, stack); + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super("Coke Oven", (List)RailcraftHelper.oven, recipes); } @Override - public void apply() { - for (ICokeOvenRecipe r : RailcraftHelper.oven) { - if (r.getOutput() != null && r.getOutput().getItem().equals(stack)) { - recipes.add(r); - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(ICokeOvenRecipe recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java b/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java index dafcf83..75d05af 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java @@ -1,63 +1,79 @@ package modtweaker2.mods.railcraft.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +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 mods.railcraft.api.crafting.IRockCrusherRecipe; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.railcraft.RailcraftHelper; 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.railcraft.RockCrusher") public class RockCrusher { + + public static final String name = "Railcraft Rock Crusher"; + @ZenMethod public static void addRecipe(IItemStack input, boolean matchDamage, boolean matchNBT, IItemStack[] output, double[] chances) { IRockCrusherRecipe recipe = RailcraftHelper.getRockCrusherRecipe(toStack(input), matchDamage, matchNBT); - for (int i = 0; i < output.length; i++) + + for (int i = 0; i < output.length; i++) { recipe.addOutput(toStack(output[i]), (float) chances[i]); + } + MineTweakerAPI.apply(new Add(recipe)); } - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(IRockCrusherRecipe recipe) { - super("Rock Crusher", RailcraftHelper.crusher, recipe); + super(RockCrusher.name, (List)RailcraftHelper.crusher); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((IRockCrusherRecipe) recipe).getInput().getDisplayName(); + public String getRecipeInfo(IRockCrusherRecipe recipe) { + return InputHelper.getStackDescription(recipe.getInput()); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack input) { - MineTweakerAPI.apply(new Remove(toStack(input))); + public static void removeRecipe(IIngredient input) { + List recipes = new LinkedList(); + + for (IRockCrusherRecipe r : RailcraftHelper.crusher) { + if (r.getInput() != null && matches(input, toIItemStack(r.getInput()))) { + recipes.add(r); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", RockCrusher.name, input.toString())); + } } - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Rock Crusher", RailcraftHelper.crusher, stack); + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super("Rock Crusher", (List)RailcraftHelper.crusher, recipes); } @Override - public void apply() { - for (IRockCrusherRecipe r : RailcraftHelper.crusher) { - if (r.getInput() != null && areEqual(r.getInput(), stack)) { - recipes.add(r); - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + public String getRecipeInfo(IRockCrusherRecipe recipe) { + return InputHelper.getStackDescription(recipe.getInput()); } } } diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/RollingMachine.java b/src/main/java/modtweaker2/mods/railcraft/handlers/RollingMachine.java index a561ed1..fa51768 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/RollingMachine.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/RollingMachine.java @@ -3,15 +3,17 @@ package modtweaker2.mods.railcraft.handlers; import static modtweaker2.helpers.InputHelper.toObjects; import static modtweaker2.helpers.InputHelper.toShapedObjects; import static modtweaker2.helpers.InputHelper.toStack; + +import java.util.List; + import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import mods.railcraft.api.crafting.RailcraftCraftingManager; -import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.railcraft.RailcraftHelper; import modtweaker2.utils.BaseCraftingAddition; import modtweaker2.utils.BaseCraftingRemoval; -import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe; import stanhebben.zenscript.annotations.ZenClass; @@ -19,42 +21,42 @@ import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.railcraft.Rolling") public class RollingMachine { + + public static final String name = "Railcraft Rolling Machine"; + @ZenMethod public static void addShaped(IItemStack output, IIngredient[][] ingredients) { - MineTweakerAPI.apply(new Add(false, toStack(output), toShapedObjects(ingredients))); + MineTweakerAPI.apply(new Add(new ShapedOreRecipe(toStack(output), toShapedObjects(ingredients)))); } @ZenMethod public static void addShapeless(IItemStack output, IIngredient[] ingredients) { - MineTweakerAPI.apply(new Add(true, toStack(output), toObjects(ingredients))); + MineTweakerAPI.apply(new Add(new ShapelessOreRecipe(toStack(output), toObjects(ingredients)))); } private static class Add extends BaseCraftingAddition { - public Add(boolean shapeless, ItemStack output, Object... recipe) { - super("Rolling Machine", shapeless, RailcraftHelper.rolling, output, recipe); - } - - @Override - public void applyShaped() { - RailcraftHelper.rolling.add(new ShapedOreRecipe(output, recipe)); - } - - @Override - public void applyShapeless() { - RailcraftHelper.rolling.add(new ShapelessOreRecipe(output, recipe)); + public Add(IRecipe recipe) { + super(RollingMachine.name, RailcraftHelper.rolling); + recipes.add(recipe); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output))); + public static void removeRecipe(IIngredient ingredient) { + List recipes = BaseCraftingRemoval.getRecipes(RailcraftHelper.rolling, ingredient); + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipes found for %s. Command ignored!", RollingMachine.name, ingredient.toString())); + } } private static class Remove extends BaseCraftingRemoval { - public Remove(ItemStack stack) { - super("Rolling Machine", RailcraftHelper.rolling, stack); + public Remove(List recipes) { + super(RollingMachine.name, RailcraftHelper.rolling, recipes); } } } diff --git a/src/main/java/modtweaker2/mods/tconstruct/TConstructHelper.java b/src/main/java/modtweaker2/mods/tconstruct/TConstructHelper.java index 3202059..6e911c2 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/TConstructHelper.java +++ b/src/main/java/modtweaker2/mods/tconstruct/TConstructHelper.java @@ -1,6 +1,7 @@ package modtweaker2.mods.tconstruct; import java.lang.reflect.Constructor; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -9,6 +10,7 @@ import java.util.Map; import mantle.utils.ItemMetaWrapper; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import tconstruct.library.TConstructRegistry; import tconstruct.library.crafting.AlloyMix; @@ -16,6 +18,7 @@ import tconstruct.library.crafting.CastingRecipe; import tconstruct.library.crafting.DryingRackRecipes.DryingRecipe; import tconstruct.library.crafting.ModifyBuilder; import tconstruct.library.crafting.PatternBuilder.ItemKey; +import tconstruct.library.crafting.Smeltery; import tconstruct.library.modifier.ItemModifier; import tconstruct.library.tools.ToolMaterial; @@ -27,6 +30,7 @@ public class TConstructHelper { public static Map smeltingList = null; public static Map temperatureList = null; public static Map renderIndex = null; + public static Map fuelList = null; public static List modifiers = null; public static List modifiers_clone = null; @@ -44,7 +48,8 @@ public class TConstructHelper { for (Map.Entry entry : TConstructRegistry.toolMaterials.entrySet()) { mappings.put(entry.getValue().materialName, entry.getKey()); } - + + fuelList = getFuelList(); } catch (Exception e) {} } @@ -55,6 +60,20 @@ public class TConstructHelper { return -1; } else return mappings.get(material); } + + public static Map getFuelList() { + Smeltery smelteryInstance = tconstruct.library.crafting.Smeltery.instance; + + try { + Field smelteryFuels = Smeltery.class.getDeclaredField("smelteryFuels"); + smelteryFuels.setAccessible(true); + + return (Map)smelteryFuels.get(smelteryInstance); + } catch (Exception e) { + e.printStackTrace(); + throw new NullPointerException("Failed to instantiate smeltery fuel map"); + } + } //Returns a Drying Recipe, using reflection as the constructor is not visible public static DryingRecipe getDryingRecipe(ItemStack input, int time, ItemStack output) { diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java index f744c98..dd76146 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java @@ -1,21 +1,23 @@ package modtweaker2.mods.tconstruct.handlers; import static modtweaker2.helpers.InputHelper.toFluid; +import static modtweaker2.helpers.InputHelper.toIItemStack; +import static modtweaker2.helpers.InputHelper.toILiquidStack; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; import java.util.ArrayList; import java.util.LinkedList; -import java.util.Iterator; +import java.util.List; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.tconstruct.TConstructHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @@ -23,7 +25,11 @@ import tconstruct.library.crafting.CastingRecipe; @ZenClass("mods.tconstruct.Casting") public class Casting { - //Adding a TConstruct Casting recipe + + protected static final String name = "TConstruct Casting"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addBasinRecipe(IItemStack output, ILiquidStack metal, @Optional IItemStack cast, @Optional boolean consume, int delay) { MineTweakerAPI.apply(new Add(new CastingRecipe(toStack(output), toFluid(metal), toStack(cast), consume, delay, null), TConstructHelper.basinCasting)); @@ -35,98 +41,90 @@ public class Casting { } //Passes the list to the base list implementation, and adds the recipe - private static class Add extends BaseListAddition { - public Add(CastingRecipe recipe, ArrayList list) { - super("TConstruct Casting", list, recipe); + private static class Add extends BaseListAddition { + public Add(CastingRecipe recipe, ArrayList list) { + super("TConstruct Casting", list); + + this.recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((CastingRecipe) recipe).output.getDisplayName(); + protected String getRecipeInfo(CastingRecipe recipe) { + return InputHelper.getStackDescription(recipe.output); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Removing a TConstruct Casting recipe @ZenMethod - public static void removeBasinRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove((toStack(output)), TConstructHelper.basinCasting, RecipeComponent.Output)); - } - - @ZenMethod - public static void removeTableRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove((toStack(output)), TConstructHelper.tableCasting, RecipeComponent.Output)); + public static void removeTableRecipe(IIngredient output) { + removeRecipe(output, TConstructHelper.tableCasting, RecipeComponent.Output); } @ZenMethod - public static void removeBasinMaterial(ILiquidStack fluid) { - MineTweakerAPI.apply(new Remove((toFluid(fluid)), TConstructHelper.basinCasting)); + public static void removeTableMaterial(IIngredient material) { + removeRecipe(material, TConstructHelper.tableCasting, RecipeComponent.Material); } @ZenMethod - public static void removeTableMaterial(ILiquidStack fluid) { - MineTweakerAPI.apply(new Remove((toFluid(fluid)), TConstructHelper.tableCasting)); + public static void removeCastRecipes(IIngredient cast) { + removeRecipe(cast, TConstructHelper.tableCasting, RecipeComponent.Cast); } @ZenMethod - public static void removeCastRecipes(IItemStack cast) { - MineTweakerAPI.apply(new Remove((toStack(cast)), TConstructHelper.tableCasting, RecipeComponent.Cast)); + public static void removeBasinRecipe(IIngredient output) { + removeRecipe(output, TConstructHelper.basinCasting, RecipeComponent.Output); + } + + @ZenMethod + public static void removeBasinMaterial(IIngredient material) { + removeRecipe(material, TConstructHelper.basinCasting, RecipeComponent.Material); } - // 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 RecipeComponent component; + + public static void removeRecipe(IIngredient ingredient, List list, RecipeComponent component) { - public Remove(ItemStack item, ArrayList list, RecipeComponent component) { - super("TConstruct Casting", list, item); - this.component = component; - } + List recipes = new LinkedList(); - public Remove(FluidStack fluid, ArrayList list) { - super("TConstruct Casting", list, fluid); - this.component = RecipeComponent.Material; - } - - // Loops through the registry, to find all items that matches, then removes them - @Override - public void apply() { - for (Iterator iterator = ((ArrayList)list).iterator(); iterator.hasNext();) { - CastingRecipe r = iterator.next(); - - switch(component) - { + for(CastingRecipe recipe : list) { + if(recipe != null) { + switch(component) { case Cast: - if (r.cast != null && areEqual(r.cast, stack)) { - recipes.add(r); + if(recipe.cast != null && ingredient.contains(toIItemStack(recipe.cast))) { + recipes.add(recipe); } - break; - - case Material: - if (r.castingMetal != null && r.castingMetal.isFluidEqual(fluid)) { - recipes.add(r); - } - - break; - case Output: - if (r.output != null && areEqual(r.output, stack)) { - recipes.add(r); + if (recipe.output != null && ingredient.contains(toIItemStack(recipe.output))) { + recipes.add(recipe); + } + break; + case Material: + if (recipe.castingMetal != null && ingredient.contains(toILiquidStack(recipe.castingMetal))) { + // TODO: Currently broken, because MCLiquidStack equals() method always returns false + recipes.add(recipe); } - break; } } - super.apply(); } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(list, recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Casting.name, ingredient.toString())); + } + } + + // Removes all matching recipes, apply is never the same for anything, so will always need to override it + private static class Remove extends BaseListRemoval { + public Remove(List list, List recipes) { + super(Casting.name, list, recipes); + } @Override - public String getRecipeInfo() { - if(component == RecipeComponent.Material) - return fluid.getLocalizedName(); - else - return stack.getDisplayName(); + protected String getRecipeInfo(CastingRecipe recipe) { + return InputHelper.getStackDescription(recipe.output); } } diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java index 4969659..d1ce446 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java @@ -1,16 +1,19 @@ package modtweaker2.mods.tconstruct.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; -import java.util.ArrayList; +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.mods.tconstruct.TConstructHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import tconstruct.library.crafting.DryingRackRecipes; @@ -18,21 +21,26 @@ import tconstruct.library.crafting.DryingRackRecipes.DryingRecipe; @ZenClass("mods.tconstruct.Drying") public class Drying { - //Adding a TConstruct Drying Rack recipe + + protected static final String name = "TConstruct Drying Rack"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(IItemStack input, IItemStack output, int time) { MineTweakerAPI.apply(new Add(TConstructHelper.getDryingRecipe(toStack(input), time, toStack(output)))); } //Passes the list to the base list implementation, and adds the recipe - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(DryingRecipe recipe) { - super("TConstruct Drying Rack", DryingRackRecipes.recipes, recipe); + super(Drying.name, DryingRackRecipes.recipes); + this.recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((DryingRecipe) recipe).result.getDisplayName(); + protected String getRecipeInfo(DryingRecipe recipe) { + return InputHelper.getStackDescription(recipe.result); } } @@ -40,30 +48,31 @@ public class Drying { //Removing a TConstruct Drying Rack recipe @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove((toStack(output)))); + public static void removeRecipe(IIngredient ingredient) { + List recipes = new LinkedList(); + + for (DryingRecipe recipe : DryingRackRecipes.recipes) { + if (recipe != null && recipe.result != null && ingredient.matches(toIItemStack(recipe.result))) { + recipes.add(recipe); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Drying.name, ingredient.toString())); + } } //Removes a recipe, apply is never the same for anything, so will always need to override it - private static class Remove extends BaseListRemoval { - public Remove(ItemStack output) { - super("TConstruct Drying Rack", DryingRackRecipes.recipes, output); - } - - //Loops through the registry, to find the item that matches, saves that recipe then removes it - @Override - public void apply() { - for (DryingRecipe r : (ArrayList) list) { - if (r.result != null && areEqual(r.result, stack)) { - recipes.add(r); - } - } - super.apply(); + private static class Remove extends BaseListRemoval { + public Remove(List list) { + super(Drying.name, DryingRackRecipes.recipes, list); } @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + protected String getRecipeInfo(DryingRecipe recipe) { + return InputHelper.getStackDescription(recipe.result); } } } diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Modifiers.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Modifiers.java index b791e4a..e7453c4 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Modifiers.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Modifiers.java @@ -1,8 +1,10 @@ package modtweaker2.mods.tconstruct.handlers; +import java.util.LinkedList; import java.util.List; import minetweaker.MineTweakerAPI; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.tconstruct.TConstructHelper; import modtweaker2.utils.BaseListRemoval; import stanhebben.zenscript.annotations.ZenClass; @@ -11,28 +13,37 @@ import tconstruct.library.modifier.ItemModifier; @ZenClass("mods.tconstruct.Modifiers") public class Modifiers { + + protected static final String name = "TConstruct Modifier"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void remove(String mod) { - MineTweakerAPI.apply(new Remove(mod)); + List recipes = new LinkedList(); + + for (ItemModifier recipe : TConstructHelper.modifiers) { + if (recipe.key.equals(mod)) { + recipes.add(recipe); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Modifiers.name, mod)); + } } //Searches through the modifiers and removes the first valid entry - private static class Remove extends BaseListRemoval { - private final String check; - - public Remove(String check) { - super("Modifier", TConstructHelper.modifiers); - this.check = check; + private static class Remove extends BaseListRemoval{ + public Remove(List recipes) { + super(Modifiers.name, TConstructHelper.modifiers, recipes); } @Override - public void apply() { - for (ItemModifier m : (List) list) { - if (m.key.equals(check)) { - recipes. add(m); - } - } - super.apply(); + protected String getRecipeInfo(ItemModifier recipe) { + return recipe.key; } } } diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java index 2f8efee..352d5a0 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java @@ -3,24 +3,34 @@ package modtweaker2.mods.tconstruct.handlers; import static modtweaker2.helpers.InputHelper.isABlock; import static modtweaker2.helpers.InputHelper.toFluid; import static modtweaker2.helpers.InputHelper.toFluids; +import static modtweaker2.helpers.InputHelper.toILiquidStack; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; import mantle.utils.ItemMetaWrapper; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; import minetweaker.api.minecraft.MineTweakerMC; import minetweaker.api.oredict.IOreDictEntry; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.tconstruct.TConstructHelper; -import modtweaker2.utils.BaseDescriptionAddition; -import modtweaker2.utils.BaseDescriptionRemoval; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; +import modtweaker2.utils.BaseMapAddition; +import modtweaker2.utils.BaseMapRemoval; +import modtweaker2.utils.BaseUndoable; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; import stanhebben.zenscript.annotations.Optional; @@ -30,6 +40,8 @@ import tconstruct.library.crafting.AlloyMix; @ZenClass("mods.tconstruct.Smeltery") public class Smeltery { + + public static final String nameFuel = "TConstruct Smeltery - Fuel"; /********************************************** TConstruct Alloy Recipes **********************************************/ @@ -40,14 +52,15 @@ public class Smeltery { } // Passes the list to the base list implementation, and adds the recipe - private static class AddAlloy extends BaseListAddition { + private static class AddAlloy extends BaseListAddition { public AddAlloy(AlloyMix recipe) { - super("Smeltery - Alloy", TConstructHelper.alloys, recipe); + super("TConstruct Smeltery - Alloy", TConstructHelper.alloys); + this.recipes.add(recipe); } @Override - public String getRecipeInfo() { - return ((AlloyMix) recipe).result.getFluid().getName(); + protected String getRecipeInfo(AlloyMix recipe) { + return InputHelper.getStackDescription(recipe.result); } } @@ -61,27 +74,21 @@ public class Smeltery { // Removes a recipe, apply is never the same for anything, so will always // need to override it - private static class RemoveAlloy extends BaseListRemoval { + private static class RemoveAlloy extends BaseListRemoval { public RemoveAlloy(FluidStack output) { - super("Smeltery - Alloy", TConstructHelper.alloys, output); + super("Smeltery - Alloy", TConstructHelper.alloys); + + for (AlloyMix r : TConstructHelper.alloys) { + if (r.result != null && output != null && r.result.getFluid() == output.getFluid()) { + recipes.add(r); + } + } } - // Loops through the registry, to find the item that matches, saves that - // recipe then removes it - @Override - public void apply() { - for (AlloyMix r : TConstructHelper.alloys) { - if (r.result != null && fluid != null && r.result.getFluid() == fluid.getFluid()) { - recipes.add(r); - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return fluid.getFluid().getName(); - } + @Override + protected String getRecipeInfo(AlloyMix recipe) { + return InputHelper.getStackDescription(recipe.result); + } } /********************************************** TConstruct Melting Recipes **********************************************/ @@ -106,7 +113,7 @@ public class Smeltery { } // Takes all the variables and saves them in place - private static class AddMelting extends BaseDescriptionAddition { + private static class AddMelting extends BaseUndoable { private final ItemStack input; private final Block block; private final int meta; @@ -136,14 +143,15 @@ public class Smeltery { TConstructHelper.temperatureList.remove(in); TConstructHelper.renderIndex.remove(in); } - + @Override public String getRecipeInfo() { return input.getDisplayName(); } + } - // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Removing a TConstruct Melting recipe @ZenMethod @@ -160,7 +168,7 @@ public class Smeltery { // Removes a recipe, apply is never the same for anything, so will always // need to override it - private static class RemoveMelting extends BaseDescriptionRemoval { + private static class RemoveMelting extends BaseUndoable { private final ItemStack input; private FluidStack fluid; private Integer temp; @@ -197,4 +205,58 @@ public class Smeltery { return input.getDisplayName(); } } + + /********************************************** TConstruct Fuel Recipes **********************************************/ + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void removFuel(IIngredient input) { + Map recipes = new HashMap(); + + for(Entry fuel : TConstructHelper.fuelList.entrySet()) { + if(fuel != null && fuel.getKey() != null && matches(input, toILiquidStack(new FluidStack(fuel.getKey(), 1)))) { + recipes.put(fuel.getKey(), fuel.getValue()); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveFuel(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe for %s found. Command ignored!", Smeltery.nameFuel, input.toString())); + } + } + + public static class RemoveFuel extends BaseMapRemoval { + public RemoveFuel(Map recipes) { + super(Smeltery.nameFuel, TConstructHelper.fuelList, recipes); + } + + @Override + public String getRecipeInfo(Entry recipe) { + return InputHelper.getStackDescription(new FluidStack(recipe.getKey(), 1)); + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void addFuel(ILiquidStack liquid, int power, int duration) { + Map recipes = new HashMap(); + + recipes.put(toFluid(liquid).getFluid(), new Integer[] {power, duration}); + + MineTweakerAPI.apply(new AddFuel(recipes)); + } + + public static class AddFuel extends BaseMapAddition { + public AddFuel(Map recipes) { + super(Smeltery.nameFuel, TConstructHelper.fuelList, recipes); + } + + @Override + public String getRecipeInfo(Entry recipe) { + return InputHelper.getStackDescription(new FluidStack(recipe.getKey(), 1)); + } + } } diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/TiCTweaks.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/TiCTweaks.java index 5b616da..4433099 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/TiCTweaks.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/TiCTweaks.java @@ -1,8 +1,15 @@ package modtweaker2.mods.tconstruct.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; + +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.mods.tconstruct.TConstructHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -63,51 +70,49 @@ public class TiCTweaks { } // Tweaks for setting repair materials - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(ItemKey recipe) { - super("Repair Material", PatternBuilder.instance.materials, recipe); + super("Repair Material", PatternBuilder.instance.materials); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - return new ItemStack(((ItemKey) recipe).item, 1, ((ItemKey) recipe).damage).getDisplayName(); + protected String getRecipeInfo(ItemKey recipe) { + return InputHelper.getStackDescription(new ItemStack(recipe.item, 1, recipe.damage)); } } - // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod - public static void removeRepairMaterial(IItemStack output, @Optional String material) { - MineTweakerAPI.apply(new Remove(toStack(output), material)); + public static void removeRepairMaterial(IIngredient output, @Optional String material) { + + List recipes = new LinkedList(); + + for (ItemKey recipe : PatternBuilder.instance.materials) { + IItemStack clone = toIItemStack(new ItemStack(recipe.item, 1, recipe.damage)); + if ((material != null && material.equalsIgnoreCase(recipe.key)) || (material == null)) { + if (output.matches(clone)) { + recipes.add(recipe); + } + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } } // Removes a recipe, apply is never the same for anything, so will always // need to override it - private static class Remove extends BaseListRemoval { - private final String material; - - public Remove(ItemStack stack, String material) { - super("Repair Material", PatternBuilder.instance.materials, stack); - this.material = material; - } - - // Loops through the registry, to find the item that matches, saves that - // recipe then removes it - @Override - public void apply() { - for (ItemKey r : PatternBuilder.instance.materials) { - ItemStack clone = new ItemStack(r.item, 1, r.damage); - if ((material != null && material.equalsIgnoreCase(r.key)) || (material == null)) { - if (clone.isItemEqual(stack)) { - recipes.add(r); - } - } - } - super.apply(); + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super("Repair Material", PatternBuilder.instance.materials, recipes); } @Override - public String getRecipeInfo() { - return stack.getDisplayName(); + protected String getRecipeInfo(ItemKey recipe) { + return InputHelper.getStackDescription(new ItemStack(recipe.item, 1, recipe.damage)); } } } diff --git a/src/main/java/modtweaker2/mods/tfcraft/handlers/Anvil.java b/src/main/java/modtweaker2/mods/tfcraft/handlers/Anvil.java index 824de8e..3d3468d 100644 --- a/src/main/java/modtweaker2/mods/tfcraft/handlers/Anvil.java +++ b/src/main/java/modtweaker2/mods/tfcraft/handlers/Anvil.java @@ -1,14 +1,18 @@ package modtweaker2.mods.tfcraft.handlers; -import static modtweaker2.helpers.StackHelper.areEqual; -import static modtweaker2.helpers.InputHelper.toStack; import static com.bioxx.tfc.api.Crafting.AnvilReq.getReqFromInt; +import static modtweaker2.helpers.InputHelper.toIItemStack; +import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; -import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; -import net.minecraft.item.ItemStack; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.tfcraft.TFCHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -21,10 +25,15 @@ import com.bioxx.tfc.api.Crafting.AnvilRecipe; @ZenClass("mods.tfcraft.Anvil") public class Anvil { + + public static final String nameRegular = "TFC Anvil-Regular"; + public static final String nameWeld = "TFC Anvil-Weld"; + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void add(IItemStack input1, IItemStack input2, String plan, int value, boolean flux, int req, IItemStack output){ - MineTweakerAPI.apply(new Add(new AnvilRecipe(toStack(input1), toStack(input2), plan, value, flux, req, toStack(output)))); + addRecipe(nameRegular, TFCHelper.anvilRecipes, new AnvilRecipe(toStack(input1), toStack(input2), plan, value, flux, req, toStack(output))); } /** @@ -33,60 +42,63 @@ public class Anvil { */ @ZenMethod public static void addWeld(IItemStack input1, IItemStack input2, int req, IItemStack output){ - MineTweakerAPI.apply(new AddWeld(new AnvilRecipe(toStack(input1), toStack(input2), true, getReqFromInt(req), toStack(output)))); + addRecipe(nameWeld, TFCHelper.anvilWeldRecipes, new AnvilRecipe(toStack(input1), toStack(input2), true, getReqFromInt(req), toStack(output))); } - @ZenMethod - public static void remove(IItemStack stack){ - MineTweakerAPI.apply(new Remove(toStack(stack))); - } - - @ZenMethod - public static void removeWeld(IItemStack stack){ - MineTweakerAPI.apply(new RemoveWeld(toStack(stack))); - } - - private static class Add extends BaseListAddition{ - public Add(AnvilRecipe recipe) { - super("Anvil-Regular", TFCHelper.anvilRecipes, recipe); - } - } - - private static class AddWeld extends BaseListAddition{ - public AddWeld(AnvilRecipe recipe) { - super("Anvil-Weld", TFCHelper.anvilWeldRecipes, recipe); - } - } - - private static class Remove extends BaseListRemoval{ - public Remove(ItemStack out){ - super("Anvil-Remove-Regular", TFCHelper.anvilRecipes, out); - } + public static void addRecipe(String name, List list, AnvilRecipe recipe) { + List recipes = new LinkedList(); + recipes.add(recipe); + MineTweakerAPI.apply(new Add(name, list, recipes)); + } - @Override - public void apply() { - for (AnvilRecipe recipe : AnvilManager.getInstance().getRecipeList()){ - if (recipe.getCraftingResult() != null && areEqual(recipe.getCraftingResult(), stack)){ - recipes.add(recipe); - } - } - super.apply(); + private static class Add extends BaseListAddition { + public Add(String name, List list, List recipes) { + super(name, list, recipes); } + + @Override + protected String getRecipeInfo(AnvilRecipe recipe) { + return InputHelper.getStackDescription(recipe.getCraftingResult()); + } } - private static class RemoveWeld extends BaseListRemoval{ - public RemoveWeld(ItemStack out){ - super("Anvil-Remove-Weld", TFCHelper.anvilWeldRecipes, out); + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void remove(IIngredient ingredient) { + removeRecipe(nameRegular, TFCHelper.anvilRecipes, ingredient); + } + + @ZenMethod + public static void removeWeld(IIngredient ingredient) { + removeRecipe(nameWeld, TFCHelper.anvilWeldRecipes, ingredient); + } + + + public static void removeRecipe(String name, List list, IIngredient ingredient) { + List recipes = new LinkedList(); + + for (AnvilRecipe recipe : AnvilManager.getInstance().getRecipeList()){ + if (recipe.getCraftingResult() != null && matches(ingredient, toIItemStack(recipe.getCraftingResult()))) { + recipes.add(recipe); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(name, list, recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipes found for %s. Command ignored.", name, ingredient.toString())); + } + } + + private static class Remove extends BaseListRemoval { + public Remove(String name, List list, List recipes){ + super(name, list, recipes); } @Override - public void apply() { - for (AnvilRecipe recipe : AnvilManager.getInstance().getRecipeList()){ - if (recipe.getCraftingResult() != null && recipe.getCraftingResult() == stack){ - recipes.add(recipe); - } - } - super.apply(); + protected String getRecipeInfo(AnvilRecipe recipe) { + return InputHelper.getStackDescription(recipe.getCraftingResult()); } } } diff --git a/src/main/java/modtweaker2/mods/tfcraft/handlers/Barrel.java b/src/main/java/modtweaker2/mods/tfcraft/handlers/Barrel.java index 33ae95a..e80a7f3 100644 --- a/src/main/java/modtweaker2/mods/tfcraft/handlers/Barrel.java +++ b/src/main/java/modtweaker2/mods/tfcraft/handlers/Barrel.java @@ -1,19 +1,23 @@ package modtweaker2.mods.tfcraft.handlers; import static modtweaker2.helpers.InputHelper.toFluid; +import static modtweaker2.helpers.InputHelper.toIItemStack; +import static modtweaker2.helpers.InputHelper.toILiquidStack; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +import static modtweaker2.helpers.StackHelper.matches; -import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.tfcraft.TFCHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @@ -23,6 +27,10 @@ import com.bioxx.tfc.api.Crafting.BarrelRecipe; @ZenClass("mods.tfcraft.Barrel") public class Barrel { + + public static final String name = "TFC Barrel"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** * @param outputFluid If you want this recipe consume fluid, outputFluid=inputFluid @@ -53,44 +61,63 @@ public class Barrel { MineTweakerAPI.apply(new AddRecipe(new BarrelLiquidToLiquidRecipe(toFluid(inputInBarrel), toFluid(input), toFluid(output)))); } - @ZenMethod - public static void remove(IItemStack output){ - MineTweakerAPI.apply(new RemoveRecipe(toStack(output))); - } - - @ZenMethod - public static void remove(ILiquidStack output){ - MineTweakerAPI.apply(new RemoveRecipe(toFluid(output))); - } - - private static class AddRecipe extends BaseListAddition{ + private static class AddRecipe extends BaseListAddition { public AddRecipe(BarrelRecipe recipe){ - super("Barrel", TFCHelper.barrelRecipes, recipe); - } - } - - private static class RemoveRecipe extends BaseListRemoval{ - public RemoveRecipe(ItemStack stack){ - super("Barrel-Remove", TFCHelper.barrelRecipes, stack); + super(Barrel.name, TFCHelper.barrelRecipes); + recipes.add(recipe); } - public RemoveRecipe(FluidStack fluid){ - super("Barrel-Remove", TFCHelper.barrelRecipes, fluid); - } - @Override - public void apply() { - for (BarrelRecipe recipe : BarrelManager.getInstance().getRecipes()){ - if (recipe.getRecipeOutIS() != null && areEqual(recipe.getRecipeOutIS(), stack)){ - recipes.add(recipe); - } - } - for (BarrelRecipe recipe : BarrelManager.getInstance().getRecipes()){ - if (recipe.getRecipeOutFluid() != null && recipe.getRecipeOutFluid().isFluidEqual(fluid)){ - recipes.add(recipe); - } - } - super.apply(); + protected String getRecipeInfo(BarrelRecipe recipe) { + if(recipe.getRecipeOutIS() != null) + return InputHelper.getStackDescription(recipe.getRecipeOutIS()); + else if(recipe.getRecipeOutFluid() != null) + return InputHelper.getStackDescription(recipe.getRecipeOutFluid()); + else + return "Unknown output"; } } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void remove(IIngredient output){ + List recipes = new LinkedList(); + + // Test for item outputs + for (BarrelRecipe recipe : BarrelManager.getInstance().getRecipes()){ + if (recipe.getRecipeOutIS() != null && matches(output, toIItemStack(recipe.getRecipeOutIS()))) { + recipes.add(recipe); + } + } + + // Test for liquid outputs + for (BarrelRecipe recipe : BarrelManager.getInstance().getRecipes()){ + if (recipe.getRecipeOutFluid() != null && matches(output, toILiquidStack(recipe.getRecipeOutFluid()))) { + recipes.add(recipe); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveRecipe(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Barrel.name, output.toString())); + } + } + + private static class RemoveRecipe extends BaseListRemoval { + public RemoveRecipe(List recipes){ + super(Barrel.name, TFCHelper.barrelRecipes, recipes); + } + + @Override + protected String getRecipeInfo(BarrelRecipe recipe) { + if(recipe.getRecipeOutIS() != null) + return InputHelper.getStackDescription(recipe.getRecipeOutIS()); + else if(recipe.getRecipeOutFluid() != null) + return InputHelper.getStackDescription(recipe.getRecipeOutFluid()); + else + return "Unknown output"; + } + } } diff --git a/src/main/java/modtweaker2/mods/tfcraft/handlers/Kiln.java b/src/main/java/modtweaker2/mods/tfcraft/handlers/Kiln.java index 4ec58fa..c757bff 100644 --- a/src/main/java/modtweaker2/mods/tfcraft/handlers/Kiln.java +++ b/src/main/java/modtweaker2/mods/tfcraft/handlers/Kiln.java @@ -1,16 +1,19 @@ package modtweaker2.mods.tfcraft.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +import static modtweaker2.helpers.StackHelper.matches; -import java.util.ArrayList; +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.mods.tfcraft.TFCHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @@ -19,6 +22,8 @@ import com.bioxx.tfc.api.Crafting.KilnRecipe; @ZenClass("mods.tfcraft.Kiln") public class Kiln { + + public static final String name = "TFC Kiln"; /** Deprecated, since pottery kiln will check x instanceof ItemPotteryBase *

If you have a such item, you might consider to use it @@ -29,31 +34,40 @@ public class Kiln { MineTweakerAPI.apply(new AddRecipe(new KilnRecipe(toStack(input), lv, toStack(output)))); } - @ZenMethod - public static void remove(IItemStack stack){ - MineTweakerAPI.apply(new RemoveRecipe(toStack(stack))); - } - - private static class AddRecipe extends BaseListAddition{ + private static class AddRecipe extends BaseListAddition { public AddRecipe(KilnRecipe recipe) { - super("Kiln", TFCHelper.kilnRecipes, recipe); + super(Kiln.name, TFCHelper.kilnRecipes); + recipes.add(recipe); + } + + @Override + protected String getRecipeInfo(KilnRecipe recipe) { + return InputHelper.getStackDescription(recipe.getCraftingResult()); } } - - private static class RemoveRecipe extends BaseListRemoval{ - public RemoveRecipe(ItemStack out){ - super("Kiln-Remove", TFCHelper.kilnRecipes, out); - } - @Override - public void apply() { - for (KilnRecipe recipe : KilnCraftingManager.getInstance().getRecipeList()){ - if (recipe.getCraftingResult() != null && areEqual(recipe.getCraftingResult(), stack)){ - recipes.add(recipe); - } - } - super.apply(); + @ZenMethod + public static void remove(IIngredient output){ + List recipes = new LinkedList(); + + for (KilnRecipe recipe : KilnCraftingManager.getInstance().getRecipeList()){ + if (recipe.getCraftingResult() != null && matches(output, toIItemStack(recipe.getCraftingResult()))) { + recipes.add(recipe); + } + } + + MineTweakerAPI.apply(new RemoveRecipe(recipes)); + } + + private static class RemoveRecipe extends BaseListRemoval { + public RemoveRecipe(List recipes) { + super(Kiln.name, TFCHelper.kilnRecipes, recipes); } + + @Override + protected String getRecipeInfo(KilnRecipe recipe) { + return InputHelper.getStackDescription(recipe.getCraftingResult()); + } } } diff --git a/src/main/java/modtweaker2/mods/tfcraft/handlers/Quern.java b/src/main/java/modtweaker2/mods/tfcraft/handlers/Quern.java index f5271d4..d2fc647 100644 --- a/src/main/java/modtweaker2/mods/tfcraft/handlers/Quern.java +++ b/src/main/java/modtweaker2/mods/tfcraft/handlers/Quern.java @@ -1,13 +1,16 @@ package modtweaker2.mods.tfcraft.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +import static modtweaker2.helpers.StackHelper.matches; -import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; -import net.minecraft.item.ItemStack; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; +import modtweaker2.helpers.InputHelper; import modtweaker2.mods.tfcraft.TFCHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -19,39 +22,70 @@ import com.bioxx.tfc.api.Crafting.QuernRecipe; @ZenClass("mods.tfcraft.Quern") public class Quern { + + public static final String name = "TFC Quern"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod public static void add(IItemStack input, IItemStack output) { MineTweakerAPI.apply(new AddRecipe(new QuernRecipe(toStack(input), toStack(output)))); } - @ZenMethod - public static void remove(IItemStack input){ - MineTweakerAPI.apply(new RemoveRecipe(toStack(input))); - } - - private static class AddRecipe extends BaseListAddition{ + private static class AddRecipe extends BaseListAddition { public AddRecipe(QuernRecipe recipe) { - super("Quern", TFCHelper.quernRecipes, recipe); - TFCHelper.quernVaildItems.add(recipe.getInItem()); + super(Quern.name, TFCHelper.quernRecipes); + recipes.add(recipe); + } + + @Override + public void apply() { + super.apply(); + + for (QuernRecipe recipe : successful){ + TFCHelper.quernVaildItems.add(recipe.getInItem()); + } + } + + @Override + public void undo() { + for (QuernRecipe recipe : successful){ + TFCHelper.quernVaildItems.remove(recipe.getInItem()); + } + + super.undo(); + } + + @Override + protected String getRecipeInfo(QuernRecipe recipe) { + return InputHelper.getStackDescription(recipe.getResult()); } } - private static class RemoveRecipe extends BaseListRemoval{ - public RemoveRecipe(ItemStack stack) { - super("Quern-Remove", TFCHelper.quernRecipes, stack); + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void remove(IIngredient output) { + List recipes = new LinkedList(); + + for (QuernRecipe recipe : QuernManager.getInstance().getRecipes()) { + if (recipe != null && recipe.getResult() != null && matches(output, toIItemStack(recipe.getResult()))){ + recipes.add(recipe); + } + } + + MineTweakerAPI.apply(new RemoveRecipe(recipes)); + } + + private static class RemoveRecipe extends BaseListRemoval { + public RemoveRecipe(List recipes) { + super(Quern.name, TFCHelper.quernRecipes, recipes); } @Override public void apply() { - for (QuernRecipe recipe : QuernManager.getInstance().getRecipes()){ - if (recipe.getResult() !=null && areEqual(recipe.getResult(), stack)){ - recipes.add(recipe); - } - } - - for (Object aRecipe : recipes){ - TFCHelper.quernVaildItems.remove(((QuernRecipe)aRecipe).getInItem()); + for (QuernRecipe recipe : recipes) { + TFCHelper.quernVaildItems.remove(recipe.getInItem()); } super.apply(); @@ -59,11 +93,16 @@ public class Quern { @Override public void undo() { - for (Object aRecipe : recipes){ - TFCHelper.quernVaildItems.add(((QuernRecipe)aRecipe).getInItem()); - } - super.undo(); + + for (QuernRecipe recipe : successful){ + TFCHelper.quernVaildItems.add(recipe.getInItem()); + } + } + + @Override + protected String getRecipeInfo(QuernRecipe recipe) { + return InputHelper.getStackDescription(recipe.getResult()); } } diff --git a/src/main/java/modtweaker2/mods/thaumcraft/Thaumcraft.java b/src/main/java/modtweaker2/mods/thaumcraft/Thaumcraft.java index 4d9954f..2e183fa 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/Thaumcraft.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/Thaumcraft.java @@ -5,9 +5,9 @@ import modtweaker2.mods.thaumcraft.handlers.Arcane; import modtweaker2.mods.thaumcraft.handlers.Aspects; import modtweaker2.mods.thaumcraft.handlers.Crucible; import modtweaker2.mods.thaumcraft.handlers.Infusion; +import modtweaker2.mods.thaumcraft.handlers.Loot; import modtweaker2.mods.thaumcraft.handlers.Research; import modtweaker2.mods.thaumcraft.handlers.Warp; -import modtweaker2.mods.thaumcraft.handlers.Loot; public class Thaumcraft { public Thaumcraft() { diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Arcane.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Arcane.java index cd14b3b..31173d7 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Arcane.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Arcane.java @@ -1,18 +1,22 @@ package modtweaker2.mods.thaumcraft.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toObjects; import static modtweaker2.helpers.InputHelper.toShapedObjects; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; -import java.util.ArrayList; +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.mods.thaumcraft.ThaumcraftHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import modtweaker2.utils.TweakerPlugin; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @@ -23,61 +27,74 @@ import thaumcraft.api.crafting.ShapelessArcaneRecipe; @ZenClass("mods.thaumcraft.Arcane") public class Arcane { + + public static final String name = "Thaumcraft Arcane Worktable"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addShaped(String key, IItemStack output, String aspects, IIngredient[][] ingredients) { - - MineTweakerAPI.apply(new Add(new ShapedArcaneRecipe(key, toStack(output), ThaumcraftHelper.parseAspects(aspects), toShapedObjects(ingredients)))); + MineTweakerAPI.apply(new Add(new ShapedArcaneRecipe(key, toStack(output), ThaumcraftHelper.parseAspects(aspects), toShapedObjects(ingredients)))); } @ZenMethod public static void addShapeless(String key, IItemStack output, String aspects, IIngredient[] ingredients) { - - MineTweakerAPI.apply(new Add(new ShapelessArcaneRecipe(key, toStack(output), ThaumcraftHelper.parseAspects(aspects), toObjects(ingredients)))); + MineTweakerAPI.apply(new Add(new ShapelessArcaneRecipe(key, toStack(output), ThaumcraftHelper.parseAspects(aspects), toObjects(ingredients)))); } - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(IArcaneRecipe recipe) { - super("Thaumcraft Arcane Worktable", ThaumcraftApi.getCraftingRecipes(), recipe); + super(Arcane.name, ThaumcraftApi.getCraftingRecipes()); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - Object out = ((IArcaneRecipe) recipe).getRecipeOutput(); - if (out instanceof ItemStack) { - return ((ItemStack) out).getDisplayName(); - } else - return super.getRecipeInfo(); + protected String getRecipeInfo(IArcaneRecipe recipe) { + ItemStack stack = recipe.getRecipeOutput(); + + if(stack instanceof ItemStack) + return InputHelper.getStackDescription(stack); + else + return "Unknown output"; } } - // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(toStack(output))); + public static void removeRecipe(IIngredient output) { + List recipes = new LinkedList(); + + for(Object o : ThaumcraftApi.getCraftingRecipes()) { + if(o != null && o instanceof IArcaneRecipe) { + IArcaneRecipe recipe = (IArcaneRecipe)o; + + if(recipe.getRecipeOutput() != null && matches(output, toIItemStack(recipe.getRecipeOutput()))) { + recipes.add(recipe); + } + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command Ignored", Arcane.name, output.toString())); + } } - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Thaumcraft Arcane Worktable", ThaumcraftApi.getCraftingRecipes(), stack); + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(Arcane.name, ThaumcraftApi.getCraftingRecipes(), recipes); } - @Override - public void apply() { - for (Object o : ThaumcraftApi.getCraftingRecipes()) { - if (o != null && o instanceof IArcaneRecipe) { - IArcaneRecipe r = (IArcaneRecipe) o; - if (r.getRecipeOutput() != null && r.getRecipeOutput().isItemEqual(stack)) { - recipes.add(r); - } - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return stack.getDisplayName(); - } + @Override + protected String getRecipeInfo(IArcaneRecipe recipe) { + ItemStack stack = recipe.getRecipeOutput(); + + if(stack instanceof ItemStack) + return InputHelper.getStackDescription(stack); + else + return "Unknown output"; + } } } diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Aspects.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Aspects.java index 0d4d680..ad11a57 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Aspects.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Aspects.java @@ -7,9 +7,7 @@ import java.util.Arrays; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; import modtweaker2.mods.thaumcraft.ThaumcraftHelper; -import modtweaker2.utils.BaseDescriptionAddition; -import modtweaker2.utils.BaseDescriptionRemoval; -import modtweaker2.utils.TweakerPlugin; +import modtweaker2.utils.BaseUndoable; import net.minecraft.entity.EntityList; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; @@ -34,7 +32,7 @@ public class Aspects { } // Adds or sets Aspects - private static class Add extends BaseDescriptionAddition { + private static class Add extends BaseUndoable { private final ItemStack stack; private final String aspects; private final boolean replace; @@ -55,7 +53,10 @@ public class Aspects { newList = ThaumcraftHelper.parseAspects(oldList, aspects); else newList = ThaumcraftHelper.parseAspects(aspects); + ThaumcraftApi.objectTags.put(Arrays.asList(stack.getItem(), stack.getItemDamage()), newList); + + success = true; } @Override @@ -80,7 +81,7 @@ public class Aspects { MineTweakerAPI.apply(new Remove(toStack(stack), aspects)); } - private static class Remove extends BaseDescriptionRemoval { + private static class Remove extends BaseUndoable { private final ItemStack stack; private final String aspects; private AspectList oldList; @@ -99,6 +100,8 @@ public class Aspects { newList = ThaumcraftHelper.removeAspects(oldList, aspects); ThaumcraftApi.objectTags.put(Arrays.asList(stack.getItem(), stack.getItemDamage()), newList); } + + success = true; } @Override @@ -139,7 +142,7 @@ public class Aspects { } // Adds or sets Aspects - private static class AddEntity extends BaseDescriptionAddition { + private static class AddEntity extends BaseUndoable { private final String entityName; private final String aspects; private final boolean replace; @@ -162,6 +165,8 @@ public class Aspects { newList = ThaumcraftHelper.parseAspects(aspects); ThaumcraftHelper.removeEntityAspects(entityName); ThaumcraftApi.registerEntityTag(entityName, newList); + + success = true; } @Override @@ -189,7 +194,7 @@ public class Aspects { MineTweakerAPI.apply(new RemoveEntity(entityName, aspects)); } - private static class RemoveEntity extends BaseDescriptionRemoval { + private static class RemoveEntity extends BaseUndoable { private final String entityName; private final String aspects; private AspectList oldList; @@ -209,6 +214,8 @@ public class Aspects { ThaumcraftHelper.removeEntityAspects(entityName); ThaumcraftApi.registerEntityTag(entityName, newList); } + + success = true; } @Override diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Crucible.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Crucible.java index 29b0dd6..7a81bb8 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Crucible.java @@ -1,16 +1,21 @@ package modtweaker2.mods.thaumcraft.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toObject; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +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.mods.thaumcraft.ThaumcraftHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import modtweaker2.utils.TweakerPlugin; -import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import thaumcraft.api.ThaumcraftApi; @@ -18,52 +23,56 @@ import thaumcraft.api.crafting.CrucibleRecipe; @ZenClass("mods.thaumcraft.Crucible") public class Crucible { + + public static final String name = "Thaumcraft Crucible"; + @ZenMethod public static void addRecipe(String key, IItemStack result, IIngredient catalyst, String aspects) { - - MineTweakerAPI.apply(new Add(new CrucibleRecipe(key, toStack(result), toObject(catalyst), ThaumcraftHelper.parseAspects(aspects)))); + MineTweakerAPI.apply(new Add(new CrucibleRecipe(key, toStack(result), toObject(catalyst), ThaumcraftHelper.parseAspects(aspects)))); } - - private static class Add extends BaseListAddition { + + private static class Add extends BaseListAddition { public Add(CrucibleRecipe recipe) { - super("Thaumcraft Crucible", ThaumcraftApi.getCraftingRecipes(), recipe); + super(Crucible.name, ThaumcraftApi.getCraftingRecipes()); + recipes.add(recipe); } - + @Override - public String getRecipeInfo() { - return ((CrucibleRecipe) recipe).getRecipeOutput().getDisplayName(); + protected String getRecipeInfo(CrucibleRecipe recipe) { + return InputHelper.getStackDescription(recipe.getRecipeOutput()); } } // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack output) { - - MineTweakerAPI.apply(new Remove(toStack(output))); + public static void removeRecipe(IIngredient output) { + List recipes = new LinkedList(); + + for (Object o : ThaumcraftApi.getCraftingRecipes()) { + if (o instanceof CrucibleRecipe) { + CrucibleRecipe r = (CrucibleRecipe) o; + if (r.getRecipeOutput() != null && matches(output, toIItemStack(r.getRecipeOutput()))) { + recipes.add(r); + } + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Crucible.name, output.toString())); + } } - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Thaumcraft Crucible", ThaumcraftApi.getCraftingRecipes(), stack); + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(Crucible.name, ThaumcraftApi.getCraftingRecipes(), recipes); } - @Override - public void apply() { - for (Object o : ThaumcraftApi.getCraftingRecipes()) { - if (o instanceof CrucibleRecipe) { - CrucibleRecipe r = (CrucibleRecipe) o; - if (r.getRecipeOutput() != null && areEqual(r.getRecipeOutput(), stack)) { - recipes.add(r); - } - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return stack.getDisplayName(); - } + @Override + protected String getRecipeInfo(CrucibleRecipe recipe) { + return InputHelper.getStackDescription(recipe.getRecipeOutput()); + } } } diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Infusion.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Infusion.java index 9515cd0..73b79ca 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Infusion.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Infusion.java @@ -1,16 +1,22 @@ package modtweaker2.mods.thaumcraft.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.InputHelper.toStacks; -import static modtweaker2.helpers.StackHelper.areEqual; -import minetweaker.IUndoableAction; +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.mods.thaumcraft.ThaumcraftHelper; import modtweaker2.mods.thaumcraft.recipe.MTInfusionRecipe; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; -import modtweaker2.utils.TweakerPlugin; import net.minecraft.enchantment.Enchantment; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; @@ -21,6 +27,10 @@ import thaumcraft.api.crafting.InfusionRecipe; @ZenClass("mods.thaumcraft.Infusion") public class Infusion { + + public static final String name = "Thaumcraft Infusion"; + public static final String enchName = name + " Enchantment"; + @ZenMethod public static void addRecipe(String key, IItemStack input, IItemStack[] recipe, String aspects, IItemStack result, int instability) { @@ -31,131 +41,112 @@ public class Infusion { // fuzzy or not @ZenMethod public static void addRecipe(String key, IItemStack input, IItemStack[] recipe, String aspects, IItemStack result, int instability, boolean fuzzyCentre, boolean[] fuzzyRecipe) { - - MineTweakerAPI.apply(new Add(new MTInfusionRecipe(key, toStack(result), instability, ThaumcraftHelper.parseAspects(aspects), toStack(input), toStacks(recipe), fuzzyCentre, fuzzyRecipe))); + MineTweakerAPI.apply(new Add(new MTInfusionRecipe(key, toStack(result), instability, ThaumcraftHelper.parseAspects(aspects), toStack(input), toStacks(recipe), fuzzyCentre, fuzzyRecipe))); } @ZenMethod public static void addEnchantment(String key, int enchantID, int instability, String aspects, IItemStack[] recipe) { - - MineTweakerAPI.apply(new AddEnchant(new InfusionEnchantmentRecipe(key, Enchantment.enchantmentsList[enchantID], instability, ThaumcraftHelper.parseAspects(aspects), toStacks(recipe)))); + MineTweakerAPI.apply(new AddEnchant(new InfusionEnchantmentRecipe(key, Enchantment.enchantmentsList[enchantID], instability, ThaumcraftHelper.parseAspects(aspects), toStacks(recipe)))); } - private static class Add extends BaseListAddition { + private static class Add extends BaseListAddition { public Add(InfusionRecipe recipe) { - super("Thaumcraft Infusion", ThaumcraftApi.getCraftingRecipes(), recipe); + super(Infusion.name, ThaumcraftApi.getCraftingRecipes()); + recipes.add(recipe); } @Override - public String getRecipeInfo() { - Object out = ((InfusionRecipe) recipe).getRecipeOutput(); - if (out instanceof ItemStack) { - return ((ItemStack) out).getDisplayName(); - } else - return super.getRecipeInfo(); + protected String getRecipeInfo(InfusionRecipe recipe) { + Object out = ((InfusionRecipe) recipe).getRecipeOutput(); + if (out instanceof ItemStack) { + return ((ItemStack) out).getDisplayName(); + } else + return "Unknown item"; } } - private static class AddEnchant implements IUndoableAction { - InfusionEnchantmentRecipe recipe; - + private static class AddEnchant extends BaseListAddition { public AddEnchant(InfusionEnchantmentRecipe inp) { - recipe = inp; - } - - @Override - public void apply() { - ThaumcraftApi.getCraftingRecipes().add(recipe); - } - - @Override - public String describe() { - return "Adding Infusion Enchantment Recipe: " + recipe.enchantment.getName(); - } - - @Override - public boolean canUndo() { - return recipe != null; - } - - @Override - public void undo() { - ThaumcraftApi.getCraftingRecipes().remove(recipe); - } - - @Override - public String describeUndo() { - return "Removing Infusion Enchantment Recipe: " + recipe.enchantment.getName(); - } - - @Override - public String getOverrideKey() { - return null; + super(Infusion.enchName, ThaumcraftApi.getCraftingRecipes()); + recipes.add(inp); } + + @Override + protected String getRecipeInfo(InfusionEnchantmentRecipe recipe) { + return recipe.getEnchantment().getName(); + } } // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack output) { - - MineTweakerAPI.apply(new Remove(toStack(output))); + public static void removeRecipe(IIngredient output) { + List recipes = new LinkedList(); + + for (Object o : ThaumcraftApi.getCraftingRecipes()) { + if (o instanceof InfusionRecipe) { + InfusionRecipe r = (InfusionRecipe) o; + if (r.getRecipeOutput() != null && r.getRecipeOutput() instanceof ItemStack && matches(output, toIItemStack((ItemStack)r.getRecipeOutput()))) { + recipes.add(r); + } + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Infusion.name, output.toString())); + } } @ZenMethod public static void removeEnchant(int id) { - - MineTweakerAPI.apply(new RemoveEnchant(Enchantment.enchantmentsList[id])); - } - - private static class Remove extends BaseListRemoval { - public Remove(ItemStack stack) { - super("Thaumcraft Infusion", ThaumcraftApi.getCraftingRecipes(), stack); - } - - @Override - public void apply() { - for (Object o : ThaumcraftApi.getCraftingRecipes()) { - if (o instanceof InfusionRecipe) { - InfusionRecipe r = (InfusionRecipe) o; - if (r.getRecipeOutput() != null && r.getRecipeOutput() instanceof ItemStack && areEqual((ItemStack) r.getRecipeOutput(), stack)) { - recipes.add(r); - } - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return stack.getDisplayName(); - } - } - - private static class RemoveEnchant extends BaseListRemoval { - Enchantment enchant; - - public RemoveEnchant(Enchantment ench) { - super("Thaumcraft Infusion Enchantment", ThaumcraftApi.getCraftingRecipes()); - enchant = ench; - } - - @Override - public void apply() { - for (Object recipe : list) { - if (recipe instanceof InfusionEnchantmentRecipe) { - InfusionEnchantmentRecipe enchRecipe = (InfusionEnchantmentRecipe) recipe; - if (enchRecipe.getEnchantment() == enchant) { - recipes.add(enchRecipe); - } - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return enchant.getName(); + List recipes = new LinkedList(); + Enchantment ench = Enchantment.enchantmentsList[id]; + + for (Object recipe : ThaumcraftApi.getCraftingRecipes()) { + if (recipe instanceof InfusionEnchantmentRecipe) { + InfusionEnchantmentRecipe enchRecipe = (InfusionEnchantmentRecipe) recipe; + if (enchRecipe.getEnchantment() == ench) { + recipes.add(enchRecipe); + } + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveEnchant(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Infusion.enchName + " Enchantment", ench.getName())); } } + + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(Infusion.name, ThaumcraftApi.getCraftingRecipes(), recipes); + } + + @Override + protected String getRecipeInfo(InfusionRecipe recipe) { + + Object o = recipe.getRecipeOutput(); + + if(o instanceof ItemStack) { + return InputHelper.getStackDescription((ItemStack)o); + } else { + return "Unknown Item"; + } + } + } + + private static class RemoveEnchant extends BaseListRemoval { + public RemoveEnchant(List recipes) { + super(Infusion.enchName, ThaumcraftApi.getCraftingRecipes(), recipes); + } + + @Override + protected String getRecipeInfo(InfusionEnchantmentRecipe recipe) { + return recipe.getEnchantment().getName(); + } + } } + diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java index 5af1a2c..297f60a 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java @@ -1,20 +1,28 @@ package modtweaker2.mods.thaumcraft.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; +import static modtweaker2.helpers.StackHelper.matches; + +import java.util.LinkedList; import java.util.List; -import net.minecraft.item.ItemStack; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; -import thaumcraft.api.ThaumcraftApi; import thaumcraft.api.internal.WeightedRandomLoot; @ZenClass("mods.thaumcraft.Loot") public class Loot { + + public static final String name = "Thaumcraft LootBag"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod public static void addCommonLoot(IItemStack stack, int weight) { @@ -31,40 +39,59 @@ public class Loot { MineTweakerAPI.apply(new Add(WeightedRandomLoot.lootBagRare, new WeightedRandomLoot(InputHelper.toStack(stack), weight))); } - public static class Add extends BaseListAddition { - public Add(List list, WeightedRandomLoot recipe) { - super(list, recipe); + public static class Add extends BaseListAddition { + public Add(List list, WeightedRandomLoot recipe) { + super(Loot.name, list); + recipes.add(recipe); } + + @Override + protected String getRecipeInfo(WeightedRandomLoot recipe) { + return InputHelper.getStackDescription(recipe.item); + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void removeCommonLoot(IIngredient stack) { + removeLoot(WeightedRandomLoot.lootBagCommon, stack); } @ZenMethod - public static void removeCommonLoot(IItemStack stack) { - MineTweakerAPI.apply(new Remove(WeightedRandomLoot.lootBagCommon, InputHelper.toStack(stack))); + public static void removeUncommonLoot(IIngredient stack) { + removeLoot(WeightedRandomLoot.lootBagUncommon, stack); } @ZenMethod - public static void removeUncommonLoot(IItemStack stack) { - MineTweakerAPI.apply(new Remove(WeightedRandomLoot.lootBagUncommon, InputHelper.toStack(stack))); + public static void removeRareLoot(IIngredient stack) { + removeLoot(WeightedRandomLoot.lootBagRare, stack); + } + + public static void removeLoot(List list, IIngredient ingredient) { + List recipes = new LinkedList(); + + for (WeightedRandomLoot loot : list) { + if (matches(ingredient, toIItemStack(loot.item))) { + recipes.add(loot); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(list, recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored.", Loot.name, ingredient.toString())); + } } - @ZenMethod - public static void removeRareLoot(IItemStack stack) { - MineTweakerAPI.apply(new Remove(WeightedRandomLoot.lootBagRare, InputHelper.toStack(stack))); - } - - public static class Remove extends BaseListRemoval { - public Remove(List list, ItemStack stack) { - super(list, stack); + public static class Remove extends BaseListRemoval { + public Remove(List list, List recipes) { + super(Loot.name, list, recipes); } - + @Override - public void apply() { - for (WeightedRandomLoot stack : (List) list) { - if (stack.item.isItemEqual(this.stack)) { - recipes.add(stack); - } - } - super.apply(); + protected String getRecipeInfo(WeightedRandomLoot recipe) { + return InputHelper.getStackDescription(recipe.item); } } } diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Research.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Research.java index 5fc8ca7..e4447c0 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Research.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Research.java @@ -21,7 +21,6 @@ import modtweaker2.mods.thaumcraft.research.RemoveResearch; import modtweaker2.mods.thaumcraft.research.RemoveTab; import modtweaker2.mods.thaumcraft.research.SetAspects; import modtweaker2.mods.thaumcraft.research.SetResearch; -import modtweaker2.utils.TweakerPlugin; import net.minecraft.enchantment.Enchantment; import net.minecraft.util.ResourceLocation; import stanhebben.zenscript.annotations.Optional; diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Warp.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Warp.java index 300cab0..fb82247 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Warp.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Warp.java @@ -10,7 +10,6 @@ import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; import modtweaker2.mods.thaumcraft.ThaumcraftHelper; -import modtweaker2.utils.TweakerPlugin; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/modtweaker2/mods/thaumcraft/research/AddPage.java b/src/main/java/modtweaker2/mods/thaumcraft/research/AddPage.java index 88c83ee..b8d6867 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/research/AddPage.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/research/AddPage.java @@ -1,5 +1,6 @@ package modtweaker2.mods.thaumcraft.research; +import static modtweaker2.helpers.StackHelper.areEqual; import minetweaker.IUndoableAction; import modtweaker2.mods.thaumcraft.ThaumcraftHelper; import net.minecraft.enchantment.Enchantment; @@ -14,8 +15,6 @@ import thaumcraft.api.crafting.InfusionRecipe; import thaumcraft.api.research.ResearchCategories; import thaumcraft.api.research.ResearchPage; import thaumcraft.api.research.ResearchPage.PageType; -import static modtweaker2.helpers.InputHelper.*; -import static modtweaker2.helpers.StackHelper.*; public class AddPage implements IUndoableAction { String key; diff --git a/src/main/java/modtweaker2/mods/thaumcraft/research/RefreshResearch.java b/src/main/java/modtweaker2/mods/thaumcraft/research/RefreshResearch.java index c430b21..251cad5 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/research/RefreshResearch.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/research/RefreshResearch.java @@ -1,5 +1,6 @@ package modtweaker2.mods.thaumcraft.research; +import static modtweaker2.helpers.StackHelper.areEqual; import minetweaker.IUndoableAction; import modtweaker2.mods.thaumcraft.ThaumcraftHelper; import net.minecraft.item.ItemStack; @@ -12,8 +13,6 @@ import thaumcraft.api.crafting.InfusionRecipe; import thaumcraft.api.research.ResearchCategories; import thaumcraft.api.research.ResearchItem; import thaumcraft.api.research.ResearchPage; -import static modtweaker2.helpers.InputHelper.*; -import static modtweaker2.helpers.StackHelper.*; public class RefreshResearch implements IUndoableAction { String research; diff --git a/src/main/java/modtweaker2/mods/thaumcraft/research/commands/ResearchLogger.java b/src/main/java/modtweaker2/mods/thaumcraft/research/commands/ResearchLogger.java index 6763068..d19b52c 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/research/commands/ResearchLogger.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/research/commands/ResearchLogger.java @@ -1,11 +1,11 @@ package modtweaker2.mods.thaumcraft.research.commands; +import static modtweaker2.helpers.LogHelper.log; +import static modtweaker2.helpers.LogHelper.logPrinted; import minetweaker.MineTweakerAPI; import minetweaker.api.player.IPlayer; import minetweaker.api.server.ICommandFunction; import thaumcraft.api.research.ResearchCategories; -import static modtweaker2.helpers.InputHelper.*; -import static modtweaker2.helpers.LogHelper.*; public class ResearchLogger implements ICommandFunction { @Override diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java index 025f699..d61ac75 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java @@ -7,7 +7,6 @@ import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.utils.TweakerPlugin; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import stanhebben.zenscript.annotations.ZenClass; @@ -19,8 +18,7 @@ import cofh.thermalexpansion.util.crafting.CrucibleManager.RecipeCrucible; public class Crucible { @ZenMethod public static void addRecipe(int energy, IItemStack input, ILiquidStack output) { - - MineTweakerAPI.apply(new Add(energy, toStack(input), toFluid(output))); + MineTweakerAPI.apply(new Add(energy, toStack(input), toFluid(output))); } private static class Add implements IUndoableAction { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java index 8bceade..6588d1f 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java @@ -4,7 +4,6 @@ import static modtweaker2.helpers.InputHelper.toStack; import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; -import modtweaker2.utils.TweakerPlugin; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java index eebe53e..2ca2d3b 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java @@ -4,7 +4,6 @@ import static modtweaker2.helpers.InputHelper.toStack; import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; -import modtweaker2.utils.TweakerPlugin; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java index 2c19138..f53bd46 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java @@ -4,7 +4,6 @@ import static modtweaker2.helpers.InputHelper.toStack; import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; -import modtweaker2.utils.TweakerPlugin; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java index b729d4d..44e25c9 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java @@ -9,9 +9,7 @@ import java.util.Map; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; import modtweaker2.mods.thermalexpansion.ThermalHelper; -import modtweaker2.utils.BaseDescriptionAddition; -import modtweaker2.utils.BaseDescriptionRemoval; -import modtweaker2.utils.TweakerPlugin; +import modtweaker2.utils.BaseMultiModification; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @@ -52,7 +50,7 @@ public class Smelter { MineTweakerAPI.apply(new Add(in1, in2, recipe)); } - private static class Add extends BaseDescriptionAddition { + private static class Add extends BaseMultiModification { private final ComparableItemStackSafe input1; private final ComparableItemStackSafe input2; private final List key; @@ -99,7 +97,7 @@ public class Smelter { MineTweakerAPI.apply(new Remove(toStack(input), toStack(input2))); } - private static class Remove extends BaseDescriptionRemoval { + private static class Remove extends BaseMultiModification { private final ComparableItemStackSafe input1; private final ComparableItemStackSafe input2; private final List key; diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java index 5381d6a..9251116 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java @@ -11,9 +11,7 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; import modtweaker2.mods.thermalexpansion.ThermalHelper; -import modtweaker2.utils.BaseDescriptionAddition; -import modtweaker2.utils.BaseDescriptionRemoval; -import modtweaker2.utils.TweakerPlugin; +import modtweaker2.utils.BaseUndoable; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import stanhebben.zenscript.annotations.ZenClass; @@ -65,7 +63,7 @@ public class Transposer { MineTweakerAPI.apply(new Add(in, fluid, recipe, isFillRecipe)); } - private static class Add extends BaseDescriptionAddition { + private static class Add extends BaseUndoable { private List key; private boolean isFillRecipe; private final ComparableItemStackSafe input; @@ -132,7 +130,7 @@ public class Transposer { MineTweakerAPI.apply(new Remove(toStack(input), toFluid(liquid), isFillRecipe)); } - private static class Remove extends BaseDescriptionRemoval { + private static class Remove extends BaseUndoable { private final boolean isFillRecipe; private final ComparableItemStackSafe input; private List key; diff --git a/src/main/java/modtweaker2/utils/ArrayUtils.java b/src/main/java/modtweaker2/utils/ArrayUtils.java index 07804bc..3297f67 100644 --- a/src/main/java/modtweaker2/utils/ArrayUtils.java +++ b/src/main/java/modtweaker2/utils/ArrayUtils.java @@ -2,8 +2,6 @@ package modtweaker2.utils; import java.util.ArrayList; -import net.minecraftforge.common.util.ForgeDirection; - public class ArrayUtils { diff --git a/src/main/java/modtweaker2/utils/BaseCraftingAddition.java b/src/main/java/modtweaker2/utils/BaseCraftingAddition.java index 8022a4d..bf2afaf 100644 --- a/src/main/java/modtweaker2/utils/BaseCraftingAddition.java +++ b/src/main/java/modtweaker2/utils/BaseCraftingAddition.java @@ -1,56 +1,22 @@ package modtweaker2.utils; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; - import java.util.List; -import static modtweaker2.helpers.StackHelper.areEqual; +import modtweaker2.helpers.InputHelper; +import net.minecraft.item.crafting.IRecipe; -public abstract class BaseCraftingAddition extends BaseDescriptionAddition { - protected final List list; - protected final boolean shapeless; - protected final ItemStack output; - protected final Object[] recipe; +public abstract class BaseCraftingAddition extends BaseListAddition { - public BaseCraftingAddition(String name, boolean shapeless, List list, ItemStack output, Object... recipe) { - super(name); - this.shapeless = shapeless; - this.output = output; - this.recipe = recipe; - this.list = list; - } - - @Override - public void apply() { - if (shapeless) applyShapeless(); - else applyShaped(); - } - - public abstract void applyShaped(); - - public abstract void applyShapeless(); - - @Override - public boolean canUndo() { - return list != null; - } - - @Override - public void undo() { - IRecipe remove = null; - for (IRecipe recipe : list) { - if (recipe.getRecipeOutput() != null && areEqual(recipe.getRecipeOutput(), output)) { - remove = recipe; - break; - } - } - - list.remove(remove); - } - - @Override - public String getRecipeInfo() { - return output.getDisplayName(); - } + protected BaseCraftingAddition(String name, List list) { + super(name, list); + } + + protected BaseCraftingAddition(String name, List list, List recipes) { + super(name, list, recipes); + } + + @Override + protected String getRecipeInfo(IRecipe recipe) { + return InputHelper.getStackDescription(recipe.getRecipeOutput()); + } } diff --git a/src/main/java/modtweaker2/utils/BaseCraftingRemoval.java b/src/main/java/modtweaker2/utils/BaseCraftingRemoval.java index 4fa3b53..4f629b4 100644 --- a/src/main/java/modtweaker2/utils/BaseCraftingRemoval.java +++ b/src/main/java/modtweaker2/utils/BaseCraftingRemoval.java @@ -1,29 +1,35 @@ package modtweaker2.utils; +import static modtweaker2.helpers.InputHelper.toIItemStack; +import static modtweaker2.helpers.StackHelper.matches; + +import java.util.LinkedList; +import java.util.List; + +import minetweaker.api.item.IIngredient; +import modtweaker2.helpers.InputHelper; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; -import java.util.List; - -import static modtweaker2.helpers.StackHelper.areEqual; - -public class BaseCraftingRemoval extends BaseListRemoval { - public BaseCraftingRemoval(String name, List list, ItemStack stack) { - super(name, list, stack); +public class BaseCraftingRemoval extends BaseListRemoval { + public BaseCraftingRemoval(String name, List list, List recipes) { + super(name, list, recipes); } - - @Override - public void apply() { - for (IRecipe r : (List) list) { - if (r.getRecipeOutput() != null && r.getRecipeOutput() instanceof ItemStack && areEqual(r.getRecipeOutput(), stack)) { - recipes.add(r); - } - } - super.apply(); - } - - @Override - public String getRecipeInfo() { - return stack.getDisplayName(); - } -} + + @Override + public String getRecipeInfo(IRecipe recipe) { + return InputHelper.getStackDescription(recipe.getRecipeOutput()); + } + + public static List getRecipes(List list, IIngredient ingredient) { + List recipes = new LinkedList(); + + for (IRecipe r : list) { + if (r != null && r.getRecipeOutput() != null && r.getRecipeOutput() instanceof ItemStack && matches(ingredient, toIItemStack(r.getRecipeOutput()))) { + recipes.add(r); + } + } + + return recipes; + } +} \ No newline at end of file diff --git a/src/main/java/modtweaker2/utils/BaseDescriptionAddition.java b/src/main/java/modtweaker2/utils/BaseDescriptionAddition.java deleted file mode 100644 index 7b9b908..0000000 --- a/src/main/java/modtweaker2/utils/BaseDescriptionAddition.java +++ /dev/null @@ -1,36 +0,0 @@ -package modtweaker2.utils; - -import net.minecraft.item.ItemStack; -import minetweaker.IUndoableAction; - -public abstract class BaseDescriptionAddition implements IUndoableAction { - protected String description; - - public BaseDescriptionAddition(String description) { - this.description = description; - } - - @Override - public boolean canUndo() { - return true; - } - - public String getRecipeInfo() { - return "Unknown Item"; - } - - @Override - public String describe() { - return "Adding " + description + " Recipe for :" + getRecipeInfo(); - } - - @Override - public String describeUndo() { - return "Removing " + description + " Recipe for :" + getRecipeInfo(); - } - - @Override - public Object getOverrideKey() { - return null; - } -} diff --git a/src/main/java/modtweaker2/utils/BaseDescriptionRemoval.java b/src/main/java/modtweaker2/utils/BaseDescriptionRemoval.java deleted file mode 100644 index 9b2b82e..0000000 --- a/src/main/java/modtweaker2/utils/BaseDescriptionRemoval.java +++ /dev/null @@ -1,35 +0,0 @@ -package modtweaker2.utils; - -import minetweaker.IUndoableAction; - -public abstract class BaseDescriptionRemoval implements IUndoableAction { - protected String description; - - public BaseDescriptionRemoval(String description) { - this.description = description; - } - - @Override - public boolean canUndo() { - return true; - } - - public String getRecipeInfo() { - return "Unknown Item"; - } - - @Override - public String describe() { - return "Removing " + description + " Recipe for :" + getRecipeInfo(); - } - - @Override - public String describeUndo() { - return "Restoring " + description + " Recipe for :" + getRecipeInfo(); - } - - @Override - public Object getOverrideKey() { - return null; - } -} diff --git a/src/main/java/modtweaker2/utils/BaseListAddition.java b/src/main/java/modtweaker2/utils/BaseListAddition.java index 9757f84..db66588 100644 --- a/src/main/java/modtweaker2/utils/BaseListAddition.java +++ b/src/main/java/modtweaker2/utils/BaseListAddition.java @@ -1,65 +1,65 @@ package modtweaker2.utils; -import minetweaker.IUndoableAction; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; - import java.util.List; -public abstract class BaseListAddition implements IUndoableAction { - protected final List list; - protected final Object recipe; - protected String description; +import modtweaker2.helpers.LogHelper; - public BaseListAddition(String description, List list, Object recipe) { - this(list, recipe); - this.description = description; - } +public abstract class BaseListAddition extends BaseListModification { - public BaseListAddition(List list, Object recipe) { - this.list = list; - this.recipe = recipe; - } + protected BaseListAddition(String name, List list) { + super(name, list); + } + + protected BaseListAddition(String name, List list, List recipies) { + this(name, list); + if(recipes != null) { + recipes.addAll(recipies); + } + } - @Override - public void apply() { - list.add(recipe); - } + @Override + public void apply() { + if(recipes.isEmpty()) { + return; + } - @Override - public boolean canUndo() { - return list != null; - } + for(T recipe : recipes) { + if(recipe != null) { + if(this.list.add(recipe)) { + successful.add(recipe); + } else { + LogHelper.logError(String.format("Error adding %s Recipe for %s", this.name, this.getRecipeInfo(recipe))); + } + } else { + LogHelper.logError(String.format("Error adding %s Recipe: null object", this.name)); + } + } + } + + @Override + public void undo() { + if(this.successful.isEmpty()) { + return; + } + + for(T recipe : successful) { + if(recipe != null) { + if(!this.list.remove(recipe)) { + LogHelper.logError(String.format("Error removing %s Recipe for %s", this.name, this.getRecipeInfo(recipe))); + } + } else { + LogHelper.logError(String.format("Error removing %s Recipe: null object", this.name)); + } + } + } - @Override - public void undo() { - list.remove(recipe); - } + @Override + public String describe() { + return String.format("[ModTweaker2] Adding %d %s Recipe(s) for %s", this.recipes.size(), this.name, this.getRecipeInfo()); + } - public String getRecipeInfo() { - return "Unknown Item"; - } - - @Override - public String describe() { - if (recipe instanceof ItemStack) - return "Adding " + description + " Recipe for :" + ((ItemStack) recipe).getDisplayName(); - else if (recipe instanceof FluidStack) - return "Adding " + description + " Recipe for :" + ((FluidStack) recipe).getFluid().getLocalizedName(); - else return "Adding " + description + " Recipe for :" + getRecipeInfo(); - } - - @Override - public String describeUndo() { - 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(); - else return "Removing " + description + " Recipe for :" + getRecipeInfo(); - } - - @Override - public Object getOverrideKey() { - return null; - } -} + @Override + public String describeUndo() { + return String.format("[ModTweaker2] Removing %d %s Recipe(s) for %s", this.recipes.size(), this.name, this.getRecipeInfo()); + } +} \ No newline at end of file diff --git a/src/main/java/modtweaker2/utils/BaseListModification.java b/src/main/java/modtweaker2/utils/BaseListModification.java new file mode 100644 index 0000000..781047d --- /dev/null +++ b/src/main/java/modtweaker2/utils/BaseListModification.java @@ -0,0 +1,118 @@ +package modtweaker2.utils; + +import java.util.LinkedList; +import java.util.List; + +public abstract class BaseListModification extends BaseUndoable { + protected final List list; + protected final LinkedList recipes; + protected final LinkedList successful; + + protected BaseListModification(String name, List list) { + super(name); + this.list = list; + this.recipes = new LinkedList(); + this.successful = new LinkedList(); + } + + @Override + public boolean canUndo() { + if(list == null || recipes.isEmpty() || successful.isEmpty()) + return false; + + return true; + } + + @Override + protected String getRecipeInfo() { + if(!recipes.isEmpty()) + { + StringBuilder sb = new StringBuilder(); + for(T recipe : recipes) { + if(recipe != null) { + sb.append(getRecipeInfo(recipe)).append(", "); + } + } + sb.setLength(sb.length() - 2); + return sb.toString(); + } + + return super.getRecipeInfo(); + } + + /** + * This method must be overwritten by the extending classes. It should return + * the name of the key item, for which the recipe is for. For example for machines + * which produce new items, it should return the name of the ouput. For machines + * which are processing items (like a pulverizer) it should return the name of the + * the input. Another example would be the name of the enchantmant for a thaumcraft + * infusion recipe. + */ + protected abstract String getRecipeInfo(T recipe); + + @Override + public int hashCode() { + return 37 * super.hashCode() ^ (list != null ? 43 * list.hashCode() : 0); + } + + @Override + public boolean equals(Object obj) { + if(obj == this) + return true; + + if (obj == null) + return false; + + // Do both actions have the same base? + if(!super.equals(obj)) + return false; + + if (!(obj instanceof BaseListModification)) + return false; + + BaseListModification mod = (BaseListModification)obj; + + // Do both actions reference the same list? + if(this.list != mod.list) { + return false; + } + + // Do both actions contain the same recipes? + if(recipes.size() != mod.recipes.size()) { + return false; + } + + for(T recipe : recipes) { + boolean found = false; + for(T otherRecipe : (List)mod.recipes) { + if(equals(recipe, otherRecipe)) { + found = true; + break; + } + } + + if(!found) { + return false; + } + } + + return true; + } + + /** + * Compares two recipes if they are equal. If the mod does not overwrite equals() in + * their recipe object, this method should be overwritten by the extending classes to + * add a custom equals method + */ + protected boolean equals(T recipe, T otherRecipe) { + if(recipe == otherRecipe) { + return true; + } + + if(!recipe.equals(otherRecipe)) { + return false; + } + + return true; + } +} \ No newline at end of file diff --git a/src/main/java/modtweaker2/utils/BaseListRemoval.java b/src/main/java/modtweaker2/utils/BaseListRemoval.java index 27d467f..06f0518 100644 --- a/src/main/java/modtweaker2/utils/BaseListRemoval.java +++ b/src/main/java/modtweaker2/utils/BaseListRemoval.java @@ -1,133 +1,65 @@ package modtweaker2.utils; -import minetweaker.IUndoableAction; -import minetweaker.MineTweakerAPI; -import modtweaker2.helpers.LogHelper; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; - -import java.util.LinkedList; import java.util.List; -public abstract class BaseListRemoval implements IUndoableAction { - protected final String description; - protected final List list; +import modtweaker2.helpers.LogHelper; - protected final FluidStack fluid; - protected final ItemStack stack; - protected final LinkedList recipes = new LinkedList(); - - public BaseListRemoval(String description, List list, ItemStack stack, FluidStack fluid) { - this.list = list; - this.stack = stack; - this.description = description; - this.fluid = fluid; - } - - public BaseListRemoval(String description, List list, ItemStack stack) { - this(description, list, stack, null); - } - - public BaseListRemoval(String description, List list, FluidStack fluid) { - this(description, list, null, fluid); - } - - public BaseListRemoval(List list, ItemStack stack) { - this(null, list, stack); - } - - public BaseListRemoval(List list, FluidStack stack) { - this(null, list, stack); - } - - public BaseListRemoval(String description, List list) { - this(description, list, null, null); - } - - @Override - public void apply() { - if(recipes.size() == 0) { - MineTweakerAPI.logWarning(String.format("No %s Recipes to remove for: %s", this.description, getRecipeInfo())); - return; - } - - for(Object recipe : recipes) { - list.remove(recipe); - } - } - - @Override - public boolean canUndo() { - return recipes.size() > 0; - } - - @Override - public void undo() { - for(Object recipe : recipes) { - list.add(recipe); - } - } - - public String getRecipeInfo() { - return "Unknown Item"; - } - - @Override - public String describe() { - if(recipes.size() > 0) { - return String.format("Removing %d %s Recipe(s) for: %s", recipes.size(), this.description, getRecipeNames(recipes)); - } else { - return String.format("Removing %s Recipe(s) for: %s", this.description, getRecipeInfo()); - } - } - - @Override - public String describeUndo() { - if(recipes.size() > 0) { - return String.format("Restoring %d %s Recipe(s) for: %s", recipes.size(), this.description, getRecipeNames(recipes)); - } else { - return String.format("No %s Recipes found to restore for: %s", this.description, getRecipeInfo()); +public abstract class BaseListRemoval extends BaseListModification { + + protected BaseListRemoval(String name, List list) { + super(name, list); + } + + protected BaseListRemoval(String name, List list, List recipies) { + this(name, list); + + if(recipes != null) { + recipes.addAll(recipies); } - } + } + + @Override + public void apply() { + if(recipes.isEmpty()) { + return; + } + + for(T recipe : this.recipes) { + if(recipe != null) { + if(this.list.remove(recipe)) { + successful.add(recipe); + } else { + LogHelper.logError(String.format("Error removing %s Recipe for %s", name, getRecipeInfo(recipe))); + } + } else { + LogHelper.logError(String.format("Error removing %s Recipe: null object", name)); + } + } + } + + @Override + public void undo() { + if(successful.isEmpty()) { + return; + } + for(T recipe : successful) { + if(recipe != null) { + if(!list.add(recipe)) { + LogHelper.logError(String.format("Error restoring %s Recipe for %s", name, getRecipeInfo(recipe))); + } + } else { + LogHelper.logError(String.format("Error restoring %s Recipe: null object", name)); + } + } + } - @Override - public Object getOverrideKey() { - return null; - } - - /*** - * Returns the names of the recipes inside the list - * @param list which holds the recipes - * @return name or list of names describing the recipe - */ - private String getRecipeNames(LinkedList list) { - if(list.size() == 0) - return getRecipeInfo(); - - if(list.size() == 1) { - if(recipes.getFirst() instanceof ItemStack) - return ((ItemStack)list.getFirst()).getDisplayName(); - else if (recipes.getFirst() instanceof FluidStack) - return ((FluidStack)list.getFirst()).getFluid().getLocalizedName(); - else - return getRecipeInfo(); - } - - StringBuilder sb = new StringBuilder(); - - if(recipes.getFirst() instanceof ItemStack) { - for(ItemStack itemStack : (List)list) { - sb.append(itemStack.getDisplayName()).append(", "); - } - } else if (recipes.getFirst() instanceof FluidStack) { - for(FluidStack fluidStack : (List)list) { - sb.append(fluidStack.getFluid().getLocalizedName()).append(", "); - } - } else { - sb.append(getRecipeInfo()).append(", "); - } - - sb.setLength(sb.length() - 2); - return sb.toString(); - } -} + @Override + public String describe() { + return String.format("[ModTweaker2] Removing %d %s Recipe(s) for %s", this.recipes.size(), this.name, this.getRecipeInfo()); + } + + @Override + public String describeUndo() { + return String.format("[ModTweaker2] Restoring %d %s Recipe(s) for %s", this.recipes.size(), this.name, this.getRecipeInfo()); + } +} \ No newline at end of file diff --git a/src/main/java/modtweaker2/utils/BaseMapAddition.java b/src/main/java/modtweaker2/utils/BaseMapAddition.java index df82716..354993a 100644 --- a/src/main/java/modtweaker2/utils/BaseMapAddition.java +++ b/src/main/java/modtweaker2/utils/BaseMapAddition.java @@ -1,69 +1,75 @@ package modtweaker2.utils; -import minetweaker.IUndoableAction; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; - +import java.util.AbstractMap; +import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; -public abstract class BaseMapAddition implements IUndoableAction { - protected final Map map; - protected String description; - protected Object key; - protected Object recipe; +import modtweaker2.helpers.LogHelper; - public BaseMapAddition(Map map, Object key, Object recipe) { - this(null, map, key, recipe); - } +public abstract class BaseMapAddition extends BaseMapModification { + + protected final HashMap overwritten; + + protected BaseMapAddition(String name, Map map) { + super(name, map); + this.overwritten = new HashMap(); + } + + protected BaseMapAddition(String name, Map map, Map recipes) { + this(name, map); + recipes.putAll(recipes); + } - public BaseMapAddition(String description, Map map, Object key, Object recipe) { - this.map = map; - this.key = key; - this.recipe = recipe; - this.description = description; - } + @Override + public void apply() { + if(recipes.isEmpty()) + return; + + for(Entry entry : recipes.entrySet()) { + V value = map.put(entry.getKey(), entry.getValue()); + if(value != null) { + LogHelper.logWarning(String.format("Overwritten %s Recipe for %s", name, getRecipeInfo( new AbstractMap.SimpleEntry(entry.getKey(), value)))); + overwritten.put(entry.getKey(), value); + } + successful.put(entry.getKey(), entry.getValue()); + } + } - @Override - public void apply() { - map.put(key, recipe); - } + @Override + public void undo() { + if(successful.isEmpty() || overwritten.isEmpty()) + return; + + for(K key : recipes.keySet()) { + map.remove(key); + } + + for(Entry entry : successful.entrySet()) { + V value = map.remove(entry.getKey()); + + if(value == null) { + LogHelper.logError(String.format("Error removing %s Recipe: null object", name)); + } + + } + + for(Entry entry : overwritten.entrySet()) { + V value = map.put(entry.getKey(), entry.getValue()); + + if(value != null) { + LogHelper.logWarning(String.format("Overwritten %s Recipe which should not exist for %s", name, getRecipeInfo(new AbstractMap.SimpleEntry(entry.getKey(), value)))); + } + } + } - @Override - public boolean canUndo() { - return map != null; - } + @Override + public String describe() { + return String.format("Adding %d %s Recipe(s) for %d", recipes.size(), name, getRecipeInfo()); + } - @Override - public void undo() { - map.remove(key); - } - - public String getRecipeInfo() { - return "Unknown Item"; - } - - @Override - public String describe() { - if (recipe instanceof ItemStack) - return "Adding " + description + " Recipe for :" + ((ItemStack) recipe).getDisplayName(); - else if (recipe instanceof FluidStack) - return "Adding " + description + " Recipe for :" + ((FluidStack) recipe).getFluid().getLocalizedName(); - else - return "Adding " + description + " Recipe for :" + getRecipeInfo(); - } - - @Override - public String describeUndo() { - 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(); - else - return "Removing " + description + " Recipe for :" + getRecipeInfo(); - } - - @Override - public Object getOverrideKey() { - return null; - } + @Override + public String describeUndo() { + return String.format("Removing %d %s Recipe(s) for %d", recipes.size(), name, getRecipeInfo()); + } } diff --git a/src/main/java/modtweaker2/utils/BaseMapModification.java b/src/main/java/modtweaker2/utils/BaseMapModification.java new file mode 100644 index 0000000..89d5a7a --- /dev/null +++ b/src/main/java/modtweaker2/utils/BaseMapModification.java @@ -0,0 +1,50 @@ +package modtweaker2.utils; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +public abstract class BaseMapModification extends BaseUndoable { + protected final Map map; + protected final HashMap recipes; + protected final HashMap successful; + + protected BaseMapModification(String name, Map map) { + super(name); + this.map = map; + this.recipes = new HashMap(); + this.successful = new HashMap(); + } + + @Override + public boolean canUndo() { + return !recipes.isEmpty(); + } + + @Override + protected String getRecipeInfo() { + if(!recipes.isEmpty()) + { + StringBuilder sb = new StringBuilder(); + for(Entry recipe : recipes.entrySet()) { + if(recipe != null) { + sb.append(getRecipeInfo(recipe)).append(", "); + } + } + sb.setLength(sb.length() - 2); + return sb.toString(); + } + + return super.getRecipeInfo(); + } + + /** + * This method must be overwritten by the extending classes. It should return + * the name of the key item, for which the recipe is for. For example for machines + * which produce new items, it should return the name of the ouput. For machines + * which are processing items (like a pulverizer) it should return the name of the + * the input. Another example would be the name of the enchantmant for a thaumcraft + * infusion recipe. + */ + protected abstract String getRecipeInfo(Entry recipe); +} diff --git a/src/main/java/modtweaker2/utils/BaseMapRemoval.java b/src/main/java/modtweaker2/utils/BaseMapRemoval.java index 0db79f7..7385483 100644 --- a/src/main/java/modtweaker2/utils/BaseMapRemoval.java +++ b/src/main/java/modtweaker2/utils/BaseMapRemoval.java @@ -1,73 +1,62 @@ package modtweaker2.utils; import java.util.Map; +import java.util.Map.Entry; -import minetweaker.IUndoableAction; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import modtweaker2.helpers.LogHelper; -public abstract class BaseMapRemoval implements IUndoableAction { - protected final Map map; - protected Object stack; - protected String description; - protected Object key; - protected Object recipe; +public abstract class BaseMapRemoval extends BaseMapModification { + + protected BaseMapRemoval(String name, Map map) { + super(name, map); + } + + protected BaseMapRemoval(String name, Map map, Map recipes) { + this(name, map); + + if(recipes != null) { + this.recipes.putAll(recipes); + } + } - public BaseMapRemoval(Object stack, Map map, Object key) { - this(null, map, key, stack); - } + @Override + public void apply() { + if(recipes.isEmpty()) + return; + + for(K key : recipes.keySet()) { + V value = map.remove(key); + + if(value != null) { + successful.put(key, value); + } else { + LogHelper.logError(String.format("Error removing %s Recipe : null object", name)); + } + } + } + + @Override + public void undo() { + if(successful.isEmpty()) + return; + + for(Entry entry : successful.entrySet()) { + if(entry != null) { + V value = map.put(entry.getKey(), entry.getValue()); + if(value != null) { + LogHelper.logWarning(String.format("Overwritten %s Recipe for %s while restoring.", name, getRecipeInfo(entry))); + } + } + } + } + + @Override + public String describe() { + return String.format("[ModTweaker2] Removing %d %s Recipe(s) for %d", this.recipes.size(), this.name); + } - public BaseMapRemoval(String description, Map map, Object stack) { - this(description, map, null, stack); - } - - public BaseMapRemoval(String description, Map map, Object key, Object stack) { - this.stack = stack; - this.map = map; - this.key = key; - this.description = description; - } - - @Override - public void apply() { - recipe = map.get(key); - map.remove(key); - } - - @Override - public boolean canUndo() { - return map != null; - } - - @Override - public void undo() { - map.put(key, recipe); - } - - public String getRecipeInfo() { - return "Unknown Item"; - } - - @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(); - 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(); - else return "Restoring " + description + " Recipe for : " + getRecipeInfo(); - } - - @Override - public Object getOverrideKey() { - return null; - } + @Override + public String describeUndo() { + return String.format("[ModTweaker2] Restoring %d %s Recipe(s) for %d", this.recipes.size(), this.name); + } } diff --git a/src/main/java/modtweaker2/utils/BaseMultiModification.java b/src/main/java/modtweaker2/utils/BaseMultiModification.java new file mode 100644 index 0000000..c8fd478 --- /dev/null +++ b/src/main/java/modtweaker2/utils/BaseMultiModification.java @@ -0,0 +1,50 @@ +package modtweaker2.utils; + +import java.util.LinkedList; + +import minetweaker.IUndoableAction; + +public class BaseMultiModification extends BaseUndoable { + + protected final LinkedList actions; + + protected BaseMultiModification(String name) { + super(name); + this.actions = new LinkedList(); + } + + @Override + public void apply() { + for(IUndoableAction action : actions) { + action.apply(); + } + } + + @Override + public boolean canUndo() { + for(IUndoableAction action : actions) { + if(!action.canUndo()) + return false; + } + + return true; + } + + @Override + public String describe() { + return String.format("Applying %d actions for %s Recipe change", this.name, this.actions.size()); + } + + @Override + public String describeUndo() { + return String.format("Reverting %d actions for %s Recipe change", this.name, this.actions.size()); + } + + @Override + public void undo() { + for(IUndoableAction action : actions) { + action.undo(); + } + } + +} diff --git a/src/main/java/modtweaker2/utils/BaseMultipleListRemoval.java b/src/main/java/modtweaker2/utils/BaseMultipleListRemoval.java deleted file mode 100644 index 6ff17cb..0000000 --- a/src/main/java/modtweaker2/utils/BaseMultipleListRemoval.java +++ /dev/null @@ -1,83 +0,0 @@ -package modtweaker2.utils; - -import minetweaker.IUndoableAction; - -import java.util.ArrayList; -import java.util.List; - -public abstract class BaseMultipleListRemoval implements IUndoableAction { - protected final Position pos; - protected final String description; - protected final List list; - protected final Object search; - protected ArrayList recipes; - - public BaseMultipleListRemoval(String description, List list, Object search, Position pos) { - this.pos = pos; - this.description = description; - this.list = list; - this.search = search; - } - - //Return whether the items are equal or not - protected abstract boolean isEqual(Object recipe, Object search); - - @Override - public void apply() { - //Create a new list - recipes = new ArrayList(); - for (Object o : list) { - if (isEqual(o, search)) { - //If we want the last position, reset the array - if (pos == Position.LAST) { - recipes = new ArrayList(); - } - - recipes.add(o); - - //If we want the first position, exit the loop - if (pos == Position.FIRST) { - break; - } - } - } - - //Remove all the recipes that were considered valid for removal - for (Object o : recipes) { - list.remove(o); - } - } - - @Override - public boolean canUndo() { - return recipes != null; - } - - @Override - public void undo() { - for (Object o : recipes) { - list.add(o); - } - } - - public abstract String getRecipeInfo(); - - @Override - public String describe() { - return "Removing " + description + " Recipe for :" + getRecipeInfo(); - } - - @Override - public String describeUndo() { - return "Restoring " + description + " Recipe for :" + getRecipeInfo(); - } - - @Override - public Object getOverrideKey() { - return null; - } - - public static enum Position { - ALL, FIRST, LAST; - } -} diff --git a/src/main/java/modtweaker2/utils/BaseSetVar.java b/src/main/java/modtweaker2/utils/BaseSetVar.java deleted file mode 100644 index 7af454e..0000000 --- a/src/main/java/modtweaker2/utils/BaseSetVar.java +++ /dev/null @@ -1,57 +0,0 @@ -package modtweaker2.utils; - -import net.minecraft.item.ItemStack; -import minetweaker.IUndoableAction; -import modtweaker2.helpers.ReflectionHelper; - -public abstract class BaseSetVar implements IUndoableAction { - protected final String description; - protected final Class clazz; - protected final String field; - protected final int original; - protected final int newValue; - protected Object object; - - public BaseSetVar(String description, Class clazz, Object object, String field, int original, int newValue) { - this(description, clazz, field, original, newValue); - this.object = object; - } - - public BaseSetVar(String description, Class clazz, String field, int original, int newValue) { - this.description = description; - this.clazz = clazz; - this.field = field; - this.original = original; - this.newValue = newValue; - } - - @Override - public void apply() { - ReflectionHelper.setPrivateValue(clazz, object, field, newValue); - } - - @Override - public boolean canUndo() { - return true; - } - - @Override - public void undo() { - ReflectionHelper.setPrivateValue(clazz, object, field, original); - } - - @Override - public String describe() { - return "Setting " + description + " to " + newValue; - } - - @Override - public String describeUndo() { - return "Setting " + description + " to the default value of " + original; - } - - @Override - public Object getOverrideKey() { - return null; - } -} diff --git a/src/main/java/modtweaker2/utils/BaseUndoable.java b/src/main/java/modtweaker2/utils/BaseUndoable.java index e025434..a6cf6e1 100644 --- a/src/main/java/modtweaker2/utils/BaseUndoable.java +++ b/src/main/java/modtweaker2/utils/BaseUndoable.java @@ -3,13 +3,60 @@ package modtweaker2.utils; import minetweaker.IUndoableAction; public abstract class BaseUndoable implements IUndoableAction { + + // Holds the name of the mod / machine this action manipulates + protected final String name; + + // Basic indicator, if the action was successful and can be reverted + protected boolean success = false; + + protected BaseUndoable(String name) { + this.name = name; + } + + protected String getRecipeInfo() { + return "Unknown item"; + } + @Override public boolean canUndo() { - return true; + return success; } - + @Override - public Object getOverrideKey() { - return null; + public String describe() { + return String.format("[ModTweaker2] Altering %s Recipe(s) for %s", this.name, this.getRecipeInfo()); } -} + + @Override + public String describeUndo() { + return String.format("[ModTweaker2] Reverting %s Recipe(s) changes for %s", this.name, this.getRecipeInfo()); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) + return false; + + if(!(obj instanceof BaseUndoable)) { + return false; + } + + BaseUndoable u = (BaseUndoable)obj; + + if(!name.equals(u.name)) + return false; + + return true; + } + + @Override + public int hashCode() { + return name.hashCode(); + } + + @Override + public Object getOverrideKey() { + return null; + } +} \ No newline at end of file diff --git a/src/main/java/modtweaker2/utils/TweakerPlugin.java b/src/main/java/modtweaker2/utils/TweakerPlugin.java index ce005f2..fb80612 100644 --- a/src/main/java/modtweaker2/utils/TweakerPlugin.java +++ b/src/main/java/modtweaker2/utils/TweakerPlugin.java @@ -1,9 +1,7 @@ package modtweaker2.utils; import java.util.ArrayList; -import java.util.List; -import net.minecraft.item.ItemStack; import cpw.mods.fml.common.Loader; public class TweakerPlugin { From f8d537e857b74fd0ac1fb877c501145ceb18bf94 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Mon, 29 Jun 2015 17:15:23 +0200 Subject: [PATCH 02/31] Applied Energistics 2 Fixes - Fixed getRecipeInfo() for Grinder displayed output instead of input - Fixed wildcard support for item damage - Added Botania special flower support - Tested all AE2 script functions --- src/main/java/modtweaker2/helpers/StackHelper.java | 4 ++-- src/main/java/modtweaker2/mods/appeng/handlers/Grind.java | 7 ++++--- .../java/modtweaker2/mods/appeng/handlers/Inscriber.java | 6 ++++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/modtweaker2/helpers/StackHelper.java b/src/main/java/modtweaker2/helpers/StackHelper.java index 694e84c..9304d21 100644 --- a/src/main/java/modtweaker2/helpers/StackHelper.java +++ b/src/main/java/modtweaker2/helpers/StackHelper.java @@ -48,8 +48,8 @@ public class StackHelper { return false; } - // Do we have a wildcard (<*>) or an actual item? - if(ingredient.getItems() != null) { + // Check for Botania special flowers + if(ingredient.getItems() != null && Botania.isSubtile(toStack(itemStack))) { for(IItemStack item : ingredient.getItems()) { if(areEqual(toStack(item), toStack(itemStack))) { return true; diff --git a/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java b/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java index 578765f..cb03265 100644 --- a/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java +++ b/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java @@ -1,8 +1,9 @@ package modtweaker2.mods.appeng.handlers; import static modtweaker2.helpers.InputHelper.getStackDescription; -import static modtweaker2.helpers.InputHelper.toIngredient; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; import java.util.LinkedList; @@ -78,7 +79,7 @@ public class Grind { LinkedList result = new LinkedList(); for(IGrinderEntry entry : AEApi.instance().registries().grinder().getRecipes()) { - if(entry != null && entry.getOutput() != null && output.contains(toIngredient(entry.getOutput()))) { + if(entry != null && entry.getOutput() != null && matches(output, toIItemStack(entry.getOutput()))) { result.add(entry); } } @@ -98,7 +99,7 @@ public class Grind { @Override public String getRecipeInfo(IGrinderEntry recipe) { - return getStackDescription(recipe.getOutput()); + return getStackDescription(recipe.getInput()); } } diff --git a/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java b/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java index fae2561..dc5da59 100644 --- a/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java +++ b/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java @@ -1,9 +1,11 @@ package modtweaker2.mods.appeng.handlers; import static modtweaker2.helpers.InputHelper.getStackDescription; -import static modtweaker2.helpers.InputHelper.toIngredient; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.InputHelper.toStacks; +import static modtweaker2.helpers.StackHelper.matches; + import java.util.LinkedList; @@ -98,7 +100,7 @@ public class Inscriber { LinkedList result = new LinkedList(); for(IInscriberRecipe entry : AEApi.instance().registries().inscriber().getRecipes()) { - if(entry != null && entry.getOutput() != null && output.contains(toIngredient(entry.getOutput()))) { + if(entry != null && entry.getOutput() != null && matches(output, toIItemStack(entry.getOutput()))) { result.add(entry); } } From 152fa40b9ae433551c5dc04681b8f262927187a4 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Tue, 30 Jun 2015 01:37:30 +0200 Subject: [PATCH 03/31] Added command to print AE2 recipes - Added command "/mt ae2" to log all Applied Energistics 2 recipes. --- src/main/java/modtweaker2/Commands.java | 5 ++ .../java/modtweaker2/helpers/InputHelper.java | 4 +- .../Commands/AppliedEnergisticsLogger.java | 66 +++++++++++++++++++ 3 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java diff --git a/src/main/java/modtweaker2/Commands.java b/src/main/java/modtweaker2/Commands.java index 0d64b67..25e6f1b 100644 --- a/src/main/java/modtweaker2/Commands.java +++ b/src/main/java/modtweaker2/Commands.java @@ -4,6 +4,7 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.player.IPlayer; import minetweaker.api.server.ICommandFunction; import modtweaker2.commands.EntityMappingLogger; +import modtweaker2.mods.appeng.Commands.AppliedEnergisticsLogger; import modtweaker2.mods.auracascade.aura.AuraLogger; import modtweaker2.mods.botania.commands.BotaniaBrewLogger; import modtweaker2.mods.botania.commands.BotaniaOrechidLogger; @@ -31,6 +32,10 @@ public class Commands { }); MineTweakerAPI.server.addMineTweakerCommand("entities", new String[] { "/minetweaker entities", " Outputs a list of entities class mapping keys and the entity IDs" }, new EntityMappingLogger()); + + if (TweakerPlugin.isLoaded("appliedenergistics2-core")) { + MineTweakerAPI.server.addMineTweakerCommand("ae2", new String[] {"/minetweaker ae2 ([Grinder/Inscriber])", " Outputs a list of all Applied Energistics 2 recipes."}, new AppliedEnergisticsLogger()); + } if (TweakerPlugin.isLoaded("Mekanism")) { MineTweakerAPI.server.addMineTweakerCommand("gases", new String[] { "/minetweaker gases", " Outputs a list of all gas names in the game to the minetweaker log" }, new GasLogger()); diff --git a/src/main/java/modtweaker2/helpers/InputHelper.java b/src/main/java/modtweaker2/helpers/InputHelper.java index 39d9f0c..216a586 100644 --- a/src/main/java/modtweaker2/helpers/InputHelper.java +++ b/src/main/java/modtweaker2/helpers/InputHelper.java @@ -59,7 +59,7 @@ public class InputHelper { return sb.toString(); } else { - return "null object"; + return "null"; } } @@ -67,7 +67,7 @@ public class InputHelper { if(stack != null) { return ""; } else { - return "null object"; + return "null"; } } diff --git a/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java b/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java new file mode 100644 index 0000000..129dfd1 --- /dev/null +++ b/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java @@ -0,0 +1,66 @@ +package modtweaker2.mods.appeng.Commands; + +import java.util.LinkedList; +import java.util.List; + +import minetweaker.MineTweakerAPI; +import minetweaker.MineTweakerImplementationAPI; +import minetweaker.api.player.IPlayer; +import minetweaker.api.server.ICommandFunction; +import modtweaker2.helpers.InputHelper; +import net.minecraft.item.ItemStack; +import appeng.api.AEApi; +import appeng.api.features.IGrinderEntry; +import appeng.api.features.IInscriberRecipe; + +public class AppliedEnergisticsLogger implements ICommandFunction { + + @Override + public void execute(String[] arguments, IPlayer player) { + List args = new LinkedList(); + + for(String arg : arguments) { + args.add(arg.toLowerCase()); + } + + if(args.isEmpty() || args.contains("grinder")) { + for(IGrinderEntry recipe : AEApi.instance().registries().grinder().getRecipes()) { + MineTweakerAPI.logCommand(String.format("mods.appeng.Grinder.addRecipe(%s, %s, %d, %s, %s, %s, %s);", + InputHelper.getStackDescription(recipe.getInput()), + InputHelper.getStackDescription(recipe.getOutput()), + recipe.getEnergyCost(), + InputHelper.getStackDescription(recipe.getOptionalOutput()), + recipe.getOptionalChance(), + InputHelper.getStackDescription(recipe.getSecondOptionalOutput()), + recipe.getSecondOptionalChance())); + } + } + + if(args.isEmpty() || args.contains("inscriber")) { + for(IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes()) { + MineTweakerAPI.logCommand(String.format("mods.appeng.Inscriber.addRecipe(%s, %s, %s, %s, \"%s\");", + getArrayDescription(recipe.getInputs()), + InputHelper.getStackDescription(recipe.getTopOptional().orNull()), + InputHelper.getStackDescription(recipe.getBottomOptional().orNull()), + InputHelper.getStackDescription(recipe.getOutput()), + recipe.getProcessType().toString())); + } + } + + if (player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("List generated; see minetweaker.log in your minecraft dir")); + } + } + + private String getArrayDescription(List stacks) { + StringBuilder sb = new StringBuilder(); + sb.append('['); + for(ItemStack stack : stacks) { + sb.append(InputHelper.getStackDescription(stack)).append(", "); + } + sb.setLength(sb.length() - 2); + sb.append(']'); + + return sb.toString(); + } +} From a0a8f2f26e272d91e438e8b7d6598bb82ecb9419 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Tue, 30 Jun 2015 18:04:26 +0200 Subject: [PATCH 04/31] Minor improvements for AE2 recipe logging --- src/main/java/modtweaker2/Commands.java | 4 +- .../java/modtweaker2/helpers/LogHelper.java | 44 ++++++++++ .../Commands/AppliedEnergisticsLogger.java | 86 +++++++++---------- .../mods/appeng/handlers/Inscriber.java | 1 - 4 files changed, 87 insertions(+), 48 deletions(-) diff --git a/src/main/java/modtweaker2/Commands.java b/src/main/java/modtweaker2/Commands.java index 25e6f1b..4b0d3f9 100644 --- a/src/main/java/modtweaker2/Commands.java +++ b/src/main/java/modtweaker2/Commands.java @@ -4,7 +4,7 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.player.IPlayer; import minetweaker.api.server.ICommandFunction; import modtweaker2.commands.EntityMappingLogger; -import modtweaker2.mods.appeng.Commands.AppliedEnergisticsLogger; +import modtweaker2.mods.appeng.commands.AppliedEnergisticsLogger; import modtweaker2.mods.auracascade.aura.AuraLogger; import modtweaker2.mods.botania.commands.BotaniaBrewLogger; import modtweaker2.mods.botania.commands.BotaniaOrechidLogger; @@ -34,7 +34,7 @@ public class Commands { MineTweakerAPI.server.addMineTweakerCommand("entities", new String[] { "/minetweaker entities", " Outputs a list of entities class mapping keys and the entity IDs" }, new EntityMappingLogger()); if (TweakerPlugin.isLoaded("appliedenergistics2-core")) { - MineTweakerAPI.server.addMineTweakerCommand("ae2", new String[] {"/minetweaker ae2 ([Grinder/Inscriber])", " Outputs a list of all Applied Energistics 2 recipes."}, new AppliedEnergisticsLogger()); + MineTweakerAPI.server.addMineTweakerCommand("ae2", new String[] {"/minetweaker ae2 [FILTER]", " Outputs a list of all Applied Energistics 2 recipes."}, new AppliedEnergisticsLogger()); } if (TweakerPlugin.isLoaded("Mekanism")) { diff --git a/src/main/java/modtweaker2/helpers/LogHelper.java b/src/main/java/modtweaker2/helpers/LogHelper.java index cc8b444..f1d8e35 100644 --- a/src/main/java/modtweaker2/helpers/LogHelper.java +++ b/src/main/java/modtweaker2/helpers/LogHelper.java @@ -1,8 +1,12 @@ package modtweaker2.helpers; +import java.util.List; +import java.util.ListIterator; + import minetweaker.MineTweakerAPI; import minetweaker.MineTweakerImplementationAPI; import minetweaker.api.player.IPlayer; +import net.minecraft.item.ItemStack; public class LogHelper { public static void logPrinted(IPlayer player) { @@ -37,4 +41,44 @@ public class LogHelper { public static void logInfo(String message) { MineTweakerAPI.logInfo("[ModTweaker2] " + message); } + + public static String getArrayDescription(List stacks) { + StringBuilder sb = new StringBuilder(); + sb.append('['); + for(ItemStack stack : stacks) { + sb.append(InputHelper.getStackDescription(stack)).append(", "); + } + sb.setLength(sb.length() - 2); + sb.append(']'); + + return sb.toString(); + } + + public static List toLowerCase(List stringList) { + ListIterator iterator = stringList.listIterator(); + + while(iterator.hasNext()) { + iterator.set(iterator.next().toLowerCase()); + } + + return stringList; + } + + public static String join(List list, String conjunction) { + StringBuilder sb = new StringBuilder(); + + if(conjunction == null) { + conjunction = ", "; + } + + if(list != null && !list.isEmpty()) { + for(String string : list) { + sb.append(string).append(conjunction); + } + + sb.setLength(sb.length() - conjunction.length()); + } + + return sb.toString(); + } } diff --git a/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java b/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java index 129dfd1..387c834 100644 --- a/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java +++ b/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java @@ -1,66 +1,62 @@ -package modtweaker2.mods.appeng.Commands; +package modtweaker2.mods.appeng.commands; import java.util.LinkedList; import java.util.List; +import java.util.Arrays; import minetweaker.MineTweakerAPI; import minetweaker.MineTweakerImplementationAPI; import minetweaker.api.player.IPlayer; import minetweaker.api.server.ICommandFunction; import modtweaker2.helpers.InputHelper; -import net.minecraft.item.ItemStack; +import modtweaker2.helpers.LogHelper; import appeng.api.AEApi; import appeng.api.features.IGrinderEntry; import appeng.api.features.IInscriberRecipe; public class AppliedEnergisticsLogger implements ICommandFunction { + private static final List validArguments = new LinkedList(); + + static { + validArguments.add("grinder"); + validArguments.add("inscriber"); + } + @Override public void execute(String[] arguments, IPlayer player) { - List args = new LinkedList(); + List args = LogHelper.toLowerCase(Arrays.asList(arguments)); - for(String arg : arguments) { - args.add(arg.toLowerCase()); + if(!validArguments.containsAll(args)) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + LogHelper.join(validArguments, ", "))); + } else { + if(args.isEmpty() || args.contains("grinder")) { + for(IGrinderEntry recipe : AEApi.instance().registries().grinder().getRecipes()) { + MineTweakerAPI.logCommand(String.format("mods.appeng.Grinder.addRecipe(%s, %s, %d, %s, %s, %s, %s);", + InputHelper.getStackDescription(recipe.getInput()), + InputHelper.getStackDescription(recipe.getOutput()), + recipe.getEnergyCost(), + InputHelper.getStackDescription(recipe.getOptionalOutput()), + recipe.getOptionalChance(), + InputHelper.getStackDescription(recipe.getSecondOptionalOutput()), + recipe.getSecondOptionalChance())); + } + } + + if(args.isEmpty() || args.contains("inscriber")) { + for(IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes()) { + MineTweakerAPI.logCommand(String.format("mods.appeng.Inscriber.addRecipe(%s, %s, %s, %s, \"%s\");", + LogHelper.getArrayDescription(recipe.getInputs()), + InputHelper.getStackDescription(recipe.getTopOptional().orNull()), + InputHelper.getStackDescription(recipe.getBottomOptional().orNull()), + InputHelper.getStackDescription(recipe.getOutput()), + recipe.getProcessType().toString())); + } + } + + if (player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("List generated; see minetweaker.log in your minecraft dir")); + } } - - if(args.isEmpty() || args.contains("grinder")) { - for(IGrinderEntry recipe : AEApi.instance().registries().grinder().getRecipes()) { - MineTweakerAPI.logCommand(String.format("mods.appeng.Grinder.addRecipe(%s, %s, %d, %s, %s, %s, %s);", - InputHelper.getStackDescription(recipe.getInput()), - InputHelper.getStackDescription(recipe.getOutput()), - recipe.getEnergyCost(), - InputHelper.getStackDescription(recipe.getOptionalOutput()), - recipe.getOptionalChance(), - InputHelper.getStackDescription(recipe.getSecondOptionalOutput()), - recipe.getSecondOptionalChance())); - } - } - - if(args.isEmpty() || args.contains("inscriber")) { - for(IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes()) { - MineTweakerAPI.logCommand(String.format("mods.appeng.Inscriber.addRecipe(%s, %s, %s, %s, \"%s\");", - getArrayDescription(recipe.getInputs()), - InputHelper.getStackDescription(recipe.getTopOptional().orNull()), - InputHelper.getStackDescription(recipe.getBottomOptional().orNull()), - InputHelper.getStackDescription(recipe.getOutput()), - recipe.getProcessType().toString())); - } - } - - if (player != null) { - player.sendChat(MineTweakerImplementationAPI.platform.getMessage("List generated; see minetweaker.log in your minecraft dir")); - } - } - - private String getArrayDescription(List stacks) { - StringBuilder sb = new StringBuilder(); - sb.append('['); - for(ItemStack stack : stacks) { - sb.append(InputHelper.getStackDescription(stack)).append(", "); - } - sb.setLength(sb.length() - 2); - sb.append(']'); - - return sb.toString(); } } diff --git a/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java b/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java index dc5da59..e871951 100644 --- a/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java +++ b/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java @@ -6,7 +6,6 @@ import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.InputHelper.toStacks; import static modtweaker2.helpers.StackHelper.matches; - import java.util.LinkedList; import minetweaker.MineTweakerAPI; From 0b18e5c12e4fc2f8585260d66fdca0f805f2b15e Mon Sep 17 00:00:00 2001 From: Zixxl Date: Wed, 1 Jul 2015 11:04:44 +0200 Subject: [PATCH 05/31] Added command to print Botania recipes --- src/main/java/modtweaker2/Commands.java | 2 + .../java/modtweaker2/helpers/InputHelper.java | 36 ++++++--- .../java/modtweaker2/helpers/LogHelper.java | 44 ---------- .../modtweaker2/helpers/StringHelper.java | 34 ++++++++ .../Commands/AppliedEnergisticsLogger.java | 10 +-- .../mods/botania/commands/BotaniaLogger.java | 81 +++++++++++++++++++ 6 files changed, 149 insertions(+), 58 deletions(-) create mode 100644 src/main/java/modtweaker2/helpers/StringHelper.java create mode 100644 src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java diff --git a/src/main/java/modtweaker2/Commands.java b/src/main/java/modtweaker2/Commands.java index 4b0d3f9..6ddafed 100644 --- a/src/main/java/modtweaker2/Commands.java +++ b/src/main/java/modtweaker2/Commands.java @@ -7,6 +7,7 @@ import modtweaker2.commands.EntityMappingLogger; import modtweaker2.mods.appeng.commands.AppliedEnergisticsLogger; import modtweaker2.mods.auracascade.aura.AuraLogger; import modtweaker2.mods.botania.commands.BotaniaBrewLogger; +import modtweaker2.mods.botania.commands.BotaniaLogger; import modtweaker2.mods.botania.commands.BotaniaOrechidLogger; import modtweaker2.mods.botania.lexicon.commands.LexiconCategoryLogger; import modtweaker2.mods.botania.lexicon.commands.LexiconKnowledgeTypesLogger; @@ -56,6 +57,7 @@ public class Commands { MineTweakerAPI.server.addMineTweakerCommand("botaniaBrews", new String[] { "/minetweaker botaniaBrews", " Outputs a list of keys for botania brews" }, new BotaniaBrewLogger()); MineTweakerAPI.server.addMineTweakerCommand("lexiconKnowledgeTypes", new String[] { "/minetweaker lexiconKnowledgeTypes", " Outputs a list of keys for lexicon knowledge types" }, new LexiconKnowledgeTypesLogger()); MineTweakerAPI.server.addMineTweakerCommand("botaniaOrchid", new String[] { "/minetweaker botaniaOrechid", " Outputs a list of keys for botania orechid weights" }, new BotaniaOrechidLogger()); + MineTweakerAPI.server.addMineTweakerCommand("botania", new String[] { "/minetweaker botania [FILTER]", " Outputs a list of all Botania recipes." }, new BotaniaLogger()); } if (TweakerPlugin.isLoaded("chisel")) { diff --git a/src/main/java/modtweaker2/helpers/InputHelper.java b/src/main/java/modtweaker2/helpers/InputHelper.java index 216a586..f95d2b1 100644 --- a/src/main/java/modtweaker2/helpers/InputHelper.java +++ b/src/main/java/modtweaker2/helpers/InputHelper.java @@ -1,6 +1,7 @@ package modtweaker2.helpers; import java.util.ArrayList; +import java.util.List; import minetweaker.api.entity.IEntity; import minetweaker.api.item.IIngredient; @@ -17,6 +18,7 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.oredict.OreDictionary; public class InputHelper { public static boolean isABlock(IItemStack block) { @@ -30,8 +32,9 @@ public class InputHelper { /** * Returns a string representation of the item which can also be used in scripts */ - public static String getStackDescription(ItemStack stack) { - if(stack != null) { + public static String getStackDescription(Object object) { + if(object instanceof ItemStack) { + ItemStack stack = (ItemStack)object; StringBuilder sb = new StringBuilder(); // Creates a name like or @@ -58,18 +61,33 @@ public class InputHelper { } return sb.toString(); + } else if (object instanceof FluidStack) { + return ""; + } else if (object instanceof String) { + List ores = OreDictionary.getOres((String)object); + if(!ores.isEmpty()) { + return ""; + } else { + return "\"" + (String)object + "\""; + } + } else if (object != null) { + return "\"" + object.toString() + "\""; } else { return "null"; } } - public static String getStackDescription(FluidStack stack) { - if(stack != null) { - return ""; - } else { - return "null"; - } - } + public static String getArrayDescription(List objects) { + StringBuilder sb = new StringBuilder(); + sb.append('['); + for(Object object : objects) { + sb.append(InputHelper.getStackDescription(object)).append(", "); + } + sb.setLength(sb.length() - 2); + sb.append(']'); + + return sb.toString(); + } public static IItemStack[] toStacks(IIngredient[] iIngredient) { ArrayList stacks = new ArrayList(); diff --git a/src/main/java/modtweaker2/helpers/LogHelper.java b/src/main/java/modtweaker2/helpers/LogHelper.java index f1d8e35..cc8b444 100644 --- a/src/main/java/modtweaker2/helpers/LogHelper.java +++ b/src/main/java/modtweaker2/helpers/LogHelper.java @@ -1,12 +1,8 @@ package modtweaker2.helpers; -import java.util.List; -import java.util.ListIterator; - import minetweaker.MineTweakerAPI; import minetweaker.MineTweakerImplementationAPI; import minetweaker.api.player.IPlayer; -import net.minecraft.item.ItemStack; public class LogHelper { public static void logPrinted(IPlayer player) { @@ -41,44 +37,4 @@ public class LogHelper { public static void logInfo(String message) { MineTweakerAPI.logInfo("[ModTweaker2] " + message); } - - public static String getArrayDescription(List stacks) { - StringBuilder sb = new StringBuilder(); - sb.append('['); - for(ItemStack stack : stacks) { - sb.append(InputHelper.getStackDescription(stack)).append(", "); - } - sb.setLength(sb.length() - 2); - sb.append(']'); - - return sb.toString(); - } - - public static List toLowerCase(List stringList) { - ListIterator iterator = stringList.listIterator(); - - while(iterator.hasNext()) { - iterator.set(iterator.next().toLowerCase()); - } - - return stringList; - } - - public static String join(List list, String conjunction) { - StringBuilder sb = new StringBuilder(); - - if(conjunction == null) { - conjunction = ", "; - } - - if(list != null && !list.isEmpty()) { - for(String string : list) { - sb.append(string).append(conjunction); - } - - sb.setLength(sb.length() - conjunction.length()); - } - - return sb.toString(); - } } diff --git a/src/main/java/modtweaker2/helpers/StringHelper.java b/src/main/java/modtweaker2/helpers/StringHelper.java new file mode 100644 index 0000000..9953281 --- /dev/null +++ b/src/main/java/modtweaker2/helpers/StringHelper.java @@ -0,0 +1,34 @@ +package modtweaker2.helpers; + +import java.util.List; +import java.util.ListIterator; + +public class StringHelper { + public static List toLowerCase(List stringList) { + ListIterator iterator = stringList.listIterator(); + + while(iterator.hasNext()) { + iterator.set(iterator.next().toLowerCase()); + } + + return stringList; + } + + public static String join(List list, String conjunction) { + StringBuilder sb = new StringBuilder(); + + if(conjunction == null) { + conjunction = ", "; + } + + if(list != null && !list.isEmpty()) { + for(String string : list) { + sb.append(string).append(conjunction); + } + + sb.setLength(sb.length() - conjunction.length()); + } + + return sb.toString(); + } +} diff --git a/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java b/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java index 387c834..d166987 100644 --- a/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java +++ b/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java @@ -1,15 +1,15 @@ package modtweaker2.mods.appeng.commands; +import java.util.Arrays; import java.util.LinkedList; import java.util.List; -import java.util.Arrays; import minetweaker.MineTweakerAPI; import minetweaker.MineTweakerImplementationAPI; import minetweaker.api.player.IPlayer; import minetweaker.api.server.ICommandFunction; import modtweaker2.helpers.InputHelper; -import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StringHelper; import appeng.api.AEApi; import appeng.api.features.IGrinderEntry; import appeng.api.features.IInscriberRecipe; @@ -25,10 +25,10 @@ public class AppliedEnergisticsLogger implements ICommandFunction { @Override public void execute(String[] arguments, IPlayer player) { - List args = LogHelper.toLowerCase(Arrays.asList(arguments)); + List args = StringHelper.toLowerCase(Arrays.asList(arguments)); if(!validArguments.containsAll(args)) { - player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + LogHelper.join(validArguments, ", "))); + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); } else { if(args.isEmpty() || args.contains("grinder")) { for(IGrinderEntry recipe : AEApi.instance().registries().grinder().getRecipes()) { @@ -46,7 +46,7 @@ public class AppliedEnergisticsLogger implements ICommandFunction { if(args.isEmpty() || args.contains("inscriber")) { for(IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes()) { MineTweakerAPI.logCommand(String.format("mods.appeng.Inscriber.addRecipe(%s, %s, %s, %s, \"%s\");", - LogHelper.getArrayDescription(recipe.getInputs()), + InputHelper.getArrayDescription(recipe.getInputs()), InputHelper.getStackDescription(recipe.getTopOptional().orNull()), InputHelper.getStackDescription(recipe.getBottomOptional().orNull()), InputHelper.getStackDescription(recipe.getOutput()), diff --git a/src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java b/src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java new file mode 100644 index 0000000..8efdf50 --- /dev/null +++ b/src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java @@ -0,0 +1,81 @@ +package modtweaker2.mods.botania.commands; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +import minetweaker.MineTweakerAPI; +import minetweaker.MineTweakerImplementationAPI; +import minetweaker.api.player.IPlayer; +import minetweaker.api.server.ICommandFunction; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.StringHelper; +import vazkii.botania.api.BotaniaAPI; +import vazkii.botania.api.recipe.RecipeElvenTrade; +import vazkii.botania.api.recipe.RecipeManaInfusion; +import vazkii.botania.api.recipe.RecipePetals; +import vazkii.botania.api.recipe.RecipeRuneAltar; + +public class BotaniaLogger implements ICommandFunction { + + private static final List validArguments = new LinkedList(); + + static { + validArguments.add("apothecary"); + validArguments.add("elventrade"); + validArguments.add("manainfusion"); + validArguments.add("runealtar"); + } + + @Override + public void execute(String[] arguments, IPlayer player) { + List args = StringHelper.toLowerCase(Arrays.asList(arguments)); + + if(!validArguments.containsAll(args)) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); + } else { + if(args.isEmpty() || args.contains("apothecary")) { + for(RecipePetals recipe : BotaniaAPI.petalRecipes) { + MineTweakerAPI.logCommand(String.format("mods.botania.Apothecary.addRecipe(%s, %s);", + InputHelper.getStackDescription(recipe.getOutput()), + InputHelper.getArrayDescription(recipe.getInputs()) // Need to resolve "petalXXX" to an item + )); + } + } + + if(args.isEmpty() || args.contains("elventrade")) { + for(RecipeElvenTrade recipe : BotaniaAPI.elvenTradeRecipes) { + MineTweakerAPI.logCommand(String.format("mods.botania.ElvenTrade.addRecipe(%s, %s);", + InputHelper.getStackDescription(recipe.getOutput()), + InputHelper.getArrayDescription(recipe.getInputs() + ))); + } + } + + if(args.isEmpty() || args.contains("manainfusion")) { + for(RecipeManaInfusion recipe : BotaniaAPI.manaInfusionRecipes) { + MineTweakerAPI.logCommand(String.format("mods.botania.ManaInfusion.add%s(%s, %s, %d);", + recipe.isAlchemy() ? "Alchemy" : recipe.isConjuration() ? "Conjuration" : "Infusion", + InputHelper.getStackDescription(recipe.getOutput()), + InputHelper.getStackDescription(recipe.getInput()), + recipe.getManaToConsume() + )); + } + } + + if(args.isEmpty() || args.contains("runealtar")) { + for(RecipeRuneAltar recipe : BotaniaAPI.runeAltarRecipes) { + MineTweakerAPI.logCommand(String.format("mods.botania.RuneAltar.addRecipe(%s, %s, %d);", + InputHelper.getStackDescription(recipe.getOutput()), + InputHelper.getArrayDescription(recipe.getInputs()), + recipe.getManaUsage() + )); + } + } + + if (player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("List generated; see minetweaker.log in your minecraft dir")); + } + } + } +} From 0929891f38b73e5e25bb2a96b5ade70b20edc430 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Wed, 1 Jul 2015 12:04:55 +0200 Subject: [PATCH 06/31] Prevent execution of commands with missing parameters --- .../java/modtweaker2/mods/appeng/handlers/Grind.java | 10 ++++++++++ .../modtweaker2/mods/appeng/handlers/Inscriber.java | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java b/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java index cb03265..90f18b7 100644 --- a/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java +++ b/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java @@ -31,6 +31,11 @@ public class Grind { @ZenMethod public static void addRecipe(IItemStack input, IItemStack output, int energy, @Optional IItemStack output2, @Optional float chance2, @Optional IItemStack output3, @Optional float chance3) { + if(input == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", Grind.name)); + return; + } + // Create recipe IGrinderEntry recipe; @@ -75,6 +80,11 @@ public class Grind { @ZenMethod public static void removeRecipe(IIngredient output) { + if(output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", Grind.name)); + return; + } + // Get list of existing recipes, matching with parameter LinkedList result = new LinkedList(); diff --git a/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java b/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java index e871951..9eaf18f 100644 --- a/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java +++ b/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java @@ -33,6 +33,11 @@ public class Inscriber { @ZenMethod public static void addRecipe(IItemStack[] imprintable, IItemStack plateA, IItemStack plateB, IItemStack out, String type) { + if(imprintable == null || out == null || (!type.equals("Press") || !type.equals("Inscribe"))) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", Inscriber.name)); + return; + } + // Create recipe IInscriberRecipe recipe = new InscriberRecipe(ArrayUtils.toArrayList(toStacks(imprintable)), toStack(out), toStack(plateA), toStack(plateB), InscriberProcessType.valueOf(type)); @@ -95,6 +100,11 @@ public class Inscriber { @ZenMethod public static void removeRecipe(IIngredient output) { + if(output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", Inscriber.name)); + return; + } + // Get list of existing recipes, matching with parameter LinkedList result = new LinkedList(); From 325f4496e40e1763654c556df32eacb08f32cbd3 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Wed, 1 Jul 2015 13:55:19 +0200 Subject: [PATCH 07/31] Added command to print TConstruct recipes --- src/main/java/modtweaker2/Commands.java | 2 + .../java/modtweaker2/helpers/InputHelper.java | 13 ++- .../tconstruct/commands/TConstructLogger.java | 101 ++++++++++++++++++ .../mods/tconstruct/handlers/Smeltery.java | 2 +- 4 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 src/main/java/modtweaker2/mods/tconstruct/commands/TConstructLogger.java diff --git a/src/main/java/modtweaker2/Commands.java b/src/main/java/modtweaker2/Commands.java index 6ddafed..9d10d0e 100644 --- a/src/main/java/modtweaker2/Commands.java +++ b/src/main/java/modtweaker2/Commands.java @@ -16,6 +16,7 @@ import modtweaker2.mods.chisel.commands.ChiselGroupLogger; import modtweaker2.mods.chisel.commands.ChiselVariationLogger; import modtweaker2.mods.mekanism.gas.GasLogger; import modtweaker2.mods.tconstruct.MaterialLogger; +import modtweaker2.mods.tconstruct.commands.TConstructLogger; import modtweaker2.mods.thaumcraft.commands.AspectLogger; import modtweaker2.mods.thaumcraft.research.commands.ResearchLogger; import modtweaker2.utils.TweakerPlugin; @@ -49,6 +50,7 @@ public class Commands { if (TweakerPlugin.isLoaded("TConstruct")) { MineTweakerAPI.server.addMineTweakerCommand("materials", new String[] { "/minetweaker materials", " Outputs a list of all Tinker's Construct material names in the game to the minetweaker log" }, new MaterialLogger()); + MineTweakerAPI.server.addMineTweakerCommand("tconstruct", new String[]{ "/minetweaker tconstruct [FILTER]", " Outputs a list of all Tinkers Construct recipes."}, new TConstructLogger()); } if (TweakerPlugin.isLoaded("Botania")) { diff --git a/src/main/java/modtweaker2/helpers/InputHelper.java b/src/main/java/modtweaker2/helpers/InputHelper.java index f95d2b1..d4a0e56 100644 --- a/src/main/java/modtweaker2/helpers/InputHelper.java +++ b/src/main/java/modtweaker2/helpers/InputHelper.java @@ -62,9 +62,20 @@ public class InputHelper { return sb.toString(); } else if (object instanceof FluidStack) { - return ""; + FluidStack stack = (FluidStack)object; + StringBuilder sb = new StringBuilder(); + + sb.append("'); + + if(stack.amount > 1) { + sb.append(" * ").append(stack.amount); + } + + return sb.toString(); } else if (object instanceof String) { List ores = OreDictionary.getOres((String)object); + + // Check if string specifies an oredict entry if(!ores.isEmpty()) { return ""; } else { diff --git a/src/main/java/modtweaker2/mods/tconstruct/commands/TConstructLogger.java b/src/main/java/modtweaker2/mods/tconstruct/commands/TConstructLogger.java new file mode 100644 index 0000000..57d505e --- /dev/null +++ b/src/main/java/modtweaker2/mods/tconstruct/commands/TConstructLogger.java @@ -0,0 +1,101 @@ +package modtweaker2.mods.tconstruct.commands; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; +import java.util.Map.Entry; + +import mantle.utils.ItemMetaWrapper; +import minetweaker.MineTweakerAPI; +import minetweaker.MineTweakerImplementationAPI; +import minetweaker.api.player.IPlayer; +import minetweaker.api.server.ICommandFunction; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.StringHelper; +import modtweaker2.mods.tconstruct.TConstructHelper; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import tconstruct.library.crafting.AlloyMix; +import tconstruct.library.crafting.CastingRecipe; +import tconstruct.library.crafting.DryingRackRecipes; +import tconstruct.library.crafting.DryingRackRecipes.DryingRecipe; + +public class TConstructLogger implements ICommandFunction { + private static final List validArguments = new LinkedList(); + + static { + validArguments.add("casting"); + validArguments.add("drying"); + validArguments.add("smeltery"); + } + + @Override + public void execute(String[] arguments, IPlayer player) { + List args = StringHelper.toLowerCase(Arrays.asList(arguments)); + + if(!validArguments.containsAll(args)) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); + } else { + if(args.isEmpty() || args.contains("casting")) { + for(CastingRecipe recipe : TConstructHelper.basinCasting) { + MineTweakerAPI.logCommand(String.format("mods.tconstruct.Casting.addBasinRecipe(%s, %s, %s, %s, %d);", + InputHelper.getStackDescription(recipe.output), + InputHelper.getStackDescription(recipe.castingMetal), + InputHelper.getStackDescription(recipe.cast), + recipe.consumeCast, + recipe.coolTime)); + } + + for(CastingRecipe recipe : TConstructHelper.tableCasting) { + MineTweakerAPI.logCommand(String.format("mods.tconstruct.Casting.addTableRecipe(%s, %s, %s, %s, %d);", + InputHelper.getStackDescription(recipe.output), + InputHelper.getStackDescription(recipe.castingMetal), + InputHelper.getStackDescription(recipe.cast), + recipe.consumeCast, + recipe.coolTime)); + } + } + + if(args.isEmpty() || args.contains("drying")) { + for(DryingRecipe recipe : DryingRackRecipes.recipes) { + MineTweakerAPI.logCommand(String.format("mods.tconstruct.Drying.addRecipe(%s, %s, %d);", + InputHelper.getStackDescription(recipe.input), + InputHelper.getStackDescription(recipe.result), + recipe.time)); + } + } + + if(args.isEmpty() || args.contains("smeltery")) { + + for(Entry recipe : TConstructHelper.smeltingList.entrySet()) { + int temperature = TConstructHelper.temperatureList.get(recipe.getKey()); + ItemStack renderItem = TConstructHelper.renderIndex.get(recipe.getKey()); + + MineTweakerAPI.logCommand(String.format("mods.tconstruct.Smeltery.addMelting(%s, %s, %d, %s);", + InputHelper.getStackDescription(new ItemStack(recipe.getKey().item, 1, recipe.getKey().meta)), + InputHelper.getStackDescription(recipe.getValue()), + temperature, + InputHelper.getStackDescription(renderItem))); + } + + for(AlloyMix recipe : TConstructHelper.alloys) { + MineTweakerAPI.logCommand(String.format("mods.tconstruct.Smeltery.addAlloy(%s, %s);", + InputHelper.getStackDescription(recipe.result), + InputHelper.getArrayDescription(recipe.mixers))); + } + + for(Entry fuel : TConstructHelper.fuelList.entrySet()) { + MineTweakerAPI.logCommand(String.format("mods.tconstruct.Smeltery.addFuel(%s, %d, %d);", + InputHelper.getStackDescription(new FluidStack(fuel.getKey(), 1)), + fuel.getValue()[0], + fuel.getValue()[1])); + } + } + + if (player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("List generated; see minetweaker.log in your minecraft dir")); + } + } + } +} diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java index 352d5a0..01ce940 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java @@ -211,7 +211,7 @@ public class Smeltery { ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removFuel(IIngredient input) { + public static void removeFuel(IIngredient input) { Map recipes = new HashMap(); for(Entry fuel : TConstructHelper.fuelList.entrySet()) { From 40605f5fa96b679cdad4914dc76dcd5f3a8706a4 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Fri, 3 Jul 2015 17:09:37 +0200 Subject: [PATCH 08/31] Continuing work - Fixed bugs in BaseMap-Addition/Removal - Reworked handlers for TE Transposer & Smelter - Added recipe logging for TE Transposer & Smelter --- src/main/java/modtweaker2/Commands.java | 6 + .../java/modtweaker2/helpers/InputHelper.java | 17 +- .../Commands/AppliedEnergisticsLogger.java | 4 +- .../mods/botania/commands/BotaniaLogger.java | 4 +- .../tconstruct/commands/TConstructLogger.java | 4 +- .../mods/thermalexpansion/ThermalHelper.java | 11 +- .../commands/ThermalExpansionLogger.java | 81 +++++ .../thermalexpansion/handlers/Smelter.java | 136 ++++---- .../thermalexpansion/handlers/Transposer.java | 312 ++++++++++-------- .../modtweaker2/utils/BaseListAddition.java | 16 +- .../modtweaker2/utils/BaseMapAddition.java | 38 ++- .../utils/BaseMapModification.java | 2 +- .../modtweaker2/utils/BaseMapRemoval.java | 14 +- 13 files changed, 380 insertions(+), 265 deletions(-) create mode 100644 src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java diff --git a/src/main/java/modtweaker2/Commands.java b/src/main/java/modtweaker2/Commands.java index 9d10d0e..a412b14 100644 --- a/src/main/java/modtweaker2/Commands.java +++ b/src/main/java/modtweaker2/Commands.java @@ -19,6 +19,7 @@ import modtweaker2.mods.tconstruct.MaterialLogger; import modtweaker2.mods.tconstruct.commands.TConstructLogger; import modtweaker2.mods.thaumcraft.commands.AspectLogger; import modtweaker2.mods.thaumcraft.research.commands.ResearchLogger; +import modtweaker2.mods.thermalexpansion.commands.ThermalExpansionLogger; import modtweaker2.utils.TweakerPlugin; public class Commands { @@ -66,9 +67,14 @@ public class Commands { MineTweakerAPI.server.addMineTweakerCommand("chiselGroups", new String[] { "/minetweaker chiselGroups", " Outputs a list of chisel groups" }, new ChiselGroupLogger()); MineTweakerAPI.server.addMineTweakerCommand("chiselVariations", new String[] { "/minetweaker chiselVariations", "/minetweaker chiselVariations [GROUP]", " Outputs a list of chisel variations" }, new ChiselVariationLogger()); } + if (TweakerPlugin.isLoaded("aura")) { MineTweakerAPI.server.addMineTweakerCommand("auras", new String[] { "/minetweaker auras", "Outputs a list of Aura Types" }, new AuraLogger()); } + + if (TweakerPlugin.isLoaded("ThermalExpansion")) { + MineTweakerAPI.server.addMineTweakerCommand("texpansion", new String[] {"/minetweaker texpansion [FILTER]", " Outputs a list of all Thermal Expansion recipes."}, new ThermalExpansionLogger()); + } } } diff --git a/src/main/java/modtweaker2/helpers/InputHelper.java b/src/main/java/modtweaker2/helpers/InputHelper.java index d4a0e56..81d39cb 100644 --- a/src/main/java/modtweaker2/helpers/InputHelper.java +++ b/src/main/java/modtweaker2/helpers/InputHelper.java @@ -88,14 +88,19 @@ public class InputHelper { } } - public static String getArrayDescription(List objects) { + public static String getArrayDescription(List objects) { StringBuilder sb = new StringBuilder(); - sb.append('['); - for(Object object : objects) { - sb.append(InputHelper.getStackDescription(object)).append(", "); + + if(objects.isEmpty()) { + sb.append("[]"); + } else { + sb.append('['); + for(Object object : objects) { + sb.append(InputHelper.getStackDescription(object)).append(", "); + } + sb.setLength(sb.length() - 2); + sb.append(']'); } - sb.setLength(sb.length() - 2); - sb.append(']'); return sb.toString(); } diff --git a/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java b/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java index d166987..da2f6e1 100644 --- a/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java +++ b/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java @@ -28,7 +28,9 @@ public class AppliedEnergisticsLogger implements ICommandFunction { List args = StringHelper.toLowerCase(Arrays.asList(arguments)); if(!validArguments.containsAll(args)) { - player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); + if(player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); + } } else { if(args.isEmpty() || args.contains("grinder")) { for(IGrinderEntry recipe : AEApi.instance().registries().grinder().getRecipes()) { diff --git a/src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java b/src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java index 8efdf50..bc04dab 100644 --- a/src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java +++ b/src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java @@ -32,7 +32,9 @@ public class BotaniaLogger implements ICommandFunction { List args = StringHelper.toLowerCase(Arrays.asList(arguments)); if(!validArguments.containsAll(args)) { - player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); + if(player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); + } } else { if(args.isEmpty() || args.contains("apothecary")) { for(RecipePetals recipe : BotaniaAPI.petalRecipes) { diff --git a/src/main/java/modtweaker2/mods/tconstruct/commands/TConstructLogger.java b/src/main/java/modtweaker2/mods/tconstruct/commands/TConstructLogger.java index 57d505e..5080a06 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/commands/TConstructLogger.java +++ b/src/main/java/modtweaker2/mods/tconstruct/commands/TConstructLogger.java @@ -35,7 +35,9 @@ public class TConstructLogger implements ICommandFunction { List args = StringHelper.toLowerCase(Arrays.asList(arguments)); if(!validArguments.containsAll(args)) { - player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); + if(player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); + } } else { if(args.isEmpty() || args.contains("casting")) { for(CastingRecipe recipe : TConstructHelper.basinCasting) { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java b/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java index 2afd17b..fe36bf3 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java @@ -11,15 +11,16 @@ import java.util.Set; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import cofh.lib.inventory.ComparableItemStackSafe; +import cofh.thermalexpansion.util.crafting.SmelterManager.ComparableItemStackSmelter; import cofh.thermalexpansion.util.crafting.SmelterManager.RecipeSmelter; import cofh.thermalexpansion.util.crafting.TransposerManager.RecipeTransposer; public class ThermalHelper { - private static Map smelter; - public static Set smelterValid; + private static Map, RecipeSmelter> smelter; + public static Set smelterValid; private static Map crucible; - private static Map transposerFill; + private static Map, RecipeTransposer> transposerFill; private static Map transposerEmpty; public static Set transposerValid; @@ -34,7 +35,7 @@ public class ThermalHelper { } /** Need to perform this reflection on the fly as the map is ALWAYS changing, thanks to the way that te handles stuff */ - public static Map getSmelterMap() { + public static Map, RecipeSmelter> getSmelterMap() { try { smelter = getStaticObject(Class.forName("cofh.thermalexpansion.util.crafting.SmelterManager"), "recipeMap"); smelterValid = getStaticObject(Class.forName("cofh.thermalexpansion.util.crafting.SmelterManager"), "validationSet"); @@ -43,7 +44,7 @@ public class ThermalHelper { return smelter; } - public static Map getFillMap() { + public static Map, RecipeTransposer> getFillMap() { try { transposerFill = getStaticObject(Class.forName("cofh.thermalexpansion.util.crafting.TransposerManager"), "recipeMapFill"); transposerValid = getStaticObject(Class.forName("cofh.thermalexpansion.util.crafting.TransposerManager"), "validationSet"); diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java b/src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java new file mode 100644 index 0000000..1993081 --- /dev/null +++ b/src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java @@ -0,0 +1,81 @@ +package modtweaker2.mods.thermalexpansion.commands; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +import minetweaker.MineTweakerAPI; +import minetweaker.MineTweakerImplementationAPI; +import minetweaker.api.player.IPlayer; +import minetweaker.api.server.ICommandFunction; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.StringHelper; +import modtweaker2.mods.thermalexpansion.ThermalHelper; +import cofh.thermalexpansion.util.crafting.SmelterManager.RecipeSmelter; +import cofh.thermalexpansion.util.crafting.TransposerManager.RecipeTransposer; + +public class ThermalExpansionLogger implements ICommandFunction { + private static final List validArguments = new LinkedList(); + + static { + validArguments.add("crucible"); + validArguments.add("furnace"); + validArguments.add("pulverizer"); + validArguments.add("sawmill"); + validArguments.add("transposer"); + } + + @Override + public void execute(String[] arguments, IPlayer player) { + List args = StringHelper.toLowerCase(Arrays.asList(arguments)); + + if(!validArguments.containsAll(args)) { + if(player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); + } + } else { + if(args.isEmpty() || args.contains("smelter")) { + for(RecipeSmelter recipe : ThermalHelper.getSmelterMap().values()) { + if(recipe.getSecondaryOutput() != null) { + MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Smelter.addRecipe(%d, %s, %s, %s, %s, %d);", + recipe.getEnergy(), + InputHelper.getStackDescription(recipe.getPrimaryInput()), + InputHelper.getStackDescription(recipe.getSecondaryInput()), + InputHelper.getStackDescription(recipe.getPrimaryOutput()), + InputHelper.getStackDescription(recipe.getSecondaryOutput()), + recipe.getSecondaryOutputChance())); + } else { + MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Smelter.addRecipe(%d, %s, %s, %s);", + recipe.getEnergy(), + InputHelper.getStackDescription(recipe.getPrimaryInput()), + InputHelper.getStackDescription(recipe.getSecondaryInput()), + InputHelper.getStackDescription(recipe.getPrimaryOutput()))); + } + } + } + + if(args.isEmpty() || args.contains("transposer")) { + for(RecipeTransposer recipe : ThermalHelper.getFillMap().values()) { + MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Transposer.addFillRecipe(%d, %s, %s, %s);", + recipe.getEnergy(), + InputHelper.getStackDescription(recipe.getInput()), + InputHelper.getStackDescription(recipe.getOutput()), + InputHelper.getStackDescription(recipe.getFluid()))); + } + + for(RecipeTransposer recipe : ThermalHelper.getExtractMap().values()) { + MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Transposer.addExtractRecipe(%d, %s, %s, %s, %d);", + recipe.getEnergy(), + InputHelper.getStackDescription(recipe.getInput()), + InputHelper.getStackDescription(recipe.getOutput()), + InputHelper.getStackDescription(recipe.getFluid()), + recipe.getChance())); + } + } + + if (player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("List generated; see minetweaker.log in your minecraft dir")); + } + } + } +} diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java index 44e25c9..7d8bfbf 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java @@ -1,38 +1,34 @@ package modtweaker2.mods.thermalexpansion.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; import java.util.Arrays; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.thermalexpansion.ThermalHelper; -import modtweaker2.utils.BaseMultiModification; +import modtweaker2.utils.BaseMapAddition; +import modtweaker2.utils.BaseMapRemoval; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; -import cofh.lib.inventory.ComparableItemStackSafe; +import cofh.thermalexpansion.util.crafting.SmelterManager; +import cofh.thermalexpansion.util.crafting.SmelterManager.ComparableItemStackSmelter; import cofh.thermalexpansion.util.crafting.SmelterManager.RecipeSmelter; @ZenClass("mods.thermalexpansion.Smelter") public class Smelter { - private static boolean removeValidated(ComparableItemStackSafe stack) { - for (Map.Entry entry : ThermalHelper.getSmelterMap().entrySet()) { - if (entry != null && entry.getValue() != null) { - RecipeSmelter recipe = (RecipeSmelter) entry.getValue(); - if (recipe != null) { - if (stack.equals(new ComparableItemStackSafe(recipe.getPrimaryInput()))) { - return false; - } else if (stack.equals(new ComparableItemStackSafe(recipe.getSecondaryInput()))) { - return false; - } - } - } - } - return ThermalHelper.smelterValid.remove(stack); - } + + public static final String name = "Thermal Expansion Smelter"; @ZenMethod public static void addRecipe(int energy, IItemStack input, IItemStack input2, IItemStack output) { @@ -45,94 +41,86 @@ public class Smelter { ItemStack in2 = toStack(input2); ItemStack out1 = toStack(output); ItemStack out2 = toStack(output2); - RecipeSmelter recipe = (RecipeSmelter) ThermalHelper.getTERecipe(ThermalHelper.smelterRecipe, in1, in2, out1, out2, chance, energy); - MineTweakerAPI.apply(new Add(in1, in2, recipe)); + List key = Arrays.asList(new ComparableItemStackSmelter[] { new ComparableItemStackSmelter(in1), new ComparableItemStackSmelter(in2) }); + RecipeSmelter value = (RecipeSmelter) ThermalHelper.getTERecipe(ThermalHelper.smelterRecipe, in1, in2, out1, out2, chance, energy); + + Map, RecipeSmelter> recipes = new HashMap, RecipeSmelter>(); + + recipes.put(key, value); + + MineTweakerAPI.apply(new Add(recipes)); } - private static class Add extends BaseMultiModification { - private final ComparableItemStackSafe input1; - private final ComparableItemStackSafe input2; - private final List key; - private final RecipeSmelter recipe; - - public Add(ItemStack input1, ItemStack input2, RecipeSmelter recipe) { - super("Induction Smelter"); - this.input1 = new ComparableItemStackSafe(input1); - this.input2 = new ComparableItemStackSafe(input2); - this.key = (Arrays.asList(new ComparableItemStackSafe[] { this.input1, this.input2 })); - this.recipe = recipe; + private static class Add extends BaseMapAddition, RecipeSmelter> { + public Add(Map, RecipeSmelter> recipes) { + super(Smelter.name, ThermalHelper.getSmelterMap(), recipes); } @Override public void apply() { - ThermalHelper.getSmelterMap().put(key, recipe); - ThermalHelper.smelterValid.add(input1); - ThermalHelper.smelterValid.add(input2); - } - - @Override - public boolean canUndo() { - return ThermalHelper.getSmelterMap() != null; + map = ThermalHelper.getSmelterMap(); + super.apply(); + SmelterManager.refreshRecipes(); } @Override public void undo() { - ThermalHelper.getSmelterMap().remove(key); - removeValidated(input1); - removeValidated(input2); + map = ThermalHelper.getSmelterMap(); + super.undo(); + SmelterManager.refreshRecipes(); } @Override - public String getRecipeInfo() { - return ((RecipeSmelter) recipe).getPrimaryOutput().getDisplayName(); + public String getRecipeInfo(Entry, RecipeSmelter> recipe) { + return InputHelper.getStackDescription(recipe.getValue().getPrimaryOutput()); } } // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack input, IItemStack input2) { - - MineTweakerAPI.apply(new Remove(toStack(input), toStack(input2))); + public static void removeRecipe(IIngredient input1, IIngredient input2) { + Map, RecipeSmelter> recipes = new HashMap, RecipeSmelter>(); + + for(Entry, RecipeSmelter> entry : ThermalHelper.getSmelterMap().entrySet()) { + RecipeSmelter recipe = entry.getValue(); + + if(recipe != null && matches(input1, toIItemStack(recipe.getPrimaryInput())) && matches(input2, toIItemStack(recipe.getSecondaryInput()))) { + recipes.put(entry.getKey(), entry.getValue()); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipes found for %s and %s. Command ignored!", Smelter.name, input1.toString(), input2.toString())); + } } - private static class Remove extends BaseMultiModification { - private final ComparableItemStackSafe input1; - private final ComparableItemStackSafe input2; - private final List key; - private RecipeSmelter recipe; + private static class Remove extends BaseMapRemoval, RecipeSmelter> { - public Remove(ItemStack input1, ItemStack input2) { - super("Induction Smelter"); - this.input1 = new ComparableItemStackSafe(input1); - this.input2 = new ComparableItemStackSafe(input2); - this.key = (Arrays.asList(new ComparableItemStackSafe[] { this.input1, this.input2 })); + public Remove(Map, RecipeSmelter> recipes) { + super(Smelter.name, ThermalHelper.getSmelterMap(), recipes); } @Override public void apply() { - recipe = ThermalHelper.getSmelterMap().get(key); - ThermalHelper.getSmelterMap().remove(key); - removeValidated(input1); - removeValidated(input2); + map = ThermalHelper.getSmelterMap(); + super.apply(); + SmelterManager.refreshRecipes(); } - - @Override - public boolean canUndo() { - return ThermalHelper.getSmelterMap() != null; - } - + @Override public void undo() { - ThermalHelper.getSmelterMap().put(key, recipe); - ThermalHelper.smelterValid.add(input1); - ThermalHelper.smelterValid.add(input2); + map = ThermalHelper.getSmelterMap(); + super.undo(); + SmelterManager.refreshRecipes(); } - @Override - public String getRecipeInfo() { - return input1.toItemStack().getDisplayName() + " + " + input2.toItemStack().getDisplayName(); - } + @Override + public String getRecipeInfo(Entry, RecipeSmelter> recipe) { + return InputHelper.getStackDescription(recipe.getValue().getPrimaryOutput()); + } } } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java index 9251116..0196f52 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java @@ -1,182 +1,208 @@ package modtweaker2.mods.thermalexpansion.handlers; import static modtweaker2.helpers.InputHelper.toFluid; +import static modtweaker2.helpers.InputHelper.toIItemStack; +import static modtweaker2.helpers.InputHelper.toILiquidStack; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; import java.util.Arrays; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.thermalexpansion.ThermalHelper; -import modtweaker2.utils.BaseUndoable; +import modtweaker2.utils.BaseMapAddition; +import modtweaker2.utils.BaseMapRemoval; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import cofh.lib.inventory.ComparableItemStackSafe; +import cofh.thermalexpansion.util.crafting.TransposerManager; import cofh.thermalexpansion.util.crafting.TransposerManager.RecipeTransposer; @ZenClass("mods.thermalexpansion.Transposer") public class Transposer { - private static boolean removeValidated(ComparableItemStackSafe stack) { - // Check if there is a recipe that requires this in the validation set - // for filling - for (Map.Entry entry : ThermalHelper.getFillMap().entrySet()) { - RecipeTransposer recipe = (RecipeTransposer) entry.getValue(); - if (stack.equals(new ComparableItemStackSafe(recipe.getInput()))) { - return false; - } - } - - // Check if there is a recipe that requires this in the validation set - // for extracting - for (Map.Entry entry : ThermalHelper.getExtractMap().entrySet()) { - RecipeTransposer recipe = (RecipeTransposer) entry.getValue(); - if (stack.equals(new ComparableItemStackSafe(recipe.getInput()))) { - return false; - } - } - - return ThermalHelper.transposerValid.remove(stack); - } - + + public static final String nameFill = "Thermal Expansion Transposer (Fill)"; + public static final String nameExtract = "Thermal Expansion Transposer (Extract)"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addFillRecipe(int energy, IItemStack input, IItemStack output, ILiquidStack liquid) { - addRecipe(energy, input, output, liquid, 100, true); + Map, RecipeTransposer> recipes = new HashMap, RecipeTransposer>(); + ItemStack in = toStack(input); + ItemStack out = toStack(output); + FluidStack fluid = toFluid(liquid); + List key = Arrays.asList(new Integer[] { Integer.valueOf(new ComparableItemStackSafe(in).hashCode()), Integer.valueOf(fluid.fluidID) }); + RecipeTransposer value = (RecipeTransposer) ThermalHelper.getTERecipe(ThermalHelper.transposerRecipe, in, out, fluid, energy, 100); + + recipes.put(key, value); + + MineTweakerAPI.apply(new AddFill(recipes)); } @ZenMethod public static void addExtractRecipe(int energy, IItemStack input, IItemStack output, ILiquidStack liquid, int chance) { - addRecipe(energy, input, output, liquid, chance, false); + Map recipes = new HashMap(); + ItemStack in = toStack(input); + ItemStack out = toStack(output); + FluidStack fluid = toFluid(liquid); + ComparableItemStackSafe key = new ComparableItemStackSafe(in); + RecipeTransposer value = (RecipeTransposer) ThermalHelper.getTERecipe(ThermalHelper.transposerRecipe, in, out, fluid, energy, 100); + + recipes.put(key, value); + + MineTweakerAPI.apply(new AddExtract(recipes)); + } + + private static class AddFill extends BaseMapAddition, RecipeTransposer> { + + protected AddFill(Map, RecipeTransposer> recipes) { + super(Transposer.nameFill, ThermalHelper.getFillMap()); + recipes.putAll(recipes); + } + + @Override + public void apply() { + map = ThermalHelper.getFillMap(); + super.apply(); + TransposerManager.refreshRecipes(); + } + + @Override + public void undo() { + map = ThermalHelper.getFillMap(); + super.undo(); + TransposerManager.refreshRecipes(); + } + + @Override + protected String getRecipeInfo(Entry, RecipeTransposer> recipe) { + return InputHelper.getStackDescription(recipe.getValue().getOutput()); + } + } + + private static class AddExtract extends BaseMapAddition { + + protected AddExtract(Map recipes) { + super(Transposer.nameFill, ThermalHelper.getExtractMap()); + recipes.putAll(recipes); + } + + @Override + public void apply() { + map = ThermalHelper.getExtractMap(); + super.apply(); + TransposerManager.refreshRecipes(); + } + + @Override + public void undo() { + map = ThermalHelper.getExtractMap(); + super.undo(); + TransposerManager.refreshRecipes(); + } + + @Override + protected String getRecipeInfo(Entry recipe) { + return InputHelper.getStackDescription(recipe.getValue().getInput()); + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void removeFillRecipe(IIngredient input, IIngredient liquid) { + Map, RecipeTransposer> recipes = new HashMap, RecipeTransposer>(); + for(Entry, RecipeTransposer> recipe : ThermalHelper.getFillMap().entrySet()) { + if(recipe != null && recipe.getValue() != null && matches(input, toIItemStack(recipe.getValue().getInput())) && matches(liquid, toILiquidStack(recipe.getValue().getFluid()))) { + recipes.put(recipe.getKey(), recipe.getValue()); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveFill(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s and %s. Command ignored!", nameFill, input.toString(), liquid.toString())); + } } @ZenMethod - public static void addRecipe(int energy, IItemStack input, IItemStack output, ILiquidStack liquid, int chance, boolean isFillRecipe) { - ItemStack in = toStack(input); - ItemStack out = toStack(output); - FluidStack fluid = toFluid(liquid); - RecipeTransposer recipe = (RecipeTransposer) ThermalHelper.getTERecipe(ThermalHelper.transposerRecipe, in, out, fluid, energy, chance); - - MineTweakerAPI.apply(new Add(in, fluid, recipe, isFillRecipe)); + public static void removeExtractRecipe(IIngredient input) { + Map recipes = new HashMap(); + for(Entry recipe : ThermalHelper.getExtractMap().entrySet()) { + if(recipe != null && recipe.getValue() != null && matches(input, toIItemStack(recipe.getValue().getInput()))) { + recipes.put(recipe.getKey(), recipe.getValue()); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveExtract(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", nameFill, input.toString())); + } + } - private static class Add extends BaseUndoable { - private List key; - private boolean isFillRecipe; - private final ComparableItemStackSafe input; - private final RecipeTransposer recipe; + private static class RemoveFill extends BaseMapRemoval, RecipeTransposer> { - public Add(ItemStack input, FluidStack fluid, RecipeTransposer recipe, boolean isFillRecipe) { - super("Transposer"); - this.isFillRecipe = isFillRecipe; - this.input = new ComparableItemStackSafe(input); + protected RemoveFill(Map, RecipeTransposer> recipes) { + super(nameFill, ThermalHelper.getFillMap(), recipes); + } + + @Override + public void apply() { + map = ThermalHelper.getFillMap(); + super.apply(); + TransposerManager.refreshRecipes(); + } + + @Override + public void undo() { + map = ThermalHelper.getFillMap(); + super.undo(); + TransposerManager.refreshRecipes(); + } - this.recipe = recipe; - if (this.isFillRecipe) { - this.key = Arrays.asList(new Integer[] { Integer.valueOf(new ComparableItemStackSafe(input).hashCode()), Integer.valueOf(fluid.fluidID) }); - } - } - - @Override - public void apply() { - if (isFillRecipe) { - ThermalHelper.getFillMap().put(key, recipe); - } else { - ThermalHelper.getExtractMap().put(input, recipe); - } - - ThermalHelper.transposerValid.add(input); - } - - @Override - public boolean canUndo() { - return input != null; - } - - @Override - public void undo() { - if (isFillRecipe) { - ThermalHelper.getFillMap().remove(key); - } else { - ThermalHelper.getExtractMap().remove(input); - } - - removeValidated(input); - } - - @Override - public String getRecipeInfo() { - return ((RecipeTransposer) recipe).getOutput().getDisplayName(); - } + @Override + protected String getRecipeInfo(Entry, RecipeTransposer> recipe) { + return InputHelper.getStackDescription(recipe.getValue().getOutput()); + } } + + private static class RemoveExtract extends BaseMapRemoval { - // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - @ZenMethod - public static void removeFillRecipe(IItemStack input, ILiquidStack liquid) { - removeRecipe(input, liquid, true); - } + protected RemoveExtract(Map recipes) { + super(nameExtract, ThermalHelper.getExtractMap(), recipes); + } + + @Override + public void apply() { + map = ThermalHelper.getExtractMap(); + super.apply(); + TransposerManager.refreshRecipes(); + } + + @Override + public void undo() { + map = ThermalHelper.getExtractMap(); + super.undo(); + TransposerManager.refreshRecipes(); + } - @ZenMethod - public static void removeExtractRecipe(IItemStack input) { - removeRecipe(input, null, false); - } - - @ZenMethod - public static void removeRecipe(IItemStack input, ILiquidStack liquid, boolean isFillRecipe) { - - MineTweakerAPI.apply(new Remove(toStack(input), toFluid(liquid), isFillRecipe)); - } - - private static class Remove extends BaseUndoable { - private final boolean isFillRecipe; - private final ComparableItemStackSafe input; - private List key; - private RecipeTransposer recipe; - - public Remove(ItemStack input, FluidStack fluid, boolean isFillRecipe) { - super("Transposer"); - this.isFillRecipe = isFillRecipe; - this.input = new ComparableItemStackSafe(input); - if (this.isFillRecipe) { - this.key = Arrays.asList(new Integer[] { Integer.valueOf(new ComparableItemStackSafe(input).hashCode()), Integer.valueOf(fluid.fluidID) }); - } - } - - @Override - public void apply() { - if (isFillRecipe) { - recipe = ThermalHelper.getFillMap().get(key); - ThermalHelper.getFillMap().remove(key); - } else { - recipe = ThermalHelper.getExtractMap().get(input); - ThermalHelper.getExtractMap().remove(input); - } - - removeValidated(input); - } - - @Override - public boolean canUndo() { - return input != null; - } - - @Override - public void undo() { - if (isFillRecipe) { - ThermalHelper.getFillMap().put(key, recipe); - } else { - ThermalHelper.getExtractMap().put(input, recipe); - } - - ThermalHelper.transposerValid.add(input); - } - - @Override - public String getRecipeInfo() { - return input.toItemStack().getDisplayName(); - } - } + @Override + protected String getRecipeInfo(Entry recipe) { + return InputHelper.getStackDescription(recipe.getValue().getInput()); + } + } } diff --git a/src/main/java/modtweaker2/utils/BaseListAddition.java b/src/main/java/modtweaker2/utils/BaseListAddition.java index db66588..9e16460 100644 --- a/src/main/java/modtweaker2/utils/BaseListAddition.java +++ b/src/main/java/modtweaker2/utils/BaseListAddition.java @@ -25,13 +25,13 @@ public abstract class BaseListAddition extends BaseListModification { for(T recipe : recipes) { if(recipe != null) { - if(this.list.add(recipe)) { + if(list.add(recipe)) { successful.add(recipe); } else { - LogHelper.logError(String.format("Error adding %s Recipe for %s", this.name, this.getRecipeInfo(recipe))); + LogHelper.logError(String.format("Error adding %s Recipe for %s", name, getRecipeInfo(recipe))); } } else { - LogHelper.logError(String.format("Error adding %s Recipe: null object", this.name)); + LogHelper.logError(String.format("Error adding %s Recipe: null object", name)); } } } @@ -44,22 +44,22 @@ public abstract class BaseListAddition extends BaseListModification { for(T recipe : successful) { if(recipe != null) { - if(!this.list.remove(recipe)) { - LogHelper.logError(String.format("Error removing %s Recipe for %s", this.name, this.getRecipeInfo(recipe))); + if(!list.remove(recipe)) { + LogHelper.logError(String.format("Error removing %s Recipe for %s", name, this.getRecipeInfo(recipe))); } } else { - LogHelper.logError(String.format("Error removing %s Recipe: null object", this.name)); + LogHelper.logError(String.format("Error removing %s Recipe: null object", name)); } } } @Override public String describe() { - return String.format("[ModTweaker2] Adding %d %s Recipe(s) for %s", this.recipes.size(), this.name, this.getRecipeInfo()); + return String.format("[ModTweaker2] Adding %d %s Recipe(s) for %s", recipes.size(), name, getRecipeInfo()); } @Override public String describeUndo() { - return String.format("[ModTweaker2] Removing %d %s Recipe(s) for %s", this.recipes.size(), this.name, this.getRecipeInfo()); + return String.format("[ModTweaker2] Removing %d %s Recipe(s) for %s", recipes.size(), name, getRecipeInfo()); } } \ No newline at end of file diff --git a/src/main/java/modtweaker2/utils/BaseMapAddition.java b/src/main/java/modtweaker2/utils/BaseMapAddition.java index 354993a..424ae6f 100644 --- a/src/main/java/modtweaker2/utils/BaseMapAddition.java +++ b/src/main/java/modtweaker2/utils/BaseMapAddition.java @@ -18,7 +18,7 @@ public abstract class BaseMapAddition extends BaseMapModification { protected BaseMapAddition(String name, Map map, Map recipes) { this(name, map); - recipes.putAll(recipes); + this.recipes.putAll(recipes); } @Override @@ -27,37 +27,39 @@ public abstract class BaseMapAddition extends BaseMapModification { return; for(Entry entry : recipes.entrySet()) { - V value = map.put(entry.getKey(), entry.getValue()); - if(value != null) { + K key = entry.getKey(); + V value = entry.getValue(); + V oldValue = map.put(key, value); + + if(oldValue != null) { LogHelper.logWarning(String.format("Overwritten %s Recipe for %s", name, getRecipeInfo( new AbstractMap.SimpleEntry(entry.getKey(), value)))); - overwritten.put(entry.getKey(), value); + overwritten.put(key, oldValue); } - successful.put(entry.getKey(), entry.getValue()); + + successful.put(key, value); } } @Override public void undo() { - if(successful.isEmpty() || overwritten.isEmpty()) + if(successful.isEmpty() && overwritten.isEmpty()) return; - - for(K key : recipes.keySet()) { - map.remove(key); - } - + for(Entry entry : successful.entrySet()) { - V value = map.remove(entry.getKey()); - + K key = entry.getKey(); + V value = map.remove(key); + if(value == null) { LogHelper.logError(String.format("Error removing %s Recipe: null object", name)); } - } for(Entry entry : overwritten.entrySet()) { - V value = map.put(entry.getKey(), entry.getValue()); + K key = entry.getKey(); + V value = entry.getValue(); + V oldValue = map.put(key, value); - if(value != null) { + if(oldValue != null) { LogHelper.logWarning(String.format("Overwritten %s Recipe which should not exist for %s", name, getRecipeInfo(new AbstractMap.SimpleEntry(entry.getKey(), value)))); } } @@ -65,11 +67,11 @@ public abstract class BaseMapAddition extends BaseMapModification { @Override public String describe() { - return String.format("Adding %d %s Recipe(s) for %d", recipes.size(), name, getRecipeInfo()); + return String.format("Adding %d %s Recipe(s) for %s", recipes.size(), name, getRecipeInfo()); } @Override public String describeUndo() { - return String.format("Removing %d %s Recipe(s) for %d", recipes.size(), name, getRecipeInfo()); + return String.format("Removing %d %s Recipe(s) for %s", recipes.size(), name, getRecipeInfo()); } } diff --git a/src/main/java/modtweaker2/utils/BaseMapModification.java b/src/main/java/modtweaker2/utils/BaseMapModification.java index 89d5a7a..156b371 100644 --- a/src/main/java/modtweaker2/utils/BaseMapModification.java +++ b/src/main/java/modtweaker2/utils/BaseMapModification.java @@ -5,7 +5,7 @@ import java.util.Map; import java.util.Map.Entry; public abstract class BaseMapModification extends BaseUndoable { - protected final Map map; + protected Map map; protected final HashMap recipes; protected final HashMap successful; diff --git a/src/main/java/modtweaker2/utils/BaseMapRemoval.java b/src/main/java/modtweaker2/utils/BaseMapRemoval.java index 7385483..dcdc9ce 100644 --- a/src/main/java/modtweaker2/utils/BaseMapRemoval.java +++ b/src/main/java/modtweaker2/utils/BaseMapRemoval.java @@ -25,10 +25,10 @@ public abstract class BaseMapRemoval extends BaseMapModification { return; for(K key : recipes.keySet()) { - V value = map.remove(key); + V oldValue = map.remove(key); - if(value != null) { - successful.put(key, value); + if(oldValue != null) { + successful.put(key, oldValue); } else { LogHelper.logError(String.format("Error removing %s Recipe : null object", name)); } @@ -42,8 +42,8 @@ public abstract class BaseMapRemoval extends BaseMapModification { for(Entry entry : successful.entrySet()) { if(entry != null) { - V value = map.put(entry.getKey(), entry.getValue()); - if(value != null) { + V oldValue = map.put(entry.getKey(), entry.getValue()); + if(oldValue != null) { LogHelper.logWarning(String.format("Overwritten %s Recipe for %s while restoring.", name, getRecipeInfo(entry))); } } @@ -52,11 +52,11 @@ public abstract class BaseMapRemoval extends BaseMapModification { @Override public String describe() { - return String.format("[ModTweaker2] Removing %d %s Recipe(s) for %d", this.recipes.size(), this.name); + return String.format("[ModTweaker2] Removing %d %s Recipe(s) for %s", recipes.size(), name, getRecipeInfo()); } @Override public String describeUndo() { - return String.format("[ModTweaker2] Restoring %d %s Recipe(s) for %d", this.recipes.size(), this.name); + return String.format("[ModTweaker2] Restoring %d %s Recipe(s) for %s", recipes.size(), name, getRecipeInfo()); } } From 22e09c9392fd11ed1456828db51d04aac19ca55a Mon Sep 17 00:00:00 2001 From: Zixxl Date: Mon, 6 Jul 2015 15:29:24 +0200 Subject: [PATCH 09/31] Thermal Expansion Rework --- .../mods/thermalexpansion/ThermalHelper.java | 79 ++---- .../commands/ThermalExpansionLogger.java | 72 ++++- .../thermalexpansion/handlers/Crucible.java | 143 ++++++---- .../thermalexpansion/handlers/Furnace.java | 146 ++++++---- .../thermalexpansion/handlers/Pulverizer.java | 155 +++++----- .../thermalexpansion/handlers/Sawmill.java | 156 ++++++----- .../thermalexpansion/handlers/Smelter.java | 114 ++++---- .../thermalexpansion/handlers/Transposer.java | 264 +++++++++--------- .../utils/BaseListModification.java | 8 +- .../utils/BaseMapModification.java | 6 +- 10 files changed, 651 insertions(+), 492 deletions(-) diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java b/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java index fe36bf3..a4082a6 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java @@ -1,79 +1,44 @@ package modtweaker2.mods.thermalexpansion; import static modtweaker2.helpers.ReflectionHelper.getConstructor; -import static modtweaker2.helpers.ReflectionHelper.getStaticObject; import java.lang.reflect.Constructor; -import java.util.List; -import java.util.Map; -import java.util.Set; +import modtweaker2.helpers.LogHelper; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; -import cofh.lib.inventory.ComparableItemStackSafe; -import cofh.thermalexpansion.util.crafting.SmelterManager.ComparableItemStackSmelter; +import cofh.thermalexpansion.util.crafting.CrucibleManager.RecipeCrucible; +import cofh.thermalexpansion.util.crafting.FurnaceManager.RecipeFurnace; +import cofh.thermalexpansion.util.crafting.PulverizerManager.RecipePulverizer; +import cofh.thermalexpansion.util.crafting.SawmillManager.RecipeSawmill; import cofh.thermalexpansion.util.crafting.SmelterManager.RecipeSmelter; import cofh.thermalexpansion.util.crafting.TransposerManager.RecipeTransposer; + +@SuppressWarnings("unchecked") public class ThermalHelper { - private static Map, RecipeSmelter> smelter; - public static Set smelterValid; - private static Map crucible; - - private static Map, RecipeTransposer> transposerFill; - private static Map transposerEmpty; - public static Set transposerValid; - - public static Constructor smelterRecipe; - public static Constructor transposerRecipe; - + public static Constructor crucibleRecipe; + public static Constructor furanceRecipe; + public static Constructor pulverizerRecipe; + public static Constructor sawmillRecipe; + public static Constructor smelterRecipe; + public static Constructor transposerRecipe; + static { try { - smelterRecipe = getConstructor("cofh.thermalexpansion.util.crafting.SmelterManager$RecipeSmelter", ItemStack.class, ItemStack.class, ItemStack.class, ItemStack.class, int.class, int.class); + crucibleRecipe = getConstructor("cofh.thermalexpansion.util.crafting.CrucibleManager$RecipeCrucible", ItemStack.class, FluidStack.class, int.class); + furanceRecipe = getConstructor("cofh.thermalexpansion.util.crafting.FurnaceManager$RecipeFurnace", ItemStack.class, ItemStack.class, int.class); + pulverizerRecipe = getConstructor("cofh.thermalexpansion.util.crafting.PulverizerManager$RecipePulverizer", ItemStack.class, ItemStack.class, ItemStack.class, int.class, int.class); + sawmillRecipe = getConstructor("cofh.thermalexpansion.util.crafting.SawmillManager$RecipeSawmill", ItemStack.class, ItemStack.class, ItemStack.class, int.class, int.class); + smelterRecipe = getConstructor("cofh.thermalexpansion.util.crafting.SmelterManager$RecipeSmelter", ItemStack.class, ItemStack.class, ItemStack.class, ItemStack.class, int.class, int.class); transposerRecipe = getConstructor("cofh.thermalexpansion.util.crafting.TransposerManager$RecipeTransposer", ItemStack.class, ItemStack.class, FluidStack.class, int.class, int.class); - } catch (Exception e) {} + } catch (Exception e) { LogHelper.logError("Exception getting constructor for Thermal Expansion recipes!", e); } } - /** Need to perform this reflection on the fly as the map is ALWAYS changing, thanks to the way that te handles stuff */ - public static Map, RecipeSmelter> getSmelterMap() { - try { - smelter = getStaticObject(Class.forName("cofh.thermalexpansion.util.crafting.SmelterManager"), "recipeMap"); - smelterValid = getStaticObject(Class.forName("cofh.thermalexpansion.util.crafting.SmelterManager"), "validationSet"); - } catch (Exception e) {} - - return smelter; - } - - public static Map, RecipeTransposer> getFillMap() { - try { - transposerFill = getStaticObject(Class.forName("cofh.thermalexpansion.util.crafting.TransposerManager"), "recipeMapFill"); - transposerValid = getStaticObject(Class.forName("cofh.thermalexpansion.util.crafting.TransposerManager"), "validationSet"); - } catch (Exception e) {} - - return transposerFill; - } - - public static Map getExtractMap() { - try { - transposerEmpty = getStaticObject(Class.forName("cofh.thermalexpansion.util.crafting.TransposerManager"), "recipeMapExtraction"); - transposerValid = getStaticObject(Class.forName("cofh.thermalexpansion.util.crafting.TransposerManager"), "validationSet"); - } catch (Exception e) {} - - return transposerEmpty; - } - - public static boolean removeCrucibleRecipe(ItemStack input) { - try { - crucible = getStaticObject(Class.forName("cofh.thermalexpansion.util.crafting.CrucibleManager"), "recipeMap"); - } catch (Exception e) {} - - return crucible.remove(new ComparableItemStackSafe(input)) != null; - } - - public static Object getTERecipe(Constructor constructor, Object... items) { + public static T getTERecipe(Constructor constructor, Object... items) { try { return constructor.newInstance(items); - } catch (Exception e) {} + } catch (Exception e) { LogHelper.logError("Exception creating instance of Thermal Expansion recipe!", e); } return null; } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java b/src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java index 1993081..9aead53 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java @@ -10,8 +10,17 @@ import minetweaker.api.player.IPlayer; import minetweaker.api.server.ICommandFunction; import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.StringHelper; -import modtweaker2.mods.thermalexpansion.ThermalHelper; +import cofh.thermalexpansion.util.crafting.CrucibleManager; +import cofh.thermalexpansion.util.crafting.CrucibleManager.RecipeCrucible; +import cofh.thermalexpansion.util.crafting.FurnaceManager; +import cofh.thermalexpansion.util.crafting.FurnaceManager.RecipeFurnace; +import cofh.thermalexpansion.util.crafting.PulverizerManager; +import cofh.thermalexpansion.util.crafting.PulverizerManager.RecipePulverizer; +import cofh.thermalexpansion.util.crafting.SawmillManager; +import cofh.thermalexpansion.util.crafting.SawmillManager.RecipeSawmill; +import cofh.thermalexpansion.util.crafting.SmelterManager; import cofh.thermalexpansion.util.crafting.SmelterManager.RecipeSmelter; +import cofh.thermalexpansion.util.crafting.TransposerManager; import cofh.thermalexpansion.util.crafting.TransposerManager.RecipeTransposer; public class ThermalExpansionLogger implements ICommandFunction { @@ -22,6 +31,7 @@ public class ThermalExpansionLogger implements ICommandFunction { validArguments.add("furnace"); validArguments.add("pulverizer"); validArguments.add("sawmill"); + validArguments.add("smelter"); validArguments.add("transposer"); } @@ -34,8 +44,62 @@ public class ThermalExpansionLogger implements ICommandFunction { player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); } } else { + if(args.isEmpty() || args.contains("crucible")) { + for(RecipeCrucible recipe : CrucibleManager.getRecipeList()) { + MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Crucible.addRecipe(%d, %s, %s);", + recipe.getEnergy(), + InputHelper.getStackDescription(recipe.getInput()), + InputHelper.getStackDescription(recipe.getOutput()))); + } + } + + if(args.isEmpty() || args.contains("furnace")) { + for(RecipeFurnace recipe : FurnaceManager.getRecipeList()) { + MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Furnace.addRecipe(%d, %s, %s);", + recipe.getEnergy(), + InputHelper.getStackDescription(recipe.getInput()), + InputHelper.getStackDescription(recipe.getOutput()))); + } + } + + if(args.isEmpty() || args.contains("pulverizer")) { + for(RecipePulverizer recipe : PulverizerManager.getRecipeList()) { + if(recipe.getSecondaryOutput() != null) { + MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Pulverizer.addRecipe(%d, %s, %s, %s, %d);", + recipe.getEnergy(), + InputHelper.getStackDescription(recipe.getInput()), + InputHelper.getStackDescription(recipe.getPrimaryOutput()), + InputHelper.getStackDescription(recipe.getSecondaryOutput()), + recipe.getSecondaryOutputChance())); + } else { + MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Pulverizer.addRecipe(%d, %s, %s);", + recipe.getEnergy(), + InputHelper.getStackDescription(recipe.getInput()), + InputHelper.getStackDescription(recipe.getPrimaryOutput()))); + } + } + } + + if(args.isEmpty() || args.contains("sawmill")) { + for(RecipeSawmill recipe : SawmillManager.getRecipeList()) { + if(recipe.getSecondaryOutput() != null) { + MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Sawmill.addRecipe(%d, %s, %s, %s, %d);", + recipe.getEnergy(), + InputHelper.getStackDescription(recipe.getInput()), + InputHelper.getStackDescription(recipe.getPrimaryOutput()), + InputHelper.getStackDescription(recipe.getSecondaryOutput()), + recipe.getSecondaryOutputChance())); + } else { + MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Sawmill.addRecipe(%d, %s, %s);", + recipe.getEnergy(), + InputHelper.getStackDescription(recipe.getInput()), + InputHelper.getStackDescription(recipe.getPrimaryOutput()))); + } + } + } + if(args.isEmpty() || args.contains("smelter")) { - for(RecipeSmelter recipe : ThermalHelper.getSmelterMap().values()) { + for(RecipeSmelter recipe : SmelterManager.getRecipeList()) { if(recipe.getSecondaryOutput() != null) { MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Smelter.addRecipe(%d, %s, %s, %s, %s, %d);", recipe.getEnergy(), @@ -55,7 +119,7 @@ public class ThermalExpansionLogger implements ICommandFunction { } if(args.isEmpty() || args.contains("transposer")) { - for(RecipeTransposer recipe : ThermalHelper.getFillMap().values()) { + for(RecipeTransposer recipe : TransposerManager.getFillRecipeList()) { MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Transposer.addFillRecipe(%d, %s, %s, %s);", recipe.getEnergy(), InputHelper.getStackDescription(recipe.getInput()), @@ -63,7 +127,7 @@ public class ThermalExpansionLogger implements ICommandFunction { InputHelper.getStackDescription(recipe.getFluid()))); } - for(RecipeTransposer recipe : ThermalHelper.getExtractMap().values()) { + for(RecipeTransposer recipe : TransposerManager.getExtractionRecipeList()) { MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Transposer.addExtractRecipe(%d, %s, %s, %s, %d);", recipe.getEnergy(), InputHelper.getStackDescription(recipe.getInput()), diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java index d61ac75..f341201 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java @@ -1,14 +1,22 @@ package modtweaker2.mods.thermalexpansion.handlers; import static modtweaker2.helpers.InputHelper.toFluid; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.mods.thermalexpansion.ThermalHelper.removeCrucibleRecipe; -import minetweaker.IUndoableAction; +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 minetweaker.api.liquid.ILiquidStack; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.mods.thermalexpansion.ThermalHelper; +import modtweaker2.utils.BaseListAddition; +import modtweaker2.utils.BaseListRemoval; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import cofh.thermalexpansion.util.crafting.CrucibleManager; @@ -16,90 +24,103 @@ import cofh.thermalexpansion.util.crafting.CrucibleManager.RecipeCrucible; @ZenClass("mods.thermalexpansion.Crucible") public class Crucible { + + public static final String name = "Thermal Expansion Crucible"; + @ZenMethod public static void addRecipe(int energy, IItemStack input, ILiquidStack output) { - MineTweakerAPI.apply(new Add(energy, toStack(input), toFluid(output))); + if(input == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(CrucibleManager.recipeExists(toStack(input))) { + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, InputHelper.getStackDescription(toStack(input)))); + return; + } + + MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.crucibleRecipe, toStack(input), toFluid(output), energy))); } - private static class Add implements IUndoableAction { - ItemStack input; - FluidStack output; - int energy; - boolean applied = false; + private static class Add extends BaseListAddition { - public Add(int rf, ItemStack inp, FluidStack out) { - energy = rf; - input = inp; - output = out; + public Add(RecipeCrucible recipe) { + super(Crucible.name, null); + recipes.add(recipe); } public void apply() { - applied = CrucibleManager.addRecipe(energy, input, output); - } - - public boolean canUndo() { - return input != null && applied; - } - - public String describe() { - return "Adding TE Magma Crucible Recipe using " + input.getDisplayName(); + for(RecipeCrucible recipe : recipes) { + boolean applied = CrucibleManager.addRecipe( + recipe.getEnergy(), + recipe.getInput(), + recipe.getOutput()); + + if(applied) { + successful.add(recipe); + } + } } public void undo() { - removeCrucibleRecipe(input); + for(RecipeCrucible recipe : successful) { + CrucibleManager.removeRecipe(recipe.getInput()); + } } - - public String describeUndo() { - return "Removing TE Magma Crucible Recipe using " + input.getDisplayName(); + + @Override + protected String getRecipeInfo(RecipeCrucible recipe) { + return InputHelper.getStackDescription(recipe.getInput()); } - - public Object getOverrideKey() { - return null; - } - } // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack input) { - - MineTweakerAPI.apply(new Remove(toStack(input))); + public static void removeRecipe(IIngredient input) { + List recipes = new LinkedList(); + + for(RecipeCrucible recipe : CrucibleManager.getRecipeList()) { + if(recipe != null && matches(input, toIItemStack(recipe.getInput()))) { + recipes.add(recipe); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s.", name, input.toString())); + } } - private static class Remove implements IUndoableAction { - ItemStack input; - RecipeCrucible removed; + private static class Remove extends BaseListRemoval { - public Remove(ItemStack inp) { - input = inp; + public Remove(List recipes) { + super(Crucible.name, null, recipes); } public void apply() { - removed = CrucibleManager.getRecipe(input); - removeCrucibleRecipe(input); - } - - public boolean canUndo() { - return removed != null; - } - - public String describe() { - return "Removing TE Magma Crucible Recipe using " + input.getDisplayName(); + for(RecipeCrucible recipe : recipes) { + boolean removed = CrucibleManager.removeRecipe(recipe.getInput()); + + if(removed) { + successful.add(recipe); + } + } } public void undo() { - CrucibleManager.addRecipe(removed.getEnergy(), removed.getInput(), removed.getOutput()); + for(RecipeCrucible recipe : successful) { + CrucibleManager.addRecipe( + recipe.getEnergy(), + recipe.getInput(), + recipe.getOutput()); + } } - - public String describeUndo() { - return "Restoring TE Magma Crucible Recipe using " + input.getDisplayName(); - } - - public Object getOverrideKey() { - return null; - } - + + @Override + protected String getRecipeInfo(RecipeCrucible recipe) { + return InputHelper.getStackDescription(recipe.getInput()); + } } - } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java index 6588d1f..79cd9ab 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java @@ -1,10 +1,21 @@ package modtweaker2.mods.thermalexpansion.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.IUndoableAction; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import net.minecraft.item.ItemStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.mods.thermalexpansion.ThermalHelper; +import modtweaker2.utils.BaseListAddition; +import modtweaker2.utils.BaseListRemoval; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import cofh.thermalexpansion.util.crafting.FurnaceManager; @@ -12,94 +23,111 @@ import cofh.thermalexpansion.util.crafting.FurnaceManager.RecipeFurnace; @ZenClass("mods.thermalexpansion.Furnace") public class Furnace { + + public static final String name = "Thermal Expansion Furnace"; + +// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(int energy, IItemStack input, IItemStack output) { - - MineTweakerAPI.apply(new Add(energy, toStack(input), toStack(output))); + if(input == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(FurnaceManager.recipeExists(toStack(input))) { + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, InputHelper.getStackDescription(toStack(input)))); + return; + } + + MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.furanceRecipe, toStack(input), toStack(output), energy))); } - private static class Add implements IUndoableAction { - ItemStack input; - ItemStack output; - int energy; - boolean applied = false; - - public Add(int rf, ItemStack inp, ItemStack out) { - energy = rf; - input = inp; - output = out; + private static class Add extends BaseListAddition { + public Add(RecipeFurnace recipe) { + super(Furnace.name, null); + recipes.add(recipe); } public void apply() { - FurnaceManager.addRecipe(energy, input, output, false); - } + for(RecipeFurnace recipe : recipes) { + boolean applied = FurnaceManager.addRecipe( + recipe.getEnergy(), + recipe.getInput(), + recipe.getOutput(), + false); + + if(applied) { + successful.add(recipe); + } + } - public boolean canUndo() { - return input != null; - } - - public String describe() { - return "Adding Redstone Furnace Recipe using " + input.getDisplayName(); } public void undo() { - FurnaceManager.removeRecipe(input); + for(RecipeFurnace recipe : recipes) { + FurnaceManager.removeRecipe(recipe.getInput()); + } + } - public String describeUndo() { - return "Removing Redstone Furnace Recipe using " + input.getDisplayName(); + @Override + protected String getRecipeInfo(RecipeFurnace recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); } - - public Object getOverrideKey() { - return null; - } - } - // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack input) { + public static void removeRecipe(IIngredient input) { + List recipes = new LinkedList(); - MineTweakerAPI.apply(new Remove(toStack(input))); + for(RecipeFurnace recipe : FurnaceManager.getRecipeList()) { + if(recipe != null && matches(input, toIItemStack(recipe.getInput()))) { + recipes.add(recipe); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s.", name, input.toString())); + } } - private static class Remove implements IUndoableAction { - ItemStack input; - RecipeFurnace removed; - - public Remove(ItemStack inp) { - input = inp; + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(Furnace.name, null, recipes); } public void apply() { - removed = FurnaceManager.getRecipe(input); - FurnaceManager.removeRecipe(input); - } - - public boolean canUndo() { - return removed != null; - } - - public String describe() { - return "Removing Redstone Furnace Recipe using " + input.getDisplayName(); + for(RecipeFurnace recipe : recipes) { + boolean removed = FurnaceManager.removeRecipe(recipe.getInput()); + + if(removed) { + successful.add(recipe); + } + } } public void undo() { - FurnaceManager.addRecipe(removed.getEnergy(), removed.getInput(), removed.getOutput(), false); - } - - public String describeUndo() { - return "Restoring Redstone Furnace Recipe using " + input.getDisplayName(); - } - - public Object getOverrideKey() { - return null; + for(RecipeFurnace recipe : successful) { + FurnaceManager.addRecipe( + recipe.getEnergy(), + recipe.getInput(), + recipe.getOutput(), + false); + } } + @Override + protected String getRecipeInfo(RecipeFurnace recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); + } } - // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod public static void refreshRecipes() { @@ -130,7 +158,5 @@ public class Furnace { public Object getOverrideKey() { return null; } - } - } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java index 2ca2d3b..b180b60 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java @@ -1,10 +1,20 @@ package modtweaker2.mods.thermalexpansion.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import minetweaker.IUndoableAction; +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 net.minecraft.item.ItemStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.mods.thermalexpansion.ThermalHelper; +import modtweaker2.utils.BaseListAddition; +import modtweaker2.utils.BaseListRemoval; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import cofh.thermalexpansion.util.crafting.PulverizerManager; @@ -12,101 +22,114 @@ import cofh.thermalexpansion.util.crafting.PulverizerManager.RecipePulverizer; @ZenClass("mods.thermalexpansion.Pulverizer") public class Pulverizer { + + public static final String name = "Thermal Expansion Pulverizer"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(int energy, IItemStack input, IItemStack output) { - - MineTweakerAPI.apply(new Add(energy, toStack(input), toStack(output), null, 0)); + addRecipe(energy, input, output, null, 0); } @ZenMethod public static void addRecipe(int energy, IItemStack input, IItemStack output, IItemStack secondary, int secondaryChance) { - - MineTweakerAPI.apply(new Add(energy, toStack(input), toStack(output), toStack(secondary), secondaryChance)); + if(input == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(PulverizerManager.recipeExists(toStack(input))) { + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, InputHelper.getStackDescription(toStack(input)))); + return; + } + + MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.pulverizerRecipe, energy, toStack(input), toStack(output), toStack(secondary), secondaryChance))); } - private static class Add implements IUndoableAction { - ItemStack input; - ItemStack output; - ItemStack secondary; - int secondaryChance; - int energy; - boolean applied = false; - - public Add(int rf, ItemStack inp, ItemStack out, ItemStack sec, int chance) { - energy = rf; - input = inp; - output = out; - secondary = sec; - secondaryChance = chance; + private static class Add extends BaseListAddition { + public Add(RecipePulverizer recipe) { + super(Pulverizer.name, null); + recipes.add(recipe); } public void apply() { - applied = PulverizerManager.addRecipe(energy, input, output, secondary, secondaryChance); - } - - public boolean canUndo() { - return input != null && applied; - } - - public String describe() { - return "Adding Pulverizer Recipe using " + input.getDisplayName(); + for(RecipePulverizer recipe : recipes) { + boolean applied = PulverizerManager.addRecipe( + recipe.getEnergy(), + recipe.getInput(), + recipe.getPrimaryOutput(), + recipe.getSecondaryOutput(), + recipe.getSecondaryOutputChance()); + + if(applied) { + successful.add(recipe); + } + } } public void undo() { - PulverizerManager.removeRecipe(input); + for(RecipePulverizer recipe : successful) { + PulverizerManager.removeRecipe(recipe.getInput()); + } } - public String describeUndo() { - return "Removing Pulverizer Recipe using " + input.getDisplayName(); + @Override + protected String getRecipeInfo(RecipePulverizer recipe) { + return InputHelper.getStackDescription(recipe.getInput()); } - - public Object getOverrideKey() { - return null; - } - } // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack input) { - - MineTweakerAPI.apply(new Remove(toStack(input))); + public static void removeRecipe(IIngredient input) { + List recipes = new LinkedList(); + RecipePulverizer[] list = PulverizerManager.getRecipeList(); + + for(RecipePulverizer recipe : list) { + if(recipe != null && recipe.getInput() != null && matches(input, toIItemStack(recipe.getInput()))) { + recipes.add(recipe); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s.", name, input.toString())); + } + } - private static class Remove implements IUndoableAction { - ItemStack input; - RecipePulverizer removed; - - public Remove(ItemStack inp) { - input = inp; + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(Pulverizer.name, null, recipes); } public void apply() { - removed = PulverizerManager.getRecipe(input); - PulverizerManager.removeRecipe(input); - } - - public boolean canUndo() { - return removed != null; - } - - public String describe() { - return "Removing Pulverizer Recipe using " + input.getDisplayName(); + for(RecipePulverizer recipe : recipes) { + boolean removed = PulverizerManager.removeRecipe(recipe.getInput()); + + if(removed) { + successful.add(recipe); + } + } } public void undo() { - PulverizerManager.addRecipe(removed.getEnergy(), removed.getInput(), removed.getPrimaryOutput(), removed.getSecondaryOutput(), removed.getSecondaryOutputChance()); - } - - public String describeUndo() { - return "Restoring Pulverizer Recipe using " + input.getDisplayName(); - } - - public Object getOverrideKey() { - return null; + for(RecipePulverizer recipe : successful) { + PulverizerManager.addRecipe( + recipe.getEnergy(), + recipe.getInput(), + recipe.getPrimaryOutput(), + recipe.getSecondaryOutput(), + recipe.getSecondaryOutputChance()); + } } + @Override + protected String getRecipeInfo(RecipePulverizer recipe) { + return InputHelper.getStackDescription(recipe.getInput()); + } } - } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java index f53bd46..da9d411 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java @@ -1,10 +1,20 @@ package modtweaker2.mods.thermalexpansion.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import minetweaker.IUndoableAction; +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 net.minecraft.item.ItemStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.mods.thermalexpansion.ThermalHelper; +import modtweaker2.utils.BaseListAddition; +import modtweaker2.utils.BaseListRemoval; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import cofh.thermalexpansion.util.crafting.SawmillManager; @@ -12,99 +22,117 @@ import cofh.thermalexpansion.util.crafting.SawmillManager.RecipeSawmill; @ZenClass("mods.thermalexpansion.Sawmill") public class Sawmill { + + public static final String name = "Thermal Expansion Sawmill"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(int energy, IItemStack input, IItemStack output) { - MineTweakerAPI.apply(new Add(energy, toStack(input), toStack(output), null, 0)); + addRecipe(energy, input, output, null, 0); } @ZenMethod public static void addRecipe(int energy, IItemStack input, IItemStack output, IItemStack secondary, int secondaryChance) { - MineTweakerAPI.apply(new Add(energy, toStack(input), toStack(output), toStack(secondary), secondaryChance)); + if(input == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(SawmillManager.recipeExists(toStack(input))) { + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, InputHelper.getStackDescription(toStack(input)))); + return; + } + + MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.sawmillRecipe, toStack(input), toStack(output), toStack(secondary), secondaryChance, energy))); } - private static class Add implements IUndoableAction { - ItemStack input; - ItemStack output; - ItemStack secondary; - int secondaryChance; - int energy; - boolean applied = false; - - public Add(int rf, ItemStack inp, ItemStack out, ItemStack sec, int chance) { - energy = rf; - input = inp; - output = out; - secondary = sec; - secondaryChance = chance; + private static class Add extends BaseListAddition { + public Add(RecipeSawmill recipe) { + super(Sawmill.name, null); + recipes.add(recipe); } + @Override public void apply() { - applied = SawmillManager.addRecipe(energy, input, output, secondary, secondaryChance); - } - - public boolean canUndo() { - return input != null && applied; - } - - public String describe() { - return "Adding Sawmill Recipe using " + input.getDisplayName(); + for(RecipeSawmill recipe : recipes) { + boolean applied = SawmillManager.addRecipe( + recipe.getEnergy(), + recipe.getInput(), + recipe.getPrimaryOutput(), + recipe.getSecondaryOutput(), + recipe.getSecondaryOutputChance()); + + if(applied) { + successful.add(recipe); + } + } } + @Override public void undo() { - SawmillManager.removeRecipe(input); + for(RecipeSawmill recipe : successful) { + SawmillManager.removeRecipe(recipe.getInput()); + } + } - public String describeUndo() { - return "Removing Sawmill Recipe using " + input.getDisplayName(); - } - - public Object getOverrideKey() { - return null; - } + @Override + protected String getRecipeInfo(RecipeSawmill recipe) { + return InputHelper.getStackDescription(recipe.getInput()); + } } // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeRecipe(IItemStack input) { - - MineTweakerAPI.apply(new Remove(toStack(input))); + public static void removeRecipe(IIngredient input) { + List recipes = new LinkedList(); + RecipeSawmill[] list = SawmillManager.getRecipeList(); + + for(RecipeSawmill recipe : list) { + if(recipe != null && recipe.getInput() != null && matches(input, toIItemStack(recipe.getInput()))) { + recipes.add(recipe); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s.", name, input.toString())); + } } - private static class Remove implements IUndoableAction { - ItemStack input; - RecipeSawmill removed; - - public Remove(ItemStack inp) { - input = inp; + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(Sawmill.name, null, recipes); } public void apply() { - removed = SawmillManager.getRecipe(input); - SawmillManager.removeRecipe(input); - } - - public boolean canUndo() { - return removed != null; - } - - public String describe() { - return "Removing Sawmill Recipe using " + input.getDisplayName(); + for(RecipeSawmill recipe : recipes) { + boolean removed = SawmillManager.removeRecipe(recipe.getInput()); + if(removed) { + successful.add(recipe); + } + + } } public void undo() { - SawmillManager.addRecipe(removed.getEnergy(), removed.getInput(), removed.getPrimaryOutput(), removed.getSecondaryOutput(), removed.getSecondaryOutputChance()); + for(RecipeSawmill recipe : successful) { + SawmillManager.addRecipe( + recipe.getEnergy(), + recipe.getInput(), + recipe.getPrimaryOutput(), + recipe.getSecondaryOutput(), + recipe.getSecondaryOutputChance()); + } } - - public String describeUndo() { - return "Restoring Sawmill Recipe using " + input.getDisplayName(); + + @Override + protected String getRecipeInfo(RecipeSawmill recipe) { + return InputHelper.getStackDescription(recipe.getInput()); } - - public Object getOverrideKey() { - return null; - } - } - } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java index 7d8bfbf..8c1eed4 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java @@ -4,11 +4,8 @@ import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.StackHelper.matches; -import java.util.Arrays; -import java.util.HashMap; +import java.util.LinkedList; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; @@ -16,19 +13,19 @@ import minetweaker.api.item.IItemStack; import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.mods.thermalexpansion.ThermalHelper; -import modtweaker2.utils.BaseMapAddition; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; +import modtweaker2.utils.BaseListAddition; +import modtweaker2.utils.BaseListRemoval; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import cofh.thermalexpansion.util.crafting.SmelterManager; -import cofh.thermalexpansion.util.crafting.SmelterManager.ComparableItemStackSmelter; import cofh.thermalexpansion.util.crafting.SmelterManager.RecipeSmelter; @ZenClass("mods.thermalexpansion.Smelter") public class Smelter { public static final String name = "Thermal Expansion Smelter"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod public static void addRecipe(int energy, IItemStack input, IItemStack input2, IItemStack output) { @@ -37,90 +34,107 @@ public class Smelter { @ZenMethod public static void addRecipe(int energy, IItemStack input, IItemStack input2, IItemStack output, IItemStack output2, int chance) { - ItemStack in1 = toStack(input); - ItemStack in2 = toStack(input2); - ItemStack out1 = toStack(output); - ItemStack out2 = toStack(output2); - - List key = Arrays.asList(new ComparableItemStackSmelter[] { new ComparableItemStackSmelter(in1), new ComparableItemStackSmelter(in2) }); - RecipeSmelter value = (RecipeSmelter) ThermalHelper.getTERecipe(ThermalHelper.smelterRecipe, in1, in2, out1, out2, chance, energy); - - Map, RecipeSmelter> recipes = new HashMap, RecipeSmelter>(); - - recipes.put(key, value); - - MineTweakerAPI.apply(new Add(recipes)); + if(input == null || input2 == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(SmelterManager.recipeExists(toStack(input), toStack(input2))) { + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s and %s. Command ignored!", name, InputHelper.getStackDescription(toStack(input)), InputHelper.getStackDescription(toStack(input2)))); + return; + } + + MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.smelterRecipe, toStack(input), toStack(input2), toStack(output), toStack(output2), chance, energy))); } - private static class Add extends BaseMapAddition, RecipeSmelter> { - public Add(Map, RecipeSmelter> recipes) { - super(Smelter.name, ThermalHelper.getSmelterMap(), recipes); + private static class Add extends BaseListAddition { + public Add(RecipeSmelter recipe) { + super(Smelter.name, null); + recipes.add(recipe); } @Override public void apply() { - map = ThermalHelper.getSmelterMap(); - super.apply(); - SmelterManager.refreshRecipes(); + for(RecipeSmelter recipe : recipes) { + boolean applied = SmelterManager.addRecipe( + recipe.getEnergy(), + recipe.getPrimaryInput(), + recipe.getSecondaryInput(), + recipe.getPrimaryOutput(), + recipe.getSecondaryOutput(), + recipe.getSecondaryOutputChance()); + + if(applied) { + successful.add(recipe); + } + } } @Override public void undo() { - map = ThermalHelper.getSmelterMap(); - super.undo(); - SmelterManager.refreshRecipes(); + for(RecipeSmelter recipe : successful) { + SmelterManager.removeRecipe(recipe.getPrimaryInput(), recipe.getSecondaryInput()); + } } @Override - public String getRecipeInfo(Entry, RecipeSmelter> recipe) { - return InputHelper.getStackDescription(recipe.getValue().getPrimaryOutput()); + public String getRecipeInfo(RecipeSmelter recipe) { + return InputHelper.getStackDescription(recipe.getPrimaryOutput()); } } - // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod public static void removeRecipe(IIngredient input1, IIngredient input2) { - Map, RecipeSmelter> recipes = new HashMap, RecipeSmelter>(); + List recipes = new LinkedList(); - for(Entry, RecipeSmelter> entry : ThermalHelper.getSmelterMap().entrySet()) { - RecipeSmelter recipe = entry.getValue(); - + for(RecipeSmelter recipe : SmelterManager.getRecipeList()) { if(recipe != null && matches(input1, toIItemStack(recipe.getPrimaryInput())) && matches(input2, toIItemStack(recipe.getSecondaryInput()))) { - recipes.put(entry.getKey(), entry.getValue()); + recipes.add(recipe); } } if(!recipes.isEmpty()) { MineTweakerAPI.apply(new Remove(recipes)); } else { - LogHelper.logWarning(String.format("No %s Recipes found for %s and %s. Command ignored!", Smelter.name, input1.toString(), input2.toString())); + LogHelper.logWarning(String.format("No %s Recipes found for %s and %s.", name, input1.toString(), input2.toString())); } } - private static class Remove extends BaseMapRemoval, RecipeSmelter> { + private static class Remove extends BaseListRemoval { - public Remove(Map, RecipeSmelter> recipes) { - super(Smelter.name, ThermalHelper.getSmelterMap(), recipes); + public Remove(List recipes) { + super(Smelter.name, null, recipes); } @Override public void apply() { - map = ThermalHelper.getSmelterMap(); - super.apply(); - SmelterManager.refreshRecipes(); + for(RecipeSmelter recipe : recipes) { + boolean removed = SmelterManager.removeRecipe(recipe.getPrimaryInput(), recipe.getSecondaryInput()); + + if(removed) { + successful.add(recipe); + } + } } @Override public void undo() { - map = ThermalHelper.getSmelterMap(); - super.undo(); - SmelterManager.refreshRecipes(); + for(RecipeSmelter recipe : recipes) { + SmelterManager.addRecipe( + recipe.getEnergy(), + recipe.getPrimaryInput(), + recipe.getSecondaryInput(), + recipe.getPrimaryOutput(), + recipe.getSecondaryOutput(), + recipe.getSecondaryOutputChance()); + } } @Override - public String getRecipeInfo(Entry, RecipeSmelter> recipe) { - return InputHelper.getStackDescription(recipe.getValue().getPrimaryOutput()); + public String getRecipeInfo(RecipeSmelter recipe) { + return InputHelper.getStackDescription(recipe.getPrimaryOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java index 0196f52..13a8d35 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java @@ -6,26 +6,21 @@ import static modtweaker2.helpers.InputHelper.toILiquidStack; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.StackHelper.matches; -import java.util.Arrays; -import java.util.HashMap; +import java.util.LinkedList; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; +import minetweaker.api.item.IngredientAny; import minetweaker.api.liquid.ILiquidStack; import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.mods.thermalexpansion.ThermalHelper; -import modtweaker2.utils.BaseMapAddition; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import modtweaker2.utils.BaseListAddition; +import modtweaker2.utils.BaseListRemoval; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; -import cofh.lib.inventory.ComparableItemStackSafe; import cofh.thermalexpansion.util.crafting.TransposerManager; import cofh.thermalexpansion.util.crafting.TransposerManager.RecipeTransposer; @@ -39,170 +34,185 @@ public class Transposer { @ZenMethod public static void addFillRecipe(int energy, IItemStack input, IItemStack output, ILiquidStack liquid) { - Map, RecipeTransposer> recipes = new HashMap, RecipeTransposer>(); - ItemStack in = toStack(input); - ItemStack out = toStack(output); - FluidStack fluid = toFluid(liquid); - List key = Arrays.asList(new Integer[] { Integer.valueOf(new ComparableItemStackSafe(in).hashCode()), Integer.valueOf(fluid.fluidID) }); - RecipeTransposer value = (RecipeTransposer) ThermalHelper.getTERecipe(ThermalHelper.transposerRecipe, in, out, fluid, energy, 100); + if(input == null || output == null || liquid == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", nameFill)); + return; + } - recipes.put(key, value); - - MineTweakerAPI.apply(new AddFill(recipes)); + if(TransposerManager.fillRecipeExists(toStack(input), toFluid(liquid))) { + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s and %s. Command ignored!", Transposer.nameFill, InputHelper.getStackDescription(toStack(input)), InputHelper.getStackDescription(toFluid(liquid)))); + return; + } + + MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.transposerRecipe, toStack(input), toStack(output), toFluid(liquid), energy, 100), RecipeType.Fill)); } @ZenMethod public static void addExtractRecipe(int energy, IItemStack input, IItemStack output, ILiquidStack liquid, int chance) { - Map recipes = new HashMap(); - ItemStack in = toStack(input); - ItemStack out = toStack(output); - FluidStack fluid = toFluid(liquid); - ComparableItemStackSafe key = new ComparableItemStackSafe(in); - RecipeTransposer value = (RecipeTransposer) ThermalHelper.getTERecipe(ThermalHelper.transposerRecipe, in, out, fluid, energy, 100); + if(input == null || output == null || liquid == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", nameExtract)); + return; + } - recipes.put(key, value); - - MineTweakerAPI.apply(new AddExtract(recipes)); + if(TransposerManager.extractionRecipeExists(toStack(input), toFluid(liquid))) { + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s and %s. Command ignored!", Transposer.nameExtract, InputHelper.getStackDescription(toStack(input)), InputHelper.getStackDescription(toFluid(liquid)))); + return; + } + + MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.transposerRecipe, toStack(input), toStack(output), toFluid(liquid), energy, 100), RecipeType.Extract)); } - private static class AddFill extends BaseMapAddition, RecipeTransposer> { + private static class Add extends BaseListAddition { + private RecipeType type; - protected AddFill(Map, RecipeTransposer> recipes) { - super(Transposer.nameFill, ThermalHelper.getFillMap()); - recipes.putAll(recipes); + protected Add(RecipeTransposer recipe, RecipeType type) { + super(type == RecipeType.Fill ? Transposer.nameFill : Transposer.nameExtract, null); + this.type = type; + recipes.add(recipe); } @Override public void apply() { - map = ThermalHelper.getFillMap(); - super.apply(); - TransposerManager.refreshRecipes(); + for(RecipeTransposer recipe : recipes) { + boolean applied = false; + switch(type) { + case Fill: + applied = TransposerManager.addFillRecipe( + recipe.getEnergy(), + recipe.getInput(), + recipe.getOutput(), + recipe.getFluid(), + false); + break; + + case Extract: + applied = TransposerManager.addExtractionRecipe( + recipe.getEnergy(), + recipe.getInput(), + recipe.getOutput(), + recipe.getFluid(), + recipe.getChance(), + false); + break; + } + + if(applied) { + successful.add(recipe); + } + } } @Override public void undo() { - map = ThermalHelper.getFillMap(); - super.undo(); - TransposerManager.refreshRecipes(); + for(RecipeTransposer recipe : successful) { + switch(type) + { + case Fill: + TransposerManager.removeFillRecipe(recipe.getInput(), recipe.getFluid()); + break; + case Extract: + TransposerManager.removeExtractionRecipe(recipe.getInput()); + break; + } + } } @Override - protected String getRecipeInfo(Entry, RecipeTransposer> recipe) { - return InputHelper.getStackDescription(recipe.getValue().getOutput()); + protected String getRecipeInfo(RecipeTransposer recipe) { + return InputHelper.getStackDescription(recipe.getInput()); } } - private static class AddExtract extends BaseMapAddition { - - protected AddExtract(Map recipes) { - super(Transposer.nameFill, ThermalHelper.getExtractMap()); - recipes.putAll(recipes); - } - - @Override - public void apply() { - map = ThermalHelper.getExtractMap(); - super.apply(); - TransposerManager.refreshRecipes(); - } - - @Override - public void undo() { - map = ThermalHelper.getExtractMap(); - super.undo(); - TransposerManager.refreshRecipes(); - } - - @Override - protected String getRecipeInfo(Entry recipe) { - return InputHelper.getStackDescription(recipe.getValue().getInput()); - } - } - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod public static void removeFillRecipe(IIngredient input, IIngredient liquid) { - Map, RecipeTransposer> recipes = new HashMap, RecipeTransposer>(); - for(Entry, RecipeTransposer> recipe : ThermalHelper.getFillMap().entrySet()) { - if(recipe != null && recipe.getValue() != null && matches(input, toIItemStack(recipe.getValue().getInput())) && matches(liquid, toILiquidStack(recipe.getValue().getFluid()))) { - recipes.put(recipe.getKey(), recipe.getValue()); - } - } + removeRecipe(input, liquid, RecipeType.Fill); - if(!recipes.isEmpty()) { - MineTweakerAPI.apply(new RemoveFill(recipes)); - } else { - LogHelper.logWarning(String.format("No %s Recipe found for %s and %s. Command ignored!", nameFill, input.toString(), liquid.toString())); - } } @ZenMethod public static void removeExtractRecipe(IIngredient input) { - Map recipes = new HashMap(); - for(Entry recipe : ThermalHelper.getExtractMap().entrySet()) { - if(recipe != null && recipe.getValue() != null && matches(input, toIItemStack(recipe.getValue().getInput()))) { - recipes.put(recipe.getKey(), recipe.getValue()); - } - } - - if(!recipes.isEmpty()) { - MineTweakerAPI.apply(new RemoveExtract(recipes)); - } else { - LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", nameFill, input.toString())); - } - - } - - private static class RemoveFill extends BaseMapRemoval, RecipeTransposer> { - - protected RemoveFill(Map, RecipeTransposer> recipes) { - super(nameFill, ThermalHelper.getFillMap(), recipes); - } - - @Override - public void apply() { - map = ThermalHelper.getFillMap(); - super.apply(); - TransposerManager.refreshRecipes(); - } - - @Override - public void undo() { - map = ThermalHelper.getFillMap(); - super.undo(); - TransposerManager.refreshRecipes(); - } - - @Override - protected String getRecipeInfo(Entry, RecipeTransposer> recipe) { - return InputHelper.getStackDescription(recipe.getValue().getOutput()); - } + removeRecipe(input, IngredientAny.INSTANCE, RecipeType.Extract); } - private static class RemoveExtract extends BaseMapRemoval { + public static void removeRecipe(IIngredient input, IIngredient liquid, RecipeType type) { + List recipes = new LinkedList(); + + for(RecipeTransposer recipe : type == RecipeType.Fill ? TransposerManager.getFillRecipeList() : TransposerManager.getExtractionRecipeList()) { + if(recipe != null && matches(input, toIItemStack(recipe.getInput())) && matches(liquid, toILiquidStack(recipe.getFluid()))) { + recipes.add(recipe); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes, type)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s and %s.", type == RecipeType.Fill ? Transposer.nameFill : Transposer.nameExtract, input.toString(), liquid.toString())); + } + } - protected RemoveExtract(Map recipes) { - super(nameExtract, ThermalHelper.getExtractMap(), recipes); + private static class Remove extends BaseListRemoval { + private RecipeType type; + + protected Remove(List recipes, RecipeType type) { + super(type == RecipeType.Fill ? Transposer.nameFill : Transposer.nameExtract, null, recipes); + this.type = type; } @Override public void apply() { - map = ThermalHelper.getExtractMap(); - super.apply(); - TransposerManager.refreshRecipes(); + for(RecipeTransposer recipe : recipes) { + boolean removed = false; + switch(type) { + case Fill: + removed = TransposerManager.removeFillRecipe(recipe.getInput(), recipe.getFluid()); + break; + case Extract: + removed = TransposerManager.removeExtractionRecipe(recipe.getInput()); + break; + } + + if(removed) { + successful.add(recipe); + } + } } @Override public void undo() { - map = ThermalHelper.getExtractMap(); - super.undo(); - TransposerManager.refreshRecipes(); + for(RecipeTransposer recipe : successful) { + switch(type) { + case Fill: + TransposerManager.addFillRecipe( + recipe.getEnergy(), + recipe.getInput(), + recipe.getOutput(), + recipe.getFluid(), + false); + break; + + case Extract: + TransposerManager.addExtractionRecipe( + recipe.getEnergy(), + recipe.getInput(), + recipe.getOutput(), + recipe.getFluid(), + recipe.getChance(), + false); + break; + } + } } @Override - protected String getRecipeInfo(Entry recipe) { - return InputHelper.getStackDescription(recipe.getValue().getInput()); + protected String getRecipeInfo(RecipeTransposer recipe) { + return InputHelper.getStackDescription(recipe.getOutput()); } + } + + protected enum RecipeType { + Fill, + Extract } } diff --git a/src/main/java/modtweaker2/utils/BaseListModification.java b/src/main/java/modtweaker2/utils/BaseListModification.java index 781047d..f9798c7 100644 --- a/src/main/java/modtweaker2/utils/BaseListModification.java +++ b/src/main/java/modtweaker2/utils/BaseListModification.java @@ -17,7 +17,7 @@ public abstract class BaseListModification extends BaseUndoable { @Override public boolean canUndo() { - if(list == null || recipes.isEmpty() || successful.isEmpty()) + if(recipes.isEmpty() || successful.isEmpty()) return false; return true; @@ -33,7 +33,11 @@ public abstract class BaseListModification extends BaseUndoable { sb.append(getRecipeInfo(recipe)).append(", "); } } - sb.setLength(sb.length() - 2); + + if(sb.length() > 0 ) { + sb.setLength(sb.length() - 2); + } + return sb.toString(); } diff --git a/src/main/java/modtweaker2/utils/BaseMapModification.java b/src/main/java/modtweaker2/utils/BaseMapModification.java index 156b371..ac71c80 100644 --- a/src/main/java/modtweaker2/utils/BaseMapModification.java +++ b/src/main/java/modtweaker2/utils/BaseMapModification.java @@ -31,7 +31,11 @@ public abstract class BaseMapModification extends BaseUndoable { sb.append(getRecipeInfo(recipe)).append(", "); } } - sb.setLength(sb.length() - 2); + + if(sb.length() > 0) { + sb.setLength(sb.length() - 2); + } + return sb.toString(); } From 1239575736053e1a6ad2360194dc38e3983e2835 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Mon, 6 Jul 2015 16:17:36 +0200 Subject: [PATCH 10/31] Fixed constructor argument for Pulverizer --- .../modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java | 2 +- .../modtweaker2/mods/thermalexpansion/handlers/Transposer.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java index b180b60..098ca8b 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java @@ -44,7 +44,7 @@ public class Pulverizer { return; } - MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.pulverizerRecipe, energy, toStack(input), toStack(output), toStack(secondary), secondaryChance))); + MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.pulverizerRecipe, toStack(input), toStack(output), toStack(secondary), secondaryChance, energy))); } private static class Add extends BaseListAddition { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java index 13a8d35..cf2ef34 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java @@ -128,14 +128,13 @@ public class Transposer { @ZenMethod public static void removeFillRecipe(IIngredient input, IIngredient liquid) { removeRecipe(input, liquid, RecipeType.Fill); - } @ZenMethod public static void removeExtractRecipe(IIngredient input) { removeRecipe(input, IngredientAny.INSTANCE, RecipeType.Extract); } - + public static void removeRecipe(IIngredient input, IIngredient liquid, RecipeType type) { List recipes = new LinkedList(); From 17d9b78930fae8655a1c6f1c090c99c7bf3d02e5 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Mon, 6 Jul 2015 16:17:49 +0200 Subject: [PATCH 11/31] Version update --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d3e565b..2315f2c 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { apply plugin: 'forge' -version = "0.8.3" +version = "0.9.0" group= "modtweaker" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "ModTweaker~2" From 6bf0797054c4fd015bb964aeb712d2a415ab750a Mon Sep 17 00:00:00 2001 From: Zixxl Date: Mon, 6 Jul 2015 17:42:39 +0200 Subject: [PATCH 12/31] Changes in ReflectionHelper --- .../modtweaker2/helpers/ReflectionHelper.java | 33 ++++++++++++- .../factorization/FactorizationHelper.java | 44 +++++++---------- .../mods/forestry/ForestryHelper.java | 43 +++++----------- .../mods/railcraft/RailcraftHelper.java | 46 ++++++++--------- .../mods/tconstruct/TConstructHelper.java | 49 +++++-------------- .../mods/tconstruct/handlers/Modifiers.java | 1 - .../mods/thermalexpansion/ThermalHelper.java | 22 +++------ .../thermalexpansion/handlers/Crucible.java | 3 +- .../thermalexpansion/handlers/Furnace.java | 3 +- .../thermalexpansion/handlers/Pulverizer.java | 3 +- .../thermalexpansion/handlers/Sawmill.java | 3 +- .../thermalexpansion/handlers/Smelter.java | 3 +- .../thermalexpansion/handlers/Transposer.java | 5 +- 13 files changed, 115 insertions(+), 143 deletions(-) diff --git a/src/main/java/modtweaker2/helpers/ReflectionHelper.java b/src/main/java/modtweaker2/helpers/ReflectionHelper.java index 281dd86..0bfe727 100644 --- a/src/main/java/modtweaker2/helpers/ReflectionHelper.java +++ b/src/main/java/modtweaker2/helpers/ReflectionHelper.java @@ -5,16 +5,47 @@ import java.lang.reflect.Field; import java.lang.reflect.Modifier; public class ReflectionHelper { + + public static T getInstance(Constructor constructor, Object... arguments) { + try { + return constructor.newInstance(arguments); + } catch (Exception e) { LogHelper.logError("Exception creating instance of " + constructor.getClass().getName(), e); } + + return null; + } + + public static T getInstance(Class clazz, Object... arguments) { + Class[] classArray = new Class[arguments.length]; + + for(int i = 0; i < arguments.length; i++) { + classArray[i] = arguments[i].getClass(); + } + + Constructor constructor = getConstructor(clazz, classArray); + + return getInstance(constructor, arguments); + } + public static Constructor getConstructor(String string, Class... types) { try { Class clazz = Class.forName(string); Constructor constructor = clazz.getDeclaredConstructor(types); constructor.setAccessible(true); return constructor; - } catch (Exception ex) {} + } catch (Exception ex) { LogHelper.logError("Exception creating instance of " + string, ex); } return null; } + + public static Constructor getConstructor(Class clazz, Class... types) { + try { + Constructor constructor = clazz.getDeclaredConstructor(types); + constructor.setAccessible(true); + return constructor; + } catch (Exception ex) { LogHelper.logError("Exception getting constructore of " + clazz.getName(), ex); } + + return null; + } public static T getObject(Object o, String... fieldName) { Class cls = o.getClass(); diff --git a/src/main/java/modtweaker2/mods/factorization/FactorizationHelper.java b/src/main/java/modtweaker2/mods/factorization/FactorizationHelper.java index 7e48644..37d5372 100644 --- a/src/main/java/modtweaker2/mods/factorization/FactorizationHelper.java +++ b/src/main/java/modtweaker2/mods/factorization/FactorizationHelper.java @@ -2,9 +2,9 @@ package modtweaker2.mods.factorization; import static modtweaker2.helpers.ReflectionHelper.getStaticObject; -import java.lang.reflect.Constructor; import java.util.List; +import modtweaker2.helpers.ReflectionHelper; import net.minecraft.item.ItemStack; public class FactorizationHelper { @@ -22,36 +22,30 @@ public class FactorizationHelper { private FactorizationHelper() {} + @SuppressWarnings("unchecked") public static Object getLaceratorRecipe(ItemStack input, ItemStack output, float probability) { - try { - Class clazz = Class.forName("factorization.oreprocessing.TileEntityGrinder$GrinderRecipe"); - Constructor constructor = clazz.getDeclaredConstructor(Object.class, ItemStack.class, float.class); - constructor.setAccessible(true); - return constructor.newInstance(input, output, probability); - } catch (Exception e) { - throw new NullPointerException("Failed to instantiate Lacerator Recipe"); - } + return ReflectionHelper.getInstance(ReflectionHelper.getConstructor("factorization.oreprocessing.TileEntityGrinder$GrinderRecipe", Object.class, ItemStack.class, float.class), + input, + output, + probability); } + @SuppressWarnings("unchecked") public static Object getSlagFurnaceRecipe(ItemStack input, float chance1, ItemStack output1, float chance2, ItemStack output2) { - try { - Class clazz = Class.forName("factorization.oreprocessing.TileEntitySlagFurnace$SmeltingResult"); - Constructor constructor = clazz.getDeclaredConstructor(ItemStack.class, float.class, ItemStack.class, float.class, ItemStack.class); - constructor.setAccessible(true); - return constructor.newInstance(input, chance1, output1, chance2, output2); - } catch (Exception e) { - throw new NullPointerException("Failed to instantiate SmeltingResult"); - } + return ReflectionHelper.getInstance(ReflectionHelper.getConstructor("factorization.oreprocessing.TileEntitySlagFurnace$SmeltingResult", ItemStack.class, float.class, ItemStack.class, float.class, ItemStack.class), + input, + chance1, + output1, + chance2, + output2); } + @SuppressWarnings("unchecked") public static Object getCrystallizerRecipe(ItemStack input, ItemStack output, ItemStack solution, float output_count) { - try { - Class clazz = Class.forName("factorization.oreprocessing.TileEntityCrystallizer$CrystalRecipe"); - Constructor constructor = clazz.getDeclaredConstructor(ItemStack.class, ItemStack.class, float.class, ItemStack.class); - constructor.setAccessible(true); - return constructor.newInstance(input, output, output_count, solution); - } catch (Exception e) { - throw new NullPointerException("Failed to instantiate CrystalRecipe"); - } + return ReflectionHelper.getInstance(ReflectionHelper.getConstructor("factorization.oreprocessing.TileEntityCrystallizer$CrystalRecipe", ItemStack.class, ItemStack.class, float.class, ItemStack.class), + input, + output, + output_count, + solution); } } \ No newline at end of file diff --git a/src/main/java/modtweaker2/mods/forestry/ForestryHelper.java b/src/main/java/modtweaker2/mods/forestry/ForestryHelper.java index 5733957..53a6779 100644 --- a/src/main/java/modtweaker2/mods/forestry/ForestryHelper.java +++ b/src/main/java/modtweaker2/mods/forestry/ForestryHelper.java @@ -1,51 +1,30 @@ package modtweaker2.mods.forestry; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashSet; +import modtweaker2.helpers.ReflectionHelper; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; +import forestry.factory.gadgets.MachineCarpenter; public class ForestryHelper { @SuppressWarnings("unchecked") public static void addCarpenterRecipeBox(ItemStack box) { - Class clazz; - try { - clazz = Class.forName("forestry.factory.gadgets.MachineCarpenter$RecipeManager"); - Field field_box = clazz.getDeclaredField("boxes"); - field_box.setAccessible(true); - - ArrayList recipeBoxes = (ArrayList) field_box.get(clazz); - recipeBoxes.add(box); - - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } + ArrayList recipeBoxes = (ArrayList) ReflectionHelper.getStaticObject(MachineCarpenter.RecipeManager.class, "boxes"); + + if(recipeBoxes != null) { + recipeBoxes.add(box); + } } @SuppressWarnings("unchecked") public static void addCarpenterRecipeFluids(Fluid newFluid) { - Class clazz; - try { - clazz = Class.forName("forestry.factory.gadgets.MachineCarpenter$RecipeManager"); - Field field_recipeFluids = clazz.getDeclaredField("recipeFluids"); - field_recipeFluids.setAccessible(true); - - HashSet recipeFluids = (HashSet) field_recipeFluids.get(clazz); - recipeFluids.add(newFluid); - - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); + HashSet recipeFluids = (HashSet) ReflectionHelper.getStaticObject(MachineCarpenter.RecipeManager.class, "recipeFluids"); + + if(recipeFluids != null) { + recipeFluids.add(newFluid); } } } diff --git a/src/main/java/modtweaker2/mods/railcraft/RailcraftHelper.java b/src/main/java/modtweaker2/mods/railcraft/RailcraftHelper.java index 9d048b1..a4a3c31 100644 --- a/src/main/java/modtweaker2/mods/railcraft/RailcraftHelper.java +++ b/src/main/java/modtweaker2/mods/railcraft/RailcraftHelper.java @@ -1,12 +1,15 @@ package modtweaker2.mods.railcraft; -import java.lang.reflect.Constructor; import java.util.List; import mods.railcraft.api.crafting.IBlastFurnaceRecipe; import mods.railcraft.api.crafting.ICokeOvenRecipe; import mods.railcraft.api.crafting.IRockCrusherRecipe; import mods.railcraft.api.crafting.RailcraftCraftingManager; +import mods.railcraft.common.util.crafting.BlastFurnaceCraftingManager.BlastFurnaceRecipe; +import mods.railcraft.common.util.crafting.CokeOvenCraftingManager.CokeOvenRecipe; +import mods.railcraft.common.util.crafting.RockCrusherCraftingManager.CrusherRecipe; +import modtweaker2.helpers.ReflectionHelper; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraftforge.fluids.FluidStack; @@ -28,35 +31,28 @@ public class RailcraftHelper { private RailcraftHelper() {} public static IBlastFurnaceRecipe getBlastFurnaceRecipe(ItemStack input, boolean matchDamage, boolean matchNBT, int cookTime, ItemStack output) { - try { - Class clazz = Class.forName("mods.railcraft.common.util.crafting.BlastFurnaceCraftingManager$BlastFurnaceRecipe"); - Constructor constructor = clazz.getDeclaredConstructor(ItemStack.class, boolean.class, boolean.class, int.class, ItemStack.class); - constructor.setAccessible(true); - return (IBlastFurnaceRecipe) constructor.newInstance(input, matchDamage, matchNBT, cookTime, output); - } catch (Exception e) { - throw new NullPointerException("Failed to instantiate BlastFurnaceRecipe"); - } + return ReflectionHelper.getInstance(ReflectionHelper.getConstructor(BlastFurnaceRecipe.class,ItemStack.class, boolean.class, boolean.class, int.class, ItemStack.class), + input, + matchDamage, + matchNBT, + cookTime, + output); } public static ICokeOvenRecipe getCokeOvenRecipe(ItemStack input, boolean matchDamage, boolean matchNBT, ItemStack output, FluidStack fluidOutput, int cookTime) { - try { - Class clazz = Class.forName("mods.railcraft.common.util.crafting.CokeOvenCraftingManager$CokeOvenRecipe"); - Constructor constructor = clazz.getDeclaredConstructor(ItemStack.class, boolean.class, boolean.class, ItemStack.class, FluidStack.class, int.class); - constructor.setAccessible(true); - return (ICokeOvenRecipe) constructor.newInstance(input, matchDamage, matchNBT, output, fluidOutput, cookTime); - } catch (Exception e) { - throw new NullPointerException("Failed to instantiate CokeOvenRecipe"); - } + return ReflectionHelper.getInstance(ReflectionHelper.getConstructor(CokeOvenRecipe.class, ItemStack.class, boolean.class, boolean.class, ItemStack.class, FluidStack.class, int.class), + input, + matchDamage, + matchNBT, + output, + fluidOutput, + cookTime); } public static IRockCrusherRecipe getRockCrusherRecipe(ItemStack stack, boolean matchDamage, boolean matchNBT) { - try { - Class clazz = Class.forName("mods.railcraft.common.util.crafting.RockCrusherCraftingManager$CrusherRecipe"); - Constructor constructor = clazz.getDeclaredConstructor(ItemStack.class, boolean.class, boolean.class); - constructor.setAccessible(true); - return (IRockCrusherRecipe) constructor.newInstance(stack, matchDamage, matchNBT); - } catch (Exception e) { - throw new NullPointerException("Failed to instantiate CrusherRecipe"); - } + return ReflectionHelper.getInstance(ReflectionHelper.getConstructor(CrusherRecipe.class, ItemStack.class, boolean.class, boolean.class), + stack, + matchDamage, + matchNBT); } } diff --git a/src/main/java/modtweaker2/mods/tconstruct/TConstructHelper.java b/src/main/java/modtweaker2/mods/tconstruct/TConstructHelper.java index 6e911c2..3362ed4 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/TConstructHelper.java +++ b/src/main/java/modtweaker2/mods/tconstruct/TConstructHelper.java @@ -1,13 +1,12 @@ package modtweaker2.mods.tconstruct; -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import mantle.utils.ItemMetaWrapper; +import modtweaker2.helpers.ReflectionHelper; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; @@ -18,12 +17,11 @@ import tconstruct.library.crafting.CastingRecipe; import tconstruct.library.crafting.DryingRackRecipes.DryingRecipe; import tconstruct.library.crafting.ModifyBuilder; import tconstruct.library.crafting.PatternBuilder.ItemKey; -import tconstruct.library.crafting.Smeltery; import tconstruct.library.modifier.ItemModifier; import tconstruct.library.tools.ToolMaterial; public class TConstructHelper { - public static HashMap mappings = new HashMap(); + public static HashMap mappings = new HashMap(); public static List alloys = null; public static ArrayList basinCasting = null; public static ArrayList tableCasting = null; @@ -43,13 +41,13 @@ public class TConstructHelper { basinCasting = TConstructRegistry.getBasinCasting().getCastingRecipes(); tableCasting = TConstructRegistry.getTableCasting().getCastingRecipes(); modifiers = ModifyBuilder.instance.itemModifiers; - modifiers_clone = new ArrayList(modifiers); + modifiers_clone = new ArrayList(modifiers); for (Map.Entry entry : TConstructRegistry.toolMaterials.entrySet()) { mappings.put(entry.getValue().materialName, entry.getKey()); } - fuelList = getFuelList(); + fuelList = ReflectionHelper.getObject(tconstruct.library.crafting.Smeltery.instance, "smelteryFuels"); } catch (Exception e) {} } @@ -60,31 +58,13 @@ public class TConstructHelper { return -1; } else return mappings.get(material); } - - public static Map getFuelList() { - Smeltery smelteryInstance = tconstruct.library.crafting.Smeltery.instance; - - try { - Field smelteryFuels = Smeltery.class.getDeclaredField("smelteryFuels"); - smelteryFuels.setAccessible(true); - - return (Map)smelteryFuels.get(smelteryInstance); - } catch (Exception e) { - e.printStackTrace(); - throw new NullPointerException("Failed to instantiate smeltery fuel map"); - } - } //Returns a Drying Recipe, using reflection as the constructor is not visible public static DryingRecipe getDryingRecipe(ItemStack input, int time, ItemStack output) { - try { - Constructor constructor = DryingRecipe.class.getDeclaredConstructor(ItemStack.class, int.class, ItemStack.class); - constructor.setAccessible(true); - return (DryingRecipe) constructor.newInstance(input, time, output); - } catch (Exception e) { - e.printStackTrace(); - throw new NullPointerException("Failed to instantiate DryingRecipe"); - } + return ReflectionHelper.getInstance(ReflectionHelper.getConstructor(DryingRecipe.class, ItemStack.class, int.class, ItemStack.class), + input, + time, + output); } public static String getMaterialFromID(int id) { @@ -92,13 +72,10 @@ public class TConstructHelper { } public static ItemKey getItemKey(Item item, int damage, int value, String material) { - try { - Constructor constructor = ItemKey.class.getDeclaredConstructor(ItemStack.class, int.class, int.class, String.class); - constructor.setAccessible(true); - return (ItemKey) constructor.newInstance(item, damage, value, material); - } catch (Exception e) { - e.printStackTrace(); - throw new NullPointerException("Failed to instantiate ItemKey"); - } + return ReflectionHelper.getInstance(ReflectionHelper.getConstructor(ItemKey.class, ItemStack.class, int.class, int.class, String.class), + item, + damage, + value, + material); } } diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Modifiers.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Modifiers.java index e7453c4..3778718 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Modifiers.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Modifiers.java @@ -35,7 +35,6 @@ public class Modifiers { } } - //Searches through the modifiers and removes the first valid entry private static class Remove extends BaseListRemoval{ public Remove(List recipes) { super(Modifiers.name, TConstructHelper.modifiers, recipes); diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java b/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java index a4082a6..70a9e02 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java @@ -14,8 +14,6 @@ import cofh.thermalexpansion.util.crafting.SawmillManager.RecipeSawmill; import cofh.thermalexpansion.util.crafting.SmelterManager.RecipeSmelter; import cofh.thermalexpansion.util.crafting.TransposerManager.RecipeTransposer; - -@SuppressWarnings("unchecked") public class ThermalHelper { public static Constructor crucibleRecipe; public static Constructor furanceRecipe; @@ -26,20 +24,12 @@ public class ThermalHelper { static { try { - crucibleRecipe = getConstructor("cofh.thermalexpansion.util.crafting.CrucibleManager$RecipeCrucible", ItemStack.class, FluidStack.class, int.class); - furanceRecipe = getConstructor("cofh.thermalexpansion.util.crafting.FurnaceManager$RecipeFurnace", ItemStack.class, ItemStack.class, int.class); - pulverizerRecipe = getConstructor("cofh.thermalexpansion.util.crafting.PulverizerManager$RecipePulverizer", ItemStack.class, ItemStack.class, ItemStack.class, int.class, int.class); - sawmillRecipe = getConstructor("cofh.thermalexpansion.util.crafting.SawmillManager$RecipeSawmill", ItemStack.class, ItemStack.class, ItemStack.class, int.class, int.class); - smelterRecipe = getConstructor("cofh.thermalexpansion.util.crafting.SmelterManager$RecipeSmelter", ItemStack.class, ItemStack.class, ItemStack.class, ItemStack.class, int.class, int.class); - transposerRecipe = getConstructor("cofh.thermalexpansion.util.crafting.TransposerManager$RecipeTransposer", ItemStack.class, ItemStack.class, FluidStack.class, int.class, int.class); + crucibleRecipe = getConstructor(RecipeCrucible.class, ItemStack.class, FluidStack.class, int.class); + furanceRecipe = getConstructor(RecipeFurnace.class, ItemStack.class, ItemStack.class, int.class); + pulverizerRecipe = getConstructor(RecipePulverizer.class, ItemStack.class, ItemStack.class, ItemStack.class, int.class, int.class); + sawmillRecipe = getConstructor(RecipeSawmill.class, ItemStack.class, ItemStack.class, ItemStack.class, int.class, int.class); + smelterRecipe = getConstructor(RecipeSmelter.class, ItemStack.class, ItemStack.class, ItemStack.class, ItemStack.class, int.class, int.class); + transposerRecipe = getConstructor(RecipeTransposer.class, ItemStack.class, ItemStack.class, FluidStack.class, int.class, int.class); } catch (Exception e) { LogHelper.logError("Exception getting constructor for Thermal Expansion recipes!", e); } } - - public static T getTERecipe(Constructor constructor, Object... items) { - try { - return constructor.newInstance(items); - } catch (Exception e) { LogHelper.logError("Exception creating instance of Thermal Expansion recipe!", e); } - - return null; - } } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java index f341201..941bfeb 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java @@ -14,6 +14,7 @@ import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.ReflectionHelper; import modtweaker2.mods.thermalexpansion.ThermalHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -39,7 +40,7 @@ public class Crucible { return; } - MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.crucibleRecipe, toStack(input), toFluid(output), energy))); + MineTweakerAPI.apply(new Add(ReflectionHelper.getInstance(ThermalHelper.crucibleRecipe, toStack(input), toFluid(output), energy))); } private static class Add extends BaseListAddition { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java index 79cd9ab..f25e7f6 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java @@ -13,6 +13,7 @@ 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.thermalexpansion.ThermalHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -40,7 +41,7 @@ public class Furnace { return; } - MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.furanceRecipe, toStack(input), toStack(output), energy))); + MineTweakerAPI.apply(new Add(ReflectionHelper.getInstance(ThermalHelper.furanceRecipe, toStack(input), toStack(output), energy))); } private static class Add extends BaseListAddition { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java index 098ca8b..82da909 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java @@ -12,6 +12,7 @@ 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.thermalexpansion.ThermalHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -44,7 +45,7 @@ public class Pulverizer { return; } - MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.pulverizerRecipe, toStack(input), toStack(output), toStack(secondary), secondaryChance, energy))); + MineTweakerAPI.apply(new Add(ReflectionHelper.getInstance(ThermalHelper.pulverizerRecipe, toStack(input), toStack(output), toStack(secondary), secondaryChance, energy))); } private static class Add extends BaseListAddition { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java index da9d411..56ac348 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java @@ -12,6 +12,7 @@ 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.thermalexpansion.ThermalHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -44,7 +45,7 @@ public class Sawmill { return; } - MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.sawmillRecipe, toStack(input), toStack(output), toStack(secondary), secondaryChance, energy))); + MineTweakerAPI.apply(new Add(ReflectionHelper.getInstance(ThermalHelper.sawmillRecipe, toStack(input), toStack(output), toStack(secondary), secondaryChance, energy))); } private static class Add extends BaseListAddition { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java index 8c1eed4..4fc110c 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java @@ -12,6 +12,7 @@ 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.thermalexpansion.ThermalHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -44,7 +45,7 @@ public class Smelter { return; } - MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.smelterRecipe, toStack(input), toStack(input2), toStack(output), toStack(output2), chance, energy))); + MineTweakerAPI.apply(new Add(ReflectionHelper.getInstance(ThermalHelper.smelterRecipe, toStack(input), toStack(input2), toStack(output), toStack(output2), chance, energy))); } private static class Add extends BaseListAddition { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java index cf2ef34..0be3206 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java @@ -16,6 +16,7 @@ import minetweaker.api.item.IngredientAny; import minetweaker.api.liquid.ILiquidStack; import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.ReflectionHelper; import modtweaker2.mods.thermalexpansion.ThermalHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -44,7 +45,7 @@ public class Transposer { return; } - MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.transposerRecipe, toStack(input), toStack(output), toFluid(liquid), energy, 100), RecipeType.Fill)); + MineTweakerAPI.apply(new Add(ReflectionHelper.getInstance(ThermalHelper.transposerRecipe, toStack(input), toStack(output), toFluid(liquid), energy, 100), RecipeType.Fill)); } @ZenMethod @@ -59,7 +60,7 @@ public class Transposer { return; } - MineTweakerAPI.apply(new Add(ThermalHelper.getTERecipe(ThermalHelper.transposerRecipe, toStack(input), toStack(output), toFluid(liquid), energy, 100), RecipeType.Extract)); + MineTweakerAPI.apply(new Add(ReflectionHelper.getInstance(ThermalHelper.transposerRecipe, toStack(input), toStack(output), toFluid(liquid), energy, 100), RecipeType.Extract)); } private static class Add extends BaseListAddition { From 3990a813908bb4e1ce913f8fe47243d16d7bf436 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Mon, 6 Jul 2015 18:11:37 +0200 Subject: [PATCH 13/31] Duplicate & input check for PneumaticCraft --- .../mods/appeng/handlers/Grind.java | 4 +-- .../pneumaticcraft/handlers/Assembly.java | 30 ++++++++++++++++--- .../pneumaticcraft/handlers/Pressure.java | 6 ++++ 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java b/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java index 90f18b7..d407120 100644 --- a/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java +++ b/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java @@ -32,7 +32,7 @@ public class Grind { @ZenMethod public static void addRecipe(IItemStack input, IItemStack output, int energy, @Optional IItemStack output2, @Optional float chance2, @Optional IItemStack output3, @Optional float chance3) { if(input == null || output == null) { - LogHelper.logError(String.format("Required parameters missing for %s Recipe.", Grind.name)); + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); return; } @@ -49,7 +49,7 @@ public class Grind { // Check if the recipe is already present, we don't want to add duplicates for(IGrinderEntry r : AEApi.instance().registries().grinder().getRecipes()) { if(r != null && AppliedEnergisticsHelper.equals(r, recipe)) { - LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", Grind.name, InputHelper.getStackDescription(toStack(input)))); + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, InputHelper.getStackDescription(toStack(input)))); return; } } diff --git a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java index ad2ea56..69f826f 100644 --- a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java +++ b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java @@ -2,6 +2,7 @@ package modtweaker2.mods.pneumaticcraft.handlers; import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.areEqual; import static modtweaker2.helpers.StackHelper.matches; import java.util.LinkedList; @@ -14,6 +15,7 @@ import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; +import net.minecraft.item.ItemStack; import pneumaticCraft.api.recipe.AssemblyRecipe; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @@ -23,19 +25,39 @@ public class Assembly { public static final String name = "PneumaticCraft Assembly"; + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addDrillRecipe(IItemStack input, IItemStack output) { - MineTweakerAPI.apply(new Add(new AssemblyRecipe(toStack(input), toStack(output)), AssemblyRecipe.drillRecipes)); + addRecipe(input, output, AssemblyRecipe.drillRecipes); } @ZenMethod public static void addLaserRecipe(IItemStack input, IItemStack output) { - MineTweakerAPI.apply(new Add(new AssemblyRecipe(toStack(input), toStack(output)), AssemblyRecipe.laserRecipes)); + addRecipe(input, output, AssemblyRecipe.laserRecipes); } @ZenMethod public static void addLaserDrillRecipe(IItemStack input, IItemStack output) { - MineTweakerAPI.apply(new Add(new AssemblyRecipe(toStack(input), toStack(output)), AssemblyRecipe.drillLaserRecipes)); + addRecipe(input, output, AssemblyRecipe.drillLaserRecipes); + } + + public static void addRecipe(IItemStack input, IItemStack output, List list) { + if(input == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + ItemStack in = toStack(input); + + for(AssemblyRecipe recipe : list) { + if(areEqual(recipe.getInput(), in)) { + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, InputHelper.getStackDescription(in))); + return; + } + } + + MineTweakerAPI.apply(new Add(new AssemblyRecipe(toStack(input), toStack(output)), list)); } private static class Add extends BaseListAddition { @@ -79,7 +101,7 @@ public class Assembly { if(!recipes.isEmpty()) { MineTweakerAPI.apply(new Remove(list, recipes)); } else { - LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Assembly.name, output.toString())); + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", name, output.toString())); } } diff --git a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java index d2f62e4..e5209f8 100644 --- a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java +++ b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java @@ -11,6 +11,7 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; import net.minecraft.item.ItemStack; @@ -25,6 +26,11 @@ public class Pressure { @ZenMethod public static void addRecipe(IItemStack[] input, double pressure, IItemStack[] output, boolean asBlock) { + if(input == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + MineTweakerAPI.apply(new Add(new PressureChamberRecipe(toStacks(input), (float) pressure, toStacks(output), asBlock))); } From 39e415b36d649058d90f0ce531deacc97b8f65b5 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Tue, 7 Jul 2015 12:00:17 +0200 Subject: [PATCH 14/31] Code cleanup --- .../commands/EntityMappingLogger.java | 5 +- .../java/modtweaker2/helpers/ForgeHelper.java | 25 ++-- .../java/modtweaker2/helpers/InputHelper.java | 5 +- .../modtweaker2/helpers/ReflectionHelper.java | 112 +++++++++++++----- .../java/modtweaker2/utils/TweakerPlugin.java | 6 +- 5 files changed, 106 insertions(+), 47 deletions(-) diff --git a/src/main/java/modtweaker2/commands/EntityMappingLogger.java b/src/main/java/modtweaker2/commands/EntityMappingLogger.java index 2a9739e..309fb63 100644 --- a/src/main/java/modtweaker2/commands/EntityMappingLogger.java +++ b/src/main/java/modtweaker2/commands/EntityMappingLogger.java @@ -14,8 +14,11 @@ public class EntityMappingLogger implements ICommandFunction { @Override public void execute(String[] arguments, IPlayer player) { - Set keys = EntityList.stringToIDMapping.keySet(); + @SuppressWarnings("unchecked") + Set keys = EntityList.stringToIDMapping.keySet(); + System.out.println("Mob Keys: " + keys.size()); + for (Integer key : keys) { ModTweaker2.logger.info("Mob Key " + EntityList.getStringFromID(key) + " : " + key); MineTweakerAPI.logCommand("Mob Key " + EntityList.getStringFromID(key) + " : " + key); diff --git a/src/main/java/modtweaker2/helpers/ForgeHelper.java b/src/main/java/modtweaker2/helpers/ForgeHelper.java index 4b1ec70..b196bea 100644 --- a/src/main/java/modtweaker2/helpers/ForgeHelper.java +++ b/src/main/java/modtweaker2/helpers/ForgeHelper.java @@ -1,9 +1,10 @@ package modtweaker2.helpers; +import static modtweaker2.helpers.ReflectionHelper.getConstructor; import static modtweaker2.helpers.ReflectionHelper.getFinalObject; +import static modtweaker2.helpers.ReflectionHelper.getInstance; import static modtweaker2.helpers.ReflectionHelper.getStaticObject; -import java.lang.reflect.Constructor; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -17,7 +18,9 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; public class ForgeHelper { + @SuppressWarnings("rawtypes") public static Map translate = null; + @SuppressWarnings("rawtypes") public static List seeds = null; public static HashMap loot = null; @@ -26,23 +29,25 @@ public class ForgeHelper { seeds = getStaticObject(ForgeHooks.class, "seedList"); loot = getStaticObject(ChestGenHooks.class, "chestInfo"); translate = getFinalObject(getStaticObject(StatCollector.class, "localizedName", "field_74839_a"), "languageList", "field_74816_c"); - } catch (Exception e) {} + } catch (Exception e) { } } - private ForgeHelper() {} + private ForgeHelper() { + } public static Object getSeedEntry(ItemStack stack, int weight) { - try { - Class clazz = Class.forName("net.minecraftforge.common.ForgeHooks$SeedEntry"); - Constructor constructor = clazz.getDeclaredConstructor(ItemStack.class, int.class); - constructor.setAccessible(true); - return constructor.newInstance(stack, weight); - } catch (Exception e) { + Object seedEntry = getInstance(getConstructor("net.minecraftforge.common.ForgeHooks$SeedEntry", + ItemStack.class, int.class), stack, weight); + + if (seedEntry == null) { throw new NullPointerException("Failed to instantiate SeedEntry"); } + + return seedEntry; } public static boolean isLangActive(String lang) { - return FMLCommonHandler.instance().getSide() == Side.SERVER ? null : FMLClientHandler.instance().getCurrentLanguage().equals(lang); + return FMLCommonHandler.instance().getSide() == Side.SERVER ? null + : FMLClientHandler.instance().getCurrentLanguage().equals(lang); } } diff --git a/src/main/java/modtweaker2/helpers/InputHelper.java b/src/main/java/modtweaker2/helpers/InputHelper.java index 81d39cb..789f688 100644 --- a/src/main/java/modtweaker2/helpers/InputHelper.java +++ b/src/main/java/modtweaker2/helpers/InputHelper.java @@ -88,7 +88,7 @@ public class InputHelper { } } - public static String getArrayDescription(List objects) { + public static String getArrayDescription(List objects) { StringBuilder sb = new StringBuilder(); if(objects.isEmpty()) { @@ -209,7 +209,8 @@ public class InputHelper { } } - public static Object[] toShapedObjects(IIngredient[][] ingredients) { + @SuppressWarnings({ "rawtypes", "unchecked" }) + public static Object[] toShapedObjects(IIngredient[][] ingredients) { if (ingredients == null) return null; else { diff --git a/src/main/java/modtweaker2/helpers/ReflectionHelper.java b/src/main/java/modtweaker2/helpers/ReflectionHelper.java index 0bfe727..2b258df 100644 --- a/src/main/java/modtweaker2/helpers/ReflectionHelper.java +++ b/src/main/java/modtweaker2/helpers/ReflectionHelper.java @@ -6,6 +6,12 @@ import java.lang.reflect.Modifier; public class ReflectionHelper { + /** + * Creates a new instance with the provided constructor and arguments. + * @param constructor The constructor of the class for which a new instance should be created. + * @param arguments Array of objects to be passed as arguments to the constructor call. + * @return A new object created by calling the constructor. + */ public static T getInstance(Constructor constructor, Object... arguments) { try { return constructor.newInstance(arguments); @@ -14,72 +20,100 @@ public class ReflectionHelper { return null; } - public static T getInstance(Class clazz, Object... arguments) { - Class[] classArray = new Class[arguments.length]; - - for(int i = 0; i < arguments.length; i++) { - classArray[i] = arguments[i].getClass(); + /** + * Obtains the constructor for the named class identified by the parameter types. + * @param className The fully qualified name of the class. + * @param argumentTypes Parameter types to identify the constructor. + * @return Constructor object representing the declared constructor for the parameter types. + */ + public static Constructor getConstructor(final String className, final Class... argumentTypes) { + if(className == null || argumentTypes == null) { + LogHelper.logError("The provided class name or arguments can't be null."); + return null; } - Constructor constructor = getConstructor(clazz, classArray); - - return getInstance(constructor, arguments); - } - - public static Constructor getConstructor(String string, Class... types) { try { - Class clazz = Class.forName(string); - Constructor constructor = clazz.getDeclaredConstructor(types); + Class clazz = Class.forName(className); + Constructor constructor = clazz.getDeclaredConstructor(argumentTypes); constructor.setAccessible(true); return constructor; - } catch (Exception ex) { LogHelper.logError("Exception creating instance of " + string, ex); } + } catch (Exception ex) { LogHelper.logError("Exception getting constructore of " + className, ex); } return null; } - public static Constructor getConstructor(Class clazz, Class... types) { + /** + * Obtains the constructor for the class identified by the parameter types. + * @param clazz The Class for which the constructor should be obtained. + * @param argumentTypes Parameter types to identify the constructor. + * @return Constructor object representing the declared constructor for the parameter types. + */ + public static Constructor getConstructor(Class clazz, Class... types) { try { Constructor constructor = clazz.getDeclaredConstructor(types); constructor.setAccessible(true); return constructor; } catch (Exception ex) { LogHelper.logError("Exception getting constructore of " + clazz.getName(), ex); } - + return null; } - public static T getObject(Object o, String... fieldName) { - Class cls = o.getClass(); - for (String field : fieldName) { + /** + * Returns the value of a private field for an object instance. + * @param object An object instance from which the field value is to be extracted. + * @param fieldNames A list of field names for which the value should be extracted. + * The functions returns value of the first field found. + * @return The value of the provided field name. + */ + @SuppressWarnings("unchecked") + public static T getObject(Object object, String... fieldNames) { + Class cls = object.getClass(); + for (String field : fieldNames) { try { Field result = cls.getDeclaredField(field); result.setAccessible(true); - return (T) result.get(o); + return (T) result.get(object); } catch (Exception ex) {} } return null; } - public static T getFinalObject(Object o, String... fieldName) { - Class cls = o.getClass(); - for (String field : fieldName) { + /** + * Returns the value of a private final field for an object instance and removes the final modifier. + * @param object An object instance from which the field value is to be extracted. + * @param fieldNames A list of field names for which the value should be extracted. + * The functions returns value of the first field found. + * @return The value of the provided field name. + */ + @SuppressWarnings("unchecked") + public static T getFinalObject(Object object, String... fieldNames) { + Class cls = object.getClass(); + for (String field : fieldNames) { try { Field result = cls.getDeclaredField(field); result.setAccessible(true); Field modifiersField = Field.class.getDeclaredField("modifiers"); modifiersField.setAccessible(true); modifiersField.setInt(result, result.getModifiers() & ~Modifier.FINAL); - return (T) result.get(o); + return (T) result.get(object); } catch (Exception ex) {} } - + return null; } - public static T getStaticObject(Class cls, String... fieldName) { - for (String field : fieldName) { + /** + * Returns the value of a private static field for a class. + * @param clazz The class for which the field value is to be extracted. + * @param fieldNames A list of field names for which the value should be extracted. + * @return The value of the provided field name. + */ + @SuppressWarnings("unchecked") + public static T getStaticObject(Class clazz, String... fieldNames) { + for (String field : fieldNames) { try { - Field result = cls.getDeclaredField(field); + Field result = clazz.getDeclaredField(field); result.setAccessible(true); return (T) result.get(null); } catch (Exception e) {} @@ -87,16 +121,32 @@ public class ReflectionHelper { return null; } + + /** + * Returns the value of a private static field for a class. + * @param className The fully qualified name of the class. + * @param fieldNames A list of field names for which the value should be extracted. + * @return The value of the provided field name. + */ + public static T getStaticObject(String className, String... fieldNames) { + try { + Class clazz = Class.forName(className); + return getStaticObject(clazz, fieldNames); + } catch (ClassNotFoundException e) { } + + return null; + } - public static void setPrivateValue(Class cls, String field, int var) { + public static void setPrivateValue(Class cls, String field, int var) { try { Field f = cls.getDeclaredField(field); f.setAccessible(true); f.setInt(null, var); } catch (Exception e) {} } - - public static void setPrivateValue(Class cls, Object o, String field, Object var) { + + @SuppressWarnings({ "rawtypes", "unchecked" }) + public static void setPrivateValue( Class cls, Object o, String field, Object var) { cpw.mods.fml.relauncher.ReflectionHelper.setPrivateValue(cls, o, var, field); } } diff --git a/src/main/java/modtweaker2/utils/TweakerPlugin.java b/src/main/java/modtweaker2/utils/TweakerPlugin.java index fb80612..f839e1b 100644 --- a/src/main/java/modtweaker2/utils/TweakerPlugin.java +++ b/src/main/java/modtweaker2/utils/TweakerPlugin.java @@ -5,15 +5,15 @@ import java.util.ArrayList; import cpw.mods.fml.common.Loader; public class TweakerPlugin { - private static ArrayList isLoaded = new ArrayList(); + private static ArrayList isLoaded = new ArrayList(); - public static void register(String mod, Class clazz) { + public static void register(String mod, Class clazz) { if (Loader.isModLoaded(mod)) { load(mod, clazz); } } - public static void load(String mod, Class clazz) { + public static void load(String mod, Class clazz) { try { clazz.newInstance(); isLoaded.add(mod); From 47be63311cdd34a0c8d914e9c12112542c3fa2a1 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Tue, 7 Jul 2015 14:17:47 +0200 Subject: [PATCH 15/31] Factorization rework --- src/main/java/modtweaker2/Commands.java | 5 ++ .../factorization/FactorizationHelper.java | 8 +- .../commands/FactorizationLogger.java | 73 +++++++++++++++++++ .../factorization/handlers/Crystallizer.java | 2 + .../factorization/handlers/Lacerator.java | 11 ++- .../factorization/handlers/SlagFurnace.java | 4 +- 6 files changed, 94 insertions(+), 9 deletions(-) create mode 100644 src/main/java/modtweaker2/mods/factorization/commands/FactorizationLogger.java diff --git a/src/main/java/modtweaker2/Commands.java b/src/main/java/modtweaker2/Commands.java index a412b14..7993b3e 100644 --- a/src/main/java/modtweaker2/Commands.java +++ b/src/main/java/modtweaker2/Commands.java @@ -14,6 +14,7 @@ import modtweaker2.mods.botania.lexicon.commands.LexiconKnowledgeTypesLogger; import modtweaker2.mods.botania.lexicon.commands.LexiconPageLogger; import modtweaker2.mods.chisel.commands.ChiselGroupLogger; import modtweaker2.mods.chisel.commands.ChiselVariationLogger; +import modtweaker2.mods.factorization.commands.FactorizationLogger; import modtweaker2.mods.mekanism.gas.GasLogger; import modtweaker2.mods.tconstruct.MaterialLogger; import modtweaker2.mods.tconstruct.commands.TConstructLogger; @@ -75,6 +76,10 @@ public class Commands { if (TweakerPlugin.isLoaded("ThermalExpansion")) { MineTweakerAPI.server.addMineTweakerCommand("texpansion", new String[] {"/minetweaker texpansion [FILTER]", " Outputs a list of all Thermal Expansion recipes."}, new ThermalExpansionLogger()); } + + if (TweakerPlugin.isLoaded("factorization")) { + MineTweakerAPI.server.addMineTweakerCommand("factorization", new String[] {"/minetweaker factorization [FILTER]", " Outputs a list of all Factorization recipes."}, new FactorizationLogger()); + } } } diff --git a/src/main/java/modtweaker2/mods/factorization/FactorizationHelper.java b/src/main/java/modtweaker2/mods/factorization/FactorizationHelper.java index 37d5372..3410022 100644 --- a/src/main/java/modtweaker2/mods/factorization/FactorizationHelper.java +++ b/src/main/java/modtweaker2/mods/factorization/FactorizationHelper.java @@ -8,8 +8,11 @@ import modtweaker2.helpers.ReflectionHelper; import net.minecraft.item.ItemStack; public class FactorizationHelper { + @SuppressWarnings("rawtypes") public static List lacerator = null; + @SuppressWarnings("rawtypes") public static List slag = null; + @SuppressWarnings("rawtypes") public static List crystallizer = null; static { @@ -22,15 +25,13 @@ public class FactorizationHelper { private FactorizationHelper() {} - @SuppressWarnings("unchecked") - public static Object getLaceratorRecipe(ItemStack input, ItemStack output, float probability) { + public static Object getLaceratorRecipe(Object input, ItemStack output, float probability) { return ReflectionHelper.getInstance(ReflectionHelper.getConstructor("factorization.oreprocessing.TileEntityGrinder$GrinderRecipe", Object.class, ItemStack.class, float.class), input, output, probability); } - @SuppressWarnings("unchecked") public static Object getSlagFurnaceRecipe(ItemStack input, float chance1, ItemStack output1, float chance2, ItemStack output2) { return ReflectionHelper.getInstance(ReflectionHelper.getConstructor("factorization.oreprocessing.TileEntitySlagFurnace$SmeltingResult", ItemStack.class, float.class, ItemStack.class, float.class, ItemStack.class), input, @@ -40,7 +41,6 @@ public class FactorizationHelper { output2); } - @SuppressWarnings("unchecked") public static Object getCrystallizerRecipe(ItemStack input, ItemStack output, ItemStack solution, float output_count) { return ReflectionHelper.getInstance(ReflectionHelper.getConstructor("factorization.oreprocessing.TileEntityCrystallizer$CrystalRecipe", ItemStack.class, ItemStack.class, float.class, ItemStack.class), input, diff --git a/src/main/java/modtweaker2/mods/factorization/commands/FactorizationLogger.java b/src/main/java/modtweaker2/mods/factorization/commands/FactorizationLogger.java new file mode 100644 index 0000000..b05bc84 --- /dev/null +++ b/src/main/java/modtweaker2/mods/factorization/commands/FactorizationLogger.java @@ -0,0 +1,73 @@ +package modtweaker2.mods.factorization.commands; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +import minetweaker.MineTweakerAPI; +import minetweaker.MineTweakerImplementationAPI; +import minetweaker.api.player.IPlayer; +import minetweaker.api.server.ICommandFunction; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.ReflectionHelper; +import modtweaker2.helpers.StringHelper; +import modtweaker2.mods.factorization.FactorizationHelper; +import net.minecraft.item.ItemStack; + +public class FactorizationLogger implements ICommandFunction { + + private static final List validArguments = new LinkedList(); + + static { + validArguments.add("crystallizer"); + validArguments.add("lacerator"); + validArguments.add("slagfurnace"); + } + + @Override + public void execute(String[] arguments, IPlayer player) { + List args = StringHelper.toLowerCase(Arrays.asList(arguments)); + + if(!validArguments.containsAll(args)) { + if(player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); + } + } else { + if(args.isEmpty() || args.contains("crystallizer")) { + for(Object recipe : FactorizationHelper.crystallizer) { + MineTweakerAPI.logCommand(String.format("mods.factorization.Crystallizer.addRecipe(%s, %s, %s, %s);", + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "input")), + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output")), + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "solution")), + ReflectionHelper.getObject(recipe, "output_count"))); + } + } + + if(args.isEmpty() || args.contains("lacerator")) { + for(Object recipe : FactorizationHelper.lacerator) { + MineTweakerAPI.logCommand(String.format("mods.factorization.Lacerator.addRecipe(%s, %s, %s);", + ReflectionHelper.getObject(recipe, "oreName") != null ? + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "oreName")) : + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "itemstack")), + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output")), + ReflectionHelper.getObject(recipe, "probability"))); + } + } + + if(args.isEmpty() || args.contains("slagfurnace")) { + for(Object recipe : FactorizationHelper.slag) { + MineTweakerAPI.logCommand(String.format("mods.factorization.SlagFurnace.addRecipe(%s, %s, %s, %s, %s);", + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "input")), + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output2")), + ReflectionHelper.getObject(recipe, "prob2"), + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output1")), + ReflectionHelper.getObject(recipe, "prob1"))); + } + } + + if (player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("List generated; see minetweaker.log in your minecraft dir")); + } + } + } +} \ No newline at end of file diff --git a/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java b/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java index 3c0cccd..fb50cb2 100644 --- a/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java +++ b/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java @@ -35,6 +35,7 @@ public class Crystallizer { } private static class Add extends BaseListAddition { + @SuppressWarnings("unchecked") public Add(Object recipe) { super(Crystallizer.name, FactorizationHelper.crystallizer); recipes.add(recipe); @@ -69,6 +70,7 @@ public class Crystallizer { } private static class Remove extends BaseListRemoval { + @SuppressWarnings("unchecked") public Remove(List recipes) { super(Crystallizer.name, FactorizationHelper.crystallizer, recipes); } diff --git a/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java b/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java index fe7a7ea..3cabcee 100644 --- a/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java +++ b/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java @@ -1,6 +1,7 @@ package modtweaker2.mods.factorization.handlers; import static modtweaker2.helpers.InputHelper.toIItemStack; +import static modtweaker2.helpers.InputHelper.toObject; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.StackHelper.matches; @@ -28,13 +29,14 @@ public class Lacerator { ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void addRecipe(IItemStack input, IItemStack output, double probability) { - Object recipe = FactorizationHelper.getLaceratorRecipe(toStack(input), toStack(output), (float) probability); - MineTweakerAPI.apply(new Add(toStack(input), recipe)); + public static void addRecipe(IIngredient input, IItemStack output, double probability) { + Object recipe = FactorizationHelper.getLaceratorRecipe(toObject(input), toStack(output), (float) probability); + MineTweakerAPI.apply(new Add(recipe)); } private static class Add extends BaseListAddition { - public Add(ItemStack output, Object recipe) { + @SuppressWarnings("unchecked") + public Add(Object recipe) { super(Lacerator.name, FactorizationHelper.lacerator); recipes.add(recipe); } @@ -67,6 +69,7 @@ public class Lacerator { } private static class Remove extends BaseListRemoval { + @SuppressWarnings("unchecked") public Remove(List recipes) { super(Lacerator.name, FactorizationHelper.lacerator, recipes); } diff --git a/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java b/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java index 31cfa77..5f72fe6 100644 --- a/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java +++ b/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java @@ -34,6 +34,7 @@ public class SlagFurnace { } private static class Add extends BaseListAddition { + @SuppressWarnings("unchecked") public Add(ItemStack input, Object recipe) { super(SlagFurnace.name, FactorizationHelper.slag); recipes.add(recipe); @@ -69,7 +70,8 @@ public class SlagFurnace { } private static class Remove extends BaseListRemoval { - public Remove(List recipes) { + @SuppressWarnings("unchecked") + public Remove(List recipes) { super(SlagFurnace.name, FactorizationHelper.slag, recipes); } From e48fcbe4389c5b7b5cdf8d750152aa2d46f7bd04 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Tue, 7 Jul 2015 14:49:28 +0200 Subject: [PATCH 16/31] Moved AuraLogger to command package --- src/main/java/modtweaker2/Commands.java | 2 +- .../mods/auracascade/{aura => commands}/AuraLogger.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/main/java/modtweaker2/mods/auracascade/{aura => commands}/AuraLogger.java (94%) diff --git a/src/main/java/modtweaker2/Commands.java b/src/main/java/modtweaker2/Commands.java index 7993b3e..a01bf09 100644 --- a/src/main/java/modtweaker2/Commands.java +++ b/src/main/java/modtweaker2/Commands.java @@ -5,7 +5,7 @@ import minetweaker.api.player.IPlayer; import minetweaker.api.server.ICommandFunction; import modtweaker2.commands.EntityMappingLogger; import modtweaker2.mods.appeng.commands.AppliedEnergisticsLogger; -import modtweaker2.mods.auracascade.aura.AuraLogger; +import modtweaker2.mods.auracascade.commands.AuraLogger; import modtweaker2.mods.botania.commands.BotaniaBrewLogger; import modtweaker2.mods.botania.commands.BotaniaLogger; import modtweaker2.mods.botania.commands.BotaniaOrechidLogger; diff --git a/src/main/java/modtweaker2/mods/auracascade/aura/AuraLogger.java b/src/main/java/modtweaker2/mods/auracascade/commands/AuraLogger.java similarity index 94% rename from src/main/java/modtweaker2/mods/auracascade/aura/AuraLogger.java rename to src/main/java/modtweaker2/mods/auracascade/commands/AuraLogger.java index aaf62bd..24d5d1e 100644 --- a/src/main/java/modtweaker2/mods/auracascade/aura/AuraLogger.java +++ b/src/main/java/modtweaker2/mods/auracascade/commands/AuraLogger.java @@ -1,4 +1,4 @@ -package modtweaker2.mods.auracascade.aura; +package modtweaker2.mods.auracascade.commands; import minetweaker.MineTweakerAPI; import minetweaker.MineTweakerImplementationAPI; From 615e96d27f7cfb22f0dd7127433df79c47093c2f Mon Sep 17 00:00:00 2001 From: Zixxl Date: Tue, 7 Jul 2015 14:55:59 +0200 Subject: [PATCH 17/31] Problem with lowercase on folder --- .../appeng/{Commands => commands}/AppliedEnergisticsLogger.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/java/modtweaker2/mods/appeng/{Commands => commands}/AppliedEnergisticsLogger.java (100%) diff --git a/src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java b/src/main/java/modtweaker2/mods/appeng/commands/AppliedEnergisticsLogger.java similarity index 100% rename from src/main/java/modtweaker2/mods/appeng/Commands/AppliedEnergisticsLogger.java rename to src/main/java/modtweaker2/mods/appeng/commands/AppliedEnergisticsLogger.java From 9f61304258ea83d7f0637cf7a5852d1c6a6aace4 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Tue, 7 Jul 2015 15:40:03 +0200 Subject: [PATCH 18/31] More Thermal Expansion rework - Equals method - refreshRecipes for all machines --- .../java/modtweaker2/helpers/StackHelper.java | 18 ++ .../mods/thermalexpansion/ThermalHelper.java | 184 ++++++++++++++++++ .../thermalexpansion/handlers/Crucible.java | 46 ++++- .../thermalexpansion/handlers/Furnace.java | 18 +- .../thermalexpansion/handlers/Pulverizer.java | 44 +++++ .../thermalexpansion/handlers/Sawmill.java | 45 ++++- .../thermalexpansion/handlers/Smelter.java | 44 +++++ .../thermalexpansion/handlers/Transposer.java | 44 +++++ 8 files changed, 437 insertions(+), 6 deletions(-) diff --git a/src/main/java/modtweaker2/helpers/StackHelper.java b/src/main/java/modtweaker2/helpers/StackHelper.java index 9304d21..b4bca6e 100644 --- a/src/main/java/modtweaker2/helpers/StackHelper.java +++ b/src/main/java/modtweaker2/helpers/StackHelper.java @@ -7,6 +7,7 @@ import minetweaker.api.liquid.ILiquidStack; import modtweaker2.mods.botania.Botania; import modtweaker2.utils.TweakerPlugin; import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; public class StackHelper { /** @@ -22,6 +23,14 @@ public class StackHelper { } } + public static boolean areEqual(FluidStack stack1, FluidStack stack2) { + if(stack1 == null || stack2 == null) { + return false; + } + + return stack1.isFluidEqual(stack2); + } + /** * Compares two ItemStack instances if they reference the same object or * are both null. If false, the method areEqual() is called to check if the @@ -36,6 +45,15 @@ public class StackHelper { return(areEqual(stack1, stack2)); } + public static boolean areEqualOrNull(FluidStack stack1, FluidStack stack2) { + // Check if they reference the same object or are are both null + if(stack1 == stack2) { + return true; + } + + return(areEqual(stack1, stack2)); + } + /** * Adds extra check to IIngredient matches() for Botania special flowers */ diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java b/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java index 70a9e02..d383efe 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java @@ -1,6 +1,7 @@ package modtweaker2.mods.thermalexpansion; import static modtweaker2.helpers.ReflectionHelper.getConstructor; +import static modtweaker2.helpers.StackHelper.areEqualOrNull; import java.lang.reflect.Constructor; @@ -32,4 +33,187 @@ public class ThermalHelper { transposerRecipe = getConstructor(RecipeTransposer.class, ItemStack.class, ItemStack.class, FluidStack.class, int.class, int.class); } catch (Exception e) { LogHelper.logError("Exception getting constructor for Thermal Expansion recipes!", e); } } + + public static boolean equals(RecipeCrucible r1, RecipeCrucible r2) { + if(r1 == r2) { + return true; + } + + if(r1 == null || r2 == null) { + return false; + } + + if(!areEqualOrNull(r1.getInput(), r2.getInput())) { + return false; + } + + if(r1.getEnergy() != r2.getEnergy()) { + return false; + } + + if(!areEqualOrNull(r1.getOutput(), r2.getOutput())) { + return false; + } + + return true; + } + + public static boolean equals(RecipeFurnace r1, RecipeFurnace r2) { + if(r1 == r2) { + return true; + } + + if(r1 == null || r2 == null) { + return false; + } + + if(!areEqualOrNull(r1.getInput(), r2.getInput())) { + return false; + } + + if(r1.getEnergy() != r2.getEnergy()) { + return false; + } + + if(!areEqualOrNull(r1.getOutput(), r2.getOutput())) { + return false; + } + + return true; + } + + public static boolean equals(RecipePulverizer r1, RecipePulverizer r2) { + if(r1 == r2) { + return true; + } + + if(r1 == null || r2 == null) { + return false; + } + + if(!areEqualOrNull(r1.getInput(), r2.getInput())) { + return false; + } + + if(r1.getEnergy() != r2.getEnergy()) { + return false; + } + + if(!areEqualOrNull(r1.getPrimaryOutput(), r2.getPrimaryOutput())) { + return false; + } + + if(!areEqualOrNull(r1.getSecondaryOutput(), r2.getSecondaryOutput())) { + return false; + } + + if(r1.getSecondaryOutput() != null && r2.getSecondaryOutput() != null && + r1.getSecondaryOutputChance() != r2.getSecondaryOutputChance()) { + return false; + } + + return true; + } + + public static boolean equals(RecipeSawmill r1, RecipeSawmill r2) { + if(r1 == r2) { + return true; + } + + if(r1 == null || r2 == null) { + return false; + } + + if(!areEqualOrNull(r1.getInput(), r2.getInput())) { + return false; + } + + if(r1.getEnergy() != r2.getEnergy()) { + return false; + } + + if(!areEqualOrNull(r1.getPrimaryOutput(), r2.getPrimaryOutput())) { + return false; + } + + if(!areEqualOrNull(r1.getSecondaryOutput(), r2.getSecondaryOutput())) { + return false; + } + + if(r1.getSecondaryOutput() != null && r2.getSecondaryOutput() != null && + r1.getSecondaryOutputChance() != r2.getSecondaryOutputChance()) { + return false; + } + + return true; + } + + public static boolean equals(RecipeSmelter r1, RecipeSmelter r2) { + if(r1 == r2) { + return true; + } + + if(r1 == null || r2 == null) { + return false; + } + + if(!areEqualOrNull(r1.getPrimaryInput(), r2.getPrimaryInput())) { + return false; + } + + if(!areEqualOrNull(r1.getSecondaryInput(), r2.getSecondaryInput())) { + return false; + } + + if(r1.getEnergy() != r2.getEnergy()) { + return false; + } + + if(!areEqualOrNull(r1.getPrimaryOutput(), r2.getPrimaryOutput())) { + return false; + } + + if(!areEqualOrNull(r1.getSecondaryOutput(), r2.getSecondaryOutput())) { + return false; + } + + if(r1.getSecondaryOutput() != null && r2.getSecondaryOutput() != null && + r1.getSecondaryOutputChance() != r2.getSecondaryOutputChance()) { + return false; + } + + return true; + } + + public static boolean equals(RecipeTransposer r1, RecipeTransposer r2) { + if(r1 == r2) { + return true; + } + + if(r1 == null || r2 == null) { + return false; + } + + if(!areEqualOrNull(r1.getInput(), r2.getInput())) { + return false; + } + + if(r1.getEnergy() != r2.getEnergy()) { + return false; + } + + if(!areEqualOrNull(r1.getOutput(), r2.getOutput())) { + return false; + } + + if(!areEqualOrNull(r1.getFluid(), r2.getFluid())) { + return false; + } + + if(r1.getChance() != r2.getChance()) { + return false; + } + + return true; + } } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java index 941bfeb..ce494cf 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java @@ -8,6 +8,7 @@ import static modtweaker2.helpers.StackHelper.matches; import java.util.LinkedList; import java.util.List; +import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; @@ -69,13 +70,18 @@ public class Crucible { } } + @Override + protected boolean equals(RecipeCrucible recipe, RecipeCrucible otherRecipe) { + return ThermalHelper.equals(recipe, otherRecipe); + } + @Override protected String getRecipeInfo(RecipeCrucible recipe) { return InputHelper.getStackDescription(recipe.getInput()); } } - // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod public static void removeRecipe(IIngredient input) { @@ -119,9 +125,47 @@ public class Crucible { } } + @Override + protected boolean equals(RecipeCrucible recipe, RecipeCrucible otherRecipe) { + return ThermalHelper.equals(recipe, otherRecipe); + } + @Override protected String getRecipeInfo(RecipeCrucible recipe) { return InputHelper.getStackDescription(recipe.getInput()); } } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void refreshRecipes() { + MineTweakerAPI.apply(new Refresh()); + } + + private static class Refresh implements IUndoableAction { + + public void apply() { + CrucibleManager.refreshRecipes(); + } + + public boolean canUndo() { + return true; + } + + public String describe() { + return "Refreshing " + Crucible.name + " recipes"; + } + + public void undo() { + } + + public String describeUndo() { + return "Ignoring undo of " + Crucible.name + " recipe refresh"; + } + + public Object getOverrideKey() { + return null; + } + } } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java index f25e7f6..253e9c2 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java @@ -71,6 +71,11 @@ public class Furnace { } } + + @Override + protected boolean equals(RecipeFurnace recipe, RecipeFurnace otherRecipe) { + return ThermalHelper.equals(recipe, otherRecipe); + } @Override protected String getRecipeInfo(RecipeFurnace recipe) { @@ -121,6 +126,11 @@ public class Furnace { false); } } + + @Override + protected boolean equals(RecipeFurnace recipe, RecipeFurnace otherRecipe) { + return ThermalHelper.equals(recipe, otherRecipe); + } @Override protected String getRecipeInfo(RecipeFurnace recipe) { @@ -138,22 +148,22 @@ public class Furnace { private static class Refresh implements IUndoableAction { public void apply() { - FurnaceManager.loadRecipes(); + FurnaceManager.refreshRecipes(); } public boolean canUndo() { - return false; + return true; } public String describe() { - return "Refreshing Redstone Furnace Recipes"; + return "Refreshing " + Furnace.name + " recipes"; } public void undo() { } public String describeUndo() { - return "Can't Undo Redstone Furnace Refresh"; + return "Ignoring undo of " + Furnace.name + " recipe refresh"; } public Object getOverrideKey() { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java index 82da909..8dfbba9 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java @@ -7,6 +7,7 @@ import static modtweaker2.helpers.StackHelper.matches; import java.util.LinkedList; import java.util.List; +import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; @@ -74,6 +75,11 @@ public class Pulverizer { PulverizerManager.removeRecipe(recipe.getInput()); } } + + @Override + protected boolean equals(RecipePulverizer recipe, RecipePulverizer otherRecipe) { + return ThermalHelper.equals(recipe, otherRecipe); + } @Override protected String getRecipeInfo(RecipePulverizer recipe) { @@ -127,10 +133,48 @@ public class Pulverizer { recipe.getSecondaryOutputChance()); } } + + @Override + protected boolean equals(RecipePulverizer recipe, RecipePulverizer otherRecipe) { + return ThermalHelper.equals(recipe, otherRecipe); + } @Override protected String getRecipeInfo(RecipePulverizer recipe) { return InputHelper.getStackDescription(recipe.getInput()); } } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void refreshRecipes() { + MineTweakerAPI.apply(new Refresh()); + } + + private static class Refresh implements IUndoableAction { + + public void apply() { + PulverizerManager.refreshRecipes(); + } + + public boolean canUndo() { + return true; + } + + public String describe() { + return "Refreshing " + Pulverizer.name + " recipes"; + } + + public void undo() { + } + + public String describeUndo() { + return "Ignoring undo of " + Pulverizer.name + " recipe refresh"; + } + + public Object getOverrideKey() { + return null; + } + } } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java index 56ac348..efbcf14 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java @@ -7,6 +7,7 @@ import static modtweaker2.helpers.StackHelper.matches; import java.util.LinkedList; import java.util.List; +import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; @@ -75,7 +76,11 @@ public class Sawmill { for(RecipeSawmill recipe : successful) { SawmillManager.removeRecipe(recipe.getInput()); } - + } + + @Override + protected boolean equals(RecipeSawmill recipe, RecipeSawmill otherRecipe) { + return ThermalHelper.equals(recipe, otherRecipe); } @Override @@ -131,9 +136,47 @@ public class Sawmill { } } + @Override + protected boolean equals(RecipeSawmill recipe, RecipeSawmill otherRecipe) { + return ThermalHelper.equals(recipe, otherRecipe); + } + @Override protected String getRecipeInfo(RecipeSawmill recipe) { return InputHelper.getStackDescription(recipe.getInput()); } } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void refreshRecipes() { + MineTweakerAPI.apply(new Refresh()); + } + + private static class Refresh implements IUndoableAction { + + public void apply() { + SawmillManager.refreshRecipes(); + } + + public boolean canUndo() { + return true; + } + + public String describe() { + return "Refreshing " + Sawmill.name + " recipes"; + } + + public void undo() { + } + + public String describeUndo() { + return "Ignoring undo of " + Sawmill.name + " recipe refresh"; + } + + public Object getOverrideKey() { + return null; + } + } } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java index 4fc110c..fab59a5 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java @@ -7,6 +7,7 @@ import static modtweaker2.helpers.StackHelper.matches; import java.util.LinkedList; import java.util.List; +import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; @@ -77,6 +78,11 @@ public class Smelter { SmelterManager.removeRecipe(recipe.getPrimaryInput(), recipe.getSecondaryInput()); } } + + @Override + protected boolean equals(RecipeSmelter recipe, RecipeSmelter otherRecipe) { + return ThermalHelper.equals(recipe, otherRecipe); + } @Override public String getRecipeInfo(RecipeSmelter recipe) { @@ -132,10 +138,48 @@ public class Smelter { recipe.getSecondaryOutputChance()); } } + + @Override + protected boolean equals(RecipeSmelter recipe, RecipeSmelter otherRecipe) { + return ThermalHelper.equals(recipe, otherRecipe); + } @Override public String getRecipeInfo(RecipeSmelter recipe) { return InputHelper.getStackDescription(recipe.getPrimaryOutput()); } } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void refreshRecipes() { + MineTweakerAPI.apply(new Refresh()); + } + + private static class Refresh implements IUndoableAction { + + public void apply() { + SmelterManager.refreshRecipes(); + } + + public boolean canUndo() { + return true; + } + + public String describe() { + return "Refreshing " + Smelter.name + " recipes"; + } + + public void undo() { + } + + public String describeUndo() { + return "Ignoring undo of " + Smelter.name + " recipe refresh"; + } + + public Object getOverrideKey() { + return null; + } + } } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java index 0be3206..fd03ab7 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java @@ -9,6 +9,7 @@ import static modtweaker2.helpers.StackHelper.matches; import java.util.LinkedList; import java.util.List; +import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; @@ -118,6 +119,11 @@ public class Transposer { } } + @Override + protected boolean equals(RecipeTransposer recipe, RecipeTransposer otherRecipe) { + return ThermalHelper.equals(recipe, otherRecipe); + } + @Override protected String getRecipeInfo(RecipeTransposer recipe) { return InputHelper.getStackDescription(recipe.getInput()); @@ -205,6 +211,11 @@ public class Transposer { } } + @Override + protected boolean equals(RecipeTransposer recipe, RecipeTransposer otherRecipe) { + return ThermalHelper.equals(recipe, otherRecipe); + } + @Override protected String getRecipeInfo(RecipeTransposer recipe) { return InputHelper.getStackDescription(recipe.getOutput()); @@ -215,4 +226,37 @@ public class Transposer { Fill, Extract } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void refreshRecipes() { + MineTweakerAPI.apply(new Refresh()); + } + + private static class Refresh implements IUndoableAction { + + public void apply() { + TransposerManager.refreshRecipes(); + } + + public boolean canUndo() { + return true; + } + + public String describe() { + return "Refreshing " + Transposer.nameFill + " & " + Transposer.nameExtract + " recipes"; + } + + public void undo() { + } + + public String describeUndo() { + return "Ignoring undo of " + Transposer.nameFill + " & " + Transposer.nameExtract + " recipe refresh"; + } + + public Object getOverrideKey() { + return null; + } + } } From eef4c19a47d3a2e40e0ead36707bdd4a2002731a Mon Sep 17 00:00:00 2001 From: Zixxl Date: Wed, 8 Jul 2015 13:56:27 +0200 Subject: [PATCH 19/31] Better error logging --- .../modtweaker2/helpers/ReflectionHelper.java | 10 +++++++++- .../thermalexpansion/handlers/Crucible.java | 8 +++++++- .../thermalexpansion/handlers/Furnace.java | 8 +++++++- .../thermalexpansion/handlers/Pulverizer.java | 8 +++++++- .../thermalexpansion/handlers/Sawmill.java | 8 +++++++- .../thermalexpansion/handlers/Smelter.java | 8 +++++++- .../thermalexpansion/handlers/Transposer.java | 18 +++++++++++++++--- 7 files changed, 59 insertions(+), 9 deletions(-) diff --git a/src/main/java/modtweaker2/helpers/ReflectionHelper.java b/src/main/java/modtweaker2/helpers/ReflectionHelper.java index 2b258df..d2a0a0b 100644 --- a/src/main/java/modtweaker2/helpers/ReflectionHelper.java +++ b/src/main/java/modtweaker2/helpers/ReflectionHelper.java @@ -37,7 +37,7 @@ public class ReflectionHelper { Constructor constructor = clazz.getDeclaredConstructor(argumentTypes); constructor.setAccessible(true); return constructor; - } catch (Exception ex) { LogHelper.logError("Exception getting constructore of " + className, ex); } + } catch (Exception ex) { LogHelper.logError("Exception getting constructor of " + className, ex); } return null; } @@ -76,6 +76,8 @@ public class ReflectionHelper { } catch (Exception ex) {} } + LogHelper.logError("Could not retrieve any object for the provided field names."); + return null; } @@ -100,6 +102,8 @@ public class ReflectionHelper { } catch (Exception ex) {} } + LogHelper.logError("Could not retrieve any final object for the provided field names."); + return null; } @@ -118,6 +122,8 @@ public class ReflectionHelper { return (T) result.get(null); } catch (Exception e) {} } + + LogHelper.logError("Could not retrieve any static object for the provided field names."); return null; } @@ -134,6 +140,8 @@ public class ReflectionHelper { return getStaticObject(clazz, fieldNames); } catch (ClassNotFoundException e) { } + LogHelper.logError("Could not retrieve any static object for the provided field names."); + return null; } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java index ce494cf..3d0dbb0 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java @@ -41,7 +41,13 @@ public class Crucible { return; } - MineTweakerAPI.apply(new Add(ReflectionHelper.getInstance(ThermalHelper.crucibleRecipe, toStack(input), toFluid(output), energy))); + RecipeCrucible recipe = ReflectionHelper.getInstance(ThermalHelper.crucibleRecipe, toStack(input), toFluid(output), energy); + + if(recipe != null) { + MineTweakerAPI.apply(new Add(recipe)); + } else { + LogHelper.logError(String.format("Error while creating instance for %s recipe.", name)); + } } private static class Add extends BaseListAddition { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java index 253e9c2..ce85a93 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java @@ -41,7 +41,13 @@ public class Furnace { return; } - MineTweakerAPI.apply(new Add(ReflectionHelper.getInstance(ThermalHelper.furanceRecipe, toStack(input), toStack(output), energy))); + RecipeFurnace recipe = ReflectionHelper.getInstance(ThermalHelper.furanceRecipe, toStack(input), toStack(output), energy); + + if(recipe != null) { + MineTweakerAPI.apply(new Add(recipe)); + } else { + LogHelper.logError(String.format("Error while creating instance for %s recipe.", name)); + } } private static class Add extends BaseListAddition { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java index 8dfbba9..e12bfa0 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java @@ -46,7 +46,13 @@ public class Pulverizer { return; } - MineTweakerAPI.apply(new Add(ReflectionHelper.getInstance(ThermalHelper.pulverizerRecipe, toStack(input), toStack(output), toStack(secondary), secondaryChance, energy))); + RecipePulverizer recipe = ReflectionHelper.getInstance(ThermalHelper.pulverizerRecipe, toStack(input), toStack(output), toStack(secondary), secondaryChance, energy); + + if(recipe != null) { + MineTweakerAPI.apply(new Add(recipe)); + } else { + LogHelper.logError(String.format("Error while creating instance for %s recipe.", name)); + } } private static class Add extends BaseListAddition { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java index efbcf14..52f1aea 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java @@ -46,7 +46,13 @@ public class Sawmill { return; } - MineTweakerAPI.apply(new Add(ReflectionHelper.getInstance(ThermalHelper.sawmillRecipe, toStack(input), toStack(output), toStack(secondary), secondaryChance, energy))); + RecipeSawmill recipe = ReflectionHelper.getInstance(ThermalHelper.sawmillRecipe, toStack(input), toStack(output), toStack(secondary), secondaryChance, energy); + + if(recipe != null) { + MineTweakerAPI.apply(new Add(recipe)); + } else { + LogHelper.logError(String.format("Error while creating instance for %s recipe.", name)); + } } private static class Add extends BaseListAddition { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java index fab59a5..8771901 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java @@ -46,7 +46,13 @@ public class Smelter { return; } - MineTweakerAPI.apply(new Add(ReflectionHelper.getInstance(ThermalHelper.smelterRecipe, toStack(input), toStack(input2), toStack(output), toStack(output2), chance, energy))); + RecipeSmelter recipe = ReflectionHelper.getInstance(ThermalHelper.smelterRecipe, toStack(input), toStack(input2), toStack(output), toStack(output2), chance, energy); + + if(recipe != null) { + MineTweakerAPI.apply(new Add(recipe)); + } else { + LogHelper.logError(String.format("Error while creating instance for %s recipe.", name)); + } } private static class Add extends BaseListAddition { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java index fd03ab7..6a571ec 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java @@ -46,7 +46,13 @@ public class Transposer { return; } - MineTweakerAPI.apply(new Add(ReflectionHelper.getInstance(ThermalHelper.transposerRecipe, toStack(input), toStack(output), toFluid(liquid), energy, 100), RecipeType.Fill)); + RecipeTransposer recipe = ReflectionHelper.getInstance(ThermalHelper.transposerRecipe, toStack(input), toStack(output), toFluid(liquid), energy, 100); + + if(recipe != null) { + MineTweakerAPI.apply(new Add(recipe, RecipeType.Fill)); + } else { + LogHelper.logError(String.format("Error while creating instance for %s recipe.", nameFill)); + } } @ZenMethod @@ -60,8 +66,14 @@ public class Transposer { LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s and %s. Command ignored!", Transposer.nameExtract, InputHelper.getStackDescription(toStack(input)), InputHelper.getStackDescription(toFluid(liquid)))); return; } - - MineTweakerAPI.apply(new Add(ReflectionHelper.getInstance(ThermalHelper.transposerRecipe, toStack(input), toStack(output), toFluid(liquid), energy, 100), RecipeType.Extract)); + + RecipeTransposer recipe = ReflectionHelper.getInstance(ThermalHelper.transposerRecipe, toStack(input), toStack(output), toFluid(liquid), energy, 100); + + if(recipe != null) { + MineTweakerAPI.apply(new Add(recipe, RecipeType.Extract)); + } else { + LogHelper.logError(String.format("Error while creating instance for %s recipe.", nameExtract)); + } } private static class Add extends BaseListAddition { From 7317d30ca1e90462dce452798983f19f4e0ec449 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Wed, 8 Jul 2015 13:56:42 +0200 Subject: [PATCH 20/31] Should also updated to new version number --- src/main/java/modtweaker2/ModProps.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/modtweaker2/ModProps.java b/src/main/java/modtweaker2/ModProps.java index 26c0041..3beb52a 100644 --- a/src/main/java/modtweaker2/ModProps.java +++ b/src/main/java/modtweaker2/ModProps.java @@ -4,6 +4,6 @@ public class ModProps { public static final String NAME = "Mod Tweaker 2", name = NAME; public static final String MODID = "modtweaker2", modid = MODID; - public static final String VERSION = "0.8.3", version = VERSION; + public static final String VERSION = "0.9.0", version = VERSION; public static final String DEPENDENCIES = "required-after:MineTweaker3", dependencies = DEPENDENCIES; } From 003a5dc92c61a511c3d3798236062ad4c70589f4 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Wed, 8 Jul 2015 13:57:26 +0200 Subject: [PATCH 21/31] Suppress some warnings --- .../modtweaker2/mods/railcraft/handlers/BlastFurnace.java | 4 +++- .../java/modtweaker2/mods/railcraft/handlers/CokeOven.java | 5 ++++- .../modtweaker2/mods/railcraft/handlers/RockCrusher.java | 4 ++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java b/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java index 98d8c91..776ec9c 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java @@ -30,7 +30,8 @@ public class BlastFurnace { } private static class Add extends BaseListAddition { - public Add(IBlastFurnaceRecipe recipe) { + @SuppressWarnings("unchecked") + public Add(IBlastFurnaceRecipe recipe) { super(BlastFurnace.name, (List)RailcraftHelper.furnace); recipes.add(recipe); } @@ -59,6 +60,7 @@ public class BlastFurnace { } private static class Remove extends BaseListRemoval { + @SuppressWarnings("unchecked") public Remove(List recipes) { super(BlastFurnace.name, (List)RailcraftHelper.furnace, recipes); } diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java b/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java index cc277d8..beecede 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java @@ -85,7 +85,8 @@ public class CokeOven { private static class Add extends BaseListAddition { - public Add(ICokeOvenRecipe recipe) { + @SuppressWarnings("unchecked") + public Add(ICokeOvenRecipe recipe) { super(CokeOven.name, (List)RailcraftCraftingManager.cokeOven.getRecipes()); recipes.add(recipe); } @@ -116,6 +117,8 @@ public class CokeOven { } private static class Remove extends BaseListRemoval { + + @SuppressWarnings("unchecked") public Remove(List recipes) { super(CokeOven.name, (List)RailcraftHelper.oven, recipes); } diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java b/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java index 75d05af..1735494 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java @@ -36,6 +36,8 @@ public class RockCrusher { } private static class Add extends BaseListAddition { + + @SuppressWarnings("unchecked") public Add(IRockCrusherRecipe recipe) { super(RockCrusher.name, (List)RailcraftHelper.crusher); recipes.add(recipe); @@ -67,6 +69,8 @@ public class RockCrusher { } private static class Remove extends BaseListRemoval { + + @SuppressWarnings("unchecked") public Remove(List recipes) { super("Rock Crusher", (List)RailcraftHelper.crusher, recipes); } From d153adc91b223345a70d3e422290d3dbcf0fd54e Mon Sep 17 00:00:00 2001 From: Zixxl Date: Wed, 8 Jul 2015 15:03:58 +0200 Subject: [PATCH 22/31] Bugfixing in TConstruct Smeltery --- .../mods/appeng/handlers/Grind.java | 4 +- .../mods/tconstruct/handlers/Smeltery.java | 205 ++++++++++-------- 2 files changed, 116 insertions(+), 93 deletions(-) diff --git a/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java b/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java index d407120..77e90a8 100644 --- a/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java +++ b/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java @@ -81,7 +81,7 @@ public class Grind { @ZenMethod public static void removeRecipe(IIngredient output) { if(output == null) { - LogHelper.logError(String.format("Required parameters missing for %s Recipe.", Grind.name)); + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); return; } @@ -98,7 +98,7 @@ public class Grind { if(!result.isEmpty()) { MineTweakerAPI.apply(new Remove(result)); } else { - LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Grind.name, output.toString())); + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", name, output.toString())); } } diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java index 01ce940..72aac69 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java @@ -3,6 +3,7 @@ package modtweaker2.mods.tconstruct.handlers; import static modtweaker2.helpers.InputHelper.isABlock; import static modtweaker2.helpers.InputHelper.toFluid; import static modtweaker2.helpers.InputHelper.toFluids; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toILiquidStack; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.StackHelper.matches; @@ -10,6 +11,8 @@ import static modtweaker2.helpers.StackHelper.matches; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -18,8 +21,6 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; -import minetweaker.api.minecraft.MineTweakerMC; -import minetweaker.api.oredict.IOreDictEntry; import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.mods.tconstruct.TConstructHelper; @@ -27,12 +28,10 @@ import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; import modtweaker2.utils.BaseMapAddition; import modtweaker2.utils.BaseMapRemoval; -import modtweaker2.utils.BaseUndoable; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.oredict.OreDictionary; import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @@ -42,6 +41,8 @@ import tconstruct.library.crafting.AlloyMix; public class Smeltery { public static final String nameFuel = "TConstruct Smeltery - Fuel"; + public static final String nameMelting = "TConstruct Smeltery - Melting"; + public static final String nameAlloy = "TConstruct Smeltery - Alloy"; /********************************************** TConstruct Alloy Recipes **********************************************/ @@ -68,21 +69,28 @@ public class Smeltery { // Removing a TConstruct Alloy recipe @ZenMethod - public static void removeAlloy(ILiquidStack output) { - MineTweakerAPI.apply(new RemoveAlloy((toFluid(output)))); + public static void removeAlloy(IIngredient output) { + List recipes = new LinkedList(); + + for(AlloyMix r : TConstructHelper.alloys) { + if(r != null && matches(output, toILiquidStack(r.result))) { + recipes.add(r); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveAlloy(recipes)); + } else { + LogHelper.logError(String.format("No %s recipes found for %s. Command ignored!", nameAlloy, output.toString())); + } + } // Removes a recipe, apply is never the same for anything, so will always // need to override it private static class RemoveAlloy extends BaseListRemoval { - public RemoveAlloy(FluidStack output) { - super("Smeltery - Alloy", TConstructHelper.alloys); - - for (AlloyMix r : TConstructHelper.alloys) { - if (r.result != null && output != null && r.result.getFluid() == output.getFluid()) { - recipes.add(r); - } - } + public RemoveAlloy(List recipes) { + super(nameAlloy, TConstructHelper.alloys, recipes); } @Override @@ -95,117 +103,132 @@ public class Smeltery { // Adding a TConstruct Melting recipe @ZenMethod - public static void addMelting(IItemStack input, ILiquidStack output, int temp, @Optional IItemStack block) { - if (block == null) - block = input; - if (isABlock(block)) { - Block theBlock = Block.getBlockFromItem(toStack(block).getItem()); - int theMeta = toStack(block).getItemDamage(); - MineTweakerAPI.apply(new AddMelting(toStack(input), theBlock, theMeta, temp, toFluid(output))); - } + public static void addMelting(IIngredient input, ILiquidStack output, int temp, @Optional IItemStack block) { + List recipes = new LinkedList(); + + for(IItemStack in : input.getItems()) { + if(block == null && !isABlock(toStack(in))) { + LogHelper.logWarning(String.format("Item %s is not a block and no block renderer is provided for %s recipe. Input ignored!", in.toString(), nameMelting)); + } else { + recipes.add(new MeltingRecipe(toStack(in), toFluid(output), temp, block == null ? toStack(in) : toStack(block))); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new AddMelting(recipes)); + } else { + LogHelper.logError(String.format("No %s recipes could be added for input %s.", nameMelting, input.toString())); + } } - @ZenMethod - public static void addMelting(IOreDictEntry input, ILiquidStack output, int temp, @Optional IItemStack block) { - for (ItemStack stack : OreDictionary.getOres(input.getName())) { - addMelting(MineTweakerMC.getIItemStack(stack), output, temp, block); - } - } + private static class AddMelting extends BaseListAddition { - // Takes all the variables and saves them in place - private static class AddMelting extends BaseUndoable { - private final ItemStack input; - private final Block block; - private final int meta; - private final int temp; - private final FluidStack output; - - public AddMelting(ItemStack input, Block block, int meta, int temp, FluidStack output) { - super("Smeltery - Melting"); - this.input = input; - this.block = block; - this.meta = meta; - this.temp = temp; - this.output = output; + public AddMelting(List recipes) { + super(nameMelting, null, recipes); } - // Adds the Melting recipe @Override public void apply() { - tconstruct.library.crafting.Smeltery.instance.addMelting(input, block, meta, temp, output); + for(MeltingRecipe recipe : recipes) { + tconstruct.library.crafting.Smeltery.addMelting(recipe.input, recipe.getRendererBlock(), recipe.getRendererMeta(), recipe.temperature, recipe.fluid); + successful.add(recipe); + } } - // Removes the Melting recipe from the hashmaps @Override public void undo() { - ItemMetaWrapper in = new ItemMetaWrapper(input); - TConstructHelper.smeltingList.remove(in); - TConstructHelper.temperatureList.remove(in); - TConstructHelper.renderIndex.remove(in); - } - - @Override - public String getRecipeInfo() { - return input.getDisplayName(); + for(MeltingRecipe recipe : successful) { + TConstructHelper.smeltingList.remove(recipe.meta); + TConstructHelper.temperatureList.remove(recipe.meta); + TConstructHelper.renderIndex.remove(recipe.meta); + } } + @Override + public String getRecipeInfo(MeltingRecipe recipe) { + return InputHelper.getStackDescription(recipe.input); + } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Removing a TConstruct Melting recipe @ZenMethod - public static void removeMelting(IItemStack input) { - MineTweakerAPI.apply(new RemoveMelting((toStack(input)))); + public static void removeMelting(IIngredient input) { + List recipes = new LinkedList(); + + for(ItemMetaWrapper meta : TConstructHelper.smeltingList.keySet()) { + ItemStack in = new ItemStack(meta.item, 1, meta.meta); + if(matches(input, toIItemStack(in))) { + recipes.add(new MeltingRecipe( + in, + TConstructHelper.smeltingList.get(meta), + TConstructHelper.temperatureList.get(meta), + TConstructHelper.renderIndex.get(meta))); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMelting(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", nameMelting, input.toString())); + } } - @ZenMethod - public static void removeMelting(IOreDictEntry input) { - for (ItemStack stack : OreDictionary.getOres(input.getName())) { - removeMelting(MineTweakerMC.getIItemStack(stack)); - } - } - - // Removes a recipe, apply is never the same for anything, so will always - // need to override it - private static class RemoveMelting extends BaseUndoable { - private final ItemStack input; - private FluidStack fluid; - private Integer temp; - private ItemStack renderer; - - public RemoveMelting(ItemStack input) { - super("Smeltery - Melting"); - this.input = input; + private static class RemoveMelting extends BaseListRemoval { + + public RemoveMelting(List recipes) { + super(nameMelting, null, recipes); } - // Gets the current values, and saves, them removes them from the - // hashmaps @Override public void apply() { - ItemMetaWrapper in = new ItemMetaWrapper(input); - fluid = TConstructHelper.smeltingList.get(in); - temp = TConstructHelper.temperatureList.get(in); - renderer = TConstructHelper.renderIndex.get(in); - TConstructHelper.smeltingList.remove(in); - TConstructHelper.temperatureList.remove(in); - TConstructHelper.renderIndex.remove(in); + for(MeltingRecipe recipe : recipes) { + TConstructHelper.smeltingList.remove(recipe.meta); + TConstructHelper.temperatureList.remove(recipe.meta); + TConstructHelper.renderIndex.remove(recipe.meta); + + successful.add(recipe); + } } - // Reads the Melting recipe - @Override + @Override public void undo() { - // tconstruct.library.crafting.Smeltery.instance.addMelting(input, - // Block.getBlockFromItem(renderer.getItem()), - // renderer.getItemDamage(), temp, fluid); + for(MeltingRecipe recipe : successful) { + tconstruct.library.crafting.Smeltery.addMelting(recipe.input, recipe.getRendererBlock(), recipe.getRendererMeta(), recipe.temperature, recipe.fluid); + } } @Override - public String getRecipeInfo() { - return input.getDisplayName(); + public String getRecipeInfo(MeltingRecipe recipe) { + return InputHelper.getStackDescription(recipe.input); } } + protected static class MeltingRecipe { + public final ItemMetaWrapper meta; + public final ItemStack input; + public final FluidStack fluid; + public final Integer temperature; + public final ItemStack renderer; + + protected MeltingRecipe(ItemStack input, FluidStack fluid, int temperature, ItemStack renderer) { + this.input = input; + this.fluid = fluid; + this.temperature = temperature; + this.renderer = renderer; + this.meta = new ItemMetaWrapper(input); + } + + public Block getRendererBlock() { + return Block.getBlockFromItem(renderer.getItem()); + } + + public int getRendererMeta() { + return renderer.getItemDamage(); + } + } + /********************************************** TConstruct Fuel Recipes **********************************************/ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// From ece7dca426d162e480af75300d9bae9a64774df7 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Wed, 8 Jul 2015 17:27:44 +0200 Subject: [PATCH 23/31] Some more TConstruct tweaks --- .../mods/tconstruct/handlers/Casting.java | 85 +++++++++---------- .../mods/tconstruct/handlers/Drying.java | 5 ++ .../mods/tconstruct/handlers/Smeltery.java | 16 ++++ 3 files changed, 60 insertions(+), 46 deletions(-) diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java index dd76146..5dd5550 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java @@ -4,6 +4,7 @@ import static modtweaker2.helpers.InputHelper.toFluid; import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toILiquidStack; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; import java.util.ArrayList; import java.util.LinkedList; @@ -12,6 +13,7 @@ import java.util.List; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; +import minetweaker.api.item.IngredientAny; import minetweaker.api.liquid.ILiquidStack; import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; @@ -32,18 +34,28 @@ public class Casting { @ZenMethod public static void addBasinRecipe(IItemStack output, ILiquidStack metal, @Optional IItemStack cast, @Optional boolean consume, int delay) { + if(metal == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + MineTweakerAPI.apply(new Add(new CastingRecipe(toStack(output), toFluid(metal), toStack(cast), consume, delay, null), TConstructHelper.basinCasting)); } @ZenMethod public static void addTableRecipe(IItemStack output, ILiquidStack metal, @Optional IItemStack cast, @Optional boolean consume, int delay) { + if(metal == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + MineTweakerAPI.apply(new Add(new CastingRecipe(toStack(output), toFluid(metal), toStack(cast), consume, delay, null), TConstructHelper.tableCasting)); } //Passes the list to the base list implementation, and adds the recipe private static class Add extends BaseListAddition { public Add(CastingRecipe recipe, ArrayList list) { - super("TConstruct Casting", list); + super(Casting.name, list); this.recipes.add(recipe); } @@ -57,62 +69,49 @@ public class Casting { ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void removeTableRecipe(IIngredient output) { - removeRecipe(output, TConstructHelper.tableCasting, RecipeComponent.Output); + public static void removeTableRecipe(IIngredient output, @Optional IIngredient material, @Optional IIngredient cast) { + removeRecipe(output, material, cast, TConstructHelper.tableCasting); } @ZenMethod - public static void removeTableMaterial(IIngredient material) { - removeRecipe(material, TConstructHelper.tableCasting, RecipeComponent.Material); + public static void removeBasinRecipe(IIngredient output, @Optional IIngredient material, @Optional IIngredient cast) { + removeRecipe(output, material, cast, TConstructHelper.basinCasting); } + + public static void removeRecipe(IIngredient output, IIngredient material, IIngredient cast, List list) { - @ZenMethod - public static void removeCastRecipes(IIngredient cast) { - removeRecipe(cast, TConstructHelper.tableCasting, RecipeComponent.Cast); - } - - @ZenMethod - public static void removeBasinRecipe(IIngredient output) { - removeRecipe(output, TConstructHelper.basinCasting, RecipeComponent.Output); - } - - @ZenMethod - public static void removeBasinMaterial(IIngredient material) { - removeRecipe(material, TConstructHelper.basinCasting, RecipeComponent.Material); - } - - - public static void removeRecipe(IIngredient ingredient, List list, RecipeComponent component) { + if(material == null) { + material = IngredientAny.INSTANCE; + } + + if(cast == null) { + cast = IngredientAny.INSTANCE; + } List recipes = new LinkedList(); for(CastingRecipe recipe : list) { if(recipe != null) { - switch(component) { - case Cast: - if(recipe.cast != null && ingredient.contains(toIItemStack(recipe.cast))) { - recipes.add(recipe); - } - break; - case Output: - if (recipe.output != null && ingredient.contains(toIItemStack(recipe.output))) { - recipes.add(recipe); - } - break; - case Material: - if (recipe.castingMetal != null && ingredient.contains(toILiquidStack(recipe.castingMetal))) { - // TODO: Currently broken, because MCLiquidStack equals() method always returns false - recipes.add(recipe); - } - break; + if (!matches(output, toIItemStack(recipe.output))) { + continue; } + + if (!matches(material, toILiquidStack(recipe.castingMetal))) { + continue; + } + + if(!matches(cast, toIItemStack(recipe.cast))) { + continue; + } + + recipes.add(recipe); } } if(!recipes.isEmpty()) { MineTweakerAPI.apply(new Remove(list, recipes)); } else { - LogHelper.logWarning(String.format("No %s Recipe found for %s. Command ignored!", Casting.name, ingredient.toString())); + LogHelper.logWarning(String.format("No %s Recipe found for output %s, meterial %s and cast %s. Command ignored!", Casting.name, output.toString(), material.toString(), cast.toString())); } } @@ -127,10 +126,4 @@ public class Casting { return InputHelper.getStackDescription(recipe.output); } } - - public enum RecipeComponent { - Output, - Cast, - Material - } } diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java index d1ce446..d54b8c1 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java @@ -28,6 +28,11 @@ public class Drying { @ZenMethod public static void addRecipe(IItemStack input, IItemStack output, int time) { + if(input == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + MineTweakerAPI.apply(new Add(TConstructHelper.getDryingRecipe(toStack(input), time, toStack(output)))); } diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java index 72aac69..613201b 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java @@ -49,6 +49,11 @@ public class Smeltery { // Adding a TConstruct Alloy recipe @ZenMethod public static void addAlloy(ILiquidStack output, ILiquidStack[] input) { + if(input == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", nameAlloy)); + return; + } + MineTweakerAPI.apply(new AddAlloy(new AlloyMix(toFluid(output), new ArrayList(Arrays.asList(toFluids(input)))))); } @@ -104,6 +109,12 @@ public class Smeltery { // Adding a TConstruct Melting recipe @ZenMethod public static void addMelting(IIngredient input, ILiquidStack output, int temp, @Optional IItemStack block) { + + if(input == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", nameMelting)); + return; + } + List recipes = new LinkedList(); for(IItemStack in : input.getItems()) { @@ -265,6 +276,11 @@ public class Smeltery { @ZenMethod public static void addFuel(ILiquidStack liquid, int power, int duration) { + if(liquid == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", nameFuel)); + return; + } + Map recipes = new HashMap(); recipes.put(toFluid(liquid).getFluid(), new Integer[] {power, duration}); From 2dd8e910f4942efea1d749c466700b49180953ed Mon Sep 17 00:00:00 2001 From: Zixxl Date: Thu, 9 Jul 2015 11:28:40 +0200 Subject: [PATCH 24/31] More Logging rework --- src/main/java/modtweaker2/Commands.java | 6 +- .../java/modtweaker2/helpers/InputHelper.java | 87 ++---------- .../java/modtweaker2/helpers/LogHelper.java | 130 ++++++++++++++++++ .../commands/AppliedEnergisticsLogger.java | 18 +-- .../mods/appeng/handlers/Grind.java | 7 +- .../mods/appeng/handlers/Inscriber.java | 8 +- .../mods/auracascade/handlers/Pylon.java | 5 +- .../mods/botania/commands/BotaniaLogger.java | 18 +-- .../mods/botania/handlers/Apothecary.java | 5 +- .../mods/botania/handlers/ElvenTrade.java | 5 +- .../mods/botania/handlers/ManaInfusion.java | 5 +- .../mods/botania/handlers/RuneAltar.java | 5 +- .../mods/exnihilo/handlers/Crucible.java | 6 +- .../commands/FactorizationLogger.java | 20 +-- .../factorization/handlers/Crystallizer.java | 5 +- .../factorization/handlers/Lacerator.java | 5 +- .../factorization/handlers/SlagFurnace.java | 5 +- .../mods/forestry/handlers/Carpenter.java | 5 +- .../mods/forestry/handlers/Centrifuge.java | 5 +- .../mods/forestry/handlers/Fermenter.java | 5 +- .../mods/forestry/handlers/Moistener.java | 5 +- .../mods/forestry/handlers/Squeezer.java | 5 +- .../mods/forestry/handlers/Still.java | 5 +- .../handlers/ThermionicFabricator.java | 9 +- .../mods/fsp/handlers/Crucible.java | 9 +- .../mods/fsp/handlers/Furnace.java | 5 +- .../mods/mariculture/handlers/Anvil.java | 5 +- .../mods/mariculture/handlers/Casting.java | 6 +- .../mods/mariculture/handlers/Crucible.java | 5 +- .../mods/mariculture/handlers/Vat.java | 9 +- .../mods/metallurgy/handlers/Alloyer.java | 6 +- .../mods/metallurgy/handlers/Crusher.java | 6 +- .../pneumaticcraft/handlers/Assembly.java | 7 +- .../pneumaticcraft/handlers/Pressure.java | 5 +- .../railcraft/commands/RailcraftLogger.java | 110 +++++++++++++++ .../mods/railcraft/handlers/BlastFurnace.java | 5 +- .../mods/railcraft/handlers/CokeOven.java | 5 +- .../mods/railcraft/handlers/RockCrusher.java | 5 +- .../tconstruct/commands/TConstructLogger.java | 30 ++-- .../mods/tconstruct/handlers/Casting.java | 14 +- .../mods/tconstruct/handlers/Drying.java | 5 +- .../mods/tconstruct/handlers/Smeltery.java | 13 +- .../mods/tconstruct/handlers/TiCTweaks.java | 6 +- .../mods/tfcraft/handlers/Anvil.java | 5 +- .../mods/tfcraft/handlers/Barrel.java | 9 +- .../mods/tfcraft/handlers/Kiln.java | 6 +- .../mods/tfcraft/handlers/Quern.java | 6 +- .../mods/thaumcraft/handlers/Arcane.java | 5 +- .../mods/thaumcraft/handlers/Crucible.java | 5 +- .../mods/thaumcraft/handlers/Infusion.java | 3 +- .../mods/thaumcraft/handlers/Loot.java | 4 +- .../commands/ThermalExpansionLogger.java | 56 ++++---- .../thermalexpansion/handlers/Crucible.java | 7 +- .../thermalexpansion/handlers/Furnace.java | 7 +- .../thermalexpansion/handlers/Pulverizer.java | 7 +- .../thermalexpansion/handlers/Sawmill.java | 7 +- .../thermalexpansion/handlers/Smelter.java | 7 +- .../thermalexpansion/handlers/Transposer.java | 9 +- .../utils/BaseCraftingAddition.java | 4 +- .../utils/BaseCraftingRemoval.java | 4 +- 60 files changed, 464 insertions(+), 322 deletions(-) create mode 100644 src/main/java/modtweaker2/mods/railcraft/commands/RailcraftLogger.java diff --git a/src/main/java/modtweaker2/Commands.java b/src/main/java/modtweaker2/Commands.java index a01bf09..81fe35d 100644 --- a/src/main/java/modtweaker2/Commands.java +++ b/src/main/java/modtweaker2/Commands.java @@ -16,6 +16,7 @@ import modtweaker2.mods.chisel.commands.ChiselGroupLogger; import modtweaker2.mods.chisel.commands.ChiselVariationLogger; import modtweaker2.mods.factorization.commands.FactorizationLogger; import modtweaker2.mods.mekanism.gas.GasLogger; +import modtweaker2.mods.railcraft.commands.RailcraftLogger; import modtweaker2.mods.tconstruct.MaterialLogger; import modtweaker2.mods.tconstruct.commands.TConstructLogger; import modtweaker2.mods.thaumcraft.commands.AspectLogger; @@ -80,8 +81,11 @@ public class Commands { if (TweakerPlugin.isLoaded("factorization")) { MineTweakerAPI.server.addMineTweakerCommand("factorization", new String[] {"/minetweaker factorization [FILTER]", " Outputs a list of all Factorization recipes."}, new FactorizationLogger()); } + + if (TweakerPlugin.isLoaded("Railcraft")) { + MineTweakerAPI.server.addMineTweakerCommand("railcraft", new String[] {"/minetweaker railcraft [FILTER]", " Outputs a list of all Railcraft recipes."}, new RailcraftLogger()); + } } - } public static void registerMineTweakerCommand(String commandName, String[] usages, ICommandFunction commandFunction) { diff --git a/src/main/java/modtweaker2/helpers/InputHelper.java b/src/main/java/modtweaker2/helpers/InputHelper.java index 789f688..6912c3f 100644 --- a/src/main/java/modtweaker2/helpers/InputHelper.java +++ b/src/main/java/modtweaker2/helpers/InputHelper.java @@ -1,24 +1,21 @@ package modtweaker2.helpers; +import java.lang.reflect.Array; import java.util.ArrayList; -import java.util.List; import minetweaker.api.entity.IEntity; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; import minetweaker.api.oredict.IOreDictEntry; -import minetweaker.mc1710.data.NBTConverter; import minetweaker.mc1710.item.MCItemStack; import minetweaker.mc1710.liquid.MCLiquidStack; import net.minecraft.entity.Entity; -import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.oredict.OreDictionary; public class InputHelper { public static boolean isABlock(IItemStack block) { @@ -29,82 +26,20 @@ public class InputHelper { return true; } - /** - * Returns a string representation of the item which can also be used in scripts - */ - public static String getStackDescription(Object object) { - if(object instanceof ItemStack) { - ItemStack stack = (ItemStack)object; - StringBuilder sb = new StringBuilder(); - - // Creates a name like or - sb.append('<'); - sb.append(Item.itemRegistry.getNameForObject(stack.getItem())); - if(stack.getItemDamage() == 32767) { - sb.append(":*"); - } else if (stack.getItemDamage() > 0) { - sb.append(":").append(stack.getItemDamage()); - } - sb.append('>'); - - // Do we have a tag? (e.g. .withTag({}) ) - if(stack.getTagCompound() != null) - { - sb.append(".withTag("); - sb.append(NBTConverter.from(stack.getTagCompound(), true)); - sb.append(')'); - } - - // Do we have a stack size > 1? - if(stack.stackSize > 1) { - sb.append(" * ").append(stack.stackSize); - } - - return sb.toString(); - } else if (object instanceof FluidStack) { - FluidStack stack = (FluidStack)object; - StringBuilder sb = new StringBuilder(); - - sb.append("'); - - if(stack.amount > 1) { - sb.append(" * ").append(stack.amount); + public static T[][] getMultiDimensionalArray(Class clazz, T[] array, int height, int width) { + + @SuppressWarnings("unchecked") + T[][] multiDim = (T[][])Array.newInstance(clazz, new int[] {height, width}); + + for(int y = 0; y < height; y++) { + for(int x = 0; x < width; x++) { + multiDim[y][x] = array[x + (y * width)]; } - - return sb.toString(); - } else if (object instanceof String) { - List ores = OreDictionary.getOres((String)object); - - // Check if string specifies an oredict entry - if(!ores.isEmpty()) { - return ""; - } else { - return "\"" + (String)object + "\""; - } - } else if (object != null) { - return "\"" + object.toString() + "\""; - } else { - return "null"; } + + return multiDim; } - public static String getArrayDescription(List objects) { - StringBuilder sb = new StringBuilder(); - - if(objects.isEmpty()) { - sb.append("[]"); - } else { - sb.append('['); - for(Object object : objects) { - sb.append(InputHelper.getStackDescription(object)).append(", "); - } - sb.setLength(sb.length() - 2); - sb.append(']'); - } - - return sb.toString(); - } - public static IItemStack[] toStacks(IIngredient[] iIngredient) { ArrayList stacks = new ArrayList(); for (IIngredient ing : iIngredient) { diff --git a/src/main/java/modtweaker2/helpers/LogHelper.java b/src/main/java/modtweaker2/helpers/LogHelper.java index cc8b444..0834e1a 100644 --- a/src/main/java/modtweaker2/helpers/LogHelper.java +++ b/src/main/java/modtweaker2/helpers/LogHelper.java @@ -1,8 +1,21 @@ package modtweaker2.helpers; +import java.util.Arrays; +import java.util.List; + import minetweaker.MineTweakerAPI; import minetweaker.MineTweakerImplementationAPI; import minetweaker.api.player.IPlayer; +import minetweaker.mc1710.data.NBTConverter; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.item.crafting.ShapedRecipes; +import net.minecraft.item.crafting.ShapelessRecipes; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.oredict.OreDictionary; +import net.minecraftforge.oredict.ShapedOreRecipe; +import net.minecraftforge.oredict.ShapelessOreRecipe; public class LogHelper { public static void logPrinted(IPlayer player) { @@ -37,4 +50,121 @@ public class LogHelper { public static void logInfo(String message) { MineTweakerAPI.logInfo("[ModTweaker2] " + message); } + + /** + * Returns a string representation of the item which can also be used in scripts + */ + public static String getStackDescription(Object object) { + if(object instanceof ItemStack) { + ItemStack stack = (ItemStack)object; + StringBuilder sb = new StringBuilder(); + + // Creates a name like or + sb.append('<'); + sb.append(Item.itemRegistry.getNameForObject(stack.getItem())); + if(stack.getItemDamage() == 32767) { + sb.append(":*"); + } else if (stack.getItemDamage() > 0) { + sb.append(":").append(stack.getItemDamage()); + } + sb.append('>'); + + // Do we have a tag? (e.g. .withTag({}) ) + if(stack.getTagCompound() != null) + { + sb.append(".withTag("); + sb.append(NBTConverter.from(stack.getTagCompound(), true)); + sb.append(')'); + } + + // Do we have a stack size > 1? + if(stack.stackSize > 1) { + sb.append(" * ").append(stack.stackSize); + } + + return sb.toString(); + } else if (object instanceof FluidStack) { + FluidStack stack = (FluidStack)object; + StringBuilder sb = new StringBuilder(); + + sb.append("'); + + if(stack.amount > 1) { + sb.append(" * ").append(stack.amount); + } + + return sb.toString(); + } else if (object instanceof String) { + List ores = OreDictionary.getOres((String)object); + + // Check if string specifies an oredict entry + if(!ores.isEmpty()) { + return ""; + } else { + return "\"" + (String)object + "\""; + } + } else if (object != null) { + return "\"" + object.toString() + "\""; + } else { + return "null"; + } + } + + public static String getListDescription(List objects) { + StringBuilder sb = new StringBuilder(); + + if(objects.isEmpty()) { + sb.append("[]"); + } else { + sb.append('['); + for(Object object : objects) { + if(object instanceof List) { + sb.append(getListDescription((List)object)).append(", "); + } else if(object instanceof Object[]) { + sb.append(getListDescription(Arrays.asList((Object[])object))).append(", "); + } else { + sb.append(getStackDescription(object)).append(", "); + } + } + sb.setLength(sb.length() - 2); + sb.append(']'); + } + + return sb.toString(); + } + + public static String getCraftingDescription(IRecipe recipe) { + if(recipe instanceof ShapelessOreRecipe) + return LogHelper.getCraftingDescription((ShapelessOreRecipe)recipe); + else if(recipe instanceof ShapedOreRecipe) + return LogHelper.getCraftingDescription((ShapedOreRecipe)recipe); + else if(recipe instanceof ShapelessRecipes) + return LogHelper.getCraftingDescription((ShapelessRecipes)recipe); + else if(recipe instanceof ShapedRecipes) + return LogHelper.getCraftingDescription((ShapedRecipes)recipe); + + return recipe.toString(); + } + + public static String getCraftingDescription(ShapelessOreRecipe recipe) { + return getListDescription(recipe.getInput()); + } + + public static String getCraftingDescription(ShapelessRecipes recipe) { + return getListDescription(recipe.recipeItems); + } + + public static String getCraftingDescription(ShapedOreRecipe recipe) { + int height = ReflectionHelper.getObject(recipe, "width"); + int width = ReflectionHelper.getObject(recipe, "height"); + + Object[][] recipes = InputHelper.getMultiDimensionalArray(Object.class, recipe.getInput(), height, width); + + return getListDescription(Arrays.asList(recipes)); + } + + public static String getCraftingDescription(ShapedRecipes recipe) { + ItemStack[][] recipes = InputHelper.getMultiDimensionalArray(ItemStack.class, recipe.recipeItems, recipe.recipeHeight, recipe.recipeWidth); + return getListDescription(Arrays.asList(recipes)); + } } diff --git a/src/main/java/modtweaker2/mods/appeng/commands/AppliedEnergisticsLogger.java b/src/main/java/modtweaker2/mods/appeng/commands/AppliedEnergisticsLogger.java index da2f6e1..1fe753a 100644 --- a/src/main/java/modtweaker2/mods/appeng/commands/AppliedEnergisticsLogger.java +++ b/src/main/java/modtweaker2/mods/appeng/commands/AppliedEnergisticsLogger.java @@ -8,7 +8,7 @@ import minetweaker.MineTweakerAPI; import minetweaker.MineTweakerImplementationAPI; import minetweaker.api.player.IPlayer; import minetweaker.api.server.ICommandFunction; -import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.helpers.StringHelper; import appeng.api.AEApi; import appeng.api.features.IGrinderEntry; @@ -35,12 +35,12 @@ public class AppliedEnergisticsLogger implements ICommandFunction { if(args.isEmpty() || args.contains("grinder")) { for(IGrinderEntry recipe : AEApi.instance().registries().grinder().getRecipes()) { MineTweakerAPI.logCommand(String.format("mods.appeng.Grinder.addRecipe(%s, %s, %d, %s, %s, %s, %s);", - InputHelper.getStackDescription(recipe.getInput()), - InputHelper.getStackDescription(recipe.getOutput()), + LogHelper.getStackDescription(recipe.getInput()), + LogHelper.getStackDescription(recipe.getOutput()), recipe.getEnergyCost(), - InputHelper.getStackDescription(recipe.getOptionalOutput()), + LogHelper.getStackDescription(recipe.getOptionalOutput()), recipe.getOptionalChance(), - InputHelper.getStackDescription(recipe.getSecondOptionalOutput()), + LogHelper.getStackDescription(recipe.getSecondOptionalOutput()), recipe.getSecondOptionalChance())); } } @@ -48,10 +48,10 @@ public class AppliedEnergisticsLogger implements ICommandFunction { if(args.isEmpty() || args.contains("inscriber")) { for(IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes()) { MineTweakerAPI.logCommand(String.format("mods.appeng.Inscriber.addRecipe(%s, %s, %s, %s, \"%s\");", - InputHelper.getArrayDescription(recipe.getInputs()), - InputHelper.getStackDescription(recipe.getTopOptional().orNull()), - InputHelper.getStackDescription(recipe.getBottomOptional().orNull()), - InputHelper.getStackDescription(recipe.getOutput()), + LogHelper.getListDescription(recipe.getInputs()), + LogHelper.getStackDescription(recipe.getTopOptional().orNull()), + LogHelper.getStackDescription(recipe.getBottomOptional().orNull()), + LogHelper.getStackDescription(recipe.getOutput()), recipe.getProcessType().toString())); } } diff --git a/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java b/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java index 77e90a8..6625690 100644 --- a/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java +++ b/src/main/java/modtweaker2/mods/appeng/handlers/Grind.java @@ -1,6 +1,5 @@ package modtweaker2.mods.appeng.handlers; -import static modtweaker2.helpers.InputHelper.getStackDescription; import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.StackHelper.matches; @@ -49,7 +48,7 @@ public class Grind { // Check if the recipe is already present, we don't want to add duplicates for(IGrinderEntry r : AEApi.instance().registries().grinder().getRecipes()) { if(r != null && AppliedEnergisticsHelper.equals(r, recipe)) { - LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, InputHelper.getStackDescription(toStack(input)))); + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, LogHelper.getStackDescription(toStack(input)))); return; } } @@ -66,7 +65,7 @@ public class Grind { @Override public String getRecipeInfo(IGrinderEntry recipe) { - return getStackDescription(recipe.getInput()); + return LogHelper.getStackDescription(recipe.getInput()); } @Override @@ -109,7 +108,7 @@ public class Grind { @Override public String getRecipeInfo(IGrinderEntry recipe) { - return getStackDescription(recipe.getInput()); + return LogHelper.getStackDescription(recipe.getInput()); } } diff --git a/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java b/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java index 9eaf18f..694aee8 100644 --- a/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java +++ b/src/main/java/modtweaker2/mods/appeng/handlers/Inscriber.java @@ -1,6 +1,5 @@ package modtweaker2.mods.appeng.handlers; -import static modtweaker2.helpers.InputHelper.getStackDescription; import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.InputHelper.toStacks; @@ -11,7 +10,6 @@ import java.util.LinkedList; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.mods.appeng.AppliedEnergisticsHelper; import modtweaker2.utils.ArrayUtils; @@ -44,7 +42,7 @@ public class Inscriber { // Check if the recipe is already present, we don't want to add duplicates for(IInscriberRecipe r : AEApi.instance().registries().inscriber().getRecipes()) { if(r != null && AppliedEnergisticsHelper.equals(r, recipe)) { - LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", Inscriber.name, InputHelper.getStackDescription(toStack(out)))); + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", Inscriber.name, LogHelper.getStackDescription(toStack(out)))); return; } } @@ -87,7 +85,7 @@ public class Inscriber { @Override public String getRecipeInfo(IInscriberRecipe recipe) { - return getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } @Override @@ -156,7 +154,7 @@ public class Inscriber { @Override public String getRecipeInfo(IInscriberRecipe recipe) { - return getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/auracascade/handlers/Pylon.java b/src/main/java/modtweaker2/mods/auracascade/handlers/Pylon.java index 1cba0a8..6dc2544 100644 --- a/src/main/java/modtweaker2/mods/auracascade/handlers/Pylon.java +++ b/src/main/java/modtweaker2/mods/auracascade/handlers/Pylon.java @@ -9,7 +9,6 @@ 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.mods.auracascade.AuraCascadeHelper; import modtweaker2.mods.auracascade.aura.IAuraStack; @@ -50,7 +49,7 @@ public class Pylon { @Override protected String getRecipeInfo(PylonRecipe recipe) { - return InputHelper.getStackDescription(recipe.result); + return LogHelper.getStackDescription(recipe.result); } } @@ -81,7 +80,7 @@ public class Pylon { @Override protected String getRecipeInfo(PylonRecipe recipe) { - return InputHelper.getStackDescription(recipe.result); + return LogHelper.getStackDescription(recipe.result); } } } diff --git a/src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java b/src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java index bc04dab..95e2d9c 100644 --- a/src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java +++ b/src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java @@ -8,7 +8,7 @@ import minetweaker.MineTweakerAPI; import minetweaker.MineTweakerImplementationAPI; import minetweaker.api.player.IPlayer; import minetweaker.api.server.ICommandFunction; -import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.helpers.StringHelper; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.recipe.RecipeElvenTrade; @@ -39,8 +39,8 @@ public class BotaniaLogger implements ICommandFunction { if(args.isEmpty() || args.contains("apothecary")) { for(RecipePetals recipe : BotaniaAPI.petalRecipes) { MineTweakerAPI.logCommand(String.format("mods.botania.Apothecary.addRecipe(%s, %s);", - InputHelper.getStackDescription(recipe.getOutput()), - InputHelper.getArrayDescription(recipe.getInputs()) // Need to resolve "petalXXX" to an item + LogHelper.getStackDescription(recipe.getOutput()), + LogHelper.getListDescription(recipe.getInputs()) // Need to resolve "petalXXX" to an item )); } } @@ -48,8 +48,8 @@ public class BotaniaLogger implements ICommandFunction { if(args.isEmpty() || args.contains("elventrade")) { for(RecipeElvenTrade recipe : BotaniaAPI.elvenTradeRecipes) { MineTweakerAPI.logCommand(String.format("mods.botania.ElvenTrade.addRecipe(%s, %s);", - InputHelper.getStackDescription(recipe.getOutput()), - InputHelper.getArrayDescription(recipe.getInputs() + LogHelper.getStackDescription(recipe.getOutput()), + LogHelper.getListDescription(recipe.getInputs() ))); } } @@ -58,8 +58,8 @@ public class BotaniaLogger implements ICommandFunction { for(RecipeManaInfusion recipe : BotaniaAPI.manaInfusionRecipes) { MineTweakerAPI.logCommand(String.format("mods.botania.ManaInfusion.add%s(%s, %s, %d);", recipe.isAlchemy() ? "Alchemy" : recipe.isConjuration() ? "Conjuration" : "Infusion", - InputHelper.getStackDescription(recipe.getOutput()), - InputHelper.getStackDescription(recipe.getInput()), + LogHelper.getStackDescription(recipe.getOutput()), + LogHelper.getStackDescription(recipe.getInput()), recipe.getManaToConsume() )); } @@ -68,8 +68,8 @@ public class BotaniaLogger implements ICommandFunction { if(args.isEmpty() || args.contains("runealtar")) { for(RecipeRuneAltar recipe : BotaniaAPI.runeAltarRecipes) { MineTweakerAPI.logCommand(String.format("mods.botania.RuneAltar.addRecipe(%s, %s, %d);", - InputHelper.getStackDescription(recipe.getOutput()), - InputHelper.getArrayDescription(recipe.getInputs()), + LogHelper.getStackDescription(recipe.getOutput()), + LogHelper.getListDescription(recipe.getInputs()), recipe.getManaUsage() )); } diff --git a/src/main/java/modtweaker2/mods/botania/handlers/Apothecary.java b/src/main/java/modtweaker2/mods/botania/handlers/Apothecary.java index 6e14090..d61b4ae 100644 --- a/src/main/java/modtweaker2/mods/botania/handlers/Apothecary.java +++ b/src/main/java/modtweaker2/mods/botania/handlers/Apothecary.java @@ -11,7 +11,6 @@ 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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -46,7 +45,7 @@ public class Apothecary { @Override public String getRecipeInfo(RecipePetals recipe) { - return InputHelper.getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } @@ -83,7 +82,7 @@ public class Apothecary { @Override public String getRecipeInfo(RecipePetals recipe) { - return InputHelper.getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/botania/handlers/ElvenTrade.java b/src/main/java/modtweaker2/mods/botania/handlers/ElvenTrade.java index 0260c17..78cfcde 100644 --- a/src/main/java/modtweaker2/mods/botania/handlers/ElvenTrade.java +++ b/src/main/java/modtweaker2/mods/botania/handlers/ElvenTrade.java @@ -11,7 +11,6 @@ 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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -40,7 +39,7 @@ public class ElvenTrade { @Override public String getRecipeInfo(RecipeElvenTrade recipe) { - return InputHelper.getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } @@ -72,7 +71,7 @@ public class ElvenTrade { @Override public String getRecipeInfo(RecipeElvenTrade recipe) { - return InputHelper.getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/botania/handlers/ManaInfusion.java b/src/main/java/modtweaker2/mods/botania/handlers/ManaInfusion.java index f9623f9..5d5b898 100644 --- a/src/main/java/modtweaker2/mods/botania/handlers/ManaInfusion.java +++ b/src/main/java/modtweaker2/mods/botania/handlers/ManaInfusion.java @@ -11,7 +11,6 @@ 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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -53,7 +52,7 @@ public class ManaInfusion { @Override public String getRecipeInfo(RecipeManaInfusion recipe) { - return InputHelper.getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } @@ -85,7 +84,7 @@ public class ManaInfusion { @Override public String getRecipeInfo(RecipeManaInfusion recipe) { - return InputHelper.getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/botania/handlers/RuneAltar.java b/src/main/java/modtweaker2/mods/botania/handlers/RuneAltar.java index a2ee14b..51bf2eb 100644 --- a/src/main/java/modtweaker2/mods/botania/handlers/RuneAltar.java +++ b/src/main/java/modtweaker2/mods/botania/handlers/RuneAltar.java @@ -11,7 +11,6 @@ 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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -41,7 +40,7 @@ public class RuneAltar { @Override public String getRecipeInfo(RecipeRuneAltar recipe) { - return InputHelper.getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } @@ -73,7 +72,7 @@ public class RuneAltar { @Override public String getRecipeInfo(RecipeRuneAltar recipe) { - return InputHelper.getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/exnihilo/handlers/Crucible.java b/src/main/java/modtweaker2/mods/exnihilo/handlers/Crucible.java index 191a1d4..492ea57 100644 --- a/src/main/java/modtweaker2/mods/exnihilo/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/exnihilo/handlers/Crucible.java @@ -10,7 +10,7 @@ import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseMapAddition; import modtweaker2.utils.BaseMapRemoval; import net.minecraft.block.Block; @@ -45,7 +45,7 @@ public class Crucible { @Override protected String getRecipeInfo(Entry recipe) { - return InputHelper.getStackDescription(new ItemStack(recipe.getValue().block, 1, recipe.getValue().meta)); + return LogHelper.getStackDescription(new ItemStack(recipe.getValue().block, 1, recipe.getValue().meta)); } } @@ -74,7 +74,7 @@ public class Crucible { @Override protected String getRecipeInfo(Entry recipe) { - return InputHelper.getStackDescription(new ItemStack(recipe.getValue().block, 1, recipe.getValue().meta)); + return LogHelper.getStackDescription(new ItemStack(recipe.getValue().block, 1, recipe.getValue().meta)); } } diff --git a/src/main/java/modtweaker2/mods/factorization/commands/FactorizationLogger.java b/src/main/java/modtweaker2/mods/factorization/commands/FactorizationLogger.java index b05bc84..b7188ad 100644 --- a/src/main/java/modtweaker2/mods/factorization/commands/FactorizationLogger.java +++ b/src/main/java/modtweaker2/mods/factorization/commands/FactorizationLogger.java @@ -8,7 +8,7 @@ import minetweaker.MineTweakerAPI; import minetweaker.MineTweakerImplementationAPI; import minetweaker.api.player.IPlayer; import minetweaker.api.server.ICommandFunction; -import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.helpers.ReflectionHelper; import modtweaker2.helpers.StringHelper; import modtweaker2.mods.factorization.FactorizationHelper; @@ -36,9 +36,9 @@ public class FactorizationLogger implements ICommandFunction { if(args.isEmpty() || args.contains("crystallizer")) { for(Object recipe : FactorizationHelper.crystallizer) { MineTweakerAPI.logCommand(String.format("mods.factorization.Crystallizer.addRecipe(%s, %s, %s, %s);", - InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "input")), - InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output")), - InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "solution")), + LogHelper.getStackDescription(ReflectionHelper.getObject(recipe, "input")), + LogHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output")), + LogHelper.getStackDescription(ReflectionHelper.getObject(recipe, "solution")), ReflectionHelper.getObject(recipe, "output_count"))); } } @@ -47,9 +47,9 @@ public class FactorizationLogger implements ICommandFunction { for(Object recipe : FactorizationHelper.lacerator) { MineTweakerAPI.logCommand(String.format("mods.factorization.Lacerator.addRecipe(%s, %s, %s);", ReflectionHelper.getObject(recipe, "oreName") != null ? - InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "oreName")) : - InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "itemstack")), - InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output")), + LogHelper.getStackDescription(ReflectionHelper.getObject(recipe, "oreName")) : + LogHelper.getStackDescription(ReflectionHelper.getObject(recipe, "itemstack")), + LogHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output")), ReflectionHelper.getObject(recipe, "probability"))); } } @@ -57,10 +57,10 @@ public class FactorizationLogger implements ICommandFunction { if(args.isEmpty() || args.contains("slagfurnace")) { for(Object recipe : FactorizationHelper.slag) { MineTweakerAPI.logCommand(String.format("mods.factorization.SlagFurnace.addRecipe(%s, %s, %s, %s, %s);", - InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "input")), - InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output2")), + LogHelper.getStackDescription(ReflectionHelper.getObject(recipe, "input")), + LogHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output2")), ReflectionHelper.getObject(recipe, "prob2"), - InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output1")), + LogHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output1")), ReflectionHelper.getObject(recipe, "prob1"))); } } diff --git a/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java b/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java index fb50cb2..39e8166 100644 --- a/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java +++ b/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java @@ -10,7 +10,6 @@ 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; @@ -43,7 +42,7 @@ public class Crystallizer { @Override public String getRecipeInfo(Object recipe) { - return InputHelper.getStackDescription((ItemStack)ReflectionHelper.getObject(recipe, "output")); + return LogHelper.getStackDescription((ItemStack)ReflectionHelper.getObject(recipe, "output")); } } @@ -77,7 +76,7 @@ public class Crystallizer { @Override public String getRecipeInfo(Object recipe) { - return InputHelper.getStackDescription((ItemStack)ReflectionHelper.getObject(recipe, "output")); + return LogHelper.getStackDescription((ItemStack)ReflectionHelper.getObject(recipe, "output")); } } } diff --git a/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java b/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java index 3cabcee..c19e906 100644 --- a/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java +++ b/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java @@ -11,7 +11,6 @@ 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; @@ -43,7 +42,7 @@ public class Lacerator { @Override public String getRecipeInfo(Object recipe) { - return InputHelper.getStackDescription((ItemStack) ReflectionHelper.getObject(recipe, "output")); + return LogHelper.getStackDescription((ItemStack) ReflectionHelper.getObject(recipe, "output")); } } @@ -76,7 +75,7 @@ public class Lacerator { @Override public String getRecipeInfo(Object recipe) { - return InputHelper.getStackDescription((ItemStack) ReflectionHelper.getObject(recipe, "output")); + return LogHelper.getStackDescription((ItemStack) ReflectionHelper.getObject(recipe, "output")); } } } diff --git a/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java b/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java index 5f72fe6..c35632a 100644 --- a/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java +++ b/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java @@ -10,7 +10,6 @@ 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; @@ -42,7 +41,7 @@ public class SlagFurnace { @Override public String getRecipeInfo(Object recipe) { - return InputHelper.getStackDescription((ItemStack) ReflectionHelper.getObject(recipe, "input")); + return LogHelper.getStackDescription((ItemStack) ReflectionHelper.getObject(recipe, "input")); } } @@ -77,7 +76,7 @@ public class SlagFurnace { @Override public String getRecipeInfo(Object recipe) { - return InputHelper.getStackDescription((ItemStack) ReflectionHelper.getObject(recipe, "input")); + return LogHelper.getStackDescription((ItemStack) ReflectionHelper.getObject(recipe, "input")); } } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Carpenter.java b/src/main/java/modtweaker2/mods/forestry/handlers/Carpenter.java index 13ed6cb..ee499ce 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Carpenter.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Carpenter.java @@ -14,7 +14,6 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.mods.forestry.ForestryHelper; import modtweaker2.utils.BaseListAddition; @@ -73,7 +72,7 @@ public class Carpenter { @Override protected String getRecipeInfo(Recipe recipe) { - return InputHelper.getStackDescription(recipe.getCraftingResult()); + return LogHelper.getStackDescription(recipe.getCraftingResult()); } } @@ -106,7 +105,7 @@ public class Carpenter { @Override protected String getRecipeInfo(Recipe recipe) { - return InputHelper.getStackDescription(recipe.getCraftingResult()); + return LogHelper.getStackDescription(recipe.getCraftingResult()); } } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Centrifuge.java b/src/main/java/modtweaker2/mods/forestry/handlers/Centrifuge.java index 5ef7eac..fef05f4 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Centrifuge.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Centrifuge.java @@ -11,7 +11,6 @@ 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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -50,7 +49,7 @@ public class Centrifuge { @Override protected String getRecipeInfo(Recipe recipe) { - return InputHelper.getStackDescription(recipe.resource); + return LogHelper.getStackDescription(recipe.resource); } } @@ -81,7 +80,7 @@ public class Centrifuge { @Override protected String getRecipeInfo(Recipe recipe) { - return InputHelper.getStackDescription(recipe.resource); + return LogHelper.getStackDescription(recipe.resource); } } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Fermenter.java b/src/main/java/modtweaker2/mods/forestry/handlers/Fermenter.java index 32d7d22..1ae25e2 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Fermenter.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Fermenter.java @@ -14,7 +14,6 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -90,7 +89,7 @@ public class Fermenter { @Override public String getRecipeInfo(Recipe recipe) { - return InputHelper.getStackDescription(recipe.output); + return LogHelper.getStackDescription(recipe.output); } } @@ -173,7 +172,7 @@ public class Fermenter { @Override public String getRecipeInfo(Recipe recipe) { - return InputHelper.getStackDescription(recipe.output); + return LogHelper.getStackDescription(recipe.output); } } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Moistener.java b/src/main/java/modtweaker2/mods/forestry/handlers/Moistener.java index f43d0c4..52400e5 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Moistener.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Moistener.java @@ -10,7 +10,6 @@ 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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -41,7 +40,7 @@ public class Moistener { @Override public String getRecipeInfo(Recipe recipe) { - return InputHelper.getStackDescription(recipe.product); + return LogHelper.getStackDescription(recipe.product); } } @@ -71,7 +70,7 @@ public class Moistener { @Override public String getRecipeInfo(Recipe recipe) { - return InputHelper.getStackDescription(recipe.product); + return LogHelper.getStackDescription(recipe.product); } } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Squeezer.java b/src/main/java/modtweaker2/mods/forestry/handlers/Squeezer.java index 2271ff2..27156bb 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Squeezer.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Squeezer.java @@ -15,7 +15,6 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -47,7 +46,7 @@ public class Squeezer { @Override public String getRecipeInfo(Recipe recipe) { - return InputHelper.getStackDescription(recipe.liquid); + return LogHelper.getStackDescription(recipe.liquid); } } @@ -85,7 +84,7 @@ public class Squeezer { @Override public String getRecipeInfo(Recipe recipe) { - return InputHelper.getStackDescription(recipe.liquid); + return LogHelper.getStackDescription(recipe.liquid); } } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/Still.java b/src/main/java/modtweaker2/mods/forestry/handlers/Still.java index 6986c0a..19a29f7 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/Still.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/Still.java @@ -10,7 +10,6 @@ import java.util.List; import minetweaker.MineTweakerAPI; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -45,7 +44,7 @@ public class Still { @Override public String getRecipeInfo(Recipe recipe) { - return InputHelper.getStackDescription(recipe.output); + return LogHelper.getStackDescription(recipe.output); } } @@ -76,7 +75,7 @@ public class Still { @Override public String getRecipeInfo(Recipe recipe) { - return InputHelper.getStackDescription(recipe.output); + return LogHelper.getStackDescription(recipe.output); } } } diff --git a/src/main/java/modtweaker2/mods/forestry/handlers/ThermionicFabricator.java b/src/main/java/modtweaker2/mods/forestry/handlers/ThermionicFabricator.java index 6771cd3..b0dc554 100644 --- a/src/main/java/modtweaker2/mods/forestry/handlers/ThermionicFabricator.java +++ b/src/main/java/modtweaker2/mods/forestry/handlers/ThermionicFabricator.java @@ -12,7 +12,6 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -68,7 +67,7 @@ public class ThermionicFabricator { @Override public String getRecipeInfo(Smelting recipe) { - return InputHelper.getStackDescription(recipe.getResource()); + return LogHelper.getStackDescription(recipe.getResource()); } } @@ -81,7 +80,7 @@ public class ThermionicFabricator { @Override public String getRecipeInfo(Recipe recipe) { - return InputHelper.getStackDescription(recipe.getPlan()); + return LogHelper.getStackDescription(recipe.getPlan()); } } @@ -129,7 +128,7 @@ public class ThermionicFabricator { @Override public String getRecipeInfo(Smelting recipe) { - return InputHelper.getStackDescription(recipe.getResource()); + return LogHelper.getStackDescription(recipe.getResource()); } } @@ -140,7 +139,7 @@ public class ThermionicFabricator { @Override public String getRecipeInfo(Recipe recipe) { - return InputHelper.getStackDescription(recipe.getPlan()); + return LogHelper.getStackDescription(recipe.getPlan()); } } } diff --git a/src/main/java/modtweaker2/mods/fsp/handlers/Crucible.java b/src/main/java/modtweaker2/mods/fsp/handlers/Crucible.java index e4b9e13..3686437 100644 --- a/src/main/java/modtweaker2/mods/fsp/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/fsp/handlers/Crucible.java @@ -12,7 +12,6 @@ import java.util.Map.Entry; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseMapAddition; @@ -75,7 +74,7 @@ public class Crucible { @Override protected String getRecipeInfo(Entry, MutablePair> recipe) { - return InputHelper.getStackDescription(new ItemStack(recipe.getKey().left, 1, recipe.getKey().right)); + return LogHelper.getStackDescription(new ItemStack(recipe.getKey().left, 1, recipe.getKey().right)); } } @@ -103,7 +102,7 @@ public class Crucible { @Override protected String getRecipeInfo(Entry, MutablePair> recipe) { - return InputHelper.getStackDescription(new ItemStack(recipe.getKey().left, 1, recipe.getKey().right)); + return LogHelper.getStackDescription(new ItemStack(recipe.getKey().left, 1, recipe.getKey().right)); } } @@ -124,7 +123,7 @@ public class Crucible { @Override public String getRecipeInfo(Entry> recipe) { - return InputHelper.getStackDescription(recipe.getValue().right); + return LogHelper.getStackDescription(recipe.getValue().right); } } @@ -155,7 +154,7 @@ public class Crucible { @Override public String getRecipeInfo(Entry> recipe) { - return InputHelper.getStackDescription(recipe.getValue().right); + return LogHelper.getStackDescription(recipe.getValue().right); } } } diff --git a/src/main/java/modtweaker2/mods/fsp/handlers/Furnace.java b/src/main/java/modtweaker2/mods/fsp/handlers/Furnace.java index f1a63f2..f93b7f6 100644 --- a/src/main/java/modtweaker2/mods/fsp/handlers/Furnace.java +++ b/src/main/java/modtweaker2/mods/fsp/handlers/Furnace.java @@ -11,7 +11,6 @@ import java.util.Map.Entry; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseMapAddition; import modtweaker2.utils.BaseMapRemoval; @@ -42,7 +41,7 @@ public class Furnace { @Override public String getRecipeInfo(Entry, MutablePair> recipe) { - return InputHelper.getStackDescription(new ItemStack(recipe.getKey().left, 1, recipe.getKey().right)); + return LogHelper.getStackDescription(new ItemStack(recipe.getKey().left, 1, recipe.getKey().right)); } } @@ -70,7 +69,7 @@ public class Furnace { @Override public String getRecipeInfo(Entry, MutablePair> recipe) { - return InputHelper.getStackDescription(new ItemStack(recipe.getKey().left, 1, recipe.getKey().right)); + return LogHelper.getStackDescription(new ItemStack(recipe.getKey().left, 1, recipe.getKey().right)); } } } diff --git a/src/main/java/modtweaker2/mods/mariculture/handlers/Anvil.java b/src/main/java/modtweaker2/mods/mariculture/handlers/Anvil.java index 2a6ed11..29680ef 100644 --- a/src/main/java/modtweaker2/mods/mariculture/handlers/Anvil.java +++ b/src/main/java/modtweaker2/mods/mariculture/handlers/Anvil.java @@ -13,7 +13,6 @@ import mariculture.api.core.MaricultureHandlers; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.mods.mariculture.MaricultureHelper; import modtweaker2.utils.BaseMapAddition; @@ -41,7 +40,7 @@ public class Anvil { @Override public String getRecipeInfo(Entry recipe) { - return InputHelper.getStackDescription(recipe.getValue().output); + return LogHelper.getStackDescription(recipe.getValue().output); } } @@ -72,7 +71,7 @@ public class Anvil { @Override public String getRecipeInfo(Entry recipe) { - return InputHelper.getStackDescription(recipe.getValue().output); + return LogHelper.getStackDescription(recipe.getValue().output); } } } diff --git a/src/main/java/modtweaker2/mods/mariculture/handlers/Casting.java b/src/main/java/modtweaker2/mods/mariculture/handlers/Casting.java index ae78fc4..091dd31 100644 --- a/src/main/java/modtweaker2/mods/mariculture/handlers/Casting.java +++ b/src/main/java/modtweaker2/mods/mariculture/handlers/Casting.java @@ -17,7 +17,7 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.mariculture.MaricultureHelper; import modtweaker2.utils.BaseMapAddition; import modtweaker2.utils.BaseMapRemoval; @@ -54,7 +54,7 @@ public class Casting { @Override public String getRecipeInfo(Entry recipe) { - return InputHelper.getStackDescription(recipe.getValue().output); + return LogHelper.getStackDescription(recipe.getValue().output); } } @@ -102,7 +102,7 @@ public class Casting { @Override public String getRecipeInfo(Entry recipe) { - return InputHelper.getStackDescription(recipe.getValue().output); + return LogHelper.getStackDescription(recipe.getValue().output); } } } diff --git a/src/main/java/modtweaker2/mods/mariculture/handlers/Crucible.java b/src/main/java/modtweaker2/mods/mariculture/handlers/Crucible.java index e4edc8c..a11a738 100644 --- a/src/main/java/modtweaker2/mods/mariculture/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/mariculture/handlers/Crucible.java @@ -18,7 +18,6 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.mods.mariculture.MaricultureHelper; import modtweaker2.utils.BaseListAddition; @@ -54,7 +53,7 @@ public class Crucible { @Override public String getRecipeInfo(RecipeSmelter recipe) { - return InputHelper.getStackDescription(recipe.input); + return LogHelper.getStackDescription(recipe.input); } } @@ -88,7 +87,7 @@ public class Crucible { @Override public String getRecipeInfo(RecipeSmelter recipe) { - return InputHelper.getStackDescription(recipe.input); + return LogHelper.getStackDescription(recipe.input); } } diff --git a/src/main/java/modtweaker2/mods/mariculture/handlers/Vat.java b/src/main/java/modtweaker2/mods/mariculture/handlers/Vat.java index 08816ef..fa43000 100644 --- a/src/main/java/modtweaker2/mods/mariculture/handlers/Vat.java +++ b/src/main/java/modtweaker2/mods/mariculture/handlers/Vat.java @@ -15,7 +15,6 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -85,9 +84,9 @@ public class Vat { @Override public String getRecipeInfo(RecipeVat recipe) { if(recipe.outputItem != null) { - return InputHelper.getStackDescription(recipe.outputItem); + return LogHelper.getStackDescription(recipe.outputItem); } else { - return InputHelper.getStackDescription(recipe.outputFluid); + return LogHelper.getStackDescription(recipe.outputFluid); } } } @@ -148,9 +147,9 @@ public class Vat { @Override public String getRecipeInfo(RecipeVat recipe) { if(recipe.outputItem != null) { - return InputHelper.getStackDescription(recipe.outputItem); + return LogHelper.getStackDescription(recipe.outputItem); } else { - return InputHelper.getStackDescription(recipe.outputFluid); + return LogHelper.getStackDescription(recipe.outputFluid); } } } diff --git a/src/main/java/modtweaker2/mods/metallurgy/handlers/Alloyer.java b/src/main/java/modtweaker2/mods/metallurgy/handlers/Alloyer.java index acc0655..35db6b3 100644 --- a/src/main/java/modtweaker2/mods/metallurgy/handlers/Alloyer.java +++ b/src/main/java/modtweaker2/mods/metallurgy/handlers/Alloyer.java @@ -10,7 +10,7 @@ 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.mods.metallurgy.MetallurgyHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -39,7 +39,7 @@ public class Alloyer { @Override public String getRecipeInfo(AlloyRecipe recipe) { - return InputHelper.getStackDescription(recipe.getCraftingResult()); + return LogHelper.getStackDescription(recipe.getCraftingResult()); } } @@ -64,7 +64,7 @@ public class Alloyer { @Override public String getRecipeInfo(AlloyRecipe recipe) { - return InputHelper.getStackDescription(recipe.getCraftingResult()); + return LogHelper.getStackDescription(recipe.getCraftingResult()); } } } diff --git a/src/main/java/modtweaker2/mods/metallurgy/handlers/Crusher.java b/src/main/java/modtweaker2/mods/metallurgy/handlers/Crusher.java index 0ca43bd..4ba5a7c 100644 --- a/src/main/java/modtweaker2/mods/metallurgy/handlers/Crusher.java +++ b/src/main/java/modtweaker2/mods/metallurgy/handlers/Crusher.java @@ -7,7 +7,7 @@ import java.util.Map.Entry; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; -import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.mods.metallurgy.MetallurgyHelper; import modtweaker2.utils.BaseMapAddition; import modtweaker2.utils.BaseMapRemoval; @@ -50,7 +50,7 @@ public class Crusher { @Override protected String getRecipeInfo(Entry recipe) { - return InputHelper.getStackDescription(recipe.getValue()); + return LogHelper.getStackDescription(recipe.getValue()); } } @@ -90,7 +90,7 @@ public class Crusher { @Override protected String getRecipeInfo(Entry recipe) { - return InputHelper.getStackDescription(recipe.getValue()); + return LogHelper.getStackDescription(recipe.getValue()); } } diff --git a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java index 69f826f..529be79 100644 --- a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java +++ b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Assembly.java @@ -11,7 +11,6 @@ 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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -52,7 +51,7 @@ public class Assembly { for(AssemblyRecipe recipe : list) { if(areEqual(recipe.getInput(), in)) { - LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, InputHelper.getStackDescription(in))); + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, LogHelper.getStackDescription(in))); return; } } @@ -68,7 +67,7 @@ public class Assembly { @Override public String getRecipeInfo(AssemblyRecipe recipe) { - return InputHelper.getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } @@ -112,7 +111,7 @@ public class Assembly { @Override public String getRecipeInfo(AssemblyRecipe recipe) { - return InputHelper.getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java index e5209f8..615fdd0 100644 --- a/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java +++ b/src/main/java/modtweaker2/mods/pneumaticcraft/handlers/Pressure.java @@ -10,7 +10,6 @@ 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.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -42,7 +41,7 @@ public class Pressure { @Override public String getRecipeInfo(PressureChamberRecipe recipe) { - return InputHelper.getStackDescription(recipe.output[0]); + return LogHelper.getStackDescription(recipe.output[0]); } } @@ -80,7 +79,7 @@ public class Pressure { @Override public String getRecipeInfo(PressureChamberRecipe recipe) { - return InputHelper.getStackDescription(recipe.output[0]); + return LogHelper.getStackDescription(recipe.output[0]); } } } diff --git a/src/main/java/modtweaker2/mods/railcraft/commands/RailcraftLogger.java b/src/main/java/modtweaker2/mods/railcraft/commands/RailcraftLogger.java new file mode 100644 index 0000000..9e2b33b --- /dev/null +++ b/src/main/java/modtweaker2/mods/railcraft/commands/RailcraftLogger.java @@ -0,0 +1,110 @@ +package modtweaker2.mods.railcraft.commands; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; +import java.util.Map.Entry; + +import minetweaker.MineTweakerAPI; +import minetweaker.MineTweakerImplementationAPI; +import minetweaker.api.player.IPlayer; +import minetweaker.api.server.ICommandFunction; +import mods.railcraft.api.crafting.IBlastFurnaceRecipe; +import mods.railcraft.api.crafting.ICokeOvenRecipe; +import mods.railcraft.api.crafting.IRockCrusherRecipe; +import mods.railcraft.api.crafting.RailcraftCraftingManager; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.ReflectionHelper; +import modtweaker2.helpers.StringHelper; +import modtweaker2.mods.railcraft.RailcraftHelper; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; + +public class RailcraftLogger implements ICommandFunction { + + private static final List validArguments = new LinkedList(); + + static { + validArguments.add("blastfurnace"); + validArguments.add("cokeoven"); + validArguments.add("rockcrusher"); + validArguments.add("rollingmachine"); + } + + @Override + public void execute(String[] arguments, IPlayer player) { + List args = StringHelper.toLowerCase(Arrays.asList(arguments)); + + if(!validArguments.containsAll(args)) { + if(player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); + } + } else { + if(args.isEmpty() || args.contains("blastfurnace")) { + for(IBlastFurnaceRecipe recipe : RailcraftHelper.furnace) { + MineTweakerAPI.logCommand(String.format("mods.railcraft.BlastFurnace.addRecipe(%s, %s, %s, %d, %s);", + LogHelper.getStackDescription(recipe.getInput()), + ReflectionHelper.getObject(recipe, "matchDamage"), + ReflectionHelper.getObject(recipe, "matchNBT"), + recipe.getCookTime(), + LogHelper.getStackDescription(recipe.getOutput()))); + } + } + + if(args.isEmpty() || args.contains("cokeoven")) { + for(ICokeOvenRecipe recipe : RailcraftCraftingManager.cokeOven.getRecipes()) { + MineTweakerAPI.logCommand(String.format("mods.railcraft.CokeOven.addRecipe(%s, %s, %s, %s, %s, %d);", + LogHelper.getStackDescription(recipe.getInput()), + ReflectionHelper.getObject(recipe, "matchDamage"), + ReflectionHelper.getObject(recipe, "matchNBT"), + LogHelper.getStackDescription(recipe.getOutput()), + LogHelper.getStackDescription(recipe.getFluidOutput()), + recipe.getCookTime())); + } + } + + if(args.isEmpty() || args.contains("rockcrusher")) { + for(IRockCrusherRecipe recipe : RailcraftHelper.crusher) { + MineTweakerAPI.logCommand(String.format("mods.railcraft.RockCrusher.addRecipe(%s, %s, %s, %s);", + LogHelper.getStackDescription(recipe.getInput()), + ReflectionHelper.getObject(recipe, "matchDamage"), + ReflectionHelper.getObject(recipe, "matchNBT"), + getRockCrusherOutputDescription(recipe.getOutputs()))); + } + } + + if(args.isEmpty() || args.contains("rollingmachine")) { + for(IRecipe recipe : RailcraftHelper.rolling) { + MineTweakerAPI.logCommand(String.format("mods.railcraft.RollingMachine.addRecipe(%s, %s);", + LogHelper.getStackDescription(recipe.getRecipeOutput()), + LogHelper.getCraftingDescription(recipe))); + } + } + + if (player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("List generated; see minetweaker.log in your minecraft dir")); + } + } + } + + private Object getRockCrusherOutputDescription(List> outputs) { + if(outputs.isEmpty()) { + return "[], []"; + } + + StringBuilder sb = new StringBuilder(); + sb.append('['); + for(Entry entry : outputs) { + sb.append(LogHelper.getStackDescription(entry.getKey())).append(", "); + } + sb.setLength(sb.length() - 2); + sb.append("], ["); + for(Entry entry : outputs) { + sb.append(entry.getValue()).append(", "); + } + sb.setLength(sb.length() - 2); + sb.append("]"); + + return sb.toString(); + } +} diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java b/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java index 776ec9c..6fdea70 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java @@ -11,7 +11,6 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import mods.railcraft.api.crafting.IBlastFurnaceRecipe; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.mods.railcraft.RailcraftHelper; import modtweaker2.utils.BaseListAddition; @@ -38,7 +37,7 @@ public class BlastFurnace { @Override public String getRecipeInfo(IBlastFurnaceRecipe recipe) { - return InputHelper.getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } @@ -67,7 +66,7 @@ public class BlastFurnace { @Override public String getRecipeInfo(IBlastFurnaceRecipe recipe) { - return InputHelper.getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java b/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java index beecede..ea051d6 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java @@ -15,7 +15,6 @@ import minetweaker.api.liquid.ILiquidStack; import mods.railcraft.api.crafting.ICokeOvenRecipe; import mods.railcraft.api.crafting.RailcraftCraftingManager; import mods.railcraft.common.util.crafting.CokeOvenCraftingManager.CokeOvenRecipe; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.mods.railcraft.RailcraftHelper; import modtweaker2.utils.BaseListAddition; @@ -93,7 +92,7 @@ public class CokeOven { @Override public String getRecipeInfo(ICokeOvenRecipe recipe) { - return InputHelper.getStackDescription(recipe.getInput()); + return LogHelper.getStackDescription(recipe.getInput()); } } @@ -125,7 +124,7 @@ public class CokeOven { @Override public String getRecipeInfo(ICokeOvenRecipe recipe) { - return InputHelper.getStackDescription(recipe.getInput()); + return LogHelper.getStackDescription(recipe.getInput()); } } } diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java b/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java index 1735494..ebb1a9f 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java @@ -11,7 +11,6 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import mods.railcraft.api.crafting.IRockCrusherRecipe; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.mods.railcraft.RailcraftHelper; import modtweaker2.utils.BaseListAddition; @@ -45,7 +44,7 @@ public class RockCrusher { @Override public String getRecipeInfo(IRockCrusherRecipe recipe) { - return InputHelper.getStackDescription(recipe.getInput()); + return LogHelper.getStackDescription(recipe.getInput()); } } @@ -77,7 +76,7 @@ public class RockCrusher { @Override public String getRecipeInfo(IRockCrusherRecipe recipe) { - return InputHelper.getStackDescription(recipe.getInput()); + return LogHelper.getStackDescription(recipe.getInput()); } } } diff --git a/src/main/java/modtweaker2/mods/tconstruct/commands/TConstructLogger.java b/src/main/java/modtweaker2/mods/tconstruct/commands/TConstructLogger.java index 5080a06..3c5f964 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/commands/TConstructLogger.java +++ b/src/main/java/modtweaker2/mods/tconstruct/commands/TConstructLogger.java @@ -10,7 +10,7 @@ import minetweaker.MineTweakerAPI; import minetweaker.MineTweakerImplementationAPI; import minetweaker.api.player.IPlayer; import minetweaker.api.server.ICommandFunction; -import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.helpers.StringHelper; import modtweaker2.mods.tconstruct.TConstructHelper; import net.minecraft.item.ItemStack; @@ -42,18 +42,18 @@ public class TConstructLogger implements ICommandFunction { if(args.isEmpty() || args.contains("casting")) { for(CastingRecipe recipe : TConstructHelper.basinCasting) { MineTweakerAPI.logCommand(String.format("mods.tconstruct.Casting.addBasinRecipe(%s, %s, %s, %s, %d);", - InputHelper.getStackDescription(recipe.output), - InputHelper.getStackDescription(recipe.castingMetal), - InputHelper.getStackDescription(recipe.cast), + LogHelper.getStackDescription(recipe.output), + LogHelper.getStackDescription(recipe.castingMetal), + LogHelper.getStackDescription(recipe.cast), recipe.consumeCast, recipe.coolTime)); } for(CastingRecipe recipe : TConstructHelper.tableCasting) { MineTweakerAPI.logCommand(String.format("mods.tconstruct.Casting.addTableRecipe(%s, %s, %s, %s, %d);", - InputHelper.getStackDescription(recipe.output), - InputHelper.getStackDescription(recipe.castingMetal), - InputHelper.getStackDescription(recipe.cast), + LogHelper.getStackDescription(recipe.output), + LogHelper.getStackDescription(recipe.castingMetal), + LogHelper.getStackDescription(recipe.cast), recipe.consumeCast, recipe.coolTime)); } @@ -62,8 +62,8 @@ public class TConstructLogger implements ICommandFunction { if(args.isEmpty() || args.contains("drying")) { for(DryingRecipe recipe : DryingRackRecipes.recipes) { MineTweakerAPI.logCommand(String.format("mods.tconstruct.Drying.addRecipe(%s, %s, %d);", - InputHelper.getStackDescription(recipe.input), - InputHelper.getStackDescription(recipe.result), + LogHelper.getStackDescription(recipe.input), + LogHelper.getStackDescription(recipe.result), recipe.time)); } } @@ -75,21 +75,21 @@ public class TConstructLogger implements ICommandFunction { ItemStack renderItem = TConstructHelper.renderIndex.get(recipe.getKey()); MineTweakerAPI.logCommand(String.format("mods.tconstruct.Smeltery.addMelting(%s, %s, %d, %s);", - InputHelper.getStackDescription(new ItemStack(recipe.getKey().item, 1, recipe.getKey().meta)), - InputHelper.getStackDescription(recipe.getValue()), + LogHelper.getStackDescription(new ItemStack(recipe.getKey().item, 1, recipe.getKey().meta)), + LogHelper.getStackDescription(recipe.getValue()), temperature, - InputHelper.getStackDescription(renderItem))); + LogHelper.getStackDescription(renderItem))); } for(AlloyMix recipe : TConstructHelper.alloys) { MineTweakerAPI.logCommand(String.format("mods.tconstruct.Smeltery.addAlloy(%s, %s);", - InputHelper.getStackDescription(recipe.result), - InputHelper.getArrayDescription(recipe.mixers))); + LogHelper.getStackDescription(recipe.result), + LogHelper.getListDescription(recipe.mixers))); } for(Entry fuel : TConstructHelper.fuelList.entrySet()) { MineTweakerAPI.logCommand(String.format("mods.tconstruct.Smeltery.addFuel(%s, %d, %d);", - InputHelper.getStackDescription(new FluidStack(fuel.getKey(), 1)), + LogHelper.getStackDescription(new FluidStack(fuel.getKey(), 1)), fuel.getValue()[0], fuel.getValue()[1])); } diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java index 5dd5550..62b656e 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Casting.java @@ -15,7 +15,6 @@ import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.item.IngredientAny; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.mods.tconstruct.TConstructHelper; import modtweaker2.utils.BaseListAddition; @@ -62,7 +61,7 @@ public class Casting { @Override protected String getRecipeInfo(CastingRecipe recipe) { - return InputHelper.getStackDescription(recipe.output); + return LogHelper.getStackDescription(recipe.output); } } @@ -75,11 +74,16 @@ public class Casting { @ZenMethod public static void removeBasinRecipe(IIngredient output, @Optional IIngredient material, @Optional IIngredient cast) { + removeRecipe(output, material, cast, TConstructHelper.basinCasting); } public static void removeRecipe(IIngredient output, IIngredient material, IIngredient cast, List list) { - + if(output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + if(material == null) { material = IngredientAny.INSTANCE; } @@ -111,7 +115,7 @@ public class Casting { if(!recipes.isEmpty()) { MineTweakerAPI.apply(new Remove(list, recipes)); } else { - LogHelper.logWarning(String.format("No %s Recipe found for output %s, meterial %s and cast %s. Command ignored!", Casting.name, output.toString(), material.toString(), cast.toString())); + LogHelper.logWarning(String.format("No %s Recipe found for output %s, material %s and cast %s. Command ignored!", Casting.name, output.toString(), material.toString(), cast.toString())); } } @@ -123,7 +127,7 @@ public class Casting { @Override protected String getRecipeInfo(CastingRecipe recipe) { - return InputHelper.getStackDescription(recipe.output); + return LogHelper.getStackDescription(recipe.output); } } } diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java index d54b8c1..de8baff 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Drying.java @@ -9,7 +9,6 @@ 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.mods.tconstruct.TConstructHelper; import modtweaker2.utils.BaseListAddition; @@ -45,7 +44,7 @@ public class Drying { @Override protected String getRecipeInfo(DryingRecipe recipe) { - return InputHelper.getStackDescription(recipe.result); + return LogHelper.getStackDescription(recipe.result); } } @@ -77,7 +76,7 @@ public class Drying { @Override protected String getRecipeInfo(DryingRecipe recipe) { - return InputHelper.getStackDescription(recipe.result); + return LogHelper.getStackDescription(recipe.result); } } } diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java index 613201b..09db6e4 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/Smeltery.java @@ -21,7 +21,6 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.mods.tconstruct.TConstructHelper; import modtweaker2.utils.BaseListAddition; @@ -66,7 +65,7 @@ public class Smeltery { @Override protected String getRecipeInfo(AlloyMix recipe) { - return InputHelper.getStackDescription(recipe.result); + return LogHelper.getStackDescription(recipe.result); } } @@ -100,7 +99,7 @@ public class Smeltery { @Override protected String getRecipeInfo(AlloyMix recipe) { - return InputHelper.getStackDescription(recipe.result); + return LogHelper.getStackDescription(recipe.result); } } @@ -157,7 +156,7 @@ public class Smeltery { @Override public String getRecipeInfo(MeltingRecipe recipe) { - return InputHelper.getStackDescription(recipe.input); + return LogHelper.getStackDescription(recipe.input); } } @@ -212,7 +211,7 @@ public class Smeltery { @Override public String getRecipeInfo(MeltingRecipe recipe) { - return InputHelper.getStackDescription(recipe.input); + return LogHelper.getStackDescription(recipe.input); } } @@ -268,7 +267,7 @@ public class Smeltery { @Override public String getRecipeInfo(Entry recipe) { - return InputHelper.getStackDescription(new FluidStack(recipe.getKey(), 1)); + return LogHelper.getStackDescription(new FluidStack(recipe.getKey(), 1)); } } @@ -295,7 +294,7 @@ public class Smeltery { @Override public String getRecipeInfo(Entry recipe) { - return InputHelper.getStackDescription(new FluidStack(recipe.getKey(), 1)); + return LogHelper.getStackDescription(new FluidStack(recipe.getKey(), 1)); } } } diff --git a/src/main/java/modtweaker2/mods/tconstruct/handlers/TiCTweaks.java b/src/main/java/modtweaker2/mods/tconstruct/handlers/TiCTweaks.java index 4433099..f13030c 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/handlers/TiCTweaks.java +++ b/src/main/java/modtweaker2/mods/tconstruct/handlers/TiCTweaks.java @@ -9,7 +9,7 @@ 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.mods.tconstruct.TConstructHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -78,7 +78,7 @@ public class TiCTweaks { @Override protected String getRecipeInfo(ItemKey recipe) { - return InputHelper.getStackDescription(new ItemStack(recipe.item, 1, recipe.damage)); + return LogHelper.getStackDescription(new ItemStack(recipe.item, 1, recipe.damage)); } } @@ -112,7 +112,7 @@ public class TiCTweaks { @Override protected String getRecipeInfo(ItemKey recipe) { - return InputHelper.getStackDescription(new ItemStack(recipe.item, 1, recipe.damage)); + return LogHelper.getStackDescription(new ItemStack(recipe.item, 1, recipe.damage)); } } } diff --git a/src/main/java/modtweaker2/mods/tfcraft/handlers/Anvil.java b/src/main/java/modtweaker2/mods/tfcraft/handlers/Anvil.java index 3d3468d..e5c52bf 100644 --- a/src/main/java/modtweaker2/mods/tfcraft/handlers/Anvil.java +++ b/src/main/java/modtweaker2/mods/tfcraft/handlers/Anvil.java @@ -11,7 +11,6 @@ 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.mods.tfcraft.TFCHelper; import modtweaker2.utils.BaseListAddition; @@ -58,7 +57,7 @@ public class Anvil { @Override protected String getRecipeInfo(AnvilRecipe recipe) { - return InputHelper.getStackDescription(recipe.getCraftingResult()); + return LogHelper.getStackDescription(recipe.getCraftingResult()); } } @@ -98,7 +97,7 @@ public class Anvil { @Override protected String getRecipeInfo(AnvilRecipe recipe) { - return InputHelper.getStackDescription(recipe.getCraftingResult()); + return LogHelper.getStackDescription(recipe.getCraftingResult()); } } } diff --git a/src/main/java/modtweaker2/mods/tfcraft/handlers/Barrel.java b/src/main/java/modtweaker2/mods/tfcraft/handlers/Barrel.java index e80a7f3..ac2e6cb 100644 --- a/src/main/java/modtweaker2/mods/tfcraft/handlers/Barrel.java +++ b/src/main/java/modtweaker2/mods/tfcraft/handlers/Barrel.java @@ -13,7 +13,6 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.mods.tfcraft.TFCHelper; import modtweaker2.utils.BaseListAddition; @@ -70,9 +69,9 @@ public class Barrel { @Override protected String getRecipeInfo(BarrelRecipe recipe) { if(recipe.getRecipeOutIS() != null) - return InputHelper.getStackDescription(recipe.getRecipeOutIS()); + return LogHelper.getStackDescription(recipe.getRecipeOutIS()); else if(recipe.getRecipeOutFluid() != null) - return InputHelper.getStackDescription(recipe.getRecipeOutFluid()); + return LogHelper.getStackDescription(recipe.getRecipeOutFluid()); else return "Unknown output"; } @@ -113,9 +112,9 @@ public class Barrel { @Override protected String getRecipeInfo(BarrelRecipe recipe) { if(recipe.getRecipeOutIS() != null) - return InputHelper.getStackDescription(recipe.getRecipeOutIS()); + return LogHelper.getStackDescription(recipe.getRecipeOutIS()); else if(recipe.getRecipeOutFluid() != null) - return InputHelper.getStackDescription(recipe.getRecipeOutFluid()); + return LogHelper.getStackDescription(recipe.getRecipeOutFluid()); else return "Unknown output"; } diff --git a/src/main/java/modtweaker2/mods/tfcraft/handlers/Kiln.java b/src/main/java/modtweaker2/mods/tfcraft/handlers/Kiln.java index c757bff..8a357fc 100644 --- a/src/main/java/modtweaker2/mods/tfcraft/handlers/Kiln.java +++ b/src/main/java/modtweaker2/mods/tfcraft/handlers/Kiln.java @@ -10,7 +10,7 @@ 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.mods.tfcraft.TFCHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -42,7 +42,7 @@ public class Kiln { @Override protected String getRecipeInfo(KilnRecipe recipe) { - return InputHelper.getStackDescription(recipe.getCraftingResult()); + return LogHelper.getStackDescription(recipe.getCraftingResult()); } } @@ -66,7 +66,7 @@ public class Kiln { @Override protected String getRecipeInfo(KilnRecipe recipe) { - return InputHelper.getStackDescription(recipe.getCraftingResult()); + return LogHelper.getStackDescription(recipe.getCraftingResult()); } } diff --git a/src/main/java/modtweaker2/mods/tfcraft/handlers/Quern.java b/src/main/java/modtweaker2/mods/tfcraft/handlers/Quern.java index d2fc647..2c16703 100644 --- a/src/main/java/modtweaker2/mods/tfcraft/handlers/Quern.java +++ b/src/main/java/modtweaker2/mods/tfcraft/handlers/Quern.java @@ -10,7 +10,7 @@ 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.mods.tfcraft.TFCHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; @@ -58,7 +58,7 @@ public class Quern { @Override protected String getRecipeInfo(QuernRecipe recipe) { - return InputHelper.getStackDescription(recipe.getResult()); + return LogHelper.getStackDescription(recipe.getResult()); } } @@ -102,7 +102,7 @@ public class Quern { @Override protected String getRecipeInfo(QuernRecipe recipe) { - return InputHelper.getStackDescription(recipe.getResult()); + return LogHelper.getStackDescription(recipe.getResult()); } } diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Arcane.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Arcane.java index 31173d7..09d35df 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Arcane.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Arcane.java @@ -12,7 +12,6 @@ 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.mods.thaumcraft.ThaumcraftHelper; import modtweaker2.utils.BaseListAddition; @@ -53,7 +52,7 @@ public class Arcane { ItemStack stack = recipe.getRecipeOutput(); if(stack instanceof ItemStack) - return InputHelper.getStackDescription(stack); + return LogHelper.getStackDescription(stack); else return "Unknown output"; } @@ -92,7 +91,7 @@ public class Arcane { ItemStack stack = recipe.getRecipeOutput(); if(stack instanceof ItemStack) - return InputHelper.getStackDescription(stack); + return LogHelper.getStackDescription(stack); else return "Unknown output"; } diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Crucible.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Crucible.java index 7a81bb8..f362ab0 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Crucible.java @@ -11,7 +11,6 @@ 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.mods.thaumcraft.ThaumcraftHelper; import modtweaker2.utils.BaseListAddition; @@ -39,7 +38,7 @@ public class Crucible { @Override protected String getRecipeInfo(CrucibleRecipe recipe) { - return InputHelper.getStackDescription(recipe.getRecipeOutput()); + return LogHelper.getStackDescription(recipe.getRecipeOutput()); } } @@ -72,7 +71,7 @@ public class Crucible { @Override protected String getRecipeInfo(CrucibleRecipe recipe) { - return InputHelper.getStackDescription(recipe.getRecipeOutput()); + return LogHelper.getStackDescription(recipe.getRecipeOutput()); } } } diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Infusion.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Infusion.java index 73b79ca..f242d4e 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Infusion.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Infusion.java @@ -11,7 +11,6 @@ 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.mods.thaumcraft.ThaumcraftHelper; import modtweaker2.mods.thaumcraft.recipe.MTInfusionRecipe; @@ -131,7 +130,7 @@ public class Infusion { Object o = recipe.getRecipeOutput(); if(o instanceof ItemStack) { - return InputHelper.getStackDescription((ItemStack)o); + return LogHelper.getStackDescription((ItemStack)o); } else { return "Unknown Item"; } diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java index 297f60a..4a67908 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java @@ -47,7 +47,7 @@ public class Loot { @Override protected String getRecipeInfo(WeightedRandomLoot recipe) { - return InputHelper.getStackDescription(recipe.item); + return LogHelper.getStackDescription(recipe.item); } } @@ -91,7 +91,7 @@ public class Loot { @Override protected String getRecipeInfo(WeightedRandomLoot recipe) { - return InputHelper.getStackDescription(recipe.item); + return LogHelper.getStackDescription(recipe.item); } } } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java b/src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java index 9aead53..6f20a1b 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java @@ -8,7 +8,7 @@ import minetweaker.MineTweakerAPI; import minetweaker.MineTweakerImplementationAPI; import minetweaker.api.player.IPlayer; import minetweaker.api.server.ICommandFunction; -import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import modtweaker2.helpers.StringHelper; import cofh.thermalexpansion.util.crafting.CrucibleManager; import cofh.thermalexpansion.util.crafting.CrucibleManager.RecipeCrucible; @@ -48,8 +48,8 @@ public class ThermalExpansionLogger implements ICommandFunction { for(RecipeCrucible recipe : CrucibleManager.getRecipeList()) { MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Crucible.addRecipe(%d, %s, %s);", recipe.getEnergy(), - InputHelper.getStackDescription(recipe.getInput()), - InputHelper.getStackDescription(recipe.getOutput()))); + LogHelper.getStackDescription(recipe.getInput()), + LogHelper.getStackDescription(recipe.getOutput()))); } } @@ -57,8 +57,8 @@ public class ThermalExpansionLogger implements ICommandFunction { for(RecipeFurnace recipe : FurnaceManager.getRecipeList()) { MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Furnace.addRecipe(%d, %s, %s);", recipe.getEnergy(), - InputHelper.getStackDescription(recipe.getInput()), - InputHelper.getStackDescription(recipe.getOutput()))); + LogHelper.getStackDescription(recipe.getInput()), + LogHelper.getStackDescription(recipe.getOutput()))); } } @@ -67,15 +67,15 @@ public class ThermalExpansionLogger implements ICommandFunction { if(recipe.getSecondaryOutput() != null) { MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Pulverizer.addRecipe(%d, %s, %s, %s, %d);", recipe.getEnergy(), - InputHelper.getStackDescription(recipe.getInput()), - InputHelper.getStackDescription(recipe.getPrimaryOutput()), - InputHelper.getStackDescription(recipe.getSecondaryOutput()), + LogHelper.getStackDescription(recipe.getInput()), + LogHelper.getStackDescription(recipe.getPrimaryOutput()), + LogHelper.getStackDescription(recipe.getSecondaryOutput()), recipe.getSecondaryOutputChance())); } else { MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Pulverizer.addRecipe(%d, %s, %s);", recipe.getEnergy(), - InputHelper.getStackDescription(recipe.getInput()), - InputHelper.getStackDescription(recipe.getPrimaryOutput()))); + LogHelper.getStackDescription(recipe.getInput()), + LogHelper.getStackDescription(recipe.getPrimaryOutput()))); } } } @@ -85,15 +85,15 @@ public class ThermalExpansionLogger implements ICommandFunction { if(recipe.getSecondaryOutput() != null) { MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Sawmill.addRecipe(%d, %s, %s, %s, %d);", recipe.getEnergy(), - InputHelper.getStackDescription(recipe.getInput()), - InputHelper.getStackDescription(recipe.getPrimaryOutput()), - InputHelper.getStackDescription(recipe.getSecondaryOutput()), + LogHelper.getStackDescription(recipe.getInput()), + LogHelper.getStackDescription(recipe.getPrimaryOutput()), + LogHelper.getStackDescription(recipe.getSecondaryOutput()), recipe.getSecondaryOutputChance())); } else { MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Sawmill.addRecipe(%d, %s, %s);", recipe.getEnergy(), - InputHelper.getStackDescription(recipe.getInput()), - InputHelper.getStackDescription(recipe.getPrimaryOutput()))); + LogHelper.getStackDescription(recipe.getInput()), + LogHelper.getStackDescription(recipe.getPrimaryOutput()))); } } } @@ -103,17 +103,17 @@ public class ThermalExpansionLogger implements ICommandFunction { if(recipe.getSecondaryOutput() != null) { MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Smelter.addRecipe(%d, %s, %s, %s, %s, %d);", recipe.getEnergy(), - InputHelper.getStackDescription(recipe.getPrimaryInput()), - InputHelper.getStackDescription(recipe.getSecondaryInput()), - InputHelper.getStackDescription(recipe.getPrimaryOutput()), - InputHelper.getStackDescription(recipe.getSecondaryOutput()), + LogHelper.getStackDescription(recipe.getPrimaryInput()), + LogHelper.getStackDescription(recipe.getSecondaryInput()), + LogHelper.getStackDescription(recipe.getPrimaryOutput()), + LogHelper.getStackDescription(recipe.getSecondaryOutput()), recipe.getSecondaryOutputChance())); } else { MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Smelter.addRecipe(%d, %s, %s, %s);", recipe.getEnergy(), - InputHelper.getStackDescription(recipe.getPrimaryInput()), - InputHelper.getStackDescription(recipe.getSecondaryInput()), - InputHelper.getStackDescription(recipe.getPrimaryOutput()))); + LogHelper.getStackDescription(recipe.getPrimaryInput()), + LogHelper.getStackDescription(recipe.getSecondaryInput()), + LogHelper.getStackDescription(recipe.getPrimaryOutput()))); } } } @@ -122,17 +122,17 @@ public class ThermalExpansionLogger implements ICommandFunction { for(RecipeTransposer recipe : TransposerManager.getFillRecipeList()) { MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Transposer.addFillRecipe(%d, %s, %s, %s);", recipe.getEnergy(), - InputHelper.getStackDescription(recipe.getInput()), - InputHelper.getStackDescription(recipe.getOutput()), - InputHelper.getStackDescription(recipe.getFluid()))); + LogHelper.getStackDescription(recipe.getInput()), + LogHelper.getStackDescription(recipe.getOutput()), + LogHelper.getStackDescription(recipe.getFluid()))); } for(RecipeTransposer recipe : TransposerManager.getExtractionRecipeList()) { MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Transposer.addExtractRecipe(%d, %s, %s, %s, %d);", recipe.getEnergy(), - InputHelper.getStackDescription(recipe.getInput()), - InputHelper.getStackDescription(recipe.getOutput()), - InputHelper.getStackDescription(recipe.getFluid()), + LogHelper.getStackDescription(recipe.getInput()), + LogHelper.getStackDescription(recipe.getOutput()), + LogHelper.getStackDescription(recipe.getFluid()), recipe.getChance())); } } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java index 3d0dbb0..6b57c73 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Crucible.java @@ -13,7 +13,6 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.helpers.ReflectionHelper; import modtweaker2.mods.thermalexpansion.ThermalHelper; @@ -37,7 +36,7 @@ public class Crucible { } if(CrucibleManager.recipeExists(toStack(input))) { - LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, InputHelper.getStackDescription(toStack(input)))); + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, LogHelper.getStackDescription(toStack(input)))); return; } @@ -83,7 +82,7 @@ public class Crucible { @Override protected String getRecipeInfo(RecipeCrucible recipe) { - return InputHelper.getStackDescription(recipe.getInput()); + return LogHelper.getStackDescription(recipe.getInput()); } } @@ -138,7 +137,7 @@ public class Crucible { @Override protected String getRecipeInfo(RecipeCrucible recipe) { - return InputHelper.getStackDescription(recipe.getInput()); + return LogHelper.getStackDescription(recipe.getInput()); } } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java index ce85a93..94b2e07 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java @@ -11,7 +11,6 @@ import minetweaker.IUndoableAction; 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.thermalexpansion.ThermalHelper; @@ -37,7 +36,7 @@ public class Furnace { } if(FurnaceManager.recipeExists(toStack(input))) { - LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, InputHelper.getStackDescription(toStack(input)))); + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, LogHelper.getStackDescription(toStack(input)))); return; } @@ -85,7 +84,7 @@ public class Furnace { @Override protected String getRecipeInfo(RecipeFurnace recipe) { - return InputHelper.getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } @@ -140,7 +139,7 @@ public class Furnace { @Override protected String getRecipeInfo(RecipeFurnace recipe) { - return InputHelper.getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java index e12bfa0..dc997ad 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Pulverizer.java @@ -11,7 +11,6 @@ import minetweaker.IUndoableAction; 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.thermalexpansion.ThermalHelper; @@ -42,7 +41,7 @@ public class Pulverizer { } if(PulverizerManager.recipeExists(toStack(input))) { - LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, InputHelper.getStackDescription(toStack(input)))); + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, LogHelper.getStackDescription(toStack(input)))); return; } @@ -89,7 +88,7 @@ public class Pulverizer { @Override protected String getRecipeInfo(RecipePulverizer recipe) { - return InputHelper.getStackDescription(recipe.getInput()); + return LogHelper.getStackDescription(recipe.getInput()); } } @@ -147,7 +146,7 @@ public class Pulverizer { @Override protected String getRecipeInfo(RecipePulverizer recipe) { - return InputHelper.getStackDescription(recipe.getInput()); + return LogHelper.getStackDescription(recipe.getInput()); } } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java index 52f1aea..e98455e 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Sawmill.java @@ -11,7 +11,6 @@ import minetweaker.IUndoableAction; 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.thermalexpansion.ThermalHelper; @@ -42,7 +41,7 @@ public class Sawmill { } if(SawmillManager.recipeExists(toStack(input))) { - LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, InputHelper.getStackDescription(toStack(input)))); + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s. Command ignored!", name, LogHelper.getStackDescription(toStack(input)))); return; } @@ -91,7 +90,7 @@ public class Sawmill { @Override protected String getRecipeInfo(RecipeSawmill recipe) { - return InputHelper.getStackDescription(recipe.getInput()); + return LogHelper.getStackDescription(recipe.getInput()); } } @@ -149,7 +148,7 @@ public class Sawmill { @Override protected String getRecipeInfo(RecipeSawmill recipe) { - return InputHelper.getStackDescription(recipe.getInput()); + return LogHelper.getStackDescription(recipe.getInput()); } } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java index 8771901..ef1daa9 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Smelter.java @@ -11,7 +11,6 @@ import minetweaker.IUndoableAction; 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.thermalexpansion.ThermalHelper; @@ -42,7 +41,7 @@ public class Smelter { } if(SmelterManager.recipeExists(toStack(input), toStack(input2))) { - LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s and %s. Command ignored!", name, InputHelper.getStackDescription(toStack(input)), InputHelper.getStackDescription(toStack(input2)))); + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s and %s. Command ignored!", name, LogHelper.getStackDescription(toStack(input)), LogHelper.getStackDescription(toStack(input2)))); return; } @@ -92,7 +91,7 @@ public class Smelter { @Override public String getRecipeInfo(RecipeSmelter recipe) { - return InputHelper.getStackDescription(recipe.getPrimaryOutput()); + return LogHelper.getStackDescription(recipe.getPrimaryOutput()); } } @@ -152,7 +151,7 @@ public class Smelter { @Override public String getRecipeInfo(RecipeSmelter recipe) { - return InputHelper.getStackDescription(recipe.getPrimaryOutput()); + return LogHelper.getStackDescription(recipe.getPrimaryOutput()); } } diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java index 6a571ec..0901e44 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Transposer.java @@ -15,7 +15,6 @@ import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.item.IngredientAny; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; import modtweaker2.helpers.ReflectionHelper; import modtweaker2.mods.thermalexpansion.ThermalHelper; @@ -42,7 +41,7 @@ public class Transposer { } if(TransposerManager.fillRecipeExists(toStack(input), toFluid(liquid))) { - LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s and %s. Command ignored!", Transposer.nameFill, InputHelper.getStackDescription(toStack(input)), InputHelper.getStackDescription(toFluid(liquid)))); + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s and %s. Command ignored!", Transposer.nameFill, LogHelper.getStackDescription(toStack(input)), LogHelper.getStackDescription(toFluid(liquid)))); return; } @@ -63,7 +62,7 @@ public class Transposer { } if(TransposerManager.extractionRecipeExists(toStack(input), toFluid(liquid))) { - LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s and %s. Command ignored!", Transposer.nameExtract, InputHelper.getStackDescription(toStack(input)), InputHelper.getStackDescription(toFluid(liquid)))); + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s and %s. Command ignored!", Transposer.nameExtract, LogHelper.getStackDescription(toStack(input)), LogHelper.getStackDescription(toFluid(liquid)))); return; } @@ -138,7 +137,7 @@ public class Transposer { @Override protected String getRecipeInfo(RecipeTransposer recipe) { - return InputHelper.getStackDescription(recipe.getInput()); + return LogHelper.getStackDescription(recipe.getInput()); } } @@ -230,7 +229,7 @@ public class Transposer { @Override protected String getRecipeInfo(RecipeTransposer recipe) { - return InputHelper.getStackDescription(recipe.getOutput()); + return LogHelper.getStackDescription(recipe.getOutput()); } } diff --git a/src/main/java/modtweaker2/utils/BaseCraftingAddition.java b/src/main/java/modtweaker2/utils/BaseCraftingAddition.java index bf2afaf..b33a1e1 100644 --- a/src/main/java/modtweaker2/utils/BaseCraftingAddition.java +++ b/src/main/java/modtweaker2/utils/BaseCraftingAddition.java @@ -2,7 +2,7 @@ package modtweaker2.utils; import java.util.List; -import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import net.minecraft.item.crafting.IRecipe; public abstract class BaseCraftingAddition extends BaseListAddition { @@ -17,6 +17,6 @@ public abstract class BaseCraftingAddition extends BaseListAddition { @Override protected String getRecipeInfo(IRecipe recipe) { - return InputHelper.getStackDescription(recipe.getRecipeOutput()); + return LogHelper.getStackDescription(recipe.getRecipeOutput()); } } diff --git a/src/main/java/modtweaker2/utils/BaseCraftingRemoval.java b/src/main/java/modtweaker2/utils/BaseCraftingRemoval.java index 4f629b4..3cfa78e 100644 --- a/src/main/java/modtweaker2/utils/BaseCraftingRemoval.java +++ b/src/main/java/modtweaker2/utils/BaseCraftingRemoval.java @@ -7,7 +7,7 @@ import java.util.LinkedList; import java.util.List; import minetweaker.api.item.IIngredient; -import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; @@ -18,7 +18,7 @@ public class BaseCraftingRemoval extends BaseListRemoval { @Override public String getRecipeInfo(IRecipe recipe) { - return InputHelper.getStackDescription(recipe.getRecipeOutput()); + return LogHelper.getStackDescription(recipe.getRecipeOutput()); } public static List getRecipes(List list, IIngredient ingredient) { From df846585c4d5cee31a278626c7a9bb66c3677fc7 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Thu, 9 Jul 2015 16:57:05 +0200 Subject: [PATCH 25/31] Started with ExNihilo rework --- src/main/java/modtweaker2/Commands.java | 5 + .../mods/exnihilo/ExNihiloHelper.java | 13 ++ .../exnihilo/commands/ExNihiloLogger.java | 69 +++++++ .../mods/exnihilo/handlers/Compost.java | 161 +++++++--------- .../mods/exnihilo/handlers/Crucible.java | 177 +++++++++--------- .../mods/tconstruct/MaterialLogger.java | 4 +- 6 files changed, 247 insertions(+), 182 deletions(-) create mode 100644 src/main/java/modtweaker2/mods/exnihilo/ExNihiloHelper.java create mode 100644 src/main/java/modtweaker2/mods/exnihilo/commands/ExNihiloLogger.java diff --git a/src/main/java/modtweaker2/Commands.java b/src/main/java/modtweaker2/Commands.java index 81fe35d..425393a 100644 --- a/src/main/java/modtweaker2/Commands.java +++ b/src/main/java/modtweaker2/Commands.java @@ -14,6 +14,7 @@ import modtweaker2.mods.botania.lexicon.commands.LexiconKnowledgeTypesLogger; import modtweaker2.mods.botania.lexicon.commands.LexiconPageLogger; import modtweaker2.mods.chisel.commands.ChiselGroupLogger; import modtweaker2.mods.chisel.commands.ChiselVariationLogger; +import modtweaker2.mods.exnihilo.commands.ExNihiloLogger; import modtweaker2.mods.factorization.commands.FactorizationLogger; import modtweaker2.mods.mekanism.gas.GasLogger; import modtweaker2.mods.railcraft.commands.RailcraftLogger; @@ -85,6 +86,10 @@ public class Commands { if (TweakerPlugin.isLoaded("Railcraft")) { MineTweakerAPI.server.addMineTweakerCommand("railcraft", new String[] {"/minetweaker railcraft [FILTER]", " Outputs a list of all Railcraft recipes."}, new RailcraftLogger()); } + + if (TweakerPlugin.isLoaded("exnihilo")) { + MineTweakerAPI.server.addMineTweakerCommand("exnihilo", new String[] {"/minetweaker exnihilo [FILTER]", " Outputs a list of all ExNihilo recipes."}, new ExNihiloLogger()); + } } } diff --git a/src/main/java/modtweaker2/mods/exnihilo/ExNihiloHelper.java b/src/main/java/modtweaker2/mods/exnihilo/ExNihiloHelper.java new file mode 100644 index 0000000..d4eca5b --- /dev/null +++ b/src/main/java/modtweaker2/mods/exnihilo/ExNihiloHelper.java @@ -0,0 +1,13 @@ +package modtweaker2.mods.exnihilo; + +import java.util.Map; + +import modtweaker2.helpers.ReflectionHelper; +import exnihilo.registries.HeatRegistry; +import exnihilo.utils.ItemInfo; + +public class ExNihiloHelper { + public static Map getHeatMap() { + return ReflectionHelper.>getStaticObject(HeatRegistry.class, "heatmap"); + } +} diff --git a/src/main/java/modtweaker2/mods/exnihilo/commands/ExNihiloLogger.java b/src/main/java/modtweaker2/mods/exnihilo/commands/ExNihiloLogger.java new file mode 100644 index 0000000..e39f202 --- /dev/null +++ b/src/main/java/modtweaker2/mods/exnihilo/commands/ExNihiloLogger.java @@ -0,0 +1,69 @@ +package modtweaker2.mods.exnihilo.commands; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; +import java.util.Map.Entry; + +import minetweaker.MineTweakerAPI; +import minetweaker.MineTweakerImplementationAPI; +import minetweaker.api.player.IPlayer; +import minetweaker.api.server.ICommandFunction; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StringHelper; +import modtweaker2.mods.exnihilo.ExNihiloHelper; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; +import exnihilo.registries.CompostRegistry; +import exnihilo.registries.CrucibleRegistry; +import exnihilo.registries.helpers.Compostable; +import exnihilo.registries.helpers.Meltable; +import exnihilo.utils.ItemInfo; + +public class ExNihiloLogger implements ICommandFunction { + + private static final List validArguments = new LinkedList(); + + static { + validArguments.add("compost"); + validArguments.add("crucible"); + } + + @Override + public void execute(String[] arguments, IPlayer player) { + List args = StringHelper.toLowerCase(Arrays.asList(arguments)); + + if(!validArguments.containsAll(args)) { + if(player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); + } + } else { + if(args.isEmpty() || args.contains("compost")) { + for(Entry recipe : CompostRegistry.entries.entrySet()) { + MineTweakerAPI.logCommand(String.format("mods.exnihilo.Composting.addRecipe(%s, %s, \"%s\");", + LogHelper.getStackDescription(recipe.getKey().getStack()), + recipe.getValue().value, + Integer.toHexString(recipe.getValue().color.toInt()).substring(2))); + } + } + + if(args.isEmpty() || args.contains("crucible")) { + for(Meltable recipe : CrucibleRegistry.entries.values()) { + MineTweakerAPI.logCommand(String.format("mods.exnihilo.Crucible.addRecipe(%s, %s);", + LogHelper.getStackDescription(new ItemStack(recipe.block, 1, recipe.meta)), + LogHelper.getStackDescription(new FluidStack(recipe.fluid, (int)recipe.fluidVolume)))); + } + + for(Entry recipe : ExNihiloHelper.getHeatMap().entrySet()) { + MineTweakerAPI.logCommand(String.format("mods.exnihilo.Crucible.addHeatSource(%s, %s);", + LogHelper.getStackDescription(recipe.getKey().getStack()), + recipe.getValue())); + } + } + + if (player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("List generated; see minetweaker.log in your minecraft dir")); + } + } + } +} diff --git a/src/main/java/modtweaker2/mods/exnihilo/handlers/Compost.java b/src/main/java/modtweaker2/mods/exnihilo/handlers/Compost.java index 5b8d225..04c4457 100644 --- a/src/main/java/modtweaker2/mods/exnihilo/handlers/Compost.java +++ b/src/main/java/modtweaker2/mods/exnihilo/handlers/Compost.java @@ -1,117 +1,92 @@ package modtweaker2.mods.exnihilo.handlers; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import minetweaker.IUndoableAction; +import static modtweaker2.helpers.StackHelper.matches; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; +import modtweaker2.helpers.LogHelper; +import modtweaker2.utils.BaseMapAddition; +import modtweaker2.utils.BaseMapRemoval; import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import exnihilo.registries.CompostRegistry; import exnihilo.registries.helpers.Color; +import exnihilo.registries.helpers.Compostable; +import exnihilo.utils.ItemInfo; + @ZenClass("mods.exnihilo.Composting") public class Compost { - //Adding a Ex Nihilo Composting recipe + + public static final String name = "ExNihilo Composting"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(IItemStack input, double value, @Optional String hex) { - hex = (hex == null || hex.equals("")) ? "35A82A" : hex; - MineTweakerAPI.apply(new Add(toStack(input).getItem(), toStack(input).getItemDamage(), Math.min(1.0F, (float) value), new Color(hex))); - } - - //Passes the list to the map list implementation, and adds the recipe - private static class Add implements IUndoableAction - { - private Item item; - private int meta; - private float value; - private Color color; - - public Add(Item item, int meta, float value, Color color) { - this.item = item; - this.meta = meta; - this.value = value; - this.color = color; + if(input == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + hex = (hex == null || hex.equals("")) ? "35A82A" : hex; + + Map recipes = new HashMap(); + + recipes.put( + new ItemInfo(toStack(input)), + new Compostable(Math.min(1.0F, (float)value), new Color(hex))); + + MineTweakerAPI.apply(new Add(recipes)); + } + + private static class Add extends BaseMapAddition { + public Add(Map recipes) { + super(Compost.name, CompostRegistry.entries, recipes); + } + + @Override + protected String getRecipeInfo(Entry recipe) { + return LogHelper.getStackDescription(recipe.getKey().getStack()); } - - @Override - public void apply() { - CompostRegistry.register(item, meta, value, color); - } - - @Override - public boolean canUndo() { - return false; - } - - @Override - public String describe() { - return "Adding Composting Recipe using " + item.getUnlocalizedName(); - } - - @Override - public String describeUndo() { - return null; - } - - @Override - public Object getOverrideKey() { - return null; - } - - @Override - public void undo() { - - } - } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Removing a Ex Nihilo Composting recipe @ZenMethod - public static void removeRecipe(IItemStack input) { - MineTweakerAPI.apply(new Remove(toStack(input))); - } - - //Removes a recipe, will always remove the key, so all should be good - private static class Remove implements IUndoableAction - { - private ItemStack stack; - - public Remove(ItemStack stack) { - this.stack = stack; + public static void removeRecipe(IIngredient input) { + Map recipes = new HashMap(); + + for(Entry recipe : CompostRegistry.entries.entrySet()) { + if(matches(input, toIItemStack(recipe.getKey().getStack()))) { + recipes.put(recipe.getKey(), recipe.getValue()); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipes found for %s. Command ignored!", Compost.name, input.toString())); + } + + } + + private static class Remove extends BaseMapRemoval { + public Remove(Map recipes) { + super(Compost.name, CompostRegistry.entries, recipes); + } + + @Override + protected String getRecipeInfo(Entry recipe) { + return LogHelper.getStackDescription(recipe.getKey().getStack()); } - - @Override - public void apply() { - CompostRegistry.unregister(stack.getItem(), stack.getItemDamage()); - } - - @Override - public boolean canUndo() { - return false; - } - - @Override - public String describe() { - return "Removing Composting Recipe using " + stack.getUnlocalizedName(); - } - - @Override - public String describeUndo() { - return null; - } - - @Override - public Object getOverrideKey() { - return null; - } - - @Override - public void undo() { - } } } diff --git a/src/main/java/modtweaker2/mods/exnihilo/handlers/Crucible.java b/src/main/java/modtweaker2/mods/exnihilo/handlers/Crucible.java index 492ea57..dff1082 100644 --- a/src/main/java/modtweaker2/mods/exnihilo/handlers/Crucible.java +++ b/src/main/java/modtweaker2/mods/exnihilo/handlers/Crucible.java @@ -2,45 +2,69 @@ package modtweaker2.mods.exnihilo.handlers; import static modtweaker2.helpers.InputHelper.isABlock; import static modtweaker2.helpers.InputHelper.toFluid; +import static modtweaker2.helpers.InputHelper.toIItemStack; +import static modtweaker2.helpers.InputHelper.toILiquidStack; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; +import java.util.HashMap; +import java.util.Map; import java.util.Map.Entry; -import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import minetweaker.api.liquid.ILiquidStack; import modtweaker2.helpers.LogHelper; +import modtweaker2.mods.exnihilo.ExNihiloHelper; import modtweaker2.utils.BaseMapAddition; import modtweaker2.utils.BaseMapRemoval; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import exnihilo.registries.CrucibleRegistry; -import exnihilo.registries.HeatRegistry; import exnihilo.registries.helpers.Meltable; +import exnihilo.utils.ItemInfo; @ZenClass("mods.exnihilo.Crucible") public class Crucible { + public static final String nameMelting = "ExNihilo Crucible (Melting)"; + public static final String nameHeatSource = "ExNihilo Crucible (Heat source)"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /************************************************ Crucible Melting ************************************************/ //Adding a Ex Nihilo Crucible recipe @ZenMethod public static void addRecipe(IItemStack input, ILiquidStack fluid) { - if (isABlock(input)) { - Block theBlock = Block.getBlockFromItem(toStack(input).getItem()); - int theMeta = toStack(input).getItemDamage(); - MineTweakerAPI.apply(new AddRecipe(new Meltable(theBlock, theMeta, 2000, toFluid(fluid).getFluid(), toFluid(fluid).amount, theBlock))); + if(input == null || fluid == null) { + LogHelper.logError(String.format("Required parameters missing for %s recipe.", nameMelting)); + return; } + + if(!isABlock(input)) { + LogHelper.logError(String.format("Input item for %s recipe must be a block.", nameMelting)); + return; + } + + Map recipes = new HashMap(); + Block theBlock = Block.getBlockFromItem(toStack(input).getItem()); + int theMeta = toStack(input).getItemDamage(); + + recipes.put( + theBlock + ":" + theMeta, + new Meltable(theBlock, theMeta, 2000, toFluid(fluid).getFluid(), toFluid(fluid).amount, theBlock)); + + MineTweakerAPI.apply(new AddRecipe(recipes)); } //Passes the list to the map list implementation, and adds the recipe private static class AddRecipe extends BaseMapAddition { - public AddRecipe(Meltable recipe) { - super("ExNihilo Crucible", CrucibleRegistry.entries); - recipes.put(recipe.block + ":" + recipe.meta, recipe); + public AddRecipe(Map recipes) { + super(nameMelting, CrucibleRegistry.entries, recipes); } @Override @@ -53,23 +77,27 @@ public class Crucible { //Removing a Ex Nihilo Crucible recipe @ZenMethod - public static void removeRecipe(IItemStack output) { - if (isABlock(output)) { - MineTweakerAPI.apply(new RemoveRecipe(toStack(output))); + public static void removeRecipe(IIngredient output) { + Map recipes = new HashMap(); + + for(Entry entry : CrucibleRegistry.entries.entrySet()) { + FluidStack fluid = new FluidStack(entry.getValue().fluid, (int)entry.getValue().fluidVolume); + if(matches(output, toILiquidStack(fluid))) { + recipes.put(entry.getKey(), entry.getValue()); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveRecipe(recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s. Command ignored!", Crucible.nameMelting, output.toString())); } } //Removes a recipe, will always remove the key, so all should be good private static class RemoveRecipe extends BaseMapRemoval { - public RemoveRecipe(ItemStack stack) { - super("ExNihilo Crucible", CrucibleRegistry.entries); - - String key = Block.getBlockFromItem(stack.getItem()) + ":" + stack.getItemDamage(); - - for(Entry entry : map.entrySet()) { - if(entry.getKey().equals(key)) - recipes.put(entry.getKey(), entry.getValue()); - } + public RemoveRecipe(Map recipes) { + super(nameMelting, CrucibleRegistry.entries, recipes); } @Override @@ -82,92 +110,67 @@ public class Crucible { //Adding a Ex Nihilo Crucible heat source @ZenMethod public static void addHeatSource(IItemStack input, double value) { - if (isABlock(input)) { - Block theBlock = Block.getBlockFromItem(toStack(input).getItem()); - int theMeta = toStack(input).getItemDamage(); - MineTweakerAPI.apply(new AddHeatSource(theBlock, theMeta, (float) value)); + if(input == null) { + LogHelper.logError(String.format("Required parameters missing for %s recipe.", nameMelting)); + return; + } + + if(!isABlock(input)) { + LogHelper.logError(String.format("Input item for %s recipe must be a block.", nameMelting)); + return; + } + + Map recipes = new HashMap(); + recipes.put(new ItemInfo(toStack(input)), (float)value); + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new AddHeatSource(recipes)); } } //Passes the list to the base map implementation, and adds the recipe - private static class AddHeatSource implements IUndoableAction + private static class AddHeatSource extends BaseMapAddition { - Block source; - int sourceMeta; - float value; - - public AddHeatSource(Block source, int sourceMeta, float value) { - this.source = source; - this.sourceMeta = sourceMeta; - this.value = value; + public AddHeatSource(Map recipes) { + super(Crucible.nameHeatSource, ExNihiloHelper.getHeatMap(), recipes); } - public void apply() { - HeatRegistry.register(source, sourceMeta, value); - } - - public boolean canUndo() { - return false; - } - - public String describe() { - return "Adding ExNihilo Heat source of " + source.getLocalizedName(); - } - - public String describeUndo() { - return null; - } - - public Object getOverrideKey() { - return null; - } - - public void undo() { + @Override + protected String getRecipeInfo(Entry recipe) { + return LogHelper.getStackDescription(recipe.getKey().getStack()); } } - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Removing a Ex Nihilo Crucible heat source @ZenMethod - public static void removeHeatSource(IItemStack output) { - if (isABlock(output)) { - Block block = Block.getBlockFromItem(toStack(output).getItem()); - MineTweakerAPI.apply(new RemoveHeatSource(block)); + public static void removeHeatSource(IIngredient output) { + Map recipes = new HashMap(); + + for(Entry entry : ExNihiloHelper.getHeatMap().entrySet()) { + if(matches(output, toIItemStack(entry.getKey().getStack()))) { + recipes.put(entry.getKey(), entry.getValue()); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveHeatSource(recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s. Command ignored!", Crucible.nameMelting, output.toString())); } } //Removes a recipe, will always remove the key, so all should be good - private static class RemoveHeatSource implements IUndoableAction + private static class RemoveHeatSource extends BaseMapAddition { - Block block; - - public RemoveHeatSource(Block block) { - this.block = block; + public RemoveHeatSource(Map recipes) { + super(Crucible.nameHeatSource, ExNihiloHelper.getHeatMap(), recipes); } - public void apply() { - HeatRegistry.unregister(block); - } - - public boolean canUndo() { - return false; - } - - public String describe() { - return "Removing ExNihilo Heat source of " + block.getLocalizedName(); - } - - public String describeUndo() { - return null; - } - - public Object getOverrideKey() { - return null; - } - - public void undo() { - } + @Override + protected String getRecipeInfo(Entry recipe) { + return LogHelper.getStackDescription(recipe.getKey().getStack()); + } } } diff --git a/src/main/java/modtweaker2/mods/tconstruct/MaterialLogger.java b/src/main/java/modtweaker2/mods/tconstruct/MaterialLogger.java index 0f0d568..2f66b28 100644 --- a/src/main/java/modtweaker2/mods/tconstruct/MaterialLogger.java +++ b/src/main/java/modtweaker2/mods/tconstruct/MaterialLogger.java @@ -13,9 +13,9 @@ import tconstruct.library.TConstructRegistry; import tconstruct.library.tools.ToolMaterial; public class MaterialLogger implements ICommandFunction { - private static ArrayList materials = new ArrayList(); + private static ArrayList materials = new ArrayList(); static { - materials = new ArrayList(); + materials = new ArrayList(); for (Map.Entry entry : TConstructRegistry.toolMaterialStrings.entrySet()) { materials.add(entry.getKey()); } From 7571f526d703b7423c71cf03dff01f85b6aa927a Mon Sep 17 00:00:00 2001 From: Zixxl Date: Fri, 10 Jul 2015 16:27:02 +0200 Subject: [PATCH 26/31] ExNihilo rework finished --- .../exnihilo/commands/ExNihiloLogger.java | 30 ++ .../mods/exnihilo/handlers/Hammer.java | 281 +++++++++---- .../mods/exnihilo/handlers/Sieve.java | 388 ++++++++++-------- 3 files changed, 451 insertions(+), 248 deletions(-) diff --git a/src/main/java/modtweaker2/mods/exnihilo/commands/ExNihiloLogger.java b/src/main/java/modtweaker2/mods/exnihilo/commands/ExNihiloLogger.java index e39f202..0c27f30 100644 --- a/src/main/java/modtweaker2/mods/exnihilo/commands/ExNihiloLogger.java +++ b/src/main/java/modtweaker2/mods/exnihilo/commands/ExNihiloLogger.java @@ -1,5 +1,6 @@ package modtweaker2.mods.exnihilo.commands; +import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; @@ -16,8 +17,12 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import exnihilo.registries.CompostRegistry; import exnihilo.registries.CrucibleRegistry; +import exnihilo.registries.HammerRegistry; +import exnihilo.registries.SieveRegistry; import exnihilo.registries.helpers.Compostable; import exnihilo.registries.helpers.Meltable; +import exnihilo.registries.helpers.SiftingResult; +import exnihilo.registries.helpers.Smashable; import exnihilo.utils.ItemInfo; public class ExNihiloLogger implements ICommandFunction { @@ -27,6 +32,8 @@ public class ExNihiloLogger implements ICommandFunction { static { validArguments.add("compost"); validArguments.add("crucible"); + validArguments.add("hammer"); + validArguments.add("sieve"); } @Override @@ -61,6 +68,29 @@ public class ExNihiloLogger implements ICommandFunction { } } + if(args.isEmpty() || args.contains("hammer")) { + for(Entry> entry : HammerRegistry.getRewards().entrySet()) { + for(Smashable recipe : entry.getValue()) { + MineTweakerAPI.logCommand(String.format("mods.exnihilo.Hammer.addRecipe(%s, %s, %s, %s);", + LogHelper.getStackDescription(entry.getKey().getStack()), + LogHelper.getStackDescription(new ItemStack(recipe.item, 1, recipe.meta)), + recipe.chance, + recipe.luckMultiplier)); + } + } + } + + if(args.isEmpty() || args.contains("sieve")) { + for(Entry> entry : SieveRegistry.getSiftables().entrySet()) { + for(SiftingResult recipe : entry.getValue()) { + MineTweakerAPI.logCommand(String.format("mods.exnihilo.Sieve.addRecipe(%s, %s, %s);", + LogHelper.getStackDescription(entry.getKey().getStack()), + LogHelper.getStackDescription(new ItemStack(recipe.item, 1, recipe.meta)), + recipe.rarity)); + } + } + } + if (player != null) { player.sendChat(MineTweakerImplementationAPI.platform.getMessage("List generated; see minetweaker.log in your minecraft dir")); } diff --git a/src/main/java/modtweaker2/mods/exnihilo/handlers/Hammer.java b/src/main/java/modtweaker2/mods/exnihilo/handlers/Hammer.java index cb25307..03be181 100644 --- a/src/main/java/modtweaker2/mods/exnihilo/handlers/Hammer.java +++ b/src/main/java/modtweaker2/mods/exnihilo/handlers/Hammer.java @@ -1,118 +1,249 @@ package modtweaker2.mods.exnihilo.handlers; import static modtweaker2.helpers.InputHelper.isABlock; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; -import minetweaker.IUndoableAction; +import static modtweaker2.helpers.StackHelper.matches; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; + import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; +import minetweaker.api.item.IngredientAny; +import modtweaker2.helpers.LogHelper; +import modtweaker2.utils.BaseMapAddition; +import modtweaker2.utils.BaseMapRemoval; import net.minecraft.block.Block; -import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import exnihilo.registries.HammerRegistry; +import exnihilo.registries.helpers.Smashable; +import exnihilo.utils.ItemInfo; @ZenClass("mods.exnihilo.Hammer") public class Hammer { - // Adding a Ex Nihilo Hammer recipe + + public static final String name = "ExNihilo Hammer"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(IItemStack input, IItemStack output, double chance, double luck) { - if (isABlock(input)) { - Block theBlock = Block.getBlockFromItem(toStack(input).getItem()); - int theMeta = toStack(input).getItemDamage(); - MineTweakerAPI.apply(new Add(theBlock, theMeta, toStack(output).getItem(), toStack(output).getItemDamage(), (float) chance, (float) luck)); - } + if(input == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s recipe.", name)); + return; + } + + addRecipe(input, new IItemStack[] { output }, new double[] { chance }, new double[] { luck }); + } + + @ZenMethod + public static void addRecipe(IItemStack input, IItemStack[] output, double[] chance, double[] luck) { + if(input == null || output == null || chance == null || luck == null) { + LogHelper.logError(String.format("Required parameters missing for %s recipe.", name)); + return; + } + + if(!isABlock(input)) { + LogHelper.logError(String.format("Input item for %s recipe must be a block.", name)); + return; + } + + if(output.length == 0 || output.length != chance.length || output.length != luck.length) { + LogHelper.logError(String.format("Number of items in arrays are different or null (%d, %d, %d)", output.length, chance.length, luck.length)); + return; + } + + Map> recipes = new HashMap>(); + ArrayList list = new ArrayList(); + ItemInfo itemInfo = new ItemInfo(toStack(input)); + recipes.put(itemInfo, list); + + for(int i = 0; i < output.length; i++) { + ItemStack out = toStack(output[i]); + list.add(new Smashable(Block.getBlockFromItem(itemInfo.getItem()), itemInfo.getMeta(), out.getItem(), out.getItemDamage(), (float)chance[i], (float)luck[i])); + } + + MineTweakerAPI.apply(new Add(recipes)); } - // Passes the list to the base list implementation, and adds the recipe - private static class Add implements IUndoableAction { - - Block block; - int blockMeta; - Item output; - int outputMeta; - float chance; - float luck; - - public Add(Block block, int blockMeta, Item output, int outputMeta, float chance, float luck) { - this.block = block; - this.blockMeta = blockMeta; - this.output = output; - this.outputMeta = outputMeta; - this.chance = chance; - this.luck = luck; + private static class Add extends BaseMapAddition> { + public Add(Map> recipes) { + super(Hammer.name, HammerRegistry.getRewards(), recipes); } public void apply() { - HammerRegistry.register(block, blockMeta, output, outputMeta, chance, luck); - } - - public boolean canUndo() { - return false; - } - - public String describe() { - return "Adding ExNihilo Hammer recipe by mining " + block.getLocalizedName() + " to get the result of " + output.getUnlocalizedName(); - } - - public String describeUndo() { - return ""; - } - - public Object getOverrideKey() { - return null; + for(Entry> entry : recipes.entrySet()) { + if(!map.containsKey(entry.getKey())) { + // no recipe for input available, add new entry + map.put(entry.getKey(), entry.getValue()); + } else { + // recipes already available, add to present list + ArrayList list = map.get(entry.getKey()); + + // store old Smashable objects if present + ArrayList backup = new ArrayList(); + for(Smashable recipe : entry.getValue()) { + backup.addAll(removeFromList(list, recipe)); + } + + if(!backup.isEmpty()) { + LogHelper.logWarning(String.format("Overwritten %d %s recipe outputs for %s.", backup.size(), Hammer.name, LogHelper.getStackDescription(entry.getKey().getStack()))); + overwritten.put(entry.getKey(), backup); + } + + // add new Smashable objects + list.addAll(entry.getValue()); + } + + successful.put(entry.getKey(), entry.getValue()); + } } public void undo() { + // remove all recipes + for(Entry> entry : successful.entrySet()) { + ArrayList list = map.get(entry.getKey()); + for(Smashable recipe : entry.getValue()) { + removeFromList(list, recipe); + } + } + + // re-add overwritten recipes + for(Entry> entry : overwritten.entrySet()) { + map.get(entry.getKey()).addAll(entry.getValue()); + } + + // remove empty entries + for(Iterator>> it = map.entrySet().iterator(); it.hasNext(); ) { + Entry> entry = it.next(); + if(entry.getValue().isEmpty()) { + it.remove(); + } + } + } + + @Override + protected String getRecipeInfo(Entry> recipe) { + return LogHelper.getStackDescription(recipe.getKey().getStack()) + " (" + recipe.getValue().size() + " entries)"; } } - // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Removing a Ex Nihilo Hammer recipe + @Deprecated @ZenMethod public static void removeRecipe(IItemStack inputBlock, int inputBlockMeta, IItemStack outputItem, int outputItemMeta) { - MineTweakerAPI.apply(new Remove(Block.getBlockFromItem(toStack(inputBlock).getItem()), inputBlockMeta, toStack(outputItem).getItem(), outputItemMeta)); + removeRecipe(toIItemStack(new ItemStack(toStack(inputBlock).getItem(), 1, inputBlockMeta)), toIItemStack(new ItemStack(toStack(outputItem).getItem(), 1, outputItemMeta))); + } + + @ZenMethod + public static void removeRecipe(IIngredient input, @Optional IIngredient output) { + if(input == null) { + LogHelper.logError(String.format("Required parameters missing for %s recipe.", name)); + return; + } + + if(output == null) { + output = IngredientAny.INSTANCE; + } + + Map> recipes = new HashMap>(); + + for(Entry> entry : HammerRegistry.getRewards().entrySet()) { + if(input.matches(toIItemStack(entry.getKey().getStack()))) { + ArrayList list = entry.getValue(); + ArrayList toRemove = new ArrayList(); + + for(Smashable recipe : list) { + ItemStack item = new ItemStack(recipe.item, 1, recipe.meta); + + if(matches(output, toIItemStack(item))) { + toRemove.add(recipe); + } + } + + if(!toRemove.isEmpty()) { + recipes.put(entry.getKey(), toRemove); + } + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipes found for %s and %s. Command ignored!", input.toString(), output.toString())); + } } // Removes a recipe, apply is never the same for anything, so will always // need to override it - private static class Remove implements IUndoableAction { - Block block; - int inputBlockMeta; - Item output; - int outputItemMeta; - + private static class Remove extends BaseMapRemoval> { - public Remove(Block block, int inputBlockMeta, Item output, int outputItemMeta) { - this.block = block; - this.inputBlockMeta = inputBlockMeta; - this.output = output; - this.outputItemMeta = outputItemMeta; + public Remove(Map> recipes) { + super(Hammer.name, HammerRegistry.getRewards(), recipes); } - // Loops through the registry, to find the item that matches, saves that - // recipe then removes it + @Override public void apply() { - HammerRegistry.remove(block, inputBlockMeta, output, outputItemMeta); - } - - public boolean canUndo() { - return false; - } - - public String describe() { - return "Removing ExNihilo Hammer recipe"; - } - - public String describeUndo() { - return null; - } - - public Object getOverrideKey() { - return null; + for(Entry> entry : recipes.entrySet()) { + ArrayList list = map.get(entry.getKey()); + + for(Smashable recipe : entry.getValue()) { + removeFromList(list, recipe); + } + + successful.put(entry.getKey(), entry.getValue()); + } + + // remove empty entries + for(Iterator>> it = map.entrySet().iterator(); it.hasNext(); ) { + Entry> entry = it.next(); + if(entry.getValue().isEmpty()) { + it.remove(); + } + } } + @Override public void undo() { + for(Entry> entry : successful.entrySet()) { + if(!map.containsKey(entry.getKey())) { + map.put(entry.getKey(), entry.getValue()); + } else { + map.get(entry.getKey()).addAll(entry.getValue()); + } + } } + + @Override + protected String getRecipeInfo(Entry> recipe) { + return LogHelper.getStackDescription(recipe.getKey().getStack()) + " (" + recipe.getValue().size() + " entries)"; + } } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + public static ArrayList removeFromList(ArrayList list, Smashable s) { + ArrayList removed = new ArrayList(); + ItemInfo toRemove = new ItemInfo(s.item, s.meta); + for(Iterator it = list.iterator(); it.hasNext(); ) { + Smashable itS = it.next(); + ItemInfo item = new ItemInfo(itS.item, itS.meta); + + if(item.equals(toRemove)) { + removed.add(itS); + it.remove(); + } + } + + return removed; + } } diff --git a/src/main/java/modtweaker2/mods/exnihilo/handlers/Sieve.java b/src/main/java/modtweaker2/mods/exnihilo/handlers/Sieve.java index d9c8863..48acd00 100644 --- a/src/main/java/modtweaker2/mods/exnihilo/handlers/Sieve.java +++ b/src/main/java/modtweaker2/mods/exnihilo/handlers/Sieve.java @@ -1,224 +1,266 @@ package modtweaker2.mods.exnihilo.handlers; import static modtweaker2.helpers.InputHelper.isABlock; +import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.matches; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; -import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import net.minecraft.block.Block; -import net.minecraft.item.Item; +import minetweaker.api.item.IngredientAny; +import modtweaker2.helpers.LogHelper; +import modtweaker2.utils.BaseMapAddition; +import modtweaker2.utils.BaseMapRemoval; +import net.minecraft.item.ItemStack; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import exnihilo.registries.SieveRegistry; import exnihilo.registries.helpers.SiftingResult; +import exnihilo.utils.ItemInfo; @ZenClass("mods.exnihilo.Sieve") public class Sieve { + + public static final String name = "ExNihilo Sieve"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // Adding a Ex Nihilo Sieve recipe @ZenMethod public static void addRecipe(IItemStack input, IItemStack output, int rarity) { - if (isABlock(input)) { - Block theBlock = Block.getBlockFromItem(toStack(input).getItem()); - int theMeta = toStack(input).getItemDamage(); - MineTweakerAPI.apply(new Add(theBlock, theMeta, toStack(output).getItem(), toStack(output).getItemDamage(), rarity)); - } + if(input == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s recipe.", name)); + return; + } + + addRecipe(input, new IItemStack[] { output }, new int[] { rarity }); + } + + public static void addRecipe(IItemStack input, IItemStack[] output, int[] rarity) { + if(input == null || output == null || rarity == null) { + LogHelper.logError(String.format("Required parameters missing for %s recipe.", name)); + return; + } + + if(!isABlock(input)) { + LogHelper.logError(String.format("Input item for %s recipe must be a block.", name)); + return; + } + + if(output.length == 0 || output.length != rarity.length) { + LogHelper.logError(String.format("Number of items in arrays are different or null (%d, %d)", output.length, rarity.length)); + return; + } + + Map> recipes = new HashMap>(); + ArrayList list = new ArrayList(); + ItemInfo itemInfo = new ItemInfo(toStack(input)); + recipes.put(itemInfo, list); + + for(int i = 0; i < output.length; i++) { + ItemStack out = toStack(output[i]); + list.add(new SiftingResult(out.getItem(), out.getItemDamage(), rarity[i])); + } + + MineTweakerAPI.apply(new Add(recipes)); } - // Passes the list to the base list implementation, and adds the recipe - private static class Add implements IUndoableAction { - Block source; - int sourceMeta; - Item output; - int outputMeta; - int rarity; + private static class Add extends BaseMapAddition> { - public Add(Block source, int sourceMeta, Item output, int outputMeta, int rarity) { - this.source = source; - this.sourceMeta = sourceMeta; - this.output = output; - this.outputMeta = outputMeta; - this.rarity = rarity; + public Add(Map> recipes) { + super(Sieve.name, SieveRegistry.getSiftables(), recipes); } - + + @Override public void apply() { - SieveRegistry.register(source, sourceMeta, output, outputMeta, rarity); - + for(Entry> entry : recipes.entrySet()) { + if(!map.containsKey(entry.getKey())) { + // no recipe for input available, add new entry + map.put(entry.getKey(), entry.getValue()); + } else { + // recipes already available, add to present list + ArrayList list = map.get(entry.getKey()); + + // store old SiftingResult objects if present + ArrayList backup = new ArrayList(); + for(SiftingResult recipe : entry.getValue()) { + backup.addAll(removeFromList(list, recipe)); + } + + if(!backup.isEmpty()) { + LogHelper.logWarning(String.format("Overwritten %d %s recipe outputs for %s.", backup.size(), Hammer.name, LogHelper.getStackDescription(entry.getKey().getStack()))); + overwritten.put(entry.getKey(), backup); + } + + // add new SiftingResult objects + list.addAll(entry.getValue()); + } + + successful.put(entry.getKey(), entry.getValue()); + } } - - public boolean canUndo() { - return source != null && output != null; - } - - public String describe() { - return "Adding ExNihilo Sieve Recipe using " + source.getLocalizedName() + " to get the result of " + output.getUnlocalizedName(); - - } - - public String describeUndo() { - return "Removing ExNihilo Sieve Recipe using " + source.getLocalizedName() + " to get the result of " + output.getUnlocalizedName(); - } - - public Object getOverrideKey() { - return null; - } - + + @Override public void undo() { - if (this.canUndo()) - SieveRegistry.unregisterReward(this.source, this.sourceMeta, this.output, this.outputMeta); + // remove all recipes + for(Entry> entry : successful.entrySet()) { + ArrayList list = map.get(entry.getKey()); + for(SiftingResult recipe : entry.getValue()) { + removeFromList(list, recipe); + } + } + + // re-add overwritten recipes + for(Entry> entry : overwritten.entrySet()) { + map.get(entry.getKey()).addAll(entry.getValue()); + } + + // remove empty entries + for(Iterator>> it = map.entrySet().iterator(); it.hasNext(); ) { + Entry> entry = it.next(); + if(entry.getValue().isEmpty()) { + it.remove(); + } + } } + + @Override + protected String getRecipeInfo(Entry> recipe) { + return LogHelper.getStackDescription(recipe.getKey().getStack()) + " (" + recipe.getValue().size() + " entries)"; + } } - // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Removing a Ex Nihilo Sieve recipe + @Deprecated @ZenMethod public static void removeRecipe(IItemStack input, IItemStack output) { - if (isABlock(input)) { - Block theBlock = Block.getBlockFromItem(toStack(input).getItem()); - int theMeta = toStack(input).getItemDamage(); - MineTweakerAPI.apply(new Remove(theBlock, theMeta, toStack(output).getItem(), toStack(output).getItemDamage())); - } + removeRecipe((IIngredient)input, (IIngredient)output); } - + @Deprecated @ZenMethod public static void removeRewardFromAllBlocks(IItemStack output) { - Item theItem = toStack(output).getItem(); - int theMeta = toStack(output).getItemDamage(); - MineTweakerAPI.apply(new RemoveRewardFromAllBlocks(theItem, theMeta)); + removeRecipe(IngredientAny.INSTANCE, (IIngredient)output); } + @Deprecated @ZenMethod public static void removeAllRewardsFromBlock(IItemStack output) { - if (isABlock(output)) { - Block theBlock = Block.getBlockFromItem(toStack(output).getItem()); - int theMeta = toStack(output).getItemDamage(); - MineTweakerAPI.apply(new RemoveAllRewardsFromBlock(theBlock, theMeta)); - } + removeRecipe((IIngredient)output, IngredientAny.INSTANCE); + } + + @ZenMethod + public static void removeRecipe(IIngredient input, @Optional IIngredient output) { + if(input == null) { + LogHelper.logError(String.format("Required parameters missing for %s recipe.", name)); + return; + } + + if(output == null) { + output = IngredientAny.INSTANCE; + } + + Map> recipes = new HashMap>(); + + for(Entry> entry : SieveRegistry.getSiftables().entrySet()) { + if(input.matches(toIItemStack(entry.getKey().getStack()))) { + ArrayList list = entry.getValue(); + ArrayList toRemove = new ArrayList(); + + for(SiftingResult recipe : list) { + ItemStack item = new ItemStack(recipe.item, 1, recipe.meta); + + if(matches(output, toIItemStack(item))) { + toRemove.add(recipe); + } + } + + if(!toRemove.isEmpty()) { + recipes.put(entry.getKey(), toRemove); + } + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipes found for %s and %s. Command ignored!", input.toString(), output.toString())); + } } // Removes a recipe, apply is never the same for anything, so will always // need to override it - private static class Remove implements IUndoableAction { - Block source; - int sourceMeta; - Item output; - int outputMeta; - int rarity; + private static class Remove extends BaseMapRemoval> { + public Remove(Map> recipes) { + super(Sieve.name, SieveRegistry.getSiftables(), recipes); + } + + @Override + public void apply() { + for(Entry> entry : recipes.entrySet()) { + ArrayList list = map.get(entry.getKey()); + + for(SiftingResult recipe : entry.getValue()) { + removeFromList(list, recipe); + } + + successful.put(entry.getKey(), entry.getValue()); + } + + // remove empty entries + for(Iterator>> it = map.entrySet().iterator(); it.hasNext(); ) { + Entry> entry = it.next(); + if(entry.getValue().isEmpty()) { + it.remove(); + } + } + } - public Remove(Block source, int sourceMeta, Item output, int outputMeta) { - this.source = source; - this.sourceMeta = sourceMeta; - this.output = output; - this.outputMeta = outputMeta; - } - - public void apply() { - ArrayList results = SieveRegistry.getSiftingOutput(this.source, this.sourceMeta); - - for (SiftingResult res : results) { - if (res.item.equals(this.source) && res.meta == this.outputMeta) - this.rarity = res.rarity; - } - - SieveRegistry.unregisterReward(source, sourceMeta, output, outputMeta); - } - - public boolean canUndo() { - return output != null && source != null; - } - - public String describe() { - return "Removing ExNihilo Sieve Recipe using " + source.getLocalizedName() + " to get the result of " + output.getUnlocalizedName(); - - } - - public String describeUndo() { - return "Restoring ExNihilo Sieve Recipe using " + source.getLocalizedName() + " to get the result of " + output.getUnlocalizedName(); - } - - public Object getOverrideKey() { - return null; - } - - public void undo() { - if (this.canUndo()) - SieveRegistry.register(this.source, this.sourceMeta, this.output, this.outputMeta, rarity); - } - } - - private static class RemoveAllRewardsFromBlock implements IUndoableAction { - Block block; - int blockMeta; - - public RemoveAllRewardsFromBlock(Block block, int blockMeta) { - this.block = block; - this.blockMeta = blockMeta; - } - - public void apply() { - SieveRegistry.unregisterAllRewardsFromBlock(block, blockMeta); - } - - public boolean canUndo() { - return false; - } - - public String describe() { - return "Removing All ExNihilo Sieve rewards from " + block.getLocalizedName(); - - } - - public String describeUndo() { - return ""; - } - - public Object getOverrideKey() { - return null; - } - - public void undo() { - } - } - - private static class RemoveRewardFromAllBlocks implements IUndoableAction { - Item reward; - int rewardMeta; - - public RemoveRewardFromAllBlocks(Item reward, int rewardMeta) { - this.reward = reward; - this.rewardMeta = rewardMeta; - } - - public void apply() { - SieveRegistry.unregisterRewardFromAllBlocks(reward, rewardMeta); - } - - public boolean canUndo() { - return false; - } - - public String describe() { - return "Removing ExNihilo Sieve reward of " + reward.getUnlocalizedName() + " from all Blocks"; - - } - - public String describeUndo() { - return ""; - } - - public Object getOverrideKey() { - return null; - } - - public void undo() { - } + @Override + public void undo() { + for(Entry> entry : successful.entrySet()) { + if(!map.containsKey(entry.getKey())) { + map.put(entry.getKey(), entry.getValue()); + } else { + map.get(entry.getKey()).addAll(entry.getValue()); + } + } + } + + @Override + protected String getRecipeInfo(Entry> recipe) { + return LogHelper.getStackDescription(recipe.getKey().getStack()) + " (" + recipe.getValue().size() + " entries)"; + } } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + public static ArrayList removeFromList(ArrayList list, SiftingResult s) { + ArrayList removed = new ArrayList(); + ItemInfo toRemove = new ItemInfo(s.item, s.meta); + for(Iterator it = list.iterator(); it.hasNext(); ) { + SiftingResult itS = it.next(); + ItemInfo item = new ItemInfo(itS.item, itS.meta); + + if(item.equals(toRemove)) { + removed.add(itS); + it.remove(); + } + } + + return removed; + } } From 34a6c929391b037a10d98302a415b784c984b32d Mon Sep 17 00:00:00 2001 From: Zixxl Date: Fri, 10 Jul 2015 16:46:19 +0200 Subject: [PATCH 27/31] Revert da33cc6fabcd9b14fe11251b438e7ea525d50db0 for mekanism --- .../modtweaker2/mods/mekanism/Mekanism.java | 110 +++---- .../mods/mekanism/MekanismHelper.java | 54 ++-- .../handlers/ChemicalCrystallizer.java | 68 ++-- .../handlers/ChemicalDissolution.java | 180 +++++------ .../mekanism/handlers/ChemicalInfuser.java | 72 ++--- .../mekanism/handlers/ChemicalInjection.java | 76 ++--- .../mekanism/handlers/ChemicalOxidizer.java | 72 ++--- .../mekanism/handlers/ChemicalWasher.java | 130 ++++---- .../mods/mekanism/handlers/Combiner.java | 70 ++-- .../mods/mekanism/handlers/Compressor.java | 70 ++-- .../mods/mekanism/handlers/Crusher.java | 64 ++-- .../mods/mekanism/handlers/Enrichment.java | 64 ++-- .../mods/mekanism/handlers/Purification.java | 124 ++++---- .../mods/mekanism/handlers/Reaction.java | 84 ++--- .../mods/mekanism/handlers/Sawmill.java | 122 +++---- .../mods/mekanism/handlers/Separator.java | 144 ++++----- .../handlers/v8/ChemicalCrystallizer.java | 168 +++++----- .../handlers/v8/ChemicalDissolution.java | 168 +++++----- .../mekanism/handlers/v8/ChemicalInfuser.java | 170 +++++----- .../handlers/v8/ChemicalInjection.java | 172 +++++----- .../mods/mekanism/handlers/v8/Infuser.java | 180 +++++------ .../mods/mekanism/util/AddMekanismRecipe.java | 134 ++++---- .../mekanism/util/RemoveMekanismRecipe.java | 300 +++++++++--------- 23 files changed, 1399 insertions(+), 1397 deletions(-) diff --git a/src/main/java/modtweaker2/mods/mekanism/Mekanism.java b/src/main/java/modtweaker2/mods/mekanism/Mekanism.java index f71cbd9..eb88dcd 100644 --- a/src/main/java/modtweaker2/mods/mekanism/Mekanism.java +++ b/src/main/java/modtweaker2/mods/mekanism/Mekanism.java @@ -1,56 +1,56 @@ -//package modtweaker2.mods.mekanism; -// -//import java.util.regex.Pattern; -// -//import minetweaker.MineTweakerAPI; -//import modtweaker2.mods.mekanism.gas.GasBracketHandler; -//import modtweaker2.mods.mekanism.handlers.ChemicalOxidizer; -//import modtweaker2.mods.mekanism.handlers.ChemicalWasher; -//import modtweaker2.mods.mekanism.handlers.Combiner; -//import modtweaker2.mods.mekanism.handlers.Compressor; -//import modtweaker2.mods.mekanism.handlers.Crusher; -//import modtweaker2.mods.mekanism.handlers.Enrichment; -//import modtweaker2.mods.mekanism.handlers.Purification; -//import modtweaker2.mods.mekanism.handlers.Reaction; -//import modtweaker2.mods.mekanism.handlers.Sawmill; -//import modtweaker2.mods.mekanism.handlers.Separator; -//import modtweaker2.mods.mekanism.handlers.v8.ChemicalCrystallizer; -//import modtweaker2.mods.mekanism.handlers.v8.ChemicalDissolution; -//import modtweaker2.mods.mekanism.handlers.v8.ChemicalInfuser; -//import modtweaker2.mods.mekanism.handlers.v8.ChemicalInjection; -//import modtweaker2.mods.mekanism.handlers.v8.Infuser; -//import modtweaker2.utils.TweakerPlugin; -//import cpw.mods.fml.common.Loader; -//import cpw.mods.fml.common.ModContainer; -// -//public class Mekanism extends TweakerPlugin { -// public static final boolean v7 = isV7(); -// public Mekanism() { -// MineTweakerAPI.registerBracketHandler(new GasBracketHandler()); -// MineTweakerAPI.registerClass(Combiner.class); -// MineTweakerAPI.registerClass(Compressor.class); -// MineTweakerAPI.registerClass(Crusher.class); -// MineTweakerAPI.registerClass(Enrichment.class); -// MineTweakerAPI.registerClass(Infuser.class); -// MineTweakerAPI.registerClass(Purification.class); -// MineTweakerAPI.registerClass(Reaction.class); -// MineTweakerAPI.registerClass(Sawmill.class); -// MineTweakerAPI.registerClass(Separator.class); -//// MineTweakerAPI.registerClass(ChemicalCrystallizer.class); +package modtweaker2.mods.mekanism; + +import java.util.regex.Pattern; + +import minetweaker.MineTweakerAPI; +import modtweaker2.mods.mekanism.gas.GasBracketHandler; +import modtweaker2.mods.mekanism.handlers.v8.ChemicalInfuser; +import modtweaker2.mods.mekanism.handlers.v8.ChemicalInjection; +import modtweaker2.mods.mekanism.handlers.ChemicalOxidizer; +import modtweaker2.mods.mekanism.handlers.ChemicalWasher; +import modtweaker2.mods.mekanism.handlers.Combiner; +import modtweaker2.mods.mekanism.handlers.Compressor; +import modtweaker2.mods.mekanism.handlers.Crusher; +import modtweaker2.mods.mekanism.handlers.Enrichment; +import modtweaker2.mods.mekanism.handlers.Purification; +import modtweaker2.mods.mekanism.handlers.Reaction; +import modtweaker2.mods.mekanism.handlers.Sawmill; +import modtweaker2.mods.mekanism.handlers.Separator; +import modtweaker2.mods.mekanism.handlers.v8.ChemicalCrystallizer; +import modtweaker2.mods.mekanism.handlers.v8.ChemicalDissolution; +import modtweaker2.mods.mekanism.handlers.v8.Infuser; +import modtweaker2.utils.TweakerPlugin; +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.ModContainer; + +public class Mekanism extends TweakerPlugin { + public static final boolean v7 = isV7(); + public Mekanism() { + MineTweakerAPI.registerBracketHandler(new GasBracketHandler()); + MineTweakerAPI.registerClass(Combiner.class); + MineTweakerAPI.registerClass(Compressor.class); + MineTweakerAPI.registerClass(Crusher.class); + MineTweakerAPI.registerClass(Enrichment.class); + MineTweakerAPI.registerClass(Infuser.class); + MineTweakerAPI.registerClass(Purification.class); + MineTweakerAPI.registerClass(Reaction.class); + MineTweakerAPI.registerClass(Sawmill.class); + MineTweakerAPI.registerClass(Separator.class); // MineTweakerAPI.registerClass(ChemicalCrystallizer.class); -// MineTweakerAPI.registerClass(ChemicalDissolution.class); -// MineTweakerAPI.registerClass(ChemicalInfuser.class); -// MineTweakerAPI.registerClass(ChemicalInjection.class); -// MineTweakerAPI.registerClass(ChemicalOxidizer.class); -// MineTweakerAPI.registerClass(ChemicalWasher.class); -// } -// -// public static boolean isV7(){ -// Pattern version = Pattern.compile("7.*"); -// for (ModContainer loadedMod : Loader.instance().getActiveModList()) -// { -// if (loadedMod.getModId().equals("Mekanism") && version.matcher(loadedMod.getVersion()).find()) return true; -// } -// return false; -// } -//} + MineTweakerAPI.registerClass(ChemicalCrystallizer.class); + MineTweakerAPI.registerClass(ChemicalDissolution.class); + MineTweakerAPI.registerClass(ChemicalInfuser.class); + MineTweakerAPI.registerClass(ChemicalInjection.class); + MineTweakerAPI.registerClass(ChemicalOxidizer.class); + MineTweakerAPI.registerClass(ChemicalWasher.class); + } + + public static boolean isV7(){ + Pattern version = Pattern.compile("7.*"); + for (ModContainer loadedMod : Loader.instance().getActiveModList()) + { + if (loadedMod.getModId().equals("Mekanism") && version.matcher(loadedMod.getVersion()).find()) return true; + } + return false; + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/MekanismHelper.java b/src/main/java/modtweaker2/mods/mekanism/MekanismHelper.java index a71d754..07a64a7 100644 --- a/src/main/java/modtweaker2/mods/mekanism/MekanismHelper.java +++ b/src/main/java/modtweaker2/mods/mekanism/MekanismHelper.java @@ -1,27 +1,27 @@ -//package modtweaker2.mods.mekanism; -// -//import mekanism.api.gas.GasRegistry; -//import mekanism.api.gas.GasStack; -//import minetweaker.api.item.IIngredient; -//import modtweaker2.mods.mekanism.gas.IGasStack; -// -//public class MekanismHelper { -// private MekanismHelper() {} -// -// public static GasStack toGas(IGasStack iStack) { -// if (iStack == null) { -// return null; -// } else return new GasStack(GasRegistry.getGas(iStack.getName()), iStack.getAmount()); -// } -// -// public static GasStack[] toGases(IIngredient[] input) { -// return toGases((IGasStack[]) input); -// } -// -// public static GasStack[] toGases(IGasStack[] iStack) { -// GasStack[] stack = new GasStack[iStack.length]; -// for (int i = 0; i < stack.length; i++) -// stack[i] = toGas(iStack[i]); -// return stack; -// } -//} +package modtweaker2.mods.mekanism; + +import mekanism.api.gas.GasRegistry; +import mekanism.api.gas.GasStack; +import minetweaker.api.item.IIngredient; +import modtweaker2.mods.mekanism.gas.IGasStack; + +public class MekanismHelper { + private MekanismHelper() {} + + public static GasStack toGas(IGasStack iStack) { + if (iStack == null) { + return null; + } else return new GasStack(GasRegistry.getGas(iStack.getName()), iStack.getAmount()); + } + + public static GasStack[] toGases(IIngredient[] input) { + return toGases((IGasStack[]) input); + } + + public static GasStack[] toGases(IGasStack[] iStack) { + GasStack[] stack = new GasStack[iStack.length]; + for (int i = 0; i < stack.length; i++) + stack[i] = toGas(iStack[i]); + return stack; + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalCrystallizer.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalCrystallizer.java index 1c2d7cd..edf0f0e 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalCrystallizer.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalCrystallizer.java @@ -1,34 +1,34 @@ -//package modtweaker2.mods.mekanism.handlers; -// -//import static modtweaker2.helpers.InputHelper.toStack; -//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.machines.CrystallizerRecipe; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.mods.mekanism.gas.IGasStack; -//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.chemical.Crystallizer") -//public class ChemicalCrystallizer { -// @ZenMethod -// public static void addRecipe(IGasStack input, IItemStack output) { -// if (Mekanism.v7) -// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_CRYSTALLIZER", Recipe.CHEMICAL_CRYSTALLIZER.get(), toGas(input), toStack(output))); -// else -// { -// CrystallizerRecipe recipe = new CrystallizerRecipe(toGas(input), toStack(output)); -// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_CRYSTALLIZER", Recipe.CHEMICAL_CRYSTALLIZER.get(), recipe.getInput(), recipe)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IItemStack output) { -// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_CRYSTALLIZER", Recipe.CHEMICAL_CRYSTALLIZER.get(), toStack(output))); -// } -//} +package modtweaker2.mods.mekanism.handlers; + +import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.machines.CrystallizerRecipe; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.chemical.Crystallizer") +public class ChemicalCrystallizer { + @ZenMethod + public static void addRecipe(IGasStack input, IItemStack output) { + if (Mekanism.v7) + MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_CRYSTALLIZER", Recipe.CHEMICAL_CRYSTALLIZER.get(), toGas(input), toStack(output))); + else + { + CrystallizerRecipe recipe = new CrystallizerRecipe(toGas(input), toStack(output)); + MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_CRYSTALLIZER", Recipe.CHEMICAL_CRYSTALLIZER.get(), recipe.getInput(), recipe)); + } + } + + @ZenMethod + public static void removeRecipe(IItemStack output) { + if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_CRYSTALLIZER", Recipe.CHEMICAL_CRYSTALLIZER.get(), toStack(output))); + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalDissolution.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalDissolution.java index 04889f0..82aaace 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalDissolution.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalDissolution.java @@ -1,90 +1,90 @@ -//package modtweaker2.mods.mekanism.handlers; -// -//import static modtweaker2.helpers.InputHelper.toStack; -//import static modtweaker2.helpers.StackHelper.areEqual; -//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -// -//import java.util.Iterator; -//import java.util.List; -//import java.util.Map; -// -//import mekanism.api.gas.GasStack; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.machines.DissolutionRecipe; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import minetweaker.api.oredict.IOreDictEntry; -//import modtweaker2.helpers.InputHelper; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.mods.mekanism.gas.IGasStack; -//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -//import net.minecraft.item.ItemStack; -//import net.minecraftforge.oredict.OreDictionary; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.chemical.Dissolution") -//public class ChemicalDissolution { -// @ZenMethod -// public static void addRecipe(IItemStack input, IGasStack output) { -// if (Mekanism.v7) -// { -// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), toStack(input), toGas(output))); -// } -// else { -// DissolutionRecipe recipe = new DissolutionRecipe(toStack(input), toGas(output)); -// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), recipe.getInput(), recipe)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IItemStack input) { -// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// MineTweakerAPI.apply(new Remove("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), toStack(input))); -// } -// -// @ZenMethod -// public static void removeRecipe(IOreDictEntry input) { -// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// List stacks = OreDictionary.getOres(InputHelper.toString(input)); -// for (ItemStack stack : stacks) { -// MineTweakerAPI.apply(new Remove("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), stack)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IGasStack input) { -// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// MineTweakerAPI.apply(new Remove("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), toGas(input))); -// } -// -// private static class Remove extends RemoveMekanismRecipe { -// public Remove(String string, Map map, Object key) { -// super(string, map, key); -// } -// -// @Override -// public void apply() { -// Iterator it = map.entrySet().iterator(); -// while (it.hasNext()) { -// Map.Entry pairs = (Map.Entry) it.next(); -// ItemStack key = (ItemStack) pairs.getKey(); -// GasStack value = (GasStack) pairs.getValue(); -// if (key != null) { -// if (this.key instanceof ItemStack && areEqual(key, (ItemStack) this.key)) { -// this.key = key; -// break; -// } else if (this.key instanceof GasStack && value.isGasEqual((GasStack) this.key)) { -// this.key = key; -// break; -// } -// } -// -// } -// -// recipe = map.get(key); -// map.remove(key); -// } -// } -//} +package modtweaker2.mods.mekanism.handlers; + +import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.areEqual; +import static modtweaker2.mods.mekanism.MekanismHelper.toGas; + +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import mekanism.api.gas.GasStack; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.machines.DissolutionRecipe; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import minetweaker.api.oredict.IOreDictEntry; +import modtweaker2.helpers.InputHelper; +import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.chemical.Dissolution") +public class ChemicalDissolution { + @ZenMethod + public static void addRecipe(IItemStack input, IGasStack output) { + if (Mekanism.v7) + { + MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), toStack(input), toGas(output))); + } + else { + DissolutionRecipe recipe = new DissolutionRecipe(toStack(input), toGas(output)); + MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), recipe.getInput(), recipe)); + } + } + + @ZenMethod + public static void removeRecipe(IItemStack input) { + if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + MineTweakerAPI.apply(new Remove("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), toStack(input))); + } + + @ZenMethod + public static void removeRecipe(IOreDictEntry input) { + if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + List stacks = OreDictionary.getOres(InputHelper.toString(input)); + for (ItemStack stack : stacks) { + MineTweakerAPI.apply(new Remove("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), stack)); + } + } + + @ZenMethod + public static void removeRecipe(IGasStack input) { + if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + MineTweakerAPI.apply(new Remove("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), toGas(input))); + } + + private static class Remove extends RemoveMekanismRecipe { + public Remove(String string, Map map, Object key) { + super(string, map, key); + } + + @Override + public void apply() { + Iterator it = map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry pairs = (Map.Entry) it.next(); + ItemStack key = (ItemStack) pairs.getKey(); + GasStack value = (GasStack) pairs.getValue(); + if (key != null) { + if (this.key instanceof ItemStack && areEqual(key, (ItemStack) this.key)) { + this.key = key; + break; + } else if (this.key instanceof GasStack && value.isGasEqual((GasStack) this.key)) { + this.key = key; + break; + } + } + + } + + recipe = map.get(key); + map.remove(key); + } + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInfuser.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInfuser.java index 1147232..53277ae 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInfuser.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInfuser.java @@ -1,36 +1,36 @@ -//package modtweaker2.mods.mekanism.handlers; -// -//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.inputs.ChemicalPairInput; -//import mekanism.common.recipe.machines.ChemicalInfuserRecipe; -//import minetweaker.MineTweakerAPI; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.mods.mekanism.gas.IGasStack; -//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.chemical.Infuser") -//public class ChemicalInfuser { -// @ZenMethod -// public static void addRecipe(IGasStack left, IGasStack right, IGasStack out) { -// if (Mekanism.v7) { -// ChemicalPairInput pair = new ChemicalPairInput(toGas(left), toGas(right)); -// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INFUSER", Recipe.CHEMICAL_INFUSER.get(), pair, toGas(out))); -// } else { -// ChemicalInfuserRecipe recipe = new ChemicalInfuserRecipe(toGas(left), toGas(right), toGas(out)); -// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INFUSER", Recipe.CHEMICAL_INFUSER.get(), recipe.getInput(), recipe)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IGasStack output) { -// if (!Mekanism.v7) -// throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_INFUSER", Recipe.CHEMICAL_INFUSER.get(), toGas(output))); -// -// -// } -//} +package modtweaker2.mods.mekanism.handlers; + +import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.ChemicalPairInput; +import mekanism.common.recipe.machines.ChemicalInfuserRecipe; +import minetweaker.MineTweakerAPI; +import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.chemical.Infuser") +public class ChemicalInfuser { + @ZenMethod + public static void addRecipe(IGasStack left, IGasStack right, IGasStack out) { + if (Mekanism.v7) { + ChemicalPairInput pair = new ChemicalPairInput(toGas(left), toGas(right)); + MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INFUSER", Recipe.CHEMICAL_INFUSER.get(), pair, toGas(out))); + } else { + ChemicalInfuserRecipe recipe = new ChemicalInfuserRecipe(toGas(left), toGas(right), toGas(out)); + MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INFUSER", Recipe.CHEMICAL_INFUSER.get(), recipe.getInput(), recipe)); + } + } + + @ZenMethod + public static void removeRecipe(IGasStack output) { + if (!Mekanism.v7) + throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_INFUSER", Recipe.CHEMICAL_INFUSER.get(), toGas(output))); + + + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInjection.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInjection.java index 03331b3..a21395f 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInjection.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInjection.java @@ -1,38 +1,38 @@ -//package modtweaker2.mods.mekanism.handlers; -// -//import static modtweaker2.helpers.InputHelper.toStack; -//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.inputs.AdvancedMachineInput; -//import mekanism.common.recipe.machines.InjectionRecipe; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.mods.mekanism.gas.IGasStack; -//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.chemical.Injection") -//public class ChemicalInjection { -// @ZenMethod -// public static void addRecipe(IItemStack input, IGasStack gas, IItemStack output) { -// if (Mekanism.v7) -// { -// AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), toGas(gas).getGas()); -// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INJECTION_CHAMBER", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), aInput, toStack(output))); -// } -// else -// { -// InjectionRecipe recipe = new InjectionRecipe(toStack(input), gas.getName(), toStack(output)); -// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INJECTION_CHAMBER", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), recipe.getInput(), recipe)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IItemStack output) { -// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_INJECTION_CHAMBER", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), toStack(output))); -// } -//} +package modtweaker2.mods.mekanism.handlers; + +import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.AdvancedMachineInput; +import mekanism.common.recipe.machines.InjectionRecipe; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.chemical.Injection") +public class ChemicalInjection { + @ZenMethod + public static void addRecipe(IItemStack input, IGasStack gas, IItemStack output) { + if (Mekanism.v7) + { + AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), toGas(gas).getGas()); + MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INJECTION_CHAMBER", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), aInput, toStack(output))); + } + else + { + InjectionRecipe recipe = new InjectionRecipe(toStack(input), gas.getName(), toStack(output)); + MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INJECTION_CHAMBER", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), recipe.getInput(), recipe)); + } + } + + @ZenMethod + public static void removeRecipe(IItemStack output) { + if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_INJECTION_CHAMBER", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), toStack(output))); + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalOxidizer.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalOxidizer.java index c72a07e..5db57c6 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalOxidizer.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalOxidizer.java @@ -1,36 +1,36 @@ -//package modtweaker2.mods.mekanism.handlers; -// -//import static modtweaker2.helpers.InputHelper.toStack; -//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.machines.OxidationRecipe; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.mods.mekanism.gas.IGasStack; -//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.chemical.Oxidizer") -//public class ChemicalOxidizer { -// @ZenMethod -// public static void addRecipe(IItemStack input, IGasStack output) { -// if (Mekanism.v7) -// { -// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_OXIDIZER", Recipe.CHEMICAL_OXIDIZER.get(), toStack(input), toGas(output))); -// } -// else -// { -// OxidationRecipe recipe = new OxidationRecipe(toStack(input), toGas(output)); -// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_OXIDIZER", Recipe.CHEMICAL_OXIDIZER.get(), recipe.getInput(), recipe)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IGasStack output) { -// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_OXIDIZER", Recipe.CHEMICAL_OXIDIZER.get(), toGas(output))); -// } -//} +package modtweaker2.mods.mekanism.handlers; + +import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.machines.OxidationRecipe; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.chemical.Oxidizer") +public class ChemicalOxidizer { + @ZenMethod + public static void addRecipe(IItemStack input, IGasStack output) { + if (Mekanism.v7) + { + MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_OXIDIZER", Recipe.CHEMICAL_OXIDIZER.get(), toStack(input), toGas(output))); + } + else + { + OxidationRecipe recipe = new OxidationRecipe(toStack(input), toGas(output)); + MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_OXIDIZER", Recipe.CHEMICAL_OXIDIZER.get(), recipe.getInput(), recipe)); + } + } + + @ZenMethod + public static void removeRecipe(IGasStack output) { + if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_OXIDIZER", Recipe.CHEMICAL_OXIDIZER.get(), toGas(output))); + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalWasher.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalWasher.java index 58862e9..523fb1f 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalWasher.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalWasher.java @@ -1,65 +1,65 @@ -//package modtweaker2.mods.mekanism.handlers; -// -//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -// -//import java.util.Iterator; -//import java.util.Map; -// -//import mekanism.api.gas.GasStack; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.machines.WasherRecipe; -//import minetweaker.MineTweakerAPI; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.mods.mekanism.gas.IGasStack; -//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.chemical.Washer") -//public class ChemicalWasher { -// @ZenMethod -// public static void addRecipe(IGasStack input, IGasStack output) { -// if (Mekanism.v7) -// { -// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_WASHER", Recipe.CHEMICAL_WASHER.get(), toGas(input), toGas(output))); -// } -// else -// { -// WasherRecipe recipe = new WasherRecipe(toGas(input), toGas(output)); -// MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_WASHER", Recipe.CHEMICAL_WASHER.get(), recipe.getInput(), recipe)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IGasStack output) { -// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// MineTweakerAPI.apply(new Remove("CHEMICAL_WASHER", Recipe.CHEMICAL_WASHER.get(), toGas(output))); -// } -// -// private static class Remove extends RemoveMekanismRecipe { -// public Remove(String string, Map map, Object key) { -// super(string, map, key); -// } -// -// @Override -// public void apply() { -// Iterator it = map.entrySet().iterator(); -// while (it.hasNext()) { -// Map.Entry pairs = (Map.Entry) it.next(); -// GasStack key = (GasStack) pairs.getKey(); -// GasStack value = (GasStack) pairs.getValue(); -// if (key != null) { -// if (this.key instanceof GasStack && value.isGasEqual((GasStack) this.key)) { -// this.key = key; -// break; -// } -// } -// -// } -// -// recipe = map.get(key); -// map.remove(key); -// } -// } -//} +package modtweaker2.mods.mekanism.handlers; + +import static modtweaker2.mods.mekanism.MekanismHelper.toGas; + +import java.util.Iterator; +import java.util.Map; + +import mekanism.api.gas.GasStack; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.machines.WasherRecipe; +import minetweaker.MineTweakerAPI; +import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.chemical.Washer") +public class ChemicalWasher { + @ZenMethod + public static void addRecipe(IGasStack input, IGasStack output) { + if (Mekanism.v7) + { + MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_WASHER", Recipe.CHEMICAL_WASHER.get(), toGas(input), toGas(output))); + } + else + { + WasherRecipe recipe = new WasherRecipe(toGas(input), toGas(output)); + MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_WASHER", Recipe.CHEMICAL_WASHER.get(), recipe.getInput(), recipe)); + } + } + + @ZenMethod + public static void removeRecipe(IGasStack output) { + if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + MineTweakerAPI.apply(new Remove("CHEMICAL_WASHER", Recipe.CHEMICAL_WASHER.get(), toGas(output))); + } + + private static class Remove extends RemoveMekanismRecipe { + public Remove(String string, Map map, Object key) { + super(string, map, key); + } + + @Override + public void apply() { + Iterator it = map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry pairs = (Map.Entry) it.next(); + GasStack key = (GasStack) pairs.getKey(); + GasStack value = (GasStack) pairs.getValue(); + if (key != null) { + if (this.key instanceof GasStack && value.isGasEqual((GasStack) this.key)) { + this.key = key; + break; + } + } + + } + + recipe = map.get(key); + map.remove(key); + } + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Combiner.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Combiner.java index ad95894..983d79f 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Combiner.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Combiner.java @@ -1,35 +1,35 @@ -//package modtweaker2.mods.mekanism.handlers; -// -//import static modtweaker2.helpers.InputHelper.toStack; -//import mekanism.api.gas.GasRegistry; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.inputs.AdvancedMachineInput; -//import mekanism.common.recipe.machines.CombinerRecipe; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.Combiner") -//public class Combiner { -// @ZenMethod -// public static void addRecipe(IItemStack input, IItemStack output) { -// AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), GasRegistry.getGas("liquidStone")); -// if (Mekanism.v7) -// MineTweakerAPI.apply(new AddMekanismRecipe("COMBINER", Recipe.COMBINER.get(), aInput, toStack(output))); -// else -// { -// CombinerRecipe recipe = new CombinerRecipe(toStack(input), toStack(output)); -// MineTweakerAPI.apply(new AddMekanismRecipe("COMBINER", Recipe.COMBINER.get(), recipe.getInput(), recipe)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IItemStack output) { -// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// MineTweakerAPI.apply(new RemoveMekanismRecipe("COMBINER", Recipe.COMBINER.get(), toStack(output))); -// } -//} +package modtweaker2.mods.mekanism.handlers; + +import static modtweaker2.helpers.InputHelper.toStack; +import mekanism.api.gas.GasRegistry; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.AdvancedMachineInput; +import mekanism.common.recipe.machines.CombinerRecipe; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.Combiner") +public class Combiner { + @ZenMethod + public static void addRecipe(IItemStack input, IItemStack output) { + AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), GasRegistry.getGas("liquidStone")); + if (Mekanism.v7) + MineTweakerAPI.apply(new AddMekanismRecipe("COMBINER", Recipe.COMBINER.get(), aInput, toStack(output))); + else + { + CombinerRecipe recipe = new CombinerRecipe(toStack(input), toStack(output)); + MineTweakerAPI.apply(new AddMekanismRecipe("COMBINER", Recipe.COMBINER.get(), recipe.getInput(), recipe)); + } + } + + @ZenMethod + public static void removeRecipe(IItemStack output) { + if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + MineTweakerAPI.apply(new RemoveMekanismRecipe("COMBINER", Recipe.COMBINER.get(), toStack(output))); + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Compressor.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Compressor.java index b432a3a..25898a8 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Compressor.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Compressor.java @@ -1,35 +1,35 @@ -//package modtweaker2.mods.mekanism.handlers; -// -//import static modtweaker2.helpers.InputHelper.toStack; -//import mekanism.api.gas.GasRegistry; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.inputs.AdvancedMachineInput; -//import mekanism.common.recipe.machines.OsmiumCompressorRecipe; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.Compressor") -//public class Compressor { -// @ZenMethod -// public static void addRecipe(IItemStack input, IItemStack output) { -// AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), GasRegistry.getGas("liquidOsmium")); -// if (Mekanism.v7) -// MineTweakerAPI.apply(new AddMekanismRecipe("OSMIUM_COMPRESSOR", Recipe.OSMIUM_COMPRESSOR.get(), aInput, toStack(output))); -// else -// { -// OsmiumCompressorRecipe recipe = new OsmiumCompressorRecipe(toStack(input), toStack(output)); -// MineTweakerAPI.apply(new AddMekanismRecipe("OSMIUM_COMPRESSOR", Recipe.OSMIUM_COMPRESSOR.get(), recipe.getInput(), recipe)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IItemStack output) { -// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// MineTweakerAPI.apply(new RemoveMekanismRecipe("OSMIUM_COMPRESSOR", Recipe.OSMIUM_COMPRESSOR.get(), toStack(output))); -// } -//} +package modtweaker2.mods.mekanism.handlers; + +import static modtweaker2.helpers.InputHelper.toStack; +import mekanism.api.gas.GasRegistry; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.AdvancedMachineInput; +import mekanism.common.recipe.machines.OsmiumCompressorRecipe; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.Compressor") +public class Compressor { + @ZenMethod + public static void addRecipe(IItemStack input, IItemStack output) { + AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), GasRegistry.getGas("liquidOsmium")); + if (Mekanism.v7) + MineTweakerAPI.apply(new AddMekanismRecipe("OSMIUM_COMPRESSOR", Recipe.OSMIUM_COMPRESSOR.get(), aInput, toStack(output))); + else + { + OsmiumCompressorRecipe recipe = new OsmiumCompressorRecipe(toStack(input), toStack(output)); + MineTweakerAPI.apply(new AddMekanismRecipe("OSMIUM_COMPRESSOR", Recipe.OSMIUM_COMPRESSOR.get(), recipe.getInput(), recipe)); + } + } + + @ZenMethod + public static void removeRecipe(IItemStack output) { + if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + MineTweakerAPI.apply(new RemoveMekanismRecipe("OSMIUM_COMPRESSOR", Recipe.OSMIUM_COMPRESSOR.get(), toStack(output))); + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Crusher.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Crusher.java index b26d843..637e8b8 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Crusher.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Crusher.java @@ -1,32 +1,32 @@ -//package modtweaker2.mods.mekanism.handlers; -// -//import static modtweaker2.helpers.InputHelper.toStack; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.machines.CrusherRecipe; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.Crusher") -//public class Crusher { -// @ZenMethod -// public static void addRecipe(IItemStack input, IItemStack output) { -// if (Mekanism.v7) -// MineTweakerAPI.apply(new AddMekanismRecipe("CRUSHER", Recipe.CRUSHER.get(), toStack(input), toStack(output))); -// else -// { -// CrusherRecipe recipe = new CrusherRecipe(toStack(input), toStack(output)); -// MineTweakerAPI.apply(new AddMekanismRecipe("CRUSHER", Recipe.CRUSHER.get(), recipe.getInput(), recipe)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IItemStack output) { -// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// MineTweakerAPI.apply(new RemoveMekanismRecipe("CRUSHER", Recipe.CRUSHER.get(), toStack(output))); -// } -//} +package modtweaker2.mods.mekanism.handlers; + +import static modtweaker2.helpers.InputHelper.toStack; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.machines.CrusherRecipe; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.Crusher") +public class Crusher { + @ZenMethod + public static void addRecipe(IItemStack input, IItemStack output) { + if (Mekanism.v7) + MineTweakerAPI.apply(new AddMekanismRecipe("CRUSHER", Recipe.CRUSHER.get(), toStack(input), toStack(output))); + else + { + CrusherRecipe recipe = new CrusherRecipe(toStack(input), toStack(output)); + MineTweakerAPI.apply(new AddMekanismRecipe("CRUSHER", Recipe.CRUSHER.get(), recipe.getInput(), recipe)); + } + } + + @ZenMethod + public static void removeRecipe(IItemStack output) { + if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + MineTweakerAPI.apply(new RemoveMekanismRecipe("CRUSHER", Recipe.CRUSHER.get(), toStack(output))); + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Enrichment.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Enrichment.java index 17b7ae2..863ccde 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Enrichment.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Enrichment.java @@ -1,32 +1,32 @@ -//package modtweaker2.mods.mekanism.handlers; -// -//import static modtweaker2.helpers.InputHelper.toStack; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.machines.EnrichmentRecipe; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.Enrichment") -//public class Enrichment { -// @ZenMethod -// public static void addRecipe(IItemStack input, IItemStack output) { -// if (Mekanism.v7) -// MineTweakerAPI.apply(new AddMekanismRecipe("ENRICHMENT_CHAMBER", Recipe.ENRICHMENT_CHAMBER.get(), toStack(input), toStack(output))); -// else -// { -// EnrichmentRecipe recipe = new EnrichmentRecipe(toStack(input), toStack(output)); -// MineTweakerAPI.apply(new AddMekanismRecipe("ENRICHMENT_CHAMBER", Recipe.ENRICHMENT_CHAMBER.get(), recipe.getInput(), recipe)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IItemStack input) { -// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// MineTweakerAPI.apply(new RemoveMekanismRecipe("ENRICHMENT_CHAMBER", Recipe.ENRICHMENT_CHAMBER.get(), toStack(input))); -// } -//} +package modtweaker2.mods.mekanism.handlers; + +import static modtweaker2.helpers.InputHelper.toStack; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.machines.EnrichmentRecipe; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.Enrichment") +public class Enrichment { + @ZenMethod + public static void addRecipe(IItemStack input, IItemStack output) { + if (Mekanism.v7) + MineTweakerAPI.apply(new AddMekanismRecipe("ENRICHMENT_CHAMBER", Recipe.ENRICHMENT_CHAMBER.get(), toStack(input), toStack(output))); + else + { + EnrichmentRecipe recipe = new EnrichmentRecipe(toStack(input), toStack(output)); + MineTweakerAPI.apply(new AddMekanismRecipe("ENRICHMENT_CHAMBER", Recipe.ENRICHMENT_CHAMBER.get(), recipe.getInput(), recipe)); + } + } + + @ZenMethod + public static void removeRecipe(IItemStack input) { + if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + MineTweakerAPI.apply(new RemoveMekanismRecipe("ENRICHMENT_CHAMBER", Recipe.ENRICHMENT_CHAMBER.get(), toStack(input))); + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Purification.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Purification.java index 76ed5f9..5f8a95d 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Purification.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Purification.java @@ -1,62 +1,62 @@ -//package modtweaker2.mods.mekanism.handlers; -// -//import static modtweaker2.helpers.InputHelper.toStack; -//import static modtweaker2.helpers.StackHelper.areEqual; -// -//import java.util.Map; -// -//import mekanism.api.gas.GasRegistry; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.inputs.AdvancedMachineInput; -//import mekanism.common.recipe.machines.PurificationRecipe; -//import mekanism.common.recipe.outputs.MachineOutput; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -//import modtweaker2.utils.BaseMapRemoval; -//import net.minecraft.item.ItemStack; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.Purification") -//public class Purification { -// @ZenMethod -// public static void addRecipe(IItemStack input, IItemStack output) { -// if (Mekanism.v7) -// { -// AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), GasRegistry.getGas("oxygen")); -// MineTweakerAPI.apply(new AddMekanismRecipe("PURIFICATION_CHAMBER", Recipe.PURIFICATION_CHAMBER.get(), aInput, toStack(output))); -// } -// else -// { -// PurificationRecipe recipe = new PurificationRecipe(toStack(input), toStack(output)); -// MineTweakerAPI.apply(new AddMekanismRecipe("PURIFICATION_CHAMBER", Recipe.PURIFICATION_CHAMBER.get(), recipe.getInput(), recipe)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IItemStack output) { -// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// MineTweakerAPI.apply(new Remove(toStack(output))); -// } -// -// private static class Remove extends BaseMapRemoval { -// public Remove(ItemStack stack) { -// super("Purification Chamber", Recipe.PURIFICATION_CHAMBER.get(), stack); -// } -// -// //We must search through the recipe entries so that we can assign the correct key for removal -// @Override -// public void apply() { -// for (Map.Entry entry : ((Map) map).entrySet()) { -// if (entry.getValue() != null && areEqual(entry.getValue(), (ItemStack) stack)) { -// key = entry.getKey(); -// break; -// } -// } -// -// super.apply(); -// } -// } -//} +package modtweaker2.mods.mekanism.handlers; + +import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.areEqual; + +import java.util.Map; + +import mekanism.api.gas.GasRegistry; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.AdvancedMachineInput; +import mekanism.common.recipe.machines.PurificationRecipe; +import mekanism.common.recipe.outputs.MachineOutput; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +import modtweaker2.utils.BaseMapRemoval; +import net.minecraft.item.ItemStack; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.Purification") +public class Purification { + @ZenMethod + public static void addRecipe(IItemStack input, IItemStack output) { + if (Mekanism.v7) + { + AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), GasRegistry.getGas("oxygen")); + MineTweakerAPI.apply(new AddMekanismRecipe("PURIFICATION_CHAMBER", Recipe.PURIFICATION_CHAMBER.get(), aInput, toStack(output))); + } + else + { + PurificationRecipe recipe = new PurificationRecipe(toStack(input), toStack(output)); + MineTweakerAPI.apply(new AddMekanismRecipe("PURIFICATION_CHAMBER", Recipe.PURIFICATION_CHAMBER.get(), recipe.getInput(), recipe)); + } + } + + @ZenMethod + public static void removeRecipe(IItemStack output) { + if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + MineTweakerAPI.apply(new Remove(toStack(output))); + } + + private static class Remove extends BaseMapRemoval { + public Remove(ItemStack stack) { + super("Purification Chamber", Recipe.PURIFICATION_CHAMBER.get(), stack); + } + + //We must search through the recipe entries so that we can assign the correct key for removal + @Override + public void apply() { + for (Map.Entry entry : ((Map) map).entrySet()) { + if (entry.getValue() != null && areEqual(entry.getValue(), (ItemStack) stack)) { + key = entry.getKey(); + break; + } + } + + super.apply(); + } + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Reaction.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Reaction.java index fdb058d..5bfb04a 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Reaction.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Reaction.java @@ -1,42 +1,42 @@ -//package modtweaker2.mods.mekanism.handlers; -// -//import static modtweaker2.helpers.InputHelper.toFluid; -//import static modtweaker2.helpers.InputHelper.toStack; -//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.inputs.PressurizedInput; -//import mekanism.common.recipe.machines.PressurizedRecipe; -//import mekanism.common.recipe.outputs.PressurizedOutput; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import minetweaker.api.liquid.ILiquidStack; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.mods.mekanism.gas.IGasStack; -//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.Reaction") -//public class Reaction { -// @ZenMethod -// public static void addRecipe(IItemStack solid, ILiquidStack liquid, IGasStack gas, IItemStack outItem, IGasStack outGas, double energy, int ticks) { -// if (Mekanism.v7) -// { -// PressurizedInput input = new PressurizedInput(toStack(solid), toFluid(liquid), toGas(gas)); -// PressurizedRecipe recipe = new PressurizedRecipe(input, new PressurizedOutput(toStack(outItem), toGas(outGas)), energy, ticks); -// MineTweakerAPI.apply(new AddMekanismRecipe("PRESSURIZED_REACTION_CHAMBER", Recipe.PRESSURIZED_REACTION_CHAMBER.get(), input, recipe)); -// } -// else { -// mekanism.common.recipe.machines.PressurizedRecipe recipe = new mekanism.common.recipe.machines.PressurizedRecipe(toStack(solid), toFluid(liquid), toGas(gas), toStack(outItem), toGas(outGas), energy, ticks); -// MineTweakerAPI.apply(new AddMekanismRecipe("PRESSURIZED_REACTION_CHAMBER", Recipe.PRESSURIZED_REACTION_CHAMBER.get(), recipe.getInput(), recipe)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IItemStack outItem, IGasStack outGas) { -// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// PressurizedOutput output = new PressurizedOutput(toStack(outItem), toGas(outGas)); -// MineTweakerAPI.apply(new RemoveMekanismRecipe("PRESSURIZED_REACTION_CHAMBER", Recipe.PRESSURIZED_REACTION_CHAMBER.get(), output)); -// } -//} +package modtweaker2.mods.mekanism.handlers; + +import static modtweaker2.helpers.InputHelper.toFluid; +import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.PressurizedInput; +import mekanism.common.recipe.machines.PressurizedRecipe; +import mekanism.common.recipe.outputs.PressurizedOutput; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import minetweaker.api.liquid.ILiquidStack; +import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.Reaction") +public class Reaction { + @ZenMethod + public static void addRecipe(IItemStack solid, ILiquidStack liquid, IGasStack gas, IItemStack outItem, IGasStack outGas, double energy, int ticks) { + if (Mekanism.v7) + { + PressurizedInput input = new PressurizedInput(toStack(solid), toFluid(liquid), toGas(gas)); + PressurizedRecipe recipe = new PressurizedRecipe(input, new PressurizedOutput(toStack(outItem), toGas(outGas)), energy, ticks); + MineTweakerAPI.apply(new AddMekanismRecipe("PRESSURIZED_REACTION_CHAMBER", Recipe.PRESSURIZED_REACTION_CHAMBER.get(), input, recipe)); + } + else { + mekanism.common.recipe.machines.PressurizedRecipe recipe = new mekanism.common.recipe.machines.PressurizedRecipe(toStack(solid), toFluid(liquid), toGas(gas), toStack(outItem), toGas(outGas), energy, ticks); + MineTweakerAPI.apply(new AddMekanismRecipe("PRESSURIZED_REACTION_CHAMBER", Recipe.PRESSURIZED_REACTION_CHAMBER.get(), recipe.getInput(), recipe)); + } + } + + @ZenMethod + public static void removeRecipe(IItemStack outItem, IGasStack outGas) { + if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + PressurizedOutput output = new PressurizedOutput(toStack(outItem), toGas(outGas)); + MineTweakerAPI.apply(new RemoveMekanismRecipe("PRESSURIZED_REACTION_CHAMBER", Recipe.PRESSURIZED_REACTION_CHAMBER.get(), output)); + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Sawmill.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Sawmill.java index cf4645d..cb9eefa 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Sawmill.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Sawmill.java @@ -1,61 +1,61 @@ -//package modtweaker2.mods.mekanism.handlers; -// -//import static modtweaker2.helpers.InputHelper.toStack; -//import static modtweaker2.helpers.StackHelper.areEqual; -// -//import java.util.Map; -// -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.machines.SawmillRecipe; -//import mekanism.common.recipe.outputs.ChanceOutput; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -//import modtweaker2.utils.BaseMapRemoval; -//import net.minecraft.item.ItemStack; -//import stanhebben.zenscript.annotations.Optional; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.Sawmill") -//public class Sawmill { -// @ZenMethod -// public static void addRecipe(IItemStack input, IItemStack output1, @Optional IItemStack output2, @Optional double chance) { -// if (Mekanism.v7) -// { -// ChanceOutput chanceOutput = new ChanceOutput(toStack(output1), toStack(output2), chance); -// MineTweakerAPI.apply(new AddMekanismRecipe("PRECISION_SAWMILL", Recipe.PRECISION_SAWMILL.get(), toStack(input), chanceOutput)); -// } -// else -// { -// SawmillRecipe recipe = chance>0?new SawmillRecipe(toStack(input), toStack(output1), toStack(output2), chance) : new SawmillRecipe(toStack(input), toStack(output1)); -// MineTweakerAPI.apply(new AddMekanismRecipe("PRECISION_SAWMILL", Recipe.PRECISION_SAWMILL.get(), recipe.getInput(), recipe)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IItemStack input) { -// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// MineTweakerAPI.apply(new Remove(toStack(input))); -// } -// -// private static class Remove extends BaseMapRemoval { -// public Remove(ItemStack stack) { -// super("Precision Sawmill", Recipe.PRECISION_SAWMILL.get(), stack); -// } -// -// //We must search through the recipe entries so that we can assign the correct key for removal -// @Override -// public void apply() { -// for (Map.Entry entry : ((Map) map).entrySet()) { -// if (entry.getKey() != null && areEqual(entry.getKey(), (ItemStack) stack)) { -// key = entry.getKey(); -// break; -// } -// } -// -// super.apply(); -// } -// } -//} +package modtweaker2.mods.mekanism.handlers; + +import static modtweaker2.helpers.InputHelper.toStack; +import static modtweaker2.helpers.StackHelper.areEqual; + +import java.util.Map; + +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.machines.SawmillRecipe; +import mekanism.common.recipe.outputs.ChanceOutput; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +import modtweaker2.utils.BaseMapRemoval; +import net.minecraft.item.ItemStack; +import stanhebben.zenscript.annotations.Optional; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.Sawmill") +public class Sawmill { + @ZenMethod + public static void addRecipe(IItemStack input, IItemStack output1, @Optional IItemStack output2, @Optional double chance) { + if (Mekanism.v7) + { + ChanceOutput chanceOutput = new ChanceOutput(toStack(output1), toStack(output2), chance); + MineTweakerAPI.apply(new AddMekanismRecipe("PRECISION_SAWMILL", Recipe.PRECISION_SAWMILL.get(), toStack(input), chanceOutput)); + } + else + { + SawmillRecipe recipe = chance>0?new SawmillRecipe(toStack(input), toStack(output1), toStack(output2), chance) : new SawmillRecipe(toStack(input), toStack(output1)); + MineTweakerAPI.apply(new AddMekanismRecipe("PRECISION_SAWMILL", Recipe.PRECISION_SAWMILL.get(), recipe.getInput(), recipe)); + } + } + + @ZenMethod + public static void removeRecipe(IItemStack input) { + if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + MineTweakerAPI.apply(new Remove(toStack(input))); + } + + private static class Remove extends BaseMapRemoval { + public Remove(ItemStack stack) { + super("Precision Sawmill", Recipe.PRECISION_SAWMILL.get(), stack); + } + + //We must search through the recipe entries so that we can assign the correct key for removal + @Override + public void apply() { + for (Map.Entry entry : ((Map) map).entrySet()) { + if (entry.getKey() != null && areEqual(entry.getKey(), (ItemStack) stack)) { + key = entry.getKey(); + break; + } + } + + super.apply(); + } + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Separator.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Separator.java index a37555f..af08c3f 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Separator.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Separator.java @@ -1,72 +1,72 @@ -//package modtweaker2.mods.mekanism.handlers; -// -//import static modtweaker2.helpers.InputHelper.toFluid; -//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -// -//import java.util.Map; -// -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.inputs.ChemicalPairInput; -//import mekanism.common.recipe.machines.SeparatorRecipe; -//import mekanism.common.recipe.outputs.ChemicalPairOutput; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.liquid.ILiquidStack; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.mods.mekanism.gas.IGasStack; -//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -//import modtweaker2.utils.BaseMapRemoval; -//import net.minecraftforge.fluids.FluidStack; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.Separator") -//public class Separator { -// @ZenMethod -// public static void addRecipe(ILiquidStack input, IGasStack gas1, IGasStack gas2) { -// if (Mekanism.v7) -// { -// ChemicalPairInput pair = new ChemicalPairInput(toGas(gas1), toGas(gas2)); -// MineTweakerAPI.apply(new AddMekanismRecipe("ELECTROLYTIC_SEPARATOR", Recipe.ELECTROLYTIC_SEPARATOR.get(), toFluid(input), pair)); -// } else -// { -// throw new UnsupportedOperationException("Syntax for v8 is: Fluid, Energy, Gas, Gas"); -// } -// } -// -// @ZenMethod -// public static void addRecipe(ILiquidStack input, double energy, IGasStack gas1, IGasStack gas2) { -// if (Mekanism.v7) -// { -// throw new UnsupportedOperationException("Syntax for v7 is: Fluid, Gas, Gas"); -// } else -// { -// SeparatorRecipe recipe = new SeparatorRecipe(toFluid(input), energy, toGas(gas1), toGas(gas2)); -// MineTweakerAPI.apply(new AddMekanismRecipe("ELECTROLYTIC_SEPARATOR", Recipe.ELECTROLYTIC_SEPARATOR.get(), recipe.getInput(), recipe)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(ILiquidStack input) { -// if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// MineTweakerAPI.apply(new Remove(toFluid(input))); -// } -// -// private static class Remove extends BaseMapRemoval { -// public Remove(FluidStack stack) { -// super("Electrolytic Separator", Recipe.ELECTROLYTIC_SEPARATOR.get(), stack); -// } -// -// //We must search through the recipe entries so that we can assign the correct key for removal -// @Override -// public void apply() { -// for (Map.Entry entry : ((Map) map).entrySet()) { -// if (entry.getKey() != null && entry.getKey().isFluidEqual((FluidStack) stack)) { -// key = entry.getKey(); -// break; -// } -// } -// -// super.apply(); -// } -// } -//} +package modtweaker2.mods.mekanism.handlers; + +import static modtweaker2.helpers.InputHelper.toFluid; +import static modtweaker2.mods.mekanism.MekanismHelper.toGas; + +import java.util.Map; + +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.ChemicalPairInput; +import mekanism.common.recipe.machines.SeparatorRecipe; +import mekanism.common.recipe.outputs.ChemicalPairOutput; +import minetweaker.MineTweakerAPI; +import minetweaker.api.liquid.ILiquidStack; +import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +import modtweaker2.utils.BaseMapRemoval; +import net.minecraftforge.fluids.FluidStack; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.Separator") +public class Separator { + @ZenMethod + public static void addRecipe(ILiquidStack input, IGasStack gas1, IGasStack gas2) { + if (Mekanism.v7) + { + ChemicalPairInput pair = new ChemicalPairInput(toGas(gas1), toGas(gas2)); + MineTweakerAPI.apply(new AddMekanismRecipe("ELECTROLYTIC_SEPARATOR", Recipe.ELECTROLYTIC_SEPARATOR.get(), toFluid(input), pair)); + } else + { + throw new UnsupportedOperationException("Syntax for v8 is: Fluid, Energy, Gas, Gas"); + } + } + + @ZenMethod + public static void addRecipe(ILiquidStack input, double energy, IGasStack gas1, IGasStack gas2) { + if (Mekanism.v7) + { + throw new UnsupportedOperationException("Syntax for v7 is: Fluid, Gas, Gas"); + } else + { + SeparatorRecipe recipe = new SeparatorRecipe(toFluid(input), energy, toGas(gas1), toGas(gas2)); + MineTweakerAPI.apply(new AddMekanismRecipe("ELECTROLYTIC_SEPARATOR", Recipe.ELECTROLYTIC_SEPARATOR.get(), recipe.getInput(), recipe)); + } + } + + @ZenMethod + public static void removeRecipe(ILiquidStack input) { + if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); + MineTweakerAPI.apply(new Remove(toFluid(input))); + } + + private static class Remove extends BaseMapRemoval { + public Remove(FluidStack stack) { + super("Electrolytic Separator", Recipe.ELECTROLYTIC_SEPARATOR.get(), stack); + } + + //We must search through the recipe entries so that we can assign the correct key for removal + @Override + public void apply() { + for (Map.Entry entry : ((Map) map).entrySet()) { + if (entry.getKey() != null && entry.getKey().isFluidEqual((FluidStack) stack)) { + key = entry.getKey(); + break; + } + } + + super.apply(); + } + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalCrystallizer.java b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalCrystallizer.java index 456205a..b8e37e4 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalCrystallizer.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalCrystallizer.java @@ -1,83 +1,85 @@ -//package modtweaker2.mods.mekanism.handlers.v8; -// -//import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -// -//import java.util.ArrayList; -//import java.util.List; -//import java.util.Set; -// -//import mekanism.api.gas.GasStack; -//import mekanism.common.recipe.RecipeHandler; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.inputs.GasInput; -//import mekanism.common.recipe.machines.CrystallizerRecipe; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import modtweaker2.helpers.InputHelper; -//import modtweaker2.mods.mekanism.gas.IGasStack; -//import modtweaker2.utils.BaseMapAddition; -//import modtweaker2.utils.BaseMapRemoval; -//import net.minecraft.item.ItemStack; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.chemical.Crystallizer") -//public class ChemicalCrystallizer { -// -// @ZenMethod -// public static void addRecipe(IItemStack output, IGasStack input) { -// MineTweakerAPI.apply(new Add(new ChemicalCrystallizerRecipe(toGas(input), InputHelper.toStack(output)))); -// } -// -// private static class Add extends BaseMapAddition { -// -// public Add(ChemicalCrystallizerRecipe recipe) { -// super("Chemical Crystallizer", Recipe.CHEMICAL_CRYSTALLIZER.get(), recipe.inputGas, recipe.outputItem); -// } -// -// @Override -// public void apply() { -// RecipeHandler.addChemicalCrystallizerRecipe((GasStack) key, (ItemStack) recipe); -// } -// -// } -// -// private static class ChemicalCrystallizerRecipe { -// public GasStack inputGas; -// public ItemStack outputItem; -// -// public ChemicalCrystallizerRecipe(GasStack inputGas, ItemStack outputItem) { -// this.inputGas = inputGas; -// this.outputItem = outputItem; -// -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IItemStack output) { -// MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); -// } -// -// private static class Remove extends BaseMapRemoval { -// -// public Remove(ItemStack stack) { -// super("Chemical Crystallizer", Recipe.CHEMICAL_CRYSTALLIZER.get(), stack); -// } -// -// @SuppressWarnings("unchecked") -// @Override -// public void apply() { -// List gasesToRemove = new ArrayList(); -// for(GasInput stack : (Set)Recipe.CHEMICAL_CRYSTALLIZER.get().keySet()){ -// CrystallizerRecipe crystalRecipe= (CrystallizerRecipe)Recipe.CHEMICAL_CRYSTALLIZER.get().get(stack); -// if(crystalRecipe.getOutput().output.isItemEqual((ItemStack) this.stack)){ -// gasesToRemove.add(stack); -// } -// } -// for(GasInput stack : gasesToRemove){ -// Recipe.CHEMICAL_CRYSTALLIZER.get().remove(stack); -// } -// } -// -// } -//} +package modtweaker2.mods.mekanism.handlers.v8; + +import static modtweaker2.mods.mekanism.MekanismHelper.toGas; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import mekanism.api.gas.GasStack; +import mekanism.common.KeySync.KeySet; +import mekanism.common.recipe.RecipeHandler; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.GasInput; +import mekanism.common.recipe.machines.CrystallizerRecipe; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.utils.BaseMapAddition; +import modtweaker2.utils.BaseMapRemoval; +import net.minecraft.item.ItemStack; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.chemical.Crystallizer") +public class ChemicalCrystallizer { + + @ZenMethod + public static void addRecipe(IItemStack output, IGasStack input) { + MineTweakerAPI.apply(new Add(new ChemicalCrystallizerRecipe(toGas(input), InputHelper.toStack(output)))); + } + + private static class Add extends BaseMapAddition { + + public Add(ChemicalCrystallizerRecipe recipe) { + super("Chemical Crystallizer", Recipe.CHEMICAL_CRYSTALLIZER.get(), recipe.inputGas, recipe.outputItem); + } + + @Override + public void apply() { + RecipeHandler.addChemicalCrystallizerRecipe((GasStack) key, (ItemStack) recipe); + } + + } + + private static class ChemicalCrystallizerRecipe { + public GasStack inputGas; + public ItemStack outputItem; + + public ChemicalCrystallizerRecipe(GasStack inputGas, ItemStack outputItem) { + this.inputGas = inputGas; + this.outputItem = outputItem; + + } + } + + @ZenMethod + public static void removeRecipe(IItemStack output) { + MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); + } + + private static class Remove extends BaseMapRemoval { + + public Remove(ItemStack stack) { + super("Chemical Crystallizer", Recipe.CHEMICAL_CRYSTALLIZER.get(), stack); + } + + @SuppressWarnings("unchecked") + @Override + public void apply() { + List gasesToRemove = new ArrayList(); + for(GasInput stack : (Set)Recipe.CHEMICAL_CRYSTALLIZER.get().keySet()){ + CrystallizerRecipe crystalRecipe= (CrystallizerRecipe)Recipe.CHEMICAL_CRYSTALLIZER.get().get(stack); + if(crystalRecipe.getOutput().output.isItemEqual((ItemStack) this.stack)){ + gasesToRemove.add(stack); + } + } + for(GasInput stack : gasesToRemove){ + Recipe.CHEMICAL_CRYSTALLIZER.get().remove(stack); + } + } + + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalDissolution.java b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalDissolution.java index 882f6bf..0cd5c61 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalDissolution.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalDissolution.java @@ -1,84 +1,84 @@ -//package modtweaker2.mods.mekanism.handlers.v8; -// -//import java.util.ArrayList; -//import java.util.List; -//import java.util.Set; -// -//import mekanism.api.gas.GasStack; -//import mekanism.common.recipe.RecipeHandler; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.inputs.ItemStackInput; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import modtweaker2.helpers.InputHelper; -//import modtweaker2.mods.mekanism.MekanismHelper; -//import modtweaker2.mods.mekanism.gas.IGasStack; -//import modtweaker2.utils.BaseMapAddition; -//import modtweaker2.utils.BaseMapRemoval; -//import net.minecraft.item.ItemStack; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.chemical.Dissolution") -//public class ChemicalDissolution { -// -// @ZenMethod -// public static void addRecipe(IGasStack output, IItemStack input) { -// MineTweakerAPI.apply(new Add(new DissolutionRecipe(MekanismHelper.toGas(output), InputHelper.toStack(input)))); -// } -// -// private static class Add extends BaseMapAddition { -// -// public DissolutionRecipe recipe; -// -// public Add(DissolutionRecipe recipe) { -// super("Dissolution Infuser", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), recipe.input, recipe.output); -// this.recipe = recipe; -// } -// -// @Override -// public void apply() { -// RecipeHandler.addChemicalDissolutionChamberRecipe(recipe.input, recipe.output); -// -// } -// } -// -// private static class DissolutionRecipe { -// public GasStack output; -// public ItemStack input; -// -// public DissolutionRecipe(GasStack output, ItemStack input) { -// this.output = output; -// this.input = input; -// } -// -// } -// -// @ZenMethod -// public static void removeRecipe(IGasStack output) { -// MineTweakerAPI.apply(new Remove(MekanismHelper.toGas(output))); -// } -// -// private static class Remove extends BaseMapRemoval { -// -// public Remove(GasStack stack) { -// super("Dissolution Infuser", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), stack); -// } -// -// @SuppressWarnings("unchecked") -// @Override -// public void apply() { -// List toRemove = new ArrayList(); -// for (ItemStackInput stack : (Set) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().keySet()) { -// mekanism.common.recipe.machines.DissolutionRecipe recipe = (mekanism.common.recipe.machines.DissolutionRecipe) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().get(stack); -// if (recipe.getOutput().output.isGasEqual((GasStack) this.stack)) { -// toRemove.add(stack); -// } -// } -// for (ItemStackInput stack : toRemove) { -// Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().remove(stack); -// } -// } -// -// } -//} +package modtweaker2.mods.mekanism.handlers.v8; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import mekanism.api.gas.GasStack; +import mekanism.common.recipe.RecipeHandler; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.ItemStackInput; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.mods.mekanism.MekanismHelper; +import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.utils.BaseMapAddition; +import modtweaker2.utils.BaseMapRemoval; +import net.minecraft.item.ItemStack; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.chemical.Dissolution") +public class ChemicalDissolution { + + @ZenMethod + public static void addRecipe(IGasStack output, IItemStack input) { + MineTweakerAPI.apply(new Add(new DissolutionRecipe(MekanismHelper.toGas(output), InputHelper.toStack(input)))); + } + + private static class Add extends BaseMapAddition { + + public DissolutionRecipe recipe; + + public Add(DissolutionRecipe recipe) { + super("Dissolution Infuser", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), recipe.input, recipe.output); + this.recipe = recipe; + } + + @Override + public void apply() { + RecipeHandler.addChemicalDissolutionChamberRecipe(recipe.input, recipe.output); + + } + } + + private static class DissolutionRecipe { + public GasStack output; + public ItemStack input; + + public DissolutionRecipe(GasStack output, ItemStack input) { + this.output = output; + this.input = input; + } + + } + + @ZenMethod + public static void removeRecipe(IGasStack output) { + MineTweakerAPI.apply(new Remove(MekanismHelper.toGas(output))); + } + + private static class Remove extends BaseMapRemoval { + + public Remove(GasStack stack) { + super("Dissolution Infuser", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), stack); + } + + @SuppressWarnings("unchecked") + @Override + public void apply() { + List toRemove = new ArrayList(); + for (ItemStackInput stack : (Set) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().keySet()) { + mekanism.common.recipe.machines.DissolutionRecipe recipe = (mekanism.common.recipe.machines.DissolutionRecipe) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().get(stack); + if (recipe.getOutput().output.isGasEqual((GasStack) this.stack)) { + toRemove.add(stack); + } + } + for (ItemStackInput stack : toRemove) { + Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().remove(stack); + } + } + + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInfuser.java b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInfuser.java index 423b60f..fae3b50 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInfuser.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInfuser.java @@ -1,85 +1,85 @@ -//package modtweaker2.mods.mekanism.handlers.v8; -// -//import java.util.ArrayList; -//import java.util.List; -//import java.util.Set; -// -//import mekanism.api.gas.GasStack; -//import mekanism.common.recipe.RecipeHandler; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.inputs.ChemicalPairInput; -//import mekanism.common.recipe.machines.ChemicalInfuserRecipe; -//import mekanism.common.recipe.outputs.GasOutput; -//import minetweaker.MineTweakerAPI; -//import modtweaker2.mods.mekanism.MekanismHelper; -//import modtweaker2.mods.mekanism.gas.IGasStack; -//import modtweaker2.utils.BaseMapAddition; -//import modtweaker2.utils.BaseMapRemoval; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.chemical.Infuser") -//public class ChemicalInfuser { -// -// @ZenMethod -// public static void addRecipe(IGasStack output, IGasStack inputLeft, IGasStack inputRight) { -// MineTweakerAPI.apply(new Add(new InfuserRecipe(MekanismHelper.toGas(output), MekanismHelper.toGas(inputLeft), MekanismHelper.toGas(inputRight)))); -// } -// -// private static class Add extends BaseMapAddition { -// -// public InfuserRecipe recipe; -// -// public Add(InfuserRecipe recipe) { -// super("Chemical Infuser", Recipe.CHEMICAL_INFUSER.get(), new ChemicalPairInput(recipe.inputLeft, recipe.inputRight), new GasOutput(recipe.output)); -// this.recipe = recipe; -// } -// -// @Override -// public void apply() { -// RecipeHandler.addChemicalInfuserRecipe(recipe.inputLeft, recipe.inputRight, recipe.output); -// -// } -// } -// -// private static class InfuserRecipe { -// public GasStack output; -// public GasStack inputLeft; -// public GasStack inputRight; -// -// public InfuserRecipe(GasStack output, GasStack inputLeft, GasStack inputRight) { -// this.output = output; -// this.inputLeft = inputLeft; -// this.inputRight = inputRight; -// } -// -// } -// -// @ZenMethod -// public static void removeRecipe(IGasStack output) { -// MineTweakerAPI.apply(new Remove(MekanismHelper.toGas(output))); -// } -// -// private static class Remove extends BaseMapRemoval { -// -// public Remove(GasStack stack) { -// super("Chemical Infuser", Recipe.CHEMICAL_INFUSER.get(), stack); -// } -// -// @SuppressWarnings("unchecked") -// @Override -// public void apply() { -// List toRemove = new ArrayList(); -// for (ChemicalPairInput stack : (Set) Recipe.CHEMICAL_INFUSER.get().keySet()) { -// ChemicalInfuserRecipe recipe = (ChemicalInfuserRecipe) Recipe.CHEMICAL_INFUSER.get().get(stack); -// if (recipe.getOutput().output.isGasEqual((GasStack)this.stack)) { -// toRemove.add(stack); -// } -// } -// for (ChemicalPairInput stack : toRemove) { -// Recipe.CHEMICAL_INFUSER.get().remove(stack); -// } -// } -// -// } -//} +package modtweaker2.mods.mekanism.handlers.v8; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import mekanism.api.gas.GasStack; +import mekanism.common.recipe.RecipeHandler; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.ChemicalPairInput; +import mekanism.common.recipe.machines.ChemicalInfuserRecipe; +import mekanism.common.recipe.outputs.GasOutput; +import minetweaker.MineTweakerAPI; +import modtweaker2.mods.mekanism.MekanismHelper; +import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.utils.BaseMapAddition; +import modtweaker2.utils.BaseMapRemoval; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.chemical.Infuser") +public class ChemicalInfuser { + + @ZenMethod + public static void addRecipe(IGasStack output, IGasStack inputLeft, IGasStack inputRight) { + MineTweakerAPI.apply(new Add(new InfuserRecipe(MekanismHelper.toGas(output), MekanismHelper.toGas(inputLeft), MekanismHelper.toGas(inputRight)))); + } + + private static class Add extends BaseMapAddition { + + public InfuserRecipe recipe; + + public Add(InfuserRecipe recipe) { + super("Chemical Infuser", Recipe.CHEMICAL_INFUSER.get(), new ChemicalPairInput(recipe.inputLeft, recipe.inputRight), new GasOutput(recipe.output)); + this.recipe = recipe; + } + + @Override + public void apply() { + RecipeHandler.addChemicalInfuserRecipe(recipe.inputLeft, recipe.inputRight, recipe.output); + + } + } + + private static class InfuserRecipe { + public GasStack output; + public GasStack inputLeft; + public GasStack inputRight; + + public InfuserRecipe(GasStack output, GasStack inputLeft, GasStack inputRight) { + this.output = output; + this.inputLeft = inputLeft; + this.inputRight = inputRight; + } + + } + + @ZenMethod + public static void removeRecipe(IGasStack output) { + MineTweakerAPI.apply(new Remove(MekanismHelper.toGas(output))); + } + + private static class Remove extends BaseMapRemoval { + + public Remove(GasStack stack) { + super("Chemical Infuser", Recipe.CHEMICAL_INFUSER.get(), stack); + } + + @SuppressWarnings("unchecked") + @Override + public void apply() { + List toRemove = new ArrayList(); + for (ChemicalPairInput stack : (Set) Recipe.CHEMICAL_INFUSER.get().keySet()) { + ChemicalInfuserRecipe recipe = (ChemicalInfuserRecipe) Recipe.CHEMICAL_INFUSER.get().get(stack); + if (recipe.getOutput().output.isGasEqual((GasStack)this.stack)) { + toRemove.add(stack); + } + } + for (ChemicalPairInput stack : toRemove) { + Recipe.CHEMICAL_INFUSER.get().remove(stack); + } + } + + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInjection.java b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInjection.java index 29270df..1a6eab0 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInjection.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInjection.java @@ -1,86 +1,86 @@ -//package modtweaker2.mods.mekanism.handlers.v8; -// -//import java.util.ArrayList; -//import java.util.List; -//import java.util.Set; -// -//import mekanism.api.gas.GasStack; -//import mekanism.common.recipe.RecipeHandler; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.inputs.AdvancedMachineInput; -//import mekanism.common.recipe.outputs.ItemStackOutput; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import modtweaker2.helpers.InputHelper; -//import modtweaker2.mods.mekanism.MekanismHelper; -//import modtweaker2.mods.mekanism.gas.IGasStack; -//import modtweaker2.utils.BaseMapAddition; -//import modtweaker2.utils.BaseMapRemoval; -//import net.minecraft.item.ItemStack; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.chemical.Injection") -//public class ChemicalInjection { -// -// @ZenMethod -// public static void addRecipe(IItemStack output, IItemStack input, IGasStack gas) { -// MineTweakerAPI.apply(new Add(new InjectionRecipe(InputHelper.toStack(output), InputHelper.toStack(input), MekanismHelper.toGas(gas)))); -// } -// -// private static class Add extends BaseMapAddition { -// -// public InjectionRecipe recipe; -// -// public Add(InjectionRecipe recipe) { -// super("Chemical Injection", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), recipe.input, recipe.output); -// this.recipe = recipe; -// } -// -// @Override -// public void apply() { -// RecipeHandler.addChemicalInjectionChamberRecipe(recipe.input, recipe.gas.getGas().getLocalizedName(), recipe.output); -// } -// } -// -// private static class InjectionRecipe { -// public ItemStack output; -// public ItemStack input; -// public GasStack gas; -// -// public InjectionRecipe(ItemStack output, ItemStack input, GasStack gas) { -// this.output = output; -// this.input = input; -// this.gas = gas; -// } -// -// } -// -// @ZenMethod -// public static void removeRecipe(IItemStack output) { -// MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); -// } -// -// private static class Remove extends BaseMapRemoval { -// -// public Remove(ItemStack output) { -// super("Chemical Injection", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), output); -// } -// -// @SuppressWarnings("unchecked") -// @Override -// public void apply() { -// List toRemove = new ArrayList(); -// for (AdvancedMachineInput stack : (Set) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().keySet()) { -// ItemStackOutput recipe = (ItemStackOutput) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().get(stack); -// if (recipe.output.isItemEqual((ItemStack)this.stack)) { -// toRemove.add(stack); -// } -// } -// for (AdvancedMachineInput stack : toRemove) { -// Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().remove(stack); -// } -// } -// -// } -//} +package modtweaker2.mods.mekanism.handlers.v8; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import mekanism.api.gas.GasStack; +import mekanism.common.recipe.RecipeHandler; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.AdvancedMachineInput; +import mekanism.common.recipe.outputs.ItemStackOutput; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.mods.mekanism.MekanismHelper; +import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.utils.BaseMapAddition; +import modtweaker2.utils.BaseMapRemoval; +import net.minecraft.item.ItemStack; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.chemical.Injection") +public class ChemicalInjection { + + @ZenMethod + public static void addRecipe(IItemStack output, IItemStack input, IGasStack gas) { + MineTweakerAPI.apply(new Add(new InjectionRecipe(InputHelper.toStack(output), InputHelper.toStack(input), MekanismHelper.toGas(gas)))); + } + + private static class Add extends BaseMapAddition { + + public InjectionRecipe recipe; + + public Add(InjectionRecipe recipe) { + super("Chemical Injection", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), recipe.input, recipe.output); + this.recipe = recipe; + } + + @Override + public void apply() { + RecipeHandler.addChemicalInjectionChamberRecipe(recipe.input, recipe.gas.getGas().getLocalizedName(), recipe.output); + } + } + + private static class InjectionRecipe { + public ItemStack output; + public ItemStack input; + public GasStack gas; + + public InjectionRecipe(ItemStack output, ItemStack input, GasStack gas) { + this.output = output; + this.input = input; + this.gas = gas; + } + + } + + @ZenMethod + public static void removeRecipe(IItemStack output) { + MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); + } + + private static class Remove extends BaseMapRemoval { + + public Remove(ItemStack output) { + super("Chemical Injection", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), output); + } + + @SuppressWarnings("unchecked") + @Override + public void apply() { + List toRemove = new ArrayList(); + for (AdvancedMachineInput stack : (Set) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().keySet()) { + ItemStackOutput recipe = (ItemStackOutput) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().get(stack); + if (recipe.output.isItemEqual((ItemStack)this.stack)) { + toRemove.add(stack); + } + } + for (AdvancedMachineInput stack : toRemove) { + Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().remove(stack); + } + } + + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/Infuser.java b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/Infuser.java index 506b509..00dfaec 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/Infuser.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/Infuser.java @@ -1,90 +1,90 @@ -//package modtweaker2.mods.mekanism.handlers.v8; -// -//import java.util.ArrayList; -//import java.util.List; -//import java.util.Set; -// -//import mekanism.api.infuse.InfuseRegistry; -//import mekanism.api.infuse.InfuseType; -//import mekanism.common.recipe.RecipeHandler; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.inputs.InfusionInput; -//import mekanism.common.recipe.machines.MetallurgicInfuserRecipe; -//import mekanism.common.recipe.outputs.ItemStackOutput; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import modtweaker2.helpers.InputHelper; -//import modtweaker2.utils.BaseMapAddition; -//import modtweaker2.utils.BaseMapRemoval; -//import net.minecraft.item.ItemStack; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.Infuser") -//public class Infuser { -// -// @ZenMethod -// public static void addRecipe(IItemStack output, IItemStack input, int amount, String infuseType) { -// InfuseType type = InfuseRegistry.get(infuseType); -// MineTweakerAPI.apply(new Add(new InfuserRecipe(InputHelper.toStack(output), InputHelper.toStack(input), amount, type))); -// } -// -// private static class Add extends BaseMapAddition { -// -// public InfuserRecipe recipe; -// -// public Add(InfuserRecipe recipe) { -// super("Metallurgic Infuser", Recipe.METALLURGIC_INFUSER.get(), new InfusionInput(recipe.type, recipe.amount, recipe.input), new ItemStackOutput(recipe.output)); -// this.recipe = recipe; -// } -// -// @Override -// public void apply() { -// RecipeHandler.addMetallurgicInfuserRecipe(recipe.type, recipe.amount, recipe.input, recipe.output); -// -// } -// } -// -// private static class InfuserRecipe { -// public ItemStack output; -// public ItemStack input; -// public int amount; -// public InfuseType type; -// -// public InfuserRecipe(ItemStack output, ItemStack input, int amount, InfuseType type) { -// this.output = output; -// this.input = input; -// this.amount = amount; -// this.type = type; -// } -// -// } -// -// @ZenMethod -// public static void removeRecipe(IItemStack output) { -// MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); -// } -// -// private static class Remove extends BaseMapRemoval { -// -// public Remove(ItemStack stack) { -// super("Metallurgic Infuser", Recipe.METALLURGIC_INFUSER.get(), stack); -// } -// -// @SuppressWarnings("unchecked") -// @Override -// public void apply() { -// List toRemove = new ArrayList(); -// for (InfusionInput stack : (Set) Recipe.METALLURGIC_INFUSER.get().keySet()) { -// MetallurgicInfuserRecipe recipe = (MetallurgicInfuserRecipe) Recipe.METALLURGIC_INFUSER.get().get(stack); -// if (recipe.getOutput().output.isItemEqual((ItemStack) this.stack)) { -// toRemove.add(stack); -// } -// } -// for (InfusionInput stack : toRemove) { -// Recipe.METALLURGIC_INFUSER.get().remove(stack); -// } -// } -// -// } -//} +package modtweaker2.mods.mekanism.handlers.v8; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import mekanism.api.infuse.InfuseRegistry; +import mekanism.api.infuse.InfuseType; +import mekanism.common.recipe.RecipeHandler; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.InfusionInput; +import mekanism.common.recipe.machines.MetallurgicInfuserRecipe; +import mekanism.common.recipe.outputs.ItemStackOutput; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.utils.BaseMapAddition; +import modtweaker2.utils.BaseMapRemoval; +import net.minecraft.item.ItemStack; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.Infuser") +public class Infuser { + + @ZenMethod + public static void addRecipe(IItemStack output, IItemStack input, int amount, String infuseType) { + InfuseType type = InfuseRegistry.get(infuseType); + MineTweakerAPI.apply(new Add(new InfuserRecipe(InputHelper.toStack(output), InputHelper.toStack(input), amount, type))); + } + + private static class Add extends BaseMapAddition { + + public InfuserRecipe recipe; + + public Add(InfuserRecipe recipe) { + super("Metallurgic Infuser", Recipe.METALLURGIC_INFUSER.get(), new InfusionInput(recipe.type, recipe.amount, recipe.input), new ItemStackOutput(recipe.output)); + this.recipe = recipe; + } + + @Override + public void apply() { + RecipeHandler.addMetallurgicInfuserRecipe(recipe.type, recipe.amount, recipe.input, recipe.output); + + } + } + + private static class InfuserRecipe { + public ItemStack output; + public ItemStack input; + public int amount; + public InfuseType type; + + public InfuserRecipe(ItemStack output, ItemStack input, int amount, InfuseType type) { + this.output = output; + this.input = input; + this.amount = amount; + this.type = type; + } + + } + + @ZenMethod + public static void removeRecipe(IItemStack output) { + MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); + } + + private static class Remove extends BaseMapRemoval { + + public Remove(ItemStack stack) { + super("Metallurgic Infuser", Recipe.METALLURGIC_INFUSER.get(), stack); + } + + @SuppressWarnings("unchecked") + @Override + public void apply() { + List toRemove = new ArrayList(); + for (InfusionInput stack : (Set) Recipe.METALLURGIC_INFUSER.get().keySet()) { + MetallurgicInfuserRecipe recipe = (MetallurgicInfuserRecipe) Recipe.METALLURGIC_INFUSER.get().get(stack); + if (recipe.getOutput().output.isItemEqual((ItemStack) this.stack)) { + toRemove.add(stack); + } + } + for (InfusionInput stack : toRemove) { + Recipe.METALLURGIC_INFUSER.get().remove(stack); + } + } + + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/util/AddMekanismRecipe.java b/src/main/java/modtweaker2/mods/mekanism/util/AddMekanismRecipe.java index 5a6db24..92d3ad8 100644 --- a/src/main/java/modtweaker2/mods/mekanism/util/AddMekanismRecipe.java +++ b/src/main/java/modtweaker2/mods/mekanism/util/AddMekanismRecipe.java @@ -1,67 +1,67 @@ -//package modtweaker2.mods.mekanism.util; -// -//import java.util.Map; -// -//import mekanism.api.gas.GasStack; -//import mekanism.common.recipe.inputs.ChemicalPairInput; -//import mekanism.common.recipe.inputs.InfusionInput; -//import mekanism.common.recipe.machines.PressurizedRecipe; -//import mekanism.common.recipe.outputs.ChanceOutput; -//import mekanism.common.recipe.outputs.ChemicalPairOutput; -//import mekanism.common.recipe.outputs.PressurizedOutput; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.utils.BaseMapAddition; -//import net.minecraft.item.ItemStack; -//import net.minecraftforge.fluids.FluidStack; -// -//public class AddMekanismRecipe extends BaseMapAddition { -// public AddMekanismRecipe(String str, Map map, Object key, Object recipe) { -// super(str.toLowerCase(), map, key, recipe); -// } -// -// @Override -// public String describe() { -// if (Mekanism.v7) { -// if (recipe instanceof ItemStack) -// return "Adding " + description + " Recipe for : " + ((ItemStack) recipe).getDisplayName(); -// else if (recipe instanceof FluidStack) -// return "Adding " + description + " Recipe for : " + ((FluidStack) recipe).getFluid().getLocalizedName(); -// else if (recipe instanceof ChemicalPairInput) -// return "Adding " + description + " Recipe for : " + ((ChemicalPairInput) recipe).leftGas.getGas().getLocalizedName(); -// else if (recipe instanceof ChanceOutput) -// return "Adding " + description + " Recipe for : " + ((ChanceOutput) recipe).primaryOutput.getDisplayName(); -// else if (recipe instanceof GasStack) -// return "Adding " + description + " Recipe for : " + ((GasStack) recipe).getGas().getLocalizedName(); -// else if (recipe instanceof PressurizedRecipe) -// return "Adding " + description + " Recipe for : " + ((PressurizedRecipe) recipe).getOutput().getItemOutput().getDisplayName(); -// else if (recipe instanceof InfusionInput) -// return "Adding " + description + " Recipe for : " + ((InfusionInput) recipe).inputStack.getDisplayName(); -// else -// return super.getRecipeInfo(); -// } -// return ""; -// } -// -// @Override -// public String describeUndo() { -// if (Mekanism.isV7()) { -// 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(); -// else if (recipe instanceof ChemicalPairOutput) -// return "Removing " + description + " Recipe for : " + ((ChemicalPairOutput) recipe).leftGas.getGas().getLocalizedName(); -// else if (recipe instanceof ChanceOutput) -// return "Removing " + description + " Recipe for : " + ((ChanceOutput) recipe).primaryOutput.getDisplayName(); -// else if (recipe instanceof GasStack) -// return "Removing " + description + " Recipe for : " + ((GasStack) recipe).getGas().getLocalizedName(); -// else if (recipe instanceof PressurizedOutput) -// return "Removing " + description + " Recipe for : " + ((PressurizedOutput) recipe).getItemOutput().getDisplayName(); -// else if (recipe instanceof InfusionInput) -// return "Removing " + description + " Recipe for : " + ((InfusionInput) recipe).inputStack.getDisplayName(); -// else -// return super.getRecipeInfo(); -// } -// return ""; -// } -//} +package modtweaker2.mods.mekanism.util; + +import java.util.Map; + +import mekanism.api.gas.GasStack; +import mekanism.common.recipe.inputs.ChemicalPairInput; +import mekanism.common.recipe.inputs.InfusionInput; +import mekanism.common.recipe.machines.PressurizedRecipe; +import mekanism.common.recipe.outputs.ChanceOutput; +import mekanism.common.recipe.outputs.ChemicalPairOutput; +import mekanism.common.recipe.outputs.PressurizedOutput; +import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.utils.BaseMapAddition; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; + +public class AddMekanismRecipe extends BaseMapAddition { + public AddMekanismRecipe(String str, Map map, Object key, Object recipe) { + super(str.toLowerCase(), map, key, recipe); + } + + @Override + public String describe() { + if (Mekanism.v7) { + if (recipe instanceof ItemStack) + return "Adding " + description + " Recipe for : " + ((ItemStack) recipe).getDisplayName(); + else if (recipe instanceof FluidStack) + return "Adding " + description + " Recipe for : " + ((FluidStack) recipe).getFluid().getLocalizedName(); + else if (recipe instanceof ChemicalPairInput) + return "Adding " + description + " Recipe for : " + ((ChemicalPairInput) recipe).leftGas.getGas().getLocalizedName(); + else if (recipe instanceof ChanceOutput) + return "Adding " + description + " Recipe for : " + ((ChanceOutput) recipe).primaryOutput.getDisplayName(); + else if (recipe instanceof GasStack) + return "Adding " + description + " Recipe for : " + ((GasStack) recipe).getGas().getLocalizedName(); + else if (recipe instanceof PressurizedRecipe) + return "Adding " + description + " Recipe for : " + ((PressurizedRecipe) recipe).getOutput().getItemOutput().getDisplayName(); + else if (recipe instanceof InfusionInput) + return "Adding " + description + " Recipe for : " + ((InfusionInput) recipe).inputStack.getDisplayName(); + else + return super.getRecipeInfo(); + } + return ""; + } + + @Override + public String describeUndo() { + if (Mekanism.isV7()) { + 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(); + else if (recipe instanceof ChemicalPairOutput) + return "Removing " + description + " Recipe for : " + ((ChemicalPairOutput) recipe).leftGas.getGas().getLocalizedName(); + else if (recipe instanceof ChanceOutput) + return "Removing " + description + " Recipe for : " + ((ChanceOutput) recipe).primaryOutput.getDisplayName(); + else if (recipe instanceof GasStack) + return "Removing " + description + " Recipe for : " + ((GasStack) recipe).getGas().getLocalizedName(); + else if (recipe instanceof PressurizedOutput) + return "Removing " + description + " Recipe for : " + ((PressurizedOutput) recipe).getItemOutput().getDisplayName(); + else if (recipe instanceof InfusionInput) + return "Removing " + description + " Recipe for : " + ((InfusionInput) recipe).inputStack.getDisplayName(); + else + return super.getRecipeInfo(); + } + return ""; + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/util/RemoveMekanismRecipe.java b/src/main/java/modtweaker2/mods/mekanism/util/RemoveMekanismRecipe.java index 9e412c7..7b83eb3 100644 --- a/src/main/java/modtweaker2/mods/mekanism/util/RemoveMekanismRecipe.java +++ b/src/main/java/modtweaker2/mods/mekanism/util/RemoveMekanismRecipe.java @@ -1,150 +1,150 @@ -//package modtweaker2.mods.mekanism.util; -// -//import static modtweaker2.helpers.StackHelper.areEqual; -// -//import java.util.Iterator; -//import java.util.Map; -// -//import mekanism.api.gas.GasStack; -//import mekanism.common.recipe.inputs.InfusionInput; -//import mekanism.common.recipe.inputs.PressurizedInput; -//import mekanism.common.recipe.machines.PressurizedRecipe; -//import mekanism.common.recipe.outputs.ChanceOutput; -//import mekanism.common.recipe.outputs.ChemicalPairOutput; -//import mekanism.common.recipe.outputs.PressurizedOutput; -//import modtweaker2.utils.BaseMapRemoval; -//import net.minecraft.item.ItemStack; -//import net.minecraftforge.fluids.FluidStack; -// -//public class RemoveMekanismRecipe extends BaseMapRemoval { -// private Object tmp; -// -// public RemoveMekanismRecipe(String string, Map map, Object key) { -// super(string.toLowerCase().replace('_', ' '), map, key, null); -// this.tmp = key; -// } -// -// @Override -// public void apply() { -// try { -// Iterator it = map.entrySet().iterator(); -// -// while (it.hasNext()) { -// Map.Entry pairs = (Map.Entry) it.next(); -// if (pairs != null) { -// Object value = pairs.getValue(); -// if (value != null && tmp != null) { -// if (tmp instanceof ItemStack && value instanceof ItemStack) { -// if (areEqual(((ItemStack) tmp), (ItemStack) value)) { -// key = pairs.getKey(); -// break; -// } -// } -// -// if (tmp instanceof FluidStack && value instanceof FluidStack) { -// if (((FluidStack) tmp).isFluidEqual((FluidStack) value)) { -// key = pairs.getKey(); -// break; -// } -// } -// -// if (tmp instanceof GasStack && value instanceof GasStack) { -// if (((GasStack) tmp).isGasEqual((GasStack) value)) { -// key = pairs.getKey(); -// break; -// } -// } -// -// if (tmp instanceof ItemStack && value instanceof InfusionInput) { -// if (areEqual(((ItemStack) tmp), ((InfusionInput) value).inputStack)) { -// key = pairs.getKey(); -// break; -// } -// } -// -// if (tmp instanceof ChemicalPairOutput && value instanceof ChemicalPairOutput) { -// ChemicalPairOutput par1 = (ChemicalPairOutput) tmp; -// ChemicalPairOutput par2 = (ChemicalPairOutput) value; -// if (par1.leftGas.isGasEqual(par2.leftGas) && par1.rightGas.isGasEqual(par2.rightGas)) { -// key = pairs.getKey(); -// break; -// } -// } -// -// if (tmp instanceof ChanceOutput && value instanceof ChanceOutput) { -// ChanceOutput par1 = (ChanceOutput) tmp; -// ChanceOutput par2 = (ChanceOutput) value; -// if (areEqual(par1.primaryOutput, par2.primaryOutput)) { -// if (par1.secondaryOutput == null || (par1.secondaryOutput != null && par2.secondaryOutput != null && areEqual(par1.secondaryOutput, par2.secondaryOutput))) { -// key = pairs.getKey(); -// break; -// } -// } -// } -// -// if (tmp instanceof PressurizedOutput && value instanceof PressurizedRecipe) { -// PressurizedOutput par1 = (PressurizedOutput) tmp; -// PressurizedOutput par2 = ((PressurizedRecipe) value).recipeOutput; -// if (areEqual(par1.getItemOutput(), (par2.getItemOutput()))) { -// if (par1.getGasOutput().isGasEqual(par2.getGasOutput())) { -// key = pairs.getKey(); -// break; -// -// } -// } -// } -// } -// -// it.remove(); -// } -// } -// -// recipe = map.get(key); -// -// } catch (Exception e) { -// e.printStackTrace(); -// } -// -// map.remove(key); -// } -// -// @Override -// public String describe() { -// if (tmp instanceof ItemStack) -// return "Removing " + description + " Recipe for : " + ((ItemStack) tmp).getDisplayName(); -// else if (tmp instanceof FluidStack) -// return "Removing " + description + " Recipe for : " + ((FluidStack) tmp).getFluid().getLocalizedName(); -// else if (tmp instanceof ChemicalPairOutput) -// return "Removing " + description + " Recipe for : " + ((ChemicalPairOutput) tmp).leftGas.getGas().getLocalizedName(); -// else if (tmp instanceof ChanceOutput) -// return "Removing " + description + " Recipe for : " + ((ChanceOutput) tmp).primaryOutput.getDisplayName(); -// else if (tmp instanceof GasStack) -// return "Removing " + description + " Recipe for : " + ((GasStack) tmp).getGas().getLocalizedName(); -// else if (tmp instanceof PressurizedInput) -// return "Removing " + description + " Recipe for : " + ((PressurizedInput) tmp).getSolid().getDisplayName(); -// else if (tmp instanceof InfusionInput) -// return "Removing " + description + " Recipe for : " + ((InfusionInput) tmp).inputStack.getDisplayName(); -// else -// return super.getRecipeInfo(); -// } -// -// @Override -// public String describeUndo() { -// if (tmp instanceof ItemStack) -// return "Restoring " + description + " Recipe for : " + ((ItemStack) tmp).getDisplayName(); -// else if (tmp instanceof FluidStack) -// return "Restoring " + description + " Recipe for : " + ((FluidStack) tmp).getFluid().getLocalizedName(); -// else if (tmp instanceof ChemicalPairOutput) -// return "Restoring " + description + " Recipe for : " + ((ChemicalPairOutput) tmp).leftGas.getGas().getLocalizedName(); -// else if (tmp instanceof ChanceOutput) -// return "Restoring " + description + " Recipe for : " + ((ChanceOutput) tmp).primaryOutput.getDisplayName(); -// else if (tmp instanceof GasStack) -// return "Restoring " + description + " Recipe for : " + ((GasStack) tmp).getGas().getLocalizedName(); -// else if (tmp instanceof PressurizedInput) -// return "Restoring " + description + " Recipe for : " + ((PressurizedInput) tmp).getSolid().getDisplayName(); -// else if (tmp instanceof InfusionInput) -// return "Restoring " + description + " Recipe for : " + ((InfusionInput) tmp).inputStack.getDisplayName(); -// else -// return super.getRecipeInfo(); -// } -//} +package modtweaker2.mods.mekanism.util; + +import static modtweaker2.helpers.StackHelper.areEqual; + +import java.util.Iterator; +import java.util.Map; + +import mekanism.api.gas.GasStack; +import mekanism.common.recipe.inputs.InfusionInput; +import mekanism.common.recipe.inputs.PressurizedInput; +import mekanism.common.recipe.machines.PressurizedRecipe; +import mekanism.common.recipe.outputs.ChanceOutput; +import mekanism.common.recipe.outputs.ChemicalPairOutput; +import mekanism.common.recipe.outputs.PressurizedOutput; +import modtweaker2.utils.BaseMapRemoval; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; + +public class RemoveMekanismRecipe extends BaseMapRemoval { + private Object tmp; + + public RemoveMekanismRecipe(String string, Map map, Object key) { + super(string.toLowerCase().replace('_', ' '), map, key, null); + this.tmp = key; + } + + @Override + public void apply() { + try { + Iterator it = map.entrySet().iterator(); + + while (it.hasNext()) { + Map.Entry pairs = (Map.Entry) it.next(); + if (pairs != null) { + Object value = pairs.getValue(); + if (value != null && tmp != null) { + if (tmp instanceof ItemStack && value instanceof ItemStack) { + if (areEqual(((ItemStack) tmp), (ItemStack) value)) { + key = pairs.getKey(); + break; + } + } + + if (tmp instanceof FluidStack && value instanceof FluidStack) { + if (((FluidStack) tmp).isFluidEqual((FluidStack) value)) { + key = pairs.getKey(); + break; + } + } + + if (tmp instanceof GasStack && value instanceof GasStack) { + if (((GasStack) tmp).isGasEqual((GasStack) value)) { + key = pairs.getKey(); + break; + } + } + + if (tmp instanceof ItemStack && value instanceof InfusionInput) { + if (areEqual(((ItemStack) tmp), ((InfusionInput) value).inputStack)) { + key = pairs.getKey(); + break; + } + } + + if (tmp instanceof ChemicalPairOutput && value instanceof ChemicalPairOutput) { + ChemicalPairOutput par1 = (ChemicalPairOutput) tmp; + ChemicalPairOutput par2 = (ChemicalPairOutput) value; + if (par1.leftGas.isGasEqual(par2.leftGas) && par1.rightGas.isGasEqual(par2.rightGas)) { + key = pairs.getKey(); + break; + } + } + + if (tmp instanceof ChanceOutput && value instanceof ChanceOutput) { + ChanceOutput par1 = (ChanceOutput) tmp; + ChanceOutput par2 = (ChanceOutput) value; + if (areEqual(par1.primaryOutput, par2.primaryOutput)) { + if (par1.secondaryOutput == null || (par1.secondaryOutput != null && par2.secondaryOutput != null && areEqual(par1.secondaryOutput, par2.secondaryOutput))) { + key = pairs.getKey(); + break; + } + } + } + + if (tmp instanceof PressurizedOutput && value instanceof PressurizedRecipe) { + PressurizedOutput par1 = (PressurizedOutput) tmp; + PressurizedOutput par2 = ((PressurizedRecipe) value).recipeOutput; + if (areEqual(par1.getItemOutput(), (par2.getItemOutput()))) { + if (par1.getGasOutput().isGasEqual(par2.getGasOutput())) { + key = pairs.getKey(); + break; + + } + } + } + } + + it.remove(); + } + } + + recipe = map.get(key); + + } catch (Exception e) { + e.printStackTrace(); + } + + map.remove(key); + } + + @Override + public String describe() { + if (tmp instanceof ItemStack) + return "Removing " + description + " Recipe for : " + ((ItemStack) tmp).getDisplayName(); + else if (tmp instanceof FluidStack) + return "Removing " + description + " Recipe for : " + ((FluidStack) tmp).getFluid().getLocalizedName(); + else if (tmp instanceof ChemicalPairOutput) + return "Removing " + description + " Recipe for : " + ((ChemicalPairOutput) tmp).leftGas.getGas().getLocalizedName(); + else if (tmp instanceof ChanceOutput) + return "Removing " + description + " Recipe for : " + ((ChanceOutput) tmp).primaryOutput.getDisplayName(); + else if (tmp instanceof GasStack) + return "Removing " + description + " Recipe for : " + ((GasStack) tmp).getGas().getLocalizedName(); + else if (tmp instanceof PressurizedInput) + return "Removing " + description + " Recipe for : " + ((PressurizedInput) tmp).getSolid().getDisplayName(); + else if (tmp instanceof InfusionInput) + return "Removing " + description + " Recipe for : " + ((InfusionInput) tmp).inputStack.getDisplayName(); + else + return super.getRecipeInfo(); + } + + @Override + public String describeUndo() { + if (tmp instanceof ItemStack) + return "Restoring " + description + " Recipe for : " + ((ItemStack) tmp).getDisplayName(); + else if (tmp instanceof FluidStack) + return "Restoring " + description + " Recipe for : " + ((FluidStack) tmp).getFluid().getLocalizedName(); + else if (tmp instanceof ChemicalPairOutput) + return "Restoring " + description + " Recipe for : " + ((ChemicalPairOutput) tmp).leftGas.getGas().getLocalizedName(); + else if (tmp instanceof ChanceOutput) + return "Restoring " + description + " Recipe for : " + ((ChanceOutput) tmp).primaryOutput.getDisplayName(); + else if (tmp instanceof GasStack) + return "Restoring " + description + " Recipe for : " + ((GasStack) tmp).getGas().getLocalizedName(); + else if (tmp instanceof PressurizedInput) + return "Restoring " + description + " Recipe for : " + ((PressurizedInput) tmp).getSolid().getDisplayName(); + else if (tmp instanceof InfusionInput) + return "Restoring " + description + " Recipe for : " + ((InfusionInput) tmp).inputStack.getDisplayName(); + else + return super.getRecipeInfo(); + } +} From 3d71e17b66fe24dd22456aa35236248a27151e43 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Mon, 13 Jul 2015 17:34:06 +0200 Subject: [PATCH 28/31] Mekanism v8 support --- ....225.jar => Mekanism-1.7.10-8.1.5.246.jar} | Bin 13934180 -> 13945270 bytes src/main/java/modtweaker2/Commands.java | 4 +- src/main/java/modtweaker2/ModTweaker2.java | 3 +- .../java/modtweaker2/helpers/LogHelper.java | 99 +++++---- .../java/modtweaker2/helpers/StackHelper.java | 21 ++ .../modtweaker2/mods/mekanism/Mekanism.java | 37 +--- .../mekanism/{gas => commands}/GasLogger.java | 4 +- .../mekanism/commands/MekanismLogger.java | 209 ++++++++++++++++++ .../mods/mekanism/gas/IGasStack.java | 3 +- .../mods/mekanism/gas/MCGasStack.java | 92 ++++++++ .../handlers/ChemicalCrystallizer.java | 68 +++++- .../handlers/ChemicalDissolution.java | 108 ++++----- .../mekanism/handlers/ChemicalInfuser.java | 82 +++++-- .../mekanism/handlers/ChemicalInjection.java | 80 +++++-- .../mekanism/handlers/ChemicalOxidizer.java | 72 ++++-- .../mekanism/handlers/ChemicalWasher.java | 90 ++++---- .../mods/mekanism/handlers/Combiner.java | 97 ++++++-- .../mods/mekanism/handlers/Compressor.java | 98 ++++++-- .../mods/mekanism/handlers/Crusher.java | 67 +++++- .../mods/mekanism/handlers/Enrichment.java | 74 +++++-- .../mods/mekanism/handlers/Infuser.java | 171 +++++++------- .../mods/mekanism/handlers/Purification.java | 111 +++++++--- .../mods/mekanism/handlers/Reaction.java | 83 +++++-- .../mods/mekanism/handlers/Sawmill.java | 95 +++++--- .../mods/mekanism/handlers/Separator.java | 101 +++++---- .../handlers/v8/ChemicalCrystallizer.java | 85 ------- .../handlers/v8/ChemicalDissolution.java | 84 ------- .../mekanism/handlers/v8/ChemicalInfuser.java | 85 ------- .../handlers/v8/ChemicalInjection.java | 86 ------- .../mods/mekanism/handlers/v8/Infuser.java | 90 -------- .../mods/mekanism/util/AddMekanismRecipe.java | 88 +++----- .../mekanism/util/RemoveMekanismRecipe.java | 171 +++----------- .../modtweaker2/utils/BaseMapAddition.java | 4 +- 33 files changed, 1429 insertions(+), 1133 deletions(-) rename libs/{Mekanism-1.7.10-8.1.1.225.jar => Mekanism-1.7.10-8.1.5.246.jar} (93%) rename src/main/java/modtweaker2/mods/mekanism/{gas => commands}/GasLogger.java (89%) create mode 100644 src/main/java/modtweaker2/mods/mekanism/commands/MekanismLogger.java delete mode 100644 src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalCrystallizer.java delete mode 100644 src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalDissolution.java delete mode 100644 src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInfuser.java delete mode 100644 src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInjection.java delete mode 100644 src/main/java/modtweaker2/mods/mekanism/handlers/v8/Infuser.java diff --git a/libs/Mekanism-1.7.10-8.1.1.225.jar b/libs/Mekanism-1.7.10-8.1.5.246.jar similarity index 93% rename from libs/Mekanism-1.7.10-8.1.1.225.jar rename to libs/Mekanism-1.7.10-8.1.5.246.jar index 04b423fe5db2d6fcea4dc83fac0e97068ec8e819..850c63fd01efcd56781ec51ed777e86fb7157f8f 100644 GIT binary patch delta 885986 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 bm5tfZ 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

}kqK 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ᗨ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 delta 875088 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ⅆF3SNPb&a3cmRT==L^o08YWwuEKMTFK|Gzs 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 z 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
O@0q6rvXH>X6MLf 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
0p*cU6<=y)b4A&Val2Q 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

3Dz|c}>PcCv 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 or - sb.append('<'); - sb.append(Item.itemRegistry.getNameForObject(stack.getItem())); - if(stack.getItemDamage() == 32767) { - sb.append(":*"); - } else if (stack.getItemDamage() > 0) { - sb.append(":").append(stack.getItemDamage()); - } - sb.append('>'); - - // Do we have a tag? (e.g. .withTag({}) ) - if(stack.getTagCompound() != null) - { - sb.append(".withTag("); - sb.append(NBTConverter.from(stack.getTagCompound(), true)); - sb.append(')'); - } - - // Do we have a stack size > 1? - if(stack.stackSize > 1) { - sb.append(" * ").append(stack.stackSize); - } - - return sb.toString(); + return getStackDescription((ItemStack)object); } else if (object instanceof FluidStack) { - FluidStack stack = (FluidStack)object; - StringBuilder sb = new StringBuilder(); - - sb.append("'); - - if(stack.amount > 1) { - sb.append(" * ").append(stack.amount); - } - - return sb.toString(); + return getStackDescription((FluidStack)object); + } else if (object instanceof GasStack) { + return getStackDescription((GasStack)object); } else if (object instanceof String) { - List ores = OreDictionary.getOres((String)object); - // Check if string specifies an oredict entry + List ores = OreDictionary.getOres((String)object); + if(!ores.isEmpty()) { return ""; } else { @@ -110,6 +78,59 @@ public class LogHelper { } } + public static String getStackDescription(ItemStack stack) { + StringBuilder sb = new StringBuilder(); + + // Creates a name like or + sb.append('<'); + sb.append(Item.itemRegistry.getNameForObject(stack.getItem())); + if(stack.getItemDamage() == 32767) { + sb.append(":*"); + } else if (stack.getItemDamage() > 0) { + sb.append(":").append(stack.getItemDamage()); + } + sb.append('>'); + + // Do we have a tag? (e.g. .withTag({}) ) + if(stack.getTagCompound() != null) + { + sb.append(".withTag("); + sb.append(NBTConverter.from(stack.getTagCompound(), true)); + sb.append(')'); + } + + // Do we have a stack size > 1? + if(stack.stackSize > 1) { + sb.append(" * ").append(stack.stackSize); + } + + return sb.toString(); + } + + public static String getStackDescription(FluidStack stack) { + StringBuilder sb = new StringBuilder(); + + sb.append("'); + + if(stack.amount > 1) { + sb.append(" * ").append(stack.amount); + } + + return sb.toString(); + } + + public static String getStackDescription(GasStack stack) { + StringBuilder sb = new StringBuilder(); + + sb.append("'); + + if(stack.amount > 1) { + sb.append(" * ").append(stack.amount); + } + + return sb.toString(); + } + public static String getListDescription(List objects) { StringBuilder sb = new StringBuilder(); diff --git a/src/main/java/modtweaker2/helpers/StackHelper.java b/src/main/java/modtweaker2/helpers/StackHelper.java index b4bca6e..6b98700 100644 --- a/src/main/java/modtweaker2/helpers/StackHelper.java +++ b/src/main/java/modtweaker2/helpers/StackHelper.java @@ -1,10 +1,14 @@ package modtweaker2.helpers; import static modtweaker2.helpers.InputHelper.toStack; +import mekanism.api.gas.GasStack; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; +import minetweaker.api.item.IngredientAny; import minetweaker.api.liquid.ILiquidStack; import modtweaker2.mods.botania.Botania; +import modtweaker2.mods.mekanism.MekanismHelper; +import modtweaker2.mods.mekanism.gas.IGasStack; import modtweaker2.utils.TweakerPlugin; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; @@ -105,4 +109,21 @@ public class StackHelper { return false; } + + public static boolean matches(IIngredient ingredient, IGasStack gasStack) { + if(ingredient == null) { + return false; + } + + if(ingredient == IngredientAny.INSTANCE) { + return true; + } + + if(ingredient instanceof IGasStack) { + return MekanismHelper.toGas((IGasStack)ingredient).isGasEqual(MekanismHelper.toGas(gasStack)); + } + + return false; + } + } diff --git a/src/main/java/modtweaker2/mods/mekanism/Mekanism.java b/src/main/java/modtweaker2/mods/mekanism/Mekanism.java index eb88dcd..c06eff9 100644 --- a/src/main/java/modtweaker2/mods/mekanism/Mekanism.java +++ b/src/main/java/modtweaker2/mods/mekanism/Mekanism.java @@ -1,32 +1,33 @@ package modtweaker2.mods.mekanism; -import java.util.regex.Pattern; - import minetweaker.MineTweakerAPI; import modtweaker2.mods.mekanism.gas.GasBracketHandler; -import modtweaker2.mods.mekanism.handlers.v8.ChemicalInfuser; -import modtweaker2.mods.mekanism.handlers.v8.ChemicalInjection; +import modtweaker2.mods.mekanism.handlers.ChemicalCrystallizer; +import modtweaker2.mods.mekanism.handlers.ChemicalDissolution; +import modtweaker2.mods.mekanism.handlers.ChemicalInfuser; +import modtweaker2.mods.mekanism.handlers.ChemicalInjection; import modtweaker2.mods.mekanism.handlers.ChemicalOxidizer; import modtweaker2.mods.mekanism.handlers.ChemicalWasher; import modtweaker2.mods.mekanism.handlers.Combiner; import modtweaker2.mods.mekanism.handlers.Compressor; import modtweaker2.mods.mekanism.handlers.Crusher; import modtweaker2.mods.mekanism.handlers.Enrichment; +import modtweaker2.mods.mekanism.handlers.Infuser; import modtweaker2.mods.mekanism.handlers.Purification; import modtweaker2.mods.mekanism.handlers.Reaction; import modtweaker2.mods.mekanism.handlers.Sawmill; import modtweaker2.mods.mekanism.handlers.Separator; -import modtweaker2.mods.mekanism.handlers.v8.ChemicalCrystallizer; -import modtweaker2.mods.mekanism.handlers.v8.ChemicalDissolution; -import modtweaker2.mods.mekanism.handlers.v8.Infuser; import modtweaker2.utils.TweakerPlugin; -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.ModContainer; public class Mekanism extends TweakerPlugin { - public static final boolean v7 = isV7(); public Mekanism() { MineTweakerAPI.registerBracketHandler(new GasBracketHandler()); + MineTweakerAPI.registerClass(ChemicalCrystallizer.class); + MineTweakerAPI.registerClass(ChemicalDissolution.class); + MineTweakerAPI.registerClass(ChemicalInfuser.class); + MineTweakerAPI.registerClass(ChemicalInjection.class); + MineTweakerAPI.registerClass(ChemicalOxidizer.class); + MineTweakerAPI.registerClass(ChemicalWasher.class); MineTweakerAPI.registerClass(Combiner.class); MineTweakerAPI.registerClass(Compressor.class); MineTweakerAPI.registerClass(Crusher.class); @@ -36,21 +37,5 @@ public class Mekanism extends TweakerPlugin { MineTweakerAPI.registerClass(Reaction.class); MineTweakerAPI.registerClass(Sawmill.class); MineTweakerAPI.registerClass(Separator.class); -// MineTweakerAPI.registerClass(ChemicalCrystallizer.class); - MineTweakerAPI.registerClass(ChemicalCrystallizer.class); - MineTweakerAPI.registerClass(ChemicalDissolution.class); - MineTweakerAPI.registerClass(ChemicalInfuser.class); - MineTweakerAPI.registerClass(ChemicalInjection.class); - MineTweakerAPI.registerClass(ChemicalOxidizer.class); - MineTweakerAPI.registerClass(ChemicalWasher.class); - } - - public static boolean isV7(){ - Pattern version = Pattern.compile("7.*"); - for (ModContainer loadedMod : Loader.instance().getActiveModList()) - { - if (loadedMod.getModId().equals("Mekanism") && version.matcher(loadedMod.getVersion()).find()) return true; - } - return false; } } diff --git a/src/main/java/modtweaker2/mods/mekanism/gas/GasLogger.java b/src/main/java/modtweaker2/mods/mekanism/commands/GasLogger.java similarity index 89% rename from src/main/java/modtweaker2/mods/mekanism/gas/GasLogger.java rename to src/main/java/modtweaker2/mods/mekanism/commands/GasLogger.java index 109f353..6d6e49a 100644 --- a/src/main/java/modtweaker2/mods/mekanism/gas/GasLogger.java +++ b/src/main/java/modtweaker2/mods/mekanism/commands/GasLogger.java @@ -1,4 +1,4 @@ -package modtweaker2.mods.mekanism.gas; +package modtweaker2.mods.mekanism.commands; import java.util.Collections; import java.util.Comparator; @@ -28,7 +28,7 @@ public class GasLogger implements ICommandFunction { Collections.sort(gases, COMPARATOR); for (Gas gas : gases) { System.out.println("Gas " + gas.getName()); - MineTweakerAPI.logCommand("<" + gas.getName() + "> -- " + gas.getLocalizedName()); + MineTweakerAPI.logCommand(" -- " + gas.getLocalizedName()); } if (player != null) { diff --git a/src/main/java/modtweaker2/mods/mekanism/commands/MekanismLogger.java b/src/main/java/modtweaker2/mods/mekanism/commands/MekanismLogger.java new file mode 100644 index 0000000..41c6e62 --- /dev/null +++ b/src/main/java/modtweaker2/mods/mekanism/commands/MekanismLogger.java @@ -0,0 +1,209 @@ +package modtweaker2.mods.mekanism.commands; + +import java.util.Arrays; +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; + +import mekanism.api.gas.GasStack; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.machines.ChemicalInfuserRecipe; +import mekanism.common.recipe.machines.CombinerRecipe; +import mekanism.common.recipe.machines.CrusherRecipe; +import mekanism.common.recipe.machines.CrystallizerRecipe; +import mekanism.common.recipe.machines.DissolutionRecipe; +import mekanism.common.recipe.machines.EnrichmentRecipe; +import mekanism.common.recipe.machines.InjectionRecipe; +import mekanism.common.recipe.machines.MetallurgicInfuserRecipe; +import mekanism.common.recipe.machines.OxidationRecipe; +import mekanism.common.recipe.machines.PressurizedRecipe; +import mekanism.common.recipe.machines.PurificationRecipe; +import mekanism.common.recipe.machines.SawmillRecipe; +import mekanism.common.recipe.machines.SeparatorRecipe; +import mekanism.common.recipe.machines.WasherRecipe; +import minetweaker.MineTweakerAPI; +import minetweaker.MineTweakerImplementationAPI; +import minetweaker.api.player.IPlayer; +import minetweaker.api.server.ICommandFunction; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StringHelper; + +public class MekanismLogger implements ICommandFunction { + + private static final List validArguments = new LinkedList(); + + static { + validArguments.add("combiner"); + validArguments.add("compressor"); + validArguments.add("crusher"); + validArguments.add("crystallizer"); + validArguments.add("dissolution"); + validArguments.add("enrichment"); + validArguments.add("infuser"); + validArguments.add("injection"); + validArguments.add("oxidizer"); + validArguments.add("purification"); + validArguments.add("reaction"); + validArguments.add("sawmill"); + validArguments.add("separator"); + validArguments.add("washer"); + } + + @SuppressWarnings({ "unchecked" }) + @Override + public void execute(String[] arguments, IPlayer player) { + List args = StringHelper.toLowerCase(Arrays.asList(arguments)); + + if(!validArguments.containsAll(args)) { + if(player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); + } + } else { + if(args.isEmpty() || args.contains("crystallizer")) { + for(CrystallizerRecipe recipe : (Collection)Recipe.CHEMICAL_CRYSTALLIZER.get().values()) { + MineTweakerAPI.logCommand(String.format("mods.mekanism.chemical.Crystallizer.addRecipe(%s, %s);", + LogHelper.getStackDescription(recipe.recipeInput.ingredient), + LogHelper.getStackDescription(recipe.recipeOutput.output))); + } + } + + if(args.isEmpty() || args.contains("dissolution")) { + for(DissolutionRecipe recipe : (Collection)Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().values()) { + MineTweakerAPI.logCommand(String.format("mods.mekanism.chemical.Dissolution.addRecipe(%s, %s);", + LogHelper.getStackDescription(recipe.recipeInput.ingredient), + LogHelper.getStackDescription(recipe.recipeOutput.output))); + } + } + + if(args.isEmpty() || args.contains("infuser")) { + for(ChemicalInfuserRecipe recipe : (Collection)Recipe.CHEMICAL_INFUSER.get().values()) { + MineTweakerAPI.logCommand(String.format("mods.mekanism.chemical.Infuser.addRecipe(%s, %s, %s);", + LogHelper.getStackDescription(recipe.recipeInput.leftGas), + LogHelper.getStackDescription(recipe.recipeInput.rightGas), + LogHelper.getStackDescription(recipe.recipeOutput.output))); + } + } + + if(args.isEmpty() || args.contains("injection")) { + for(InjectionRecipe recipe : (Collection)Recipe.CHEMICAL_INJECTION_CHAMBER.get().values()) { + MineTweakerAPI.logCommand(String.format("mods.mekanism.chemical.Injection.addRecipe(%s, %s, %s);", + LogHelper.getStackDescription(recipe.recipeInput.itemStack), + LogHelper.getStackDescription(new GasStack(recipe.recipeInput.gasType, 1)), + LogHelper.getStackDescription(recipe.recipeOutput.output))); + } + } + + if(args.isEmpty() || args.contains("oxidizer")) { + for(OxidationRecipe recipe : (Collection)Recipe.CHEMICAL_OXIDIZER.get().values()) { + MineTweakerAPI.logCommand(String.format("mods.mekanism.chemical.Oxidizer.addRecipe(%s, %s);", + LogHelper.getStackDescription(recipe.recipeInput.ingredient), + LogHelper.getStackDescription(recipe.recipeOutput.output))); + } + } + + if(args.isEmpty() || args.contains("washer")) { + for(WasherRecipe recipe : (Collection)Recipe.CHEMICAL_WASHER.get().values()) { + MineTweakerAPI.logCommand(String.format("mods.mekanism.chemical.Washer.addRecipe(%s, %s);", + LogHelper.getStackDescription(recipe.recipeInput.ingredient), + LogHelper.getStackDescription(recipe.recipeOutput.output))); + } + } + + if(args.isEmpty() || args.contains("combiner")) { + for(CombinerRecipe recipe : (Collection)Recipe.COMBINER.get().values()) { + MineTweakerAPI.logCommand(String.format("mods.mekanism.Combiner.addRecipe(%s, %s, %s);", + LogHelper.getStackDescription(recipe.recipeInput.itemStack), + LogHelper.getStackDescription(recipe.recipeOutput.output), + LogHelper.getStackDescription(new GasStack(recipe.recipeInput.gasType, 1)))); + } + } + + if(args.isEmpty() || args.contains("compressor")) { + for(CombinerRecipe recipe : (Collection)Recipe.COMBINER.get().values()) { + MineTweakerAPI.logCommand(String.format("mods.mekanism.Compressor.addRecipe(%s, %s, %s);", + LogHelper.getStackDescription(recipe.recipeInput.itemStack), + LogHelper.getStackDescription(new GasStack(recipe.recipeInput.gasType, 1)), + LogHelper.getStackDescription(recipe.recipeOutput.output))); + } + } + + if(args.isEmpty() || args.contains("crusher")) { + for(CrusherRecipe recipe : (Collection)Recipe.CRUSHER.get().values()) { + MineTweakerAPI.logCommand(String.format("mods.mekanism.Crusher.addRecipe(%s, %s);", + LogHelper.getStackDescription(recipe.recipeInput.ingredient), + LogHelper.getStackDescription(recipe.recipeOutput.output))); + } + } + + if(args.isEmpty() || args.contains("enrichment")) { + for(EnrichmentRecipe recipe : (Collection)Recipe.ENRICHMENT_CHAMBER.get().values()) { + MineTweakerAPI.logCommand(String.format("mods.mekanism.Enrichment.addRecipe(%s, %s);", + LogHelper.getStackDescription(recipe.recipeInput.ingredient), + LogHelper.getStackDescription(recipe.recipeOutput.output))); + } + } + + if(args.isEmpty() || args.contains("infuser")) { + for(MetallurgicInfuserRecipe recipe : (Collection)Recipe.METALLURGIC_INFUSER.get().values()) { + MineTweakerAPI.logCommand(String.format("mods.mekanism.Infuser.addRecipe(\"%s\", %d, %s, %s);", + recipe.getInput().infuse.type.name, + recipe.getInput().infuse.amount, + LogHelper.getStackDescription(recipe.recipeInput.inputStack), + LogHelper.getStackDescription(recipe.recipeOutput.output))); + } + } + + if(args.isEmpty() || args.contains("purification")) { + for(PurificationRecipe recipe : (Collection)Recipe.PURIFICATION_CHAMBER.get().values()) { + MineTweakerAPI.logCommand(String.format("mods.mekanism.Purification.addRecipe(%s, %s, %s);", + LogHelper.getStackDescription(recipe.recipeInput.itemStack), + LogHelper.getStackDescription(new GasStack(recipe.recipeInput.gasType, 1)), + LogHelper.getStackDescription(recipe.recipeOutput.output))); + } + } + + if(args.isEmpty() || args.contains("reaction")) { + for(PressurizedRecipe recipe : (Collection)Recipe.PRESSURIZED_REACTION_CHAMBER.get().values()) { + MineTweakerAPI.logCommand(String.format("mods.mekanism.Reaction.addRecipe(%s, %s, %s, %s, %s, %s, %d);", + LogHelper.getStackDescription(recipe.recipeInput.getSolid()), + LogHelper.getStackDescription(recipe.recipeInput.getFluid()), + LogHelper.getStackDescription(recipe.recipeInput.getGas()), + LogHelper.getStackDescription(recipe.recipeOutput.getItemOutput()), + LogHelper.getStackDescription(recipe.recipeOutput.getGasOutput()), + recipe.extraEnergy, + recipe.ticks)); + } + } + + if(args.isEmpty() || args.contains("sawmill")) { + for(SawmillRecipe recipe : (Collection)Recipe.PRECISION_SAWMILL.get().values()) { + if(recipe.getOutput().hasSecondary()) { + MineTweakerAPI.logCommand(String.format("mods.mekanism.Sawmill.addRecipe(%s, %s, %s, %s);", + LogHelper.getStackDescription(recipe.recipeInput.ingredient), + LogHelper.getStackDescription(recipe.recipeOutput.primaryOutput), + LogHelper.getStackDescription(recipe.recipeOutput.secondaryOutput), + recipe.recipeOutput.secondaryChance)); + } else { + MineTweakerAPI.logCommand(String.format("mods.mekanism.Sawmill.addRecipe(%s, %s);", + LogHelper.getStackDescription(recipe.recipeInput.ingredient), + LogHelper.getStackDescription(recipe.recipeOutput.primaryOutput))); + } + } + } + + if(args.isEmpty() || args.contains("separator")) { + for(SeparatorRecipe recipe : (Collection)Recipe.ELECTROLYTIC_SEPARATOR.get().values()) { + MineTweakerAPI.logCommand(String.format("mods.mekanism.Separator.addRecipe(%s, %s, %s, %s);", + LogHelper.getStackDescription(recipe.recipeInput.ingredient), + recipe.energyUsage, + LogHelper.getStackDescription(recipe.recipeOutput.leftGas), + LogHelper.getStackDescription(recipe.recipeOutput.rightGas))); + } + } + + if (player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("List generated; see minetweaker.log in your minecraft dir")); + } + } + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/gas/IGasStack.java b/src/main/java/modtweaker2/mods/mekanism/gas/IGasStack.java index 6865a3e..9e37d33 100644 --- a/src/main/java/modtweaker2/mods/mekanism/gas/IGasStack.java +++ b/src/main/java/modtweaker2/mods/mekanism/gas/IGasStack.java @@ -1,5 +1,6 @@ package modtweaker2.mods.mekanism.gas; +import minetweaker.api.item.IIngredient; import stanhebben.zenscript.annotations.OperatorType; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenGetter; @@ -7,7 +8,7 @@ import stanhebben.zenscript.annotations.ZenMethod; import stanhebben.zenscript.annotations.ZenOperator; @ZenClass("modtweaker.gas.IGasStack") -public interface IGasStack { +public interface IGasStack extends IIngredient { @ZenGetter("definition") public IGasDefinition getDefinition(); diff --git a/src/main/java/modtweaker2/mods/mekanism/gas/MCGasStack.java b/src/main/java/modtweaker2/mods/mekanism/gas/MCGasStack.java index c9d2c6e..20f43dd 100644 --- a/src/main/java/modtweaker2/mods/mekanism/gas/MCGasStack.java +++ b/src/main/java/modtweaker2/mods/mekanism/gas/MCGasStack.java @@ -1,6 +1,14 @@ package modtweaker2.mods.mekanism.gas; +import java.util.List; + import mekanism.api.gas.GasStack; +import minetweaker.api.item.IIngredient; +import minetweaker.api.item.IItemCondition; +import minetweaker.api.item.IItemStack; +import minetweaker.api.item.IItemTransformer; +import minetweaker.api.liquid.ILiquidStack; +import minetweaker.api.player.IPlayer; public class MCGasStack implements IGasStack { @@ -40,4 +48,88 @@ public class MCGasStack implements IGasStack { public Object getInternal() { return stack; } + + @Override + public String toString() { + return ""; + } + + @Override + public IIngredient amount(int amount) { + return withAmount(amount); + } + + @Override + public IItemStack applyTransform(IItemStack arg0, IPlayer arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean contains(IIngredient arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public List getItems() { + // TODO Auto-generated method stub + return null; + } + + @Override + public List getLiquids() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getMark() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean hasTransformers() { + // TODO Auto-generated method stub + return false; + } + + @Override + public IIngredient marked(String arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean matches(IItemStack arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean matches(ILiquidStack arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public IIngredient only(IItemCondition arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public IIngredient or(IIngredient arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public IIngredient transform(IItemTransformer arg0) { + // TODO Auto-generated method stub + return null; + } + + } \ No newline at end of file diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalCrystallizer.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalCrystallizer.java index edf0f0e..4579638 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalCrystallizer.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalCrystallizer.java @@ -2,33 +2,79 @@ package modtweaker2.mods.mekanism.handlers; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.mods.mekanism.MekanismHelper.toGas; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.GasInput; +import mekanism.common.recipe.inputs.MachineInput; import mekanism.common.recipe.machines.CrystallizerRecipe; +import mekanism.common.recipe.machines.MachineRecipe; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; +import minetweaker.api.item.IngredientAny; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.gas.MCGasStack; import modtweaker2.mods.mekanism.util.AddMekanismRecipe; import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mekanism.chemical.Crystallizer") public class ChemicalCrystallizer { + + public static final String name = "Mekanism Crusher"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings("unchecked") @ZenMethod - public static void addRecipe(IGasStack input, IItemStack output) { - if (Mekanism.v7) - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_CRYSTALLIZER", Recipe.CHEMICAL_CRYSTALLIZER.get(), toGas(input), toStack(output))); - else - { - CrystallizerRecipe recipe = new CrystallizerRecipe(toGas(input), toStack(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_CRYSTALLIZER", Recipe.CHEMICAL_CRYSTALLIZER.get(), recipe.getInput(), recipe)); + public static void addRecipe(IGasStack gasInput, IItemStack itemOutput) { + if(gasInput == null || itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; } + + CrystallizerRecipe recipe = new CrystallizerRecipe(toGas(gasInput), toStack(itemOutput)); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.CHEMICAL_CRYSTALLIZER.get(), recipe)); } + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings({ "unchecked", "rawtypes" }) @ZenMethod - public static void removeRecipe(IItemStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_CRYSTALLIZER", Recipe.CHEMICAL_CRYSTALLIZER.get(), toStack(output))); + public static void removeRecipe(IIngredient itemOutput, @Optional IIngredient gasInput) { + if(itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(gasInput == null) gasInput = IngredientAny.INSTANCE; + + Map recipes = new HashMap(); + + for(Entry entry : ((Map)Recipe.CHEMICAL_CRYSTALLIZER.get()).entrySet()) { + IGasStack inputGas = new MCGasStack(entry.getKey().ingredient); + IItemStack outputItem = InputHelper.toIItemStack(entry.getValue().recipeOutput.output); + + if(!StackHelper.matches(itemOutput, outputItem)) continue; + if(!StackHelper.matches(gasInput, inputGas)) continue; + + recipes.put(entry.getKey(), entry.getValue()); + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMekanismRecipe(name, Recipe.CHEMICAL_CRYSTALLIZER.get(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s and %s. Command ignored!", name, gasInput.toString(), itemOutput.toString())); + } } } diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalDissolution.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalDissolution.java index 82aaace..fb7cae8 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalDissolution.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalDissolution.java @@ -1,90 +1,80 @@ package modtweaker2.mods.mekanism.handlers; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -import java.util.Iterator; -import java.util.List; +import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; -import mekanism.api.gas.GasStack; import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.ItemStackInput; +import mekanism.common.recipe.inputs.MachineInput; import mekanism.common.recipe.machines.DissolutionRecipe; +import mekanism.common.recipe.machines.MachineRecipe; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import minetweaker.api.oredict.IOreDictEntry; +import minetweaker.api.item.IngredientAny; import modtweaker2.helpers.InputHelper; -import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.gas.MCGasStack; import modtweaker2.mods.mekanism.util.AddMekanismRecipe; import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -import net.minecraft.item.ItemStack; -import net.minecraftforge.oredict.OreDictionary; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mekanism.chemical.Dissolution") public class ChemicalDissolution { + + public static final String name = "Mekanism Dissolution"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings("unchecked") @ZenMethod - public static void addRecipe(IItemStack input, IGasStack output) { - if (Mekanism.v7) - { - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), toStack(input), toGas(output))); - } - else { - DissolutionRecipe recipe = new DissolutionRecipe(toStack(input), toGas(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), recipe.getInput(), recipe)); + public static void addRecipe(IItemStack itemInput, IGasStack gasOutput) { + if(itemInput == null || gasOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; } + + DissolutionRecipe recipe = new DissolutionRecipe(toStack(itemInput), toGas(gasOutput)); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), recipe)); } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @SuppressWarnings({ "unchecked", "rawtypes" }) @ZenMethod - public static void removeRecipe(IItemStack input) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new Remove("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), toStack(input))); - } - - @ZenMethod - public static void removeRecipe(IOreDictEntry input) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - List stacks = OreDictionary.getOres(InputHelper.toString(input)); - for (ItemStack stack : stacks) { - MineTweakerAPI.apply(new Remove("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), stack)); + public static void removeRecipe(IIngredient gasOutput, @Optional IIngredient itemInput) { + if(gasOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; } - } + + if(itemInput == null) itemInput = IngredientAny.INSTANCE; + + Map recipes = new HashMap(); + + for(Entry entry : ((Map)Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get()).entrySet()) { + IItemStack inputItem = InputHelper.toIItemStack(entry.getKey().ingredient); + IGasStack outputGas = new MCGasStack(entry.getValue().recipeOutput.output); + + if(!StackHelper.matches(gasOutput, outputGas)) continue; + if(!StackHelper.matches(itemInput, inputItem)) continue; - @ZenMethod - public static void removeRecipe(IGasStack input) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new Remove("CHEMICAL_DISSOLUTION_CHAMBER", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), toGas(input))); - } - - private static class Remove extends RemoveMekanismRecipe { - public Remove(String string, Map map, Object key) { - super(string, map, key); + recipes.put(entry.getKey(), entry.getValue()); } - - @Override - public void apply() { - Iterator it = map.entrySet().iterator(); - while (it.hasNext()) { - Map.Entry pairs = (Map.Entry) it.next(); - ItemStack key = (ItemStack) pairs.getKey(); - GasStack value = (GasStack) pairs.getValue(); - if (key != null) { - if (this.key instanceof ItemStack && areEqual(key, (ItemStack) this.key)) { - this.key = key; - break; - } else if (this.key instanceof GasStack && value.isGasEqual((GasStack) this.key)) { - this.key = key; - break; - } - } - - } - - recipe = map.get(key); - map.remove(key); + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMekanismRecipe(name, Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s and %s. Command ignored!", name, gasOutput.toString(), itemInput.toString())); } } } diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInfuser.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInfuser.java index 53277ae..1d2f6fb 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInfuser.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInfuser.java @@ -1,36 +1,80 @@ package modtweaker2.mods.mekanism.handlers; import static modtweaker2.mods.mekanism.MekanismHelper.toGas; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + import mekanism.common.recipe.RecipeHandler.Recipe; import mekanism.common.recipe.inputs.ChemicalPairInput; +import mekanism.common.recipe.inputs.MachineInput; import mekanism.common.recipe.machines.ChemicalInfuserRecipe; +import mekanism.common.recipe.machines.MachineRecipe; import minetweaker.MineTweakerAPI; -import modtweaker2.mods.mekanism.Mekanism; +import minetweaker.api.item.IIngredient; +import minetweaker.api.item.IngredientAny; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.gas.MCGasStack; import modtweaker2.mods.mekanism.util.AddMekanismRecipe; import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mekanism.chemical.Infuser") public class ChemicalInfuser { - @ZenMethod - public static void addRecipe(IGasStack left, IGasStack right, IGasStack out) { - if (Mekanism.v7) { - ChemicalPairInput pair = new ChemicalPairInput(toGas(left), toGas(right)); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INFUSER", Recipe.CHEMICAL_INFUSER.get(), pair, toGas(out))); - } else { - ChemicalInfuserRecipe recipe = new ChemicalInfuserRecipe(toGas(left), toGas(right), toGas(out)); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INFUSER", Recipe.CHEMICAL_INFUSER.get(), recipe.getInput(), recipe)); - } - } - @ZenMethod - public static void removeRecipe(IGasStack output) { - if (!Mekanism.v7) - throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_INFUSER", Recipe.CHEMICAL_INFUSER.get(), toGas(output))); - - - } + public static final String name = "Mekanism Infuser"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings("unchecked") + @ZenMethod + public static void addRecipe(IGasStack leftGasInput, IGasStack rightGasInput, IGasStack gasOutput) { + if(leftGasInput == null || rightGasInput == null || gasOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + ChemicalInfuserRecipe recipe = new ChemicalInfuserRecipe(toGas(leftGasInput), toGas(rightGasInput), toGas(gasOutput)); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.CHEMICAL_INFUSER.get(), recipe)); + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @ZenMethod + public static void removeRecipe(IIngredient gasOutput, @Optional IIngredient leftGasInput, @Optional IIngredient rightGasInput) { + if(gasOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(leftGasInput == null) leftGasInput = IngredientAny.INSTANCE; + if(rightGasInput == null) rightGasInput = IngredientAny.INSTANCE; + + Map recipes = new HashMap(); + + for(Entry entry : ((Map)Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get()).entrySet()) { + IGasStack inputGasLeft = new MCGasStack(entry.getKey().leftGas); + IGasStack inputGasRight = new MCGasStack(entry.getKey().rightGas); + IGasStack outputGas = new MCGasStack(entry.getValue().recipeOutput.output); + + if(!StackHelper.matches(gasOutput, outputGas)) continue; + if(!StackHelper.matches(leftGasInput, inputGasLeft)) continue; + if(!StackHelper.matches(rightGasInput, inputGasRight)) continue; + + recipes.put(entry.getKey(), entry.getValue()); + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMekanismRecipe(name, Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s, %s and %s. Command ignored!", name, gasOutput.toString(), leftGasInput.toString(), rightGasInput.toString())); + } + } } diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInjection.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInjection.java index a21395f..844b2a3 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInjection.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalInjection.java @@ -2,37 +2,87 @@ package modtweaker2.mods.mekanism.handlers; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.mods.mekanism.MekanismHelper.toGas; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +import mekanism.api.gas.GasStack; import mekanism.common.recipe.RecipeHandler.Recipe; import mekanism.common.recipe.inputs.AdvancedMachineInput; +import mekanism.common.recipe.inputs.MachineInput; import mekanism.common.recipe.machines.InjectionRecipe; +import mekanism.common.recipe.machines.MachineRecipe; +import mekanism.common.recipe.outputs.ItemStackOutput; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; +import minetweaker.api.item.IngredientAny; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.gas.MCGasStack; import modtweaker2.mods.mekanism.util.AddMekanismRecipe; import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mekanism.chemical.Injection") public class ChemicalInjection { + + public static final String name = "Mekanism Injection"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings("unchecked") @ZenMethod - public static void addRecipe(IItemStack input, IGasStack gas, IItemStack output) { - if (Mekanism.v7) - { - AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), toGas(gas).getGas()); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INJECTION_CHAMBER", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), aInput, toStack(output))); - } - else - { - InjectionRecipe recipe = new InjectionRecipe(toStack(input), gas.getName(), toStack(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_INJECTION_CHAMBER", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), recipe.getInput(), recipe)); + public static void addRecipe(IItemStack itemInput, IGasStack gasInput, IItemStack itemOutput) { + if(itemInput == null || gasInput == null || itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; } + + AdvancedMachineInput input = new AdvancedMachineInput(toStack(itemInput), toGas(gasInput).getGas()); + ItemStackOutput output = new ItemStackOutput(toStack(itemOutput)); + + InjectionRecipe recipe = new InjectionRecipe(input, output); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.CHEMICAL_INJECTION_CHAMBER.get(), recipe)); } - + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings({ "rawtypes", "unchecked" }) @ZenMethod - public static void removeRecipe(IItemStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_INJECTION_CHAMBER", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), toStack(output))); + public static void removeRecipe(IIngredient itemOutput, @Optional IIngredient itemInput, @Optional IIngredient gasInput) { + if(itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(itemInput == null) itemInput = IngredientAny.INSTANCE; + if(gasInput == null) gasInput = IngredientAny.INSTANCE; + + Map recipes = new HashMap(); + + for(Entry entry : ((Map)Recipe.CHEMICAL_INJECTION_CHAMBER.get()).entrySet()) { + IItemStack inputItem = InputHelper.toIItemStack(entry.getKey().itemStack); + IGasStack inputGas = new MCGasStack(new GasStack(entry.getKey().gasType, 1)); + IItemStack outputItem = InputHelper.toIItemStack(entry.getValue().recipeOutput.output); + + if(!StackHelper.matches(itemOutput, outputItem)) continue; + if(!StackHelper.matches(itemInput, inputItem)) continue; + if(!StackHelper.matches(gasInput, inputGas)) continue; + + recipes.put(entry.getKey(), entry.getValue()); + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMekanismRecipe(name, Recipe.CHEMICAL_INJECTION_CHAMBER.get(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s, %s and %s. Command ignored!", name, itemOutput.toString(), itemInput.toString(), gasInput.toString())); + } } } diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalOxidizer.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalOxidizer.java index 5db57c6..a9c3d01 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalOxidizer.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalOxidizer.java @@ -2,35 +2,79 @@ package modtweaker2.mods.mekanism.handlers; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.mods.mekanism.MekanismHelper.toGas; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.ItemStackInput; +import mekanism.common.recipe.inputs.MachineInput; +import mekanism.common.recipe.machines.MachineRecipe; import mekanism.common.recipe.machines.OxidationRecipe; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; +import minetweaker.api.item.IngredientAny; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.gas.MCGasStack; import modtweaker2.mods.mekanism.util.AddMekanismRecipe; import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mekanism.chemical.Oxidizer") public class ChemicalOxidizer { + + public static final String name = "Mekanism Oxidizer"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings("unchecked") @ZenMethod - public static void addRecipe(IItemStack input, IGasStack output) { - if (Mekanism.v7) - { - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_OXIDIZER", Recipe.CHEMICAL_OXIDIZER.get(), toStack(input), toGas(output))); - } - else - { - OxidationRecipe recipe = new OxidationRecipe(toStack(input), toGas(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_OXIDIZER", Recipe.CHEMICAL_OXIDIZER.get(), recipe.getInput(), recipe)); + public static void addRecipe(IItemStack itemInput, IGasStack gasOutput) { + if(itemInput == null || gasOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; } + + OxidationRecipe recipe = new OxidationRecipe(toStack(itemInput), toGas(gasOutput)); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.CHEMICAL_OXIDIZER.get(), recipe)); } - + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings({ "unchecked", "rawtypes" }) @ZenMethod - public static void removeRecipe(IGasStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("CHEMICAL_OXIDIZER", Recipe.CHEMICAL_OXIDIZER.get(), toGas(output))); + public static void removeRecipe(IIngredient gasOutput, @Optional IIngredient itemInput) { + if(gasOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(itemInput == null) itemInput = IngredientAny.INSTANCE; + + Map recipes = new HashMap(); + + for(Entry entry : ((Map)Recipe.CHEMICAL_OXIDIZER.get()).entrySet()) { + IItemStack inputItem = InputHelper.toIItemStack(entry.getKey().ingredient); + IGasStack outputGas = new MCGasStack(entry.getValue().recipeOutput.output); + + if(!StackHelper.matches(itemInput, inputItem)) continue; + if(!StackHelper.matches(gasOutput, outputGas)) continue; + + recipes.put(entry.getKey(), entry.getValue()); + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMekanismRecipe(name, Recipe.CHEMICAL_OXIDIZER.get(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s and %s. Command ignored!", name, gasOutput.toString(), itemInput.toString())); + } } } diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalWasher.java b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalWasher.java index 523fb1f..2abaf57 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalWasher.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/ChemicalWasher.java @@ -2,64 +2,76 @@ package modtweaker2.mods.mekanism.handlers; import static modtweaker2.mods.mekanism.MekanismHelper.toGas; -import java.util.Iterator; +import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; -import mekanism.api.gas.GasStack; import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.GasInput; +import mekanism.common.recipe.inputs.MachineInput; +import mekanism.common.recipe.machines.MachineRecipe; import mekanism.common.recipe.machines.WasherRecipe; import minetweaker.MineTweakerAPI; -import modtweaker2.mods.mekanism.Mekanism; +import minetweaker.api.item.IIngredient; +import minetweaker.api.item.IngredientAny; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.gas.MCGasStack; import modtweaker2.mods.mekanism.util.AddMekanismRecipe; import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mekanism.chemical.Washer") public class ChemicalWasher { + + public static final String name = "Mekanism Washer"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings("unchecked") @ZenMethod - public static void addRecipe(IGasStack input, IGasStack output) { - if (Mekanism.v7) - { - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_WASHER", Recipe.CHEMICAL_WASHER.get(), toGas(input), toGas(output))); - } - else - { - WasherRecipe recipe = new WasherRecipe(toGas(input), toGas(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("CHEMICAL_WASHER", Recipe.CHEMICAL_WASHER.get(), recipe.getInput(), recipe)); + public static void addRecipe(IGasStack gasInput, IGasStack gasOutput) { + if(gasInput == null || gasOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; } + + WasherRecipe recipe = new WasherRecipe(toGas(gasInput), toGas(gasOutput)); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.CHEMICAL_WASHER.get(), recipe)); } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @SuppressWarnings({ "unchecked", "rawtypes" }) @ZenMethod - public static void removeRecipe(IGasStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new Remove("CHEMICAL_WASHER", Recipe.CHEMICAL_WASHER.get(), toGas(output))); - } - - private static class Remove extends RemoveMekanismRecipe { - public Remove(String string, Map map, Object key) { - super(string, map, key); + public static void removeRecipe(IIngredient gasOutput, @Optional IIngredient gasInput) { + if(gasOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; } - - @Override - public void apply() { - Iterator it = map.entrySet().iterator(); - while (it.hasNext()) { - Map.Entry pairs = (Map.Entry) it.next(); - GasStack key = (GasStack) pairs.getKey(); - GasStack value = (GasStack) pairs.getValue(); - if (key != null) { - if (this.key instanceof GasStack && value.isGasEqual((GasStack) this.key)) { - this.key = key; - break; - } - } - - } - - recipe = map.get(key); - map.remove(key); + + if(gasInput == null) gasInput = IngredientAny.INSTANCE; + + Map recipes = new HashMap(); + + for(Entry entry : ((Map)Recipe.CHEMICAL_WASHER.get()).entrySet()) { + IGasStack inputGas = new MCGasStack(entry.getKey().ingredient); + IGasStack outputGas = new MCGasStack(entry.getValue().recipeOutput.output); + + if(!StackHelper.matches(gasInput, inputGas)) continue; + if(!StackHelper.matches(gasOutput, outputGas)) continue; + + recipes.put(entry.getKey(), entry.getValue()); + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMekanismRecipe(name, Recipe.CHEMICAL_WASHER.get(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s and %s. Command ignored!", name, gasOutput.toString(), gasInput.toString())); } } } diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Combiner.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Combiner.java index 983d79f..04dd7be 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Combiner.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Combiner.java @@ -1,35 +1,100 @@ package modtweaker2.mods.mekanism.handlers; import static modtweaker2.helpers.InputHelper.toStack; -import mekanism.api.gas.GasRegistry; +import static modtweaker2.mods.mekanism.MekanismHelper.toGas; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +import mekanism.api.gas.GasStack; import mekanism.common.recipe.RecipeHandler.Recipe; import mekanism.common.recipe.inputs.AdvancedMachineInput; +import mekanism.common.recipe.inputs.MachineInput; import mekanism.common.recipe.machines.CombinerRecipe; +import mekanism.common.recipe.machines.MachineRecipe; +import mekanism.common.recipe.outputs.ItemStackOutput; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; +import minetweaker.api.item.IngredientAny; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; +import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.gas.MCGasStack; import modtweaker2.mods.mekanism.util.AddMekanismRecipe; import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mekanism.Combiner") public class Combiner { + + public static final String name = "Mekanism Combiner"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings({ "unchecked" }) @ZenMethod - public static void addRecipe(IItemStack input, IItemStack output) { - AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), GasRegistry.getGas("liquidStone")); - if (Mekanism.v7) - MineTweakerAPI.apply(new AddMekanismRecipe("COMBINER", Recipe.COMBINER.get(), aInput, toStack(output))); - else - { - CombinerRecipe recipe = new CombinerRecipe(toStack(input), toStack(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("COMBINER", Recipe.COMBINER.get(), recipe.getInput(), recipe)); + public static void addRecipe(IItemStack itemInput, IGasStack gasInput, IItemStack itemOutput) { + if(itemInput == null || gasInput == null || itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + AdvancedMachineInput input = new AdvancedMachineInput(toStack(itemInput), toGas(gasInput).getGas()); + ItemStackOutput output = new ItemStackOutput(toStack(itemOutput)); + CombinerRecipe recipe = new CombinerRecipe(input, output); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.COMBINER.get(), recipe)); + } + + @SuppressWarnings("unchecked") + @ZenMethod + public static void addRecipe(IItemStack itemInput, IItemStack itemOutput) { + if(itemInput == null || itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + CombinerRecipe recipe = new CombinerRecipe(toStack(itemInput), toStack(itemOutput)); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.COMBINER.get(), recipe)); + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @ZenMethod + public static void removeRecipe(IIngredient itemOutput, @Optional IIngredient itemInput, @Optional IIngredient gasInput) { + if(itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(gasInput == null) gasInput = IngredientAny.INSTANCE; + if(itemInput == null) itemInput = IngredientAny.INSTANCE; + + Map recipes = new HashMap(); + + for(Entry entry : ((Map)Recipe.COMBINER.get()).entrySet()) { + IItemStack inputItem = InputHelper.toIItemStack(entry.getKey().itemStack); + IGasStack inputGas = new MCGasStack(new GasStack(entry.getKey().gasType, 1)); + IItemStack outputItem = InputHelper.toIItemStack(entry.getValue().getOutput().output); + + if(!StackHelper.matches(itemInput, inputItem)) continue; + if(!StackHelper.matches(gasInput, inputGas)) continue; + if(!StackHelper.matches(itemOutput, outputItem)) continue; + + recipes.put(entry.getKey(), entry.getValue()); + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMekanismRecipe(name, Recipe.COMBINER.get(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s, %s and %s. Command ignored!", name, itemInput.toString(), gasInput.toString(), itemOutput.toString())); } } - - @ZenMethod - public static void removeRecipe(IItemStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("COMBINER", Recipe.COMBINER.get(), toStack(output))); - } } diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Compressor.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Compressor.java index 25898a8..2ed1c45 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Compressor.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Compressor.java @@ -1,35 +1,101 @@ package modtweaker2.mods.mekanism.handlers; import static modtweaker2.helpers.InputHelper.toStack; -import mekanism.api.gas.GasRegistry; +import static modtweaker2.mods.mekanism.MekanismHelper.toGas; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +import mekanism.api.gas.GasStack; import mekanism.common.recipe.RecipeHandler.Recipe; import mekanism.common.recipe.inputs.AdvancedMachineInput; +import mekanism.common.recipe.inputs.MachineInput; +import mekanism.common.recipe.machines.MachineRecipe; import mekanism.common.recipe.machines.OsmiumCompressorRecipe; +import mekanism.common.recipe.outputs.ItemStackOutput; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; +import minetweaker.api.item.IngredientAny; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; +import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.gas.MCGasStack; import modtweaker2.mods.mekanism.util.AddMekanismRecipe; import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mekanism.Compressor") public class Compressor { + + public static final String name = "Mekanism Compressor"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings("unchecked") @ZenMethod - public static void addRecipe(IItemStack input, IItemStack output) { - AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), GasRegistry.getGas("liquidOsmium")); - if (Mekanism.v7) - MineTweakerAPI.apply(new AddMekanismRecipe("OSMIUM_COMPRESSOR", Recipe.OSMIUM_COMPRESSOR.get(), aInput, toStack(output))); - else - { - OsmiumCompressorRecipe recipe = new OsmiumCompressorRecipe(toStack(input), toStack(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("OSMIUM_COMPRESSOR", Recipe.OSMIUM_COMPRESSOR.get(), recipe.getInput(), recipe)); + public static void addRecipe(IItemStack itemInput, IItemStack itemOutput) { + if(itemInput == null || itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + OsmiumCompressorRecipe recipe = new OsmiumCompressorRecipe(toStack(itemInput), toStack(itemOutput)); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.OSMIUM_COMPRESSOR.get(), recipe)); + } + + @SuppressWarnings("unchecked") + @ZenMethod + public static void addRecipe(IItemStack itemInput, IGasStack gasInput, IItemStack itemOutput) { + if(itemInput == null || gasInput == null || itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + AdvancedMachineInput input = new AdvancedMachineInput(toStack(itemInput), toGas(gasInput).getGas()); + ItemStackOutput output = new ItemStackOutput(toStack(itemOutput)); + + OsmiumCompressorRecipe recipe = new OsmiumCompressorRecipe(input, output); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.OSMIUM_COMPRESSOR.get(), recipe)); + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @ZenMethod + public static void removeRecipe(IIngredient itemOutput, @Optional IIngredient itemInput, @Optional IIngredient gasInput) { + if(itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(itemInput == null) itemInput = IngredientAny.INSTANCE; + if(gasInput == null) gasInput = IngredientAny.INSTANCE; + + Map recipes = new HashMap(); + + for(Entry entry : ((Map)Recipe.OSMIUM_COMPRESSOR.get()).entrySet()) { + IItemStack inputItem = InputHelper.toIItemStack(entry.getKey().itemStack); + IGasStack inputGas = new MCGasStack(new GasStack(entry.getKey().gasType, 1)); + IItemStack outputItem = InputHelper.toIItemStack(entry.getValue().getOutput().output); + + if(!StackHelper.matches(itemInput, inputItem)) continue; + if(!StackHelper.matches(gasInput, inputGas)) continue; + if(!StackHelper.matches(itemOutput, outputItem)) continue; + + recipes.put(entry.getKey(), entry.getValue()); + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMekanismRecipe(name, Recipe.OSMIUM_COMPRESSOR.get(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s, %s and %s. Command ignored!", name, itemInput.toString(), gasInput.toString(), itemOutput.toString())); } } - - @ZenMethod - public static void removeRecipe(IItemStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("OSMIUM_COMPRESSOR", Recipe.OSMIUM_COMPRESSOR.get(), toStack(output))); - } } diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Crusher.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Crusher.java index 637e8b8..c8026e2 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Crusher.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Crusher.java @@ -1,32 +1,77 @@ package modtweaker2.mods.mekanism.handlers; import static modtweaker2.helpers.InputHelper.toStack; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.ItemStackInput; +import mekanism.common.recipe.inputs.MachineInput; import mekanism.common.recipe.machines.CrusherRecipe; +import mekanism.common.recipe.machines.MachineRecipe; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; +import minetweaker.api.item.IngredientAny; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; import modtweaker2.mods.mekanism.util.AddMekanismRecipe; import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mekanism.Crusher") public class Crusher { + + public static final String name = "Mekanism Crusher"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings("unchecked") @ZenMethod - public static void addRecipe(IItemStack input, IItemStack output) { - if (Mekanism.v7) - MineTweakerAPI.apply(new AddMekanismRecipe("CRUSHER", Recipe.CRUSHER.get(), toStack(input), toStack(output))); - else - { - CrusherRecipe recipe = new CrusherRecipe(toStack(input), toStack(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("CRUSHER", Recipe.CRUSHER.get(), recipe.getInput(), recipe)); + public static void addRecipe(IItemStack itemInput, IItemStack itemOutput) { + if(itemInput == null || itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; } + + CrusherRecipe recipe = new CrusherRecipe(toStack(itemInput), toStack(itemOutput)); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.CRUSHER.get(), recipe)); } + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings({ "unchecked", "rawtypes" }) @ZenMethod - public static void removeRecipe(IItemStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("CRUSHER", Recipe.CRUSHER.get(), toStack(output))); + public static void removeRecipe(IIngredient itemOutput, @Optional IIngredient itemInput) { + if(itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(itemInput == null) itemInput = IngredientAny.INSTANCE; + + Map recipes = new HashMap(); + + for(Entry entry : ((Map)Recipe.CRUSHER.get()).entrySet() ) { + IItemStack inputItem = InputHelper.toIItemStack(entry.getKey().ingredient); + IItemStack outputItem = InputHelper.toIItemStack(entry.getValue().recipeOutput.output); + + if(!StackHelper.matches(itemOutput, outputItem)) continue; + if(!StackHelper.matches(itemInput, inputItem)) continue; + + recipes.put(entry.getKey(), entry.getValue()); + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMekanismRecipe(name, Recipe.CRUSHER.get(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s and %s. Command ignored!", name, itemInput.toString(), itemOutput.toString())); + } } } diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Enrichment.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Enrichment.java index 863ccde..80bf1cb 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Enrichment.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Enrichment.java @@ -1,32 +1,78 @@ package modtweaker2.mods.mekanism.handlers; import static modtweaker2.helpers.InputHelper.toStack; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.ItemStackInput; +import mekanism.common.recipe.inputs.MachineInput; import mekanism.common.recipe.machines.EnrichmentRecipe; +import mekanism.common.recipe.machines.MachineRecipe; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; +import minetweaker.api.item.IngredientAny; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; import modtweaker2.mods.mekanism.util.AddMekanismRecipe; import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mekanism.Enrichment") public class Enrichment { + + public static final String name = "Mekanism Enrichment"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings("unchecked") @ZenMethod - public static void addRecipe(IItemStack input, IItemStack output) { - if (Mekanism.v7) - MineTweakerAPI.apply(new AddMekanismRecipe("ENRICHMENT_CHAMBER", Recipe.ENRICHMENT_CHAMBER.get(), toStack(input), toStack(output))); - else - { - EnrichmentRecipe recipe = new EnrichmentRecipe(toStack(input), toStack(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("ENRICHMENT_CHAMBER", Recipe.ENRICHMENT_CHAMBER.get(), recipe.getInput(), recipe)); + public static void addRecipe(IItemStack itemInput, IItemStack itemOutput) { + if(itemInput == null || itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + EnrichmentRecipe recipe = new EnrichmentRecipe(toStack(itemInput), toStack(itemOutput)); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.ENRICHMENT_CHAMBER.get(), recipe)); + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @ZenMethod + public static void removeRecipe(IIngredient itemInput, @Optional IIngredient itemOutput) { + if(itemInput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(itemOutput == null) itemOutput = IngredientAny.INSTANCE; + + Map recipes = new HashMap(); + + for(Entry entry : ((Map)Recipe.ENRICHMENT_CHAMBER.get()).entrySet() ) { + IItemStack inputItem = InputHelper.toIItemStack(entry.getKey().ingredient); + IItemStack outputItem = InputHelper.toIItemStack(entry.getValue().recipeOutput.output); + + if(!StackHelper.matches(itemOutput, outputItem)) continue; + if(!StackHelper.matches(itemInput, inputItem)) continue; + + recipes.put(entry.getKey(), entry.getValue()); + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMekanismRecipe(name, Recipe.ENRICHMENT_CHAMBER.get(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s and %s. Command ignored!", name, itemInput.toString(), itemOutput.toString())); } } - - @ZenMethod - public static void removeRecipe(IItemStack input) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new RemoveMekanismRecipe("ENRICHMENT_CHAMBER", Recipe.ENRICHMENT_CHAMBER.get(), toStack(input))); - } + } diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Infuser.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Infuser.java index 6b1c67f..61eab9c 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Infuser.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Infuser.java @@ -1,87 +1,84 @@ -//package modtweaker2.mods.mekanism.handlers; -// -//import static modtweaker2.helpers.InputHelper.toStack; -//import static modtweaker2.helpers.StackHelper.areEqual; -// -//import java.util.ArrayList; -//import java.util.Iterator; -//import java.util.List; -//import java.util.Map; -// -//import mekanism.api.infuse.InfuseRegistry; -//import mekanism.common.recipe.RecipeHandler.Recipe; -//import mekanism.common.recipe.inputs.InfusionInput; -//import mekanism.common.recipe.machines.MetallurgicInfuserRecipe; -//import mekanism.common.recipe.outputs.MachineOutput; -//import minetweaker.MineTweakerAPI; -//import minetweaker.api.item.IItemStack; -//import modtweaker2.mods.mekanism.Mekanism; -//import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -//import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; -//import stanhebben.zenscript.annotations.ZenClass; -//import stanhebben.zenscript.annotations.ZenMethod; -// -//@ZenClass("mods.mekanism.Infuser") -//public class Infuser { -// @ZenMethod -// public static void addRecipe(String type, int infuse, IItemStack input, IItemStack output) { -// if (Mekanism.v7) -// { -// InfusionInput infuseIn = new InfusionInput(InfuseRegistry.get(type), infuse, toStack(input)); -// InfusionOutput infuseOut = new InfusionOutput(infuseIn, toStack(output)); -// -// MineTweakerAPI.apply(new AddMekanismRecipe("METALLURGIC_INFUSER", Recipe.METALLURGIC_INFUSER.get(), infuseIn, infuseOut)); -// } -// else -// { -// MetallurgicInfuserRecipe recipe = new MetallurgicInfuserRecipe(new mekanism.common.recipe.inputs.InfusionInput(InfuseRegistry.get(type), infuse, toStack(input)), toStack(output)); -// MineTweakerAPI.apply(new AddMekanismRecipe("METALLURGIC_INFUSER", Recipe.METALLURGIC_INFUSER.get(), recipe.getInput(), recipe)); -// } -// } -// -// @ZenMethod -// public static void removeRecipe(IItemStack output) { -// if (Mekanism.v7) -// { -// MineTweakerAPI.apply(new Remove("METALLURGIC_INFUSER", Recipe.METALLURGIC_INFUSER.get(), new InfusionOutput(null, toStack(output)))); -// } -// else -// { -// throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); -// } -// } -// -// private static class Remove extends RemoveMekanismRecipe { -// public Remove(String string, Map map, Object key) { -// super(string, map, key); -// } -// private List removed = new ArrayList(); -// @Override -// public void apply() { -// Iterator it = map.entrySet().iterator(); -// while (it.hasNext()) { -// Map.Entry pairs = (Map.Entry)it.next(); -// InfusionInput key = (InfusionInput)pairs.getKey(); -// InfusionOutput value = (InfusionOutput)pairs.getValue(); -// if (key != null) -// { -// if (this.key instanceof InfusionOutput && areEqual(value.resource, ((InfusionOutput)this.key).resource)) -// { -// this.key = key; -// removed.add(value); -// it.remove(); -// } -// } -// } -// } -// -// @Override -// public void undo() -// { -// for (Object recipe : removed) -// { -// map.put(key, recipe); -// } -// } -// } -//} +package modtweaker2.mods.mekanism.handlers; + +import static modtweaker2.helpers.InputHelper.toStack; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +import mekanism.api.infuse.InfuseRegistry; +import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.InfusionInput; +import mekanism.common.recipe.inputs.MachineInput; +import mekanism.common.recipe.machines.MachineRecipe; +import mekanism.common.recipe.machines.MetallurgicInfuserRecipe; +import mekanism.common.recipe.outputs.ItemStackOutput; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; +import minetweaker.api.item.IItemStack; +import minetweaker.api.item.IngredientAny; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; +import modtweaker2.mods.mekanism.util.AddMekanismRecipe; +import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.Optional; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.mekanism.Infuser") +public class Infuser { + + public static final String name = "Mekanism Infuser"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings("unchecked") + @ZenMethod + public static void addRecipe(String infuseType, int infuseAmount, IItemStack itemInput, IItemStack itemOutput) { + if(itemInput == null || itemOutput == null || infuseType == null || infuseType.isEmpty()) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + InfusionInput input = new InfusionInput(InfuseRegistry.get(infuseType), infuseAmount, toStack(itemInput)); + ItemStackOutput output = new ItemStackOutput(toStack(itemOutput)); + + MetallurgicInfuserRecipe recipe = new MetallurgicInfuserRecipe(input, output); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.METALLURGIC_INFUSER.get(), recipe)); + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static void removeRecipe(IIngredient itemOutput, @Optional IIngredient itemInput, @Optional String infuseType) { + if(itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(itemInput == null) itemInput = IngredientAny.INSTANCE; + if(infuseType == null) infuseType = ""; + + Map recipes = new HashMap(); + + for(Entry entry : ((Map)Recipe.METALLURGIC_INFUSER.get()).entrySet() ) { + IItemStack inputItem = InputHelper.toIItemStack(entry.getKey().inputStack); + String typeInfuse = entry.getKey().infuse.type.name; + IItemStack outputItem = InputHelper.toIItemStack(entry.getValue().recipeOutput.output); + + if(!StackHelper.matches(itemOutput, outputItem)) continue; + if(!StackHelper.matches(itemInput, inputItem)) continue; + if(!infuseType.isEmpty() && !infuseType.equalsIgnoreCase(typeInfuse)) continue; + + recipes.put(entry.getKey(), entry.getValue()); + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMekanismRecipe(name, Recipe.METALLURGIC_INFUSER.get(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s and %s. Command ignored!", name, itemInput.toString(), itemOutput.toString())); + } + } +} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Purification.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Purification.java index 5f8a95d..baf3263 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Purification.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Purification.java @@ -1,62 +1,101 @@ package modtweaker2.mods.mekanism.handlers; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; -import mekanism.api.gas.GasRegistry; +import mekanism.api.gas.GasStack; import mekanism.common.recipe.RecipeHandler.Recipe; import mekanism.common.recipe.inputs.AdvancedMachineInput; +import mekanism.common.recipe.inputs.MachineInput; +import mekanism.common.recipe.machines.MachineRecipe; import mekanism.common.recipe.machines.PurificationRecipe; -import mekanism.common.recipe.outputs.MachineOutput; +import mekanism.common.recipe.outputs.ItemStackOutput; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; +import minetweaker.api.item.IngredientAny; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; +import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.gas.MCGasStack; import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; +import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mekanism.Purification") public class Purification { + + public static final String name = "Mekanism Purification"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings("unchecked") @ZenMethod - public static void addRecipe(IItemStack input, IItemStack output) { - if (Mekanism.v7) - { - AdvancedMachineInput aInput = new AdvancedMachineInput(toStack(input), GasRegistry.getGas("oxygen")); - MineTweakerAPI.apply(new AddMekanismRecipe("PURIFICATION_CHAMBER", Recipe.PURIFICATION_CHAMBER.get(), aInput, toStack(output))); - } - else - { - PurificationRecipe recipe = new PurificationRecipe(toStack(input), toStack(output)); - MineTweakerAPI.apply(new AddMekanismRecipe("PURIFICATION_CHAMBER", Recipe.PURIFICATION_CHAMBER.get(), recipe.getInput(), recipe)); + public static void addRecipe(IItemStack itemInput, IItemStack itemOutput) { + if(itemInput == null || itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; } + + PurificationRecipe recipe = new PurificationRecipe(toStack(itemInput), toStack(itemOutput)); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.PURIFICATION_CHAMBER.get(), recipe)); } - + + @SuppressWarnings("unchecked") @ZenMethod - public static void removeRecipe(IItemStack output) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new Remove(toStack(output))); - } - - private static class Remove extends BaseMapRemoval { - public Remove(ItemStack stack) { - super("Purification Chamber", Recipe.PURIFICATION_CHAMBER.get(), stack); + public static void addRecipe(IItemStack itemInput, IGasStack gasInput, IItemStack itemOutput) { + if(itemInput == null || gasInput == null || itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; } - //We must search through the recipe entries so that we can assign the correct key for removal - @Override - public void apply() { - for (Map.Entry entry : ((Map) map).entrySet()) { - if (entry.getValue() != null && areEqual(entry.getValue(), (ItemStack) stack)) { - key = entry.getKey(); - break; - } - } - - super.apply(); + AdvancedMachineInput input = new AdvancedMachineInput(toStack(itemInput), toGas(gasInput).getGas()); + ItemStackOutput output = new ItemStackOutput(toStack(itemOutput)); + + PurificationRecipe recipe = new PurificationRecipe(input, output); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.PURIFICATION_CHAMBER.get(), recipe)); + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @ZenMethod + public static void removeRecipe(IIngredient itemOutput, @Optional IIngredient itemInput, @Optional IIngredient gasInput) { + if(itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(itemInput == null) itemInput = IngredientAny.INSTANCE; + if(gasInput == null) gasInput = IngredientAny.INSTANCE; + + Map recipes = new HashMap(); + + for(Entry entry : ((Map)Recipe.PURIFICATION_CHAMBER.get()).entrySet()) { + IItemStack inputItem = InputHelper.toIItemStack(entry.getKey().itemStack); + IGasStack inputGas = new MCGasStack(new GasStack(entry.getKey().gasType, 1)); + IItemStack outputItem = InputHelper.toIItemStack(entry.getValue().recipeOutput.output); + + if(!StackHelper.matches(itemOutput, outputItem)) continue; + if(!StackHelper.matches(itemInput, inputItem)) continue; + if(!StackHelper.matches(gasInput, inputGas)) continue; + + recipes.put(entry.getKey(), entry.getValue()); + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMekanismRecipe(name, Recipe.PURIFICATION_CHAMBER.get(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s, %s and %s. Command ignored!", name, itemOutput.toString(), itemInput.toString(), gasInput.toString())); } } } diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Reaction.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Reaction.java index 5bfb04a..975c406 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Reaction.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Reaction.java @@ -3,40 +3,93 @@ package modtweaker2.mods.mekanism.handlers; import static modtweaker2.helpers.InputHelper.toFluid; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.mods.mekanism.MekanismHelper.toGas; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.MachineInput; import mekanism.common.recipe.inputs.PressurizedInput; +import mekanism.common.recipe.machines.MachineRecipe; import mekanism.common.recipe.machines.PressurizedRecipe; import mekanism.common.recipe.outputs.PressurizedOutput; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; +import minetweaker.api.item.IngredientAny; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.gas.MCGasStack; import modtweaker2.mods.mekanism.util.AddMekanismRecipe; import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mekanism.Reaction") public class Reaction { + + public static final String name = "Mekanism Reaction"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings("unchecked") @ZenMethod - public static void addRecipe(IItemStack solid, ILiquidStack liquid, IGasStack gas, IItemStack outItem, IGasStack outGas, double energy, int ticks) { - if (Mekanism.v7) - { - PressurizedInput input = new PressurizedInput(toStack(solid), toFluid(liquid), toGas(gas)); - PressurizedRecipe recipe = new PressurizedRecipe(input, new PressurizedOutput(toStack(outItem), toGas(outGas)), energy, ticks); - MineTweakerAPI.apply(new AddMekanismRecipe("PRESSURIZED_REACTION_CHAMBER", Recipe.PRESSURIZED_REACTION_CHAMBER.get(), input, recipe)); - } - else { - mekanism.common.recipe.machines.PressurizedRecipe recipe = new mekanism.common.recipe.machines.PressurizedRecipe(toStack(solid), toFluid(liquid), toGas(gas), toStack(outItem), toGas(outGas), energy, ticks); - MineTweakerAPI.apply(new AddMekanismRecipe("PRESSURIZED_REACTION_CHAMBER", Recipe.PRESSURIZED_REACTION_CHAMBER.get(), recipe.getInput(), recipe)); + public static void addRecipe(IItemStack itemInput, ILiquidStack liquidInput, IGasStack gasInput, IItemStack itemOutput, IGasStack gasOutput, double energy, int duration) { + if(itemInput == null || liquidInput == null || gasInput == null || itemOutput == null || gasOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; } + + PressurizedInput input = new PressurizedInput(toStack(itemInput), toFluid(liquidInput), toGas(gasInput)); + PressurizedOutput output = new PressurizedOutput(toStack(itemOutput), toGas(gasOutput)); + + PressurizedRecipe recipe = new PressurizedRecipe(input, output, energy, duration); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.PRESSURIZED_REACTION_CHAMBER.get(), recipe)); } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @SuppressWarnings({ "unchecked", "rawtypes" }) @ZenMethod - public static void removeRecipe(IItemStack outItem, IGasStack outGas) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - PressurizedOutput output = new PressurizedOutput(toStack(outItem), toGas(outGas)); - MineTweakerAPI.apply(new RemoveMekanismRecipe("PRESSURIZED_REACTION_CHAMBER", Recipe.PRESSURIZED_REACTION_CHAMBER.get(), output)); + public static void removeRecipe(IIngredient itemOutput, IIngredient gasOutput, @Optional IIngredient itemInput, @Optional IIngredient liquidInput, IIngredient gasInput) { + if(itemOutput == null || gasOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(itemInput == null) itemInput = IngredientAny.INSTANCE; + if(liquidInput == null) liquidInput = IngredientAny.INSTANCE; + if(gasInput == null) gasInput = IngredientAny.INSTANCE; + + Map recipes = new HashMap(); + + for(Entry entry : ((Map)Recipe.PRESSURIZED_REACTION_CHAMBER.get()).entrySet() ) { + IItemStack inputItem = InputHelper.toIItemStack(entry.getKey().getSolid()); + ILiquidStack inputLiquid = InputHelper.toILiquidStack(entry.getKey().getFluid()); + IGasStack inputGas = new MCGasStack(entry.getKey().getGas()); + IItemStack outputItem = InputHelper.toIItemStack(entry.getValue().recipeOutput.getItemOutput()); + IGasStack outputGas = new MCGasStack(entry.getValue().recipeOutput.getGasOutput()); + + if(!StackHelper.matches(itemInput, inputItem)) continue; + if(!StackHelper.matches(liquidInput, inputLiquid)) continue; + if(!StackHelper.matches(gasInput, inputGas)) continue; + if(!StackHelper.matches(itemOutput, outputItem)) continue; + if(!StackHelper.matches(gasOutput, outputGas)) continue; + + recipes.put(entry.getKey(), entry.getValue()); + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMekanismRecipe(name, Recipe.PRESSURIZED_REACTION_CHAMBER.get(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s, %s, %s, %s and %s. Command ignored!", name, itemOutput.toString(), gasOutput.toString(), itemInput.toString(), liquidInput.toString(), gasInput.toString())); + } } + } diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Sawmill.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Sawmill.java index cb9eefa..288781e 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Sawmill.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Sawmill.java @@ -1,61 +1,84 @@ package modtweaker2.mods.mekanism.handlers; import static modtweaker2.helpers.InputHelper.toStack; -import static modtweaker2.helpers.StackHelper.areEqual; +import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.inputs.ItemStackInput; +import mekanism.common.recipe.inputs.MachineInput; +import mekanism.common.recipe.machines.MachineRecipe; import mekanism.common.recipe.machines.SawmillRecipe; import mekanism.common.recipe.outputs.ChanceOutput; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; -import modtweaker2.mods.mekanism.Mekanism; +import minetweaker.api.item.IngredientAny; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; +import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mekanism.Sawmill") public class Sawmill { + + public static final String name = "Mekanism Sawmill"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings("unchecked") @ZenMethod - public static void addRecipe(IItemStack input, IItemStack output1, @Optional IItemStack output2, @Optional double chance) { - if (Mekanism.v7) - { - ChanceOutput chanceOutput = new ChanceOutput(toStack(output1), toStack(output2), chance); - MineTweakerAPI.apply(new AddMekanismRecipe("PRECISION_SAWMILL", Recipe.PRECISION_SAWMILL.get(), toStack(input), chanceOutput)); - } - else - { - SawmillRecipe recipe = chance>0?new SawmillRecipe(toStack(input), toStack(output1), toStack(output2), chance) : new SawmillRecipe(toStack(input), toStack(output1)); - MineTweakerAPI.apply(new AddMekanismRecipe("PRECISION_SAWMILL", Recipe.PRECISION_SAWMILL.get(), recipe.getInput(), recipe)); + public static void addRecipe(IItemStack itemInput, IItemStack itemOutput, @Optional IItemStack optionalItemOutput, @Optional double optionalChance) { + if(itemInput == null || itemOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; } + + ItemStackInput input = new ItemStackInput(toStack(itemInput)); + ChanceOutput output = optionalItemOutput == null ? new ChanceOutput(toStack(itemOutput)) : + new ChanceOutput(toStack(itemOutput), toStack(optionalItemOutput), optionalChance); + + SawmillRecipe recipe = new SawmillRecipe(input, output); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.PRECISION_SAWMILL.get(), recipe)); } - - @ZenMethod - public static void removeRecipe(IItemStack input) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new Remove(toStack(input))); - } - - private static class Remove extends BaseMapRemoval { - public Remove(ItemStack stack) { - super("Precision Sawmill", Recipe.PRECISION_SAWMILL.get(), stack); + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static void removeRecipe(IIngredient itemInput, @Optional IIngredient itemOutput, @Optional IIngredient optionalItemOutput) { + if(itemInput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; } - - //We must search through the recipe entries so that we can assign the correct key for removal - @Override - public void apply() { - for (Map.Entry entry : ((Map) map).entrySet()) { - if (entry.getKey() != null && areEqual(entry.getKey(), (ItemStack) stack)) { - key = entry.getKey(); - break; - } - } - - super.apply(); + + if(itemOutput == null) itemOutput = IngredientAny.INSTANCE; + if(optionalItemOutput == null) optionalItemOutput = IngredientAny.INSTANCE; + + Map recipes = new HashMap(); + + for(Entry entry : ((Map)Recipe.PRECISION_SAWMILL.get()).entrySet() ) { + IItemStack inputItem = InputHelper.toIItemStack(entry.getKey().ingredient); + IItemStack outputItem = InputHelper.toIItemStack(entry.getValue().recipeOutput.primaryOutput); + IItemStack outputItemOptional = InputHelper.toIItemStack(entry.getValue().recipeOutput.secondaryOutput); + + if(!StackHelper.matches(itemOutput, outputItem)) continue; + if(!StackHelper.matches(itemInput, inputItem)) continue; + if(!StackHelper.matches(optionalItemOutput, outputItemOptional)) continue; + + recipes.put(entry.getKey(), entry.getValue()); + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMekanismRecipe(name, Recipe.PRECISION_SAWMILL.get(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s and %s. Command ignored!", name, itemInput.toString(), itemOutput.toString())); } } } diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/Separator.java b/src/main/java/modtweaker2/mods/mekanism/handlers/Separator.java index af08c3f..09c2b7d 100644 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/Separator.java +++ b/src/main/java/modtweaker2/mods/mekanism/handlers/Separator.java @@ -3,70 +3,81 @@ package modtweaker2.mods.mekanism.handlers; import static modtweaker2.helpers.InputHelper.toFluid; import static modtweaker2.mods.mekanism.MekanismHelper.toGas; +import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.ChemicalPairInput; +import mekanism.common.recipe.inputs.FluidInput; +import mekanism.common.recipe.inputs.MachineInput; +import mekanism.common.recipe.machines.MachineRecipe; import mekanism.common.recipe.machines.SeparatorRecipe; -import mekanism.common.recipe.outputs.ChemicalPairOutput; import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; +import minetweaker.api.item.IngredientAny; import minetweaker.api.liquid.ILiquidStack; -import modtweaker2.mods.mekanism.Mekanism; +import modtweaker2.helpers.InputHelper; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; import modtweaker2.mods.mekanism.gas.IGasStack; +import modtweaker2.mods.mekanism.gas.MCGasStack; import modtweaker2.mods.mekanism.util.AddMekanismRecipe; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraftforge.fluids.FluidStack; +import modtweaker2.mods.mekanism.util.RemoveMekanismRecipe; +import stanhebben.zenscript.annotations.Optional; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.mekanism.Separator") public class Separator { + + public static final String name = "Mekanism Separator"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings("unchecked") @ZenMethod - public static void addRecipe(ILiquidStack input, IGasStack gas1, IGasStack gas2) { - if (Mekanism.v7) - { - ChemicalPairInput pair = new ChemicalPairInput(toGas(gas1), toGas(gas2)); - MineTweakerAPI.apply(new AddMekanismRecipe("ELECTROLYTIC_SEPARATOR", Recipe.ELECTROLYTIC_SEPARATOR.get(), toFluid(input), pair)); - } else - { - throw new UnsupportedOperationException("Syntax for v8 is: Fluid, Energy, Gas, Gas"); + public static void addRecipe(ILiquidStack liquidInput, double energy, IGasStack leftGasOutput, IGasStack rightGasOutput) { + if(liquidInput == null || leftGasOutput == null || rightGasOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; } + + SeparatorRecipe recipe = new SeparatorRecipe(toFluid(liquidInput), energy, toGas(leftGasOutput), toGas(rightGasOutput)); + + MineTweakerAPI.apply(new AddMekanismRecipe(name, Recipe.ELECTROLYTIC_SEPARATOR.get(), recipe)); } - + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @SuppressWarnings({ "rawtypes", "unchecked" }) @ZenMethod - public static void addRecipe(ILiquidStack input, double energy, IGasStack gas1, IGasStack gas2) { - if (Mekanism.v7) - { - throw new UnsupportedOperationException("Syntax for v7 is: Fluid, Gas, Gas"); - } else - { - SeparatorRecipe recipe = new SeparatorRecipe(toFluid(input), energy, toGas(gas1), toGas(gas2)); - MineTweakerAPI.apply(new AddMekanismRecipe("ELECTROLYTIC_SEPARATOR", Recipe.ELECTROLYTIC_SEPARATOR.get(), recipe.getInput(), recipe)); + public static void removeRecipe(IIngredient liquidInput, @Optional IIngredient leftGasInput, @Optional IIngredient rightGasInput) { + if(liquidInput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; } - } - - @ZenMethod - public static void removeRecipe(ILiquidStack input) { - if (!Mekanism.v7) throw new UnsupportedOperationException("Function not added to v8 compatibility yet"); - MineTweakerAPI.apply(new Remove(toFluid(input))); - } - - private static class Remove extends BaseMapRemoval { - public Remove(FluidStack stack) { - super("Electrolytic Separator", Recipe.ELECTROLYTIC_SEPARATOR.get(), stack); + + if(leftGasInput == null) leftGasInput = IngredientAny.INSTANCE; + if(rightGasInput == null) leftGasInput = IngredientAny.INSTANCE; + + Map recipes = new HashMap(); + + for(Entry entry : ((Map)Recipe.ELECTROLYTIC_SEPARATOR.get()).entrySet() ) { + ILiquidStack inputLiquid = InputHelper.toILiquidStack(entry.getKey().ingredient); + IGasStack outputItemLeft = new MCGasStack(entry.getValue().recipeOutput.leftGas); + IGasStack outputItemRight = new MCGasStack(entry.getValue().recipeOutput.rightGas); + + if(!StackHelper.matches(liquidInput, inputLiquid)) continue; + if(!StackHelper.matches(leftGasInput, outputItemLeft)) continue; + if(!StackHelper.matches(rightGasInput, outputItemRight)) continue; + + recipes.put(entry.getKey(), entry.getValue()); } - - //We must search through the recipe entries so that we can assign the correct key for removal - @Override - public void apply() { - for (Map.Entry entry : ((Map) map).entrySet()) { - if (entry.getKey() != null && entry.getKey().isFluidEqual((FluidStack) stack)) { - key = entry.getKey(); - break; - } - } - - super.apply(); + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new RemoveMekanismRecipe(name, Recipe.ELECTROLYTIC_SEPARATOR.get(), recipes)); + } else { + LogHelper.logWarning(String.format("No %s recipe found for %s, %s and %s. Command ignored!", name, liquidInput.toString(), leftGasInput.toString(), rightGasInput.toString())); } } } diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalCrystallizer.java b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalCrystallizer.java deleted file mode 100644 index b8e37e4..0000000 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalCrystallizer.java +++ /dev/null @@ -1,85 +0,0 @@ -package modtweaker2.mods.mekanism.handlers.v8; - -import static modtweaker2.mods.mekanism.MekanismHelper.toGas; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import mekanism.api.gas.GasStack; -import mekanism.common.KeySync.KeySet; -import mekanism.common.recipe.RecipeHandler; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.GasInput; -import mekanism.common.recipe.machines.CrystallizerRecipe; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.helpers.InputHelper; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.utils.BaseMapAddition; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.chemical.Crystallizer") -public class ChemicalCrystallizer { - - @ZenMethod - public static void addRecipe(IItemStack output, IGasStack input) { - MineTweakerAPI.apply(new Add(new ChemicalCrystallizerRecipe(toGas(input), InputHelper.toStack(output)))); - } - - private static class Add extends BaseMapAddition { - - public Add(ChemicalCrystallizerRecipe recipe) { - super("Chemical Crystallizer", Recipe.CHEMICAL_CRYSTALLIZER.get(), recipe.inputGas, recipe.outputItem); - } - - @Override - public void apply() { - RecipeHandler.addChemicalCrystallizerRecipe((GasStack) key, (ItemStack) recipe); - } - - } - - private static class ChemicalCrystallizerRecipe { - public GasStack inputGas; - public ItemStack outputItem; - - public ChemicalCrystallizerRecipe(GasStack inputGas, ItemStack outputItem) { - this.inputGas = inputGas; - this.outputItem = outputItem; - - } - } - - @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); - } - - private static class Remove extends BaseMapRemoval { - - public Remove(ItemStack stack) { - super("Chemical Crystallizer", Recipe.CHEMICAL_CRYSTALLIZER.get(), stack); - } - - @SuppressWarnings("unchecked") - @Override - public void apply() { - List gasesToRemove = new ArrayList(); - for(GasInput stack : (Set)Recipe.CHEMICAL_CRYSTALLIZER.get().keySet()){ - CrystallizerRecipe crystalRecipe= (CrystallizerRecipe)Recipe.CHEMICAL_CRYSTALLIZER.get().get(stack); - if(crystalRecipe.getOutput().output.isItemEqual((ItemStack) this.stack)){ - gasesToRemove.add(stack); - } - } - for(GasInput stack : gasesToRemove){ - Recipe.CHEMICAL_CRYSTALLIZER.get().remove(stack); - } - } - - } -} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalDissolution.java b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalDissolution.java deleted file mode 100644 index 0cd5c61..0000000 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalDissolution.java +++ /dev/null @@ -1,84 +0,0 @@ -package modtweaker2.mods.mekanism.handlers.v8; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import mekanism.api.gas.GasStack; -import mekanism.common.recipe.RecipeHandler; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.ItemStackInput; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.helpers.InputHelper; -import modtweaker2.mods.mekanism.MekanismHelper; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.utils.BaseMapAddition; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.chemical.Dissolution") -public class ChemicalDissolution { - - @ZenMethod - public static void addRecipe(IGasStack output, IItemStack input) { - MineTweakerAPI.apply(new Add(new DissolutionRecipe(MekanismHelper.toGas(output), InputHelper.toStack(input)))); - } - - private static class Add extends BaseMapAddition { - - public DissolutionRecipe recipe; - - public Add(DissolutionRecipe recipe) { - super("Dissolution Infuser", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), recipe.input, recipe.output); - this.recipe = recipe; - } - - @Override - public void apply() { - RecipeHandler.addChemicalDissolutionChamberRecipe(recipe.input, recipe.output); - - } - } - - private static class DissolutionRecipe { - public GasStack output; - public ItemStack input; - - public DissolutionRecipe(GasStack output, ItemStack input) { - this.output = output; - this.input = input; - } - - } - - @ZenMethod - public static void removeRecipe(IGasStack output) { - MineTweakerAPI.apply(new Remove(MekanismHelper.toGas(output))); - } - - private static class Remove extends BaseMapRemoval { - - public Remove(GasStack stack) { - super("Dissolution Infuser", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), stack); - } - - @SuppressWarnings("unchecked") - @Override - public void apply() { - List toRemove = new ArrayList(); - for (ItemStackInput stack : (Set) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().keySet()) { - mekanism.common.recipe.machines.DissolutionRecipe recipe = (mekanism.common.recipe.machines.DissolutionRecipe) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().get(stack); - if (recipe.getOutput().output.isGasEqual((GasStack) this.stack)) { - toRemove.add(stack); - } - } - for (ItemStackInput stack : toRemove) { - Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().remove(stack); - } - } - - } -} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInfuser.java b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInfuser.java deleted file mode 100644 index fae3b50..0000000 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInfuser.java +++ /dev/null @@ -1,85 +0,0 @@ -package modtweaker2.mods.mekanism.handlers.v8; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import mekanism.api.gas.GasStack; -import mekanism.common.recipe.RecipeHandler; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.ChemicalPairInput; -import mekanism.common.recipe.machines.ChemicalInfuserRecipe; -import mekanism.common.recipe.outputs.GasOutput; -import minetweaker.MineTweakerAPI; -import modtweaker2.mods.mekanism.MekanismHelper; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.utils.BaseMapAddition; -import modtweaker2.utils.BaseMapRemoval; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.chemical.Infuser") -public class ChemicalInfuser { - - @ZenMethod - public static void addRecipe(IGasStack output, IGasStack inputLeft, IGasStack inputRight) { - MineTweakerAPI.apply(new Add(new InfuserRecipe(MekanismHelper.toGas(output), MekanismHelper.toGas(inputLeft), MekanismHelper.toGas(inputRight)))); - } - - private static class Add extends BaseMapAddition { - - public InfuserRecipe recipe; - - public Add(InfuserRecipe recipe) { - super("Chemical Infuser", Recipe.CHEMICAL_INFUSER.get(), new ChemicalPairInput(recipe.inputLeft, recipe.inputRight), new GasOutput(recipe.output)); - this.recipe = recipe; - } - - @Override - public void apply() { - RecipeHandler.addChemicalInfuserRecipe(recipe.inputLeft, recipe.inputRight, recipe.output); - - } - } - - private static class InfuserRecipe { - public GasStack output; - public GasStack inputLeft; - public GasStack inputRight; - - public InfuserRecipe(GasStack output, GasStack inputLeft, GasStack inputRight) { - this.output = output; - this.inputLeft = inputLeft; - this.inputRight = inputRight; - } - - } - - @ZenMethod - public static void removeRecipe(IGasStack output) { - MineTweakerAPI.apply(new Remove(MekanismHelper.toGas(output))); - } - - private static class Remove extends BaseMapRemoval { - - public Remove(GasStack stack) { - super("Chemical Infuser", Recipe.CHEMICAL_INFUSER.get(), stack); - } - - @SuppressWarnings("unchecked") - @Override - public void apply() { - List toRemove = new ArrayList(); - for (ChemicalPairInput stack : (Set) Recipe.CHEMICAL_INFUSER.get().keySet()) { - ChemicalInfuserRecipe recipe = (ChemicalInfuserRecipe) Recipe.CHEMICAL_INFUSER.get().get(stack); - if (recipe.getOutput().output.isGasEqual((GasStack)this.stack)) { - toRemove.add(stack); - } - } - for (ChemicalPairInput stack : toRemove) { - Recipe.CHEMICAL_INFUSER.get().remove(stack); - } - } - - } -} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInjection.java b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInjection.java deleted file mode 100644 index 1a6eab0..0000000 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/ChemicalInjection.java +++ /dev/null @@ -1,86 +0,0 @@ -package modtweaker2.mods.mekanism.handlers.v8; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import mekanism.api.gas.GasStack; -import mekanism.common.recipe.RecipeHandler; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.AdvancedMachineInput; -import mekanism.common.recipe.outputs.ItemStackOutput; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.helpers.InputHelper; -import modtweaker2.mods.mekanism.MekanismHelper; -import modtweaker2.mods.mekanism.gas.IGasStack; -import modtweaker2.utils.BaseMapAddition; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.chemical.Injection") -public class ChemicalInjection { - - @ZenMethod - public static void addRecipe(IItemStack output, IItemStack input, IGasStack gas) { - MineTweakerAPI.apply(new Add(new InjectionRecipe(InputHelper.toStack(output), InputHelper.toStack(input), MekanismHelper.toGas(gas)))); - } - - private static class Add extends BaseMapAddition { - - public InjectionRecipe recipe; - - public Add(InjectionRecipe recipe) { - super("Chemical Injection", Recipe.CHEMICAL_INJECTION_CHAMBER.get(), recipe.input, recipe.output); - this.recipe = recipe; - } - - @Override - public void apply() { - RecipeHandler.addChemicalInjectionChamberRecipe(recipe.input, recipe.gas.getGas().getLocalizedName(), recipe.output); - } - } - - private static class InjectionRecipe { - public ItemStack output; - public ItemStack input; - public GasStack gas; - - public InjectionRecipe(ItemStack output, ItemStack input, GasStack gas) { - this.output = output; - this.input = input; - this.gas = gas; - } - - } - - @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); - } - - private static class Remove extends BaseMapRemoval { - - public Remove(ItemStack output) { - super("Chemical Injection", Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get(), output); - } - - @SuppressWarnings("unchecked") - @Override - public void apply() { - List toRemove = new ArrayList(); - for (AdvancedMachineInput stack : (Set) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().keySet()) { - ItemStackOutput recipe = (ItemStackOutput) Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().get(stack); - if (recipe.output.isItemEqual((ItemStack)this.stack)) { - toRemove.add(stack); - } - } - for (AdvancedMachineInput stack : toRemove) { - Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().remove(stack); - } - } - - } -} diff --git a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/Infuser.java b/src/main/java/modtweaker2/mods/mekanism/handlers/v8/Infuser.java deleted file mode 100644 index 00dfaec..0000000 --- a/src/main/java/modtweaker2/mods/mekanism/handlers/v8/Infuser.java +++ /dev/null @@ -1,90 +0,0 @@ -package modtweaker2.mods.mekanism.handlers.v8; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import mekanism.api.infuse.InfuseRegistry; -import mekanism.api.infuse.InfuseType; -import mekanism.common.recipe.RecipeHandler; -import mekanism.common.recipe.RecipeHandler.Recipe; -import mekanism.common.recipe.inputs.InfusionInput; -import mekanism.common.recipe.machines.MetallurgicInfuserRecipe; -import mekanism.common.recipe.outputs.ItemStackOutput; -import minetweaker.MineTweakerAPI; -import minetweaker.api.item.IItemStack; -import modtweaker2.helpers.InputHelper; -import modtweaker2.utils.BaseMapAddition; -import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; -import stanhebben.zenscript.annotations.ZenClass; -import stanhebben.zenscript.annotations.ZenMethod; - -@ZenClass("mods.mekanism.Infuser") -public class Infuser { - - @ZenMethod - public static void addRecipe(IItemStack output, IItemStack input, int amount, String infuseType) { - InfuseType type = InfuseRegistry.get(infuseType); - MineTweakerAPI.apply(new Add(new InfuserRecipe(InputHelper.toStack(output), InputHelper.toStack(input), amount, type))); - } - - private static class Add extends BaseMapAddition { - - public InfuserRecipe recipe; - - public Add(InfuserRecipe recipe) { - super("Metallurgic Infuser", Recipe.METALLURGIC_INFUSER.get(), new InfusionInput(recipe.type, recipe.amount, recipe.input), new ItemStackOutput(recipe.output)); - this.recipe = recipe; - } - - @Override - public void apply() { - RecipeHandler.addMetallurgicInfuserRecipe(recipe.type, recipe.amount, recipe.input, recipe.output); - - } - } - - private static class InfuserRecipe { - public ItemStack output; - public ItemStack input; - public int amount; - public InfuseType type; - - public InfuserRecipe(ItemStack output, ItemStack input, int amount, InfuseType type) { - this.output = output; - this.input = input; - this.amount = amount; - this.type = type; - } - - } - - @ZenMethod - public static void removeRecipe(IItemStack output) { - MineTweakerAPI.apply(new Remove(InputHelper.toStack(output))); - } - - private static class Remove extends BaseMapRemoval { - - public Remove(ItemStack stack) { - super("Metallurgic Infuser", Recipe.METALLURGIC_INFUSER.get(), stack); - } - - @SuppressWarnings("unchecked") - @Override - public void apply() { - List toRemove = new ArrayList(); - for (InfusionInput stack : (Set) Recipe.METALLURGIC_INFUSER.get().keySet()) { - MetallurgicInfuserRecipe recipe = (MetallurgicInfuserRecipe) Recipe.METALLURGIC_INFUSER.get().get(stack); - if (recipe.getOutput().output.isItemEqual((ItemStack) this.stack)) { - toRemove.add(stack); - } - } - for (InfusionInput stack : toRemove) { - Recipe.METALLURGIC_INFUSER.get().remove(stack); - } - } - - } -} diff --git a/src/main/java/modtweaker2/mods/mekanism/util/AddMekanismRecipe.java b/src/main/java/modtweaker2/mods/mekanism/util/AddMekanismRecipe.java index 92d3ad8..148c948 100644 --- a/src/main/java/modtweaker2/mods/mekanism/util/AddMekanismRecipe.java +++ b/src/main/java/modtweaker2/mods/mekanism/util/AddMekanismRecipe.java @@ -1,67 +1,43 @@ package modtweaker2.mods.mekanism.util; import java.util.Map; +import java.util.Map.Entry; -import mekanism.api.gas.GasStack; -import mekanism.common.recipe.inputs.ChemicalPairInput; -import mekanism.common.recipe.inputs.InfusionInput; -import mekanism.common.recipe.machines.PressurizedRecipe; -import mekanism.common.recipe.outputs.ChanceOutput; -import mekanism.common.recipe.outputs.ChemicalPairOutput; -import mekanism.common.recipe.outputs.PressurizedOutput; -import modtweaker2.mods.mekanism.Mekanism; +import mekanism.common.recipe.inputs.MachineInput; +import mekanism.common.recipe.machines.CombinerRecipe; +import mekanism.common.recipe.machines.CrusherRecipe; +import mekanism.common.recipe.machines.CrystallizerRecipe; +import mekanism.common.recipe.machines.MachineRecipe; +import mekanism.common.recipe.outputs.ItemStackOutput; +import mekanism.common.recipe.outputs.MachineOutput; +import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseMapAddition; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; -public class AddMekanismRecipe extends BaseMapAddition { - public AddMekanismRecipe(String str, Map map, Object key, Object recipe) { - super(str.toLowerCase(), map, key, recipe); +@SuppressWarnings("rawtypes") +public class AddMekanismRecipe extends BaseMapAddition { + public AddMekanismRecipe(String name, Map map, Map recipes) { + super(name, map, recipes); } - - @Override - public String describe() { - if (Mekanism.v7) { - if (recipe instanceof ItemStack) - return "Adding " + description + " Recipe for : " + ((ItemStack) recipe).getDisplayName(); - else if (recipe instanceof FluidStack) - return "Adding " + description + " Recipe for : " + ((FluidStack) recipe).getFluid().getLocalizedName(); - else if (recipe instanceof ChemicalPairInput) - return "Adding " + description + " Recipe for : " + ((ChemicalPairInput) recipe).leftGas.getGas().getLocalizedName(); - else if (recipe instanceof ChanceOutput) - return "Adding " + description + " Recipe for : " + ((ChanceOutput) recipe).primaryOutput.getDisplayName(); - else if (recipe instanceof GasStack) - return "Adding " + description + " Recipe for : " + ((GasStack) recipe).getGas().getLocalizedName(); - else if (recipe instanceof PressurizedRecipe) - return "Adding " + description + " Recipe for : " + ((PressurizedRecipe) recipe).getOutput().getItemOutput().getDisplayName(); - else if (recipe instanceof InfusionInput) - return "Adding " + description + " Recipe for : " + ((InfusionInput) recipe).inputStack.getDisplayName(); - else - return super.getRecipeInfo(); - } - return ""; + + public AddMekanismRecipe(String name, Map map, MachineRecipe recipe) { + super(name, map); + + recipes.put(recipe.getInput(), recipe); } - + @Override - public String describeUndo() { - if (Mekanism.isV7()) { - 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(); - else if (recipe instanceof ChemicalPairOutput) - return "Removing " + description + " Recipe for : " + ((ChemicalPairOutput) recipe).leftGas.getGas().getLocalizedName(); - else if (recipe instanceof ChanceOutput) - return "Removing " + description + " Recipe for : " + ((ChanceOutput) recipe).primaryOutput.getDisplayName(); - else if (recipe instanceof GasStack) - return "Removing " + description + " Recipe for : " + ((GasStack) recipe).getGas().getLocalizedName(); - else if (recipe instanceof PressurizedOutput) - return "Removing " + description + " Recipe for : " + ((PressurizedOutput) recipe).getItemOutput().getDisplayName(); - else if (recipe instanceof InfusionInput) - return "Removing " + description + " Recipe for : " + ((InfusionInput) recipe).inputStack.getDisplayName(); - else - return super.getRecipeInfo(); - } - return ""; + protected String getRecipeInfo(Entry recipe) { + MachineRecipe machineRecipe = recipe.getValue(); + MachineOutput output = recipe.getValue().recipeOutput; + + if(machineRecipe instanceof CombinerRecipe) { + return LogHelper.getStackDescription(((ItemStackOutput)output).output); + } else if (machineRecipe instanceof CrusherRecipe) { + return LogHelper.getStackDescription(((ItemStackOutput)output).output); + } else if (machineRecipe instanceof CrystallizerRecipe) { + return LogHelper.getStackDescription(((ItemStackOutput)output).output); + } + + return null; } } diff --git a/src/main/java/modtweaker2/mods/mekanism/util/RemoveMekanismRecipe.java b/src/main/java/modtweaker2/mods/mekanism/util/RemoveMekanismRecipe.java index 7b83eb3..d77e2dd 100644 --- a/src/main/java/modtweaker2/mods/mekanism/util/RemoveMekanismRecipe.java +++ b/src/main/java/modtweaker2/mods/mekanism/util/RemoveMekanismRecipe.java @@ -1,150 +1,37 @@ package modtweaker2.mods.mekanism.util; -import static modtweaker2.helpers.StackHelper.areEqual; - -import java.util.Iterator; import java.util.Map; +import java.util.Map.Entry; -import mekanism.api.gas.GasStack; -import mekanism.common.recipe.inputs.InfusionInput; -import mekanism.common.recipe.inputs.PressurizedInput; -import mekanism.common.recipe.machines.PressurizedRecipe; -import mekanism.common.recipe.outputs.ChanceOutput; -import mekanism.common.recipe.outputs.ChemicalPairOutput; -import mekanism.common.recipe.outputs.PressurizedOutput; +import mekanism.common.recipe.inputs.MachineInput; +import mekanism.common.recipe.machines.CombinerRecipe; +import mekanism.common.recipe.machines.CrusherRecipe; +import mekanism.common.recipe.machines.CrystallizerRecipe; +import mekanism.common.recipe.machines.MachineRecipe; +import mekanism.common.recipe.outputs.ItemStackOutput; +import mekanism.common.recipe.outputs.MachineOutput; +import modtweaker2.helpers.LogHelper; import modtweaker2.utils.BaseMapRemoval; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; -public class RemoveMekanismRecipe extends BaseMapRemoval { - private Object tmp; - - public RemoveMekanismRecipe(String string, Map map, Object key) { - super(string.toLowerCase().replace('_', ' '), map, key, null); - this.tmp = key; - } - - @Override - public void apply() { - try { - Iterator it = map.entrySet().iterator(); - - while (it.hasNext()) { - Map.Entry pairs = (Map.Entry) it.next(); - if (pairs != null) { - Object value = pairs.getValue(); - if (value != null && tmp != null) { - if (tmp instanceof ItemStack && value instanceof ItemStack) { - if (areEqual(((ItemStack) tmp), (ItemStack) value)) { - key = pairs.getKey(); - break; - } - } - - if (tmp instanceof FluidStack && value instanceof FluidStack) { - if (((FluidStack) tmp).isFluidEqual((FluidStack) value)) { - key = pairs.getKey(); - break; - } - } - - if (tmp instanceof GasStack && value instanceof GasStack) { - if (((GasStack) tmp).isGasEqual((GasStack) value)) { - key = pairs.getKey(); - break; - } - } - - if (tmp instanceof ItemStack && value instanceof InfusionInput) { - if (areEqual(((ItemStack) tmp), ((InfusionInput) value).inputStack)) { - key = pairs.getKey(); - break; - } - } - - if (tmp instanceof ChemicalPairOutput && value instanceof ChemicalPairOutput) { - ChemicalPairOutput par1 = (ChemicalPairOutput) tmp; - ChemicalPairOutput par2 = (ChemicalPairOutput) value; - if (par1.leftGas.isGasEqual(par2.leftGas) && par1.rightGas.isGasEqual(par2.rightGas)) { - key = pairs.getKey(); - break; - } - } - - if (tmp instanceof ChanceOutput && value instanceof ChanceOutput) { - ChanceOutput par1 = (ChanceOutput) tmp; - ChanceOutput par2 = (ChanceOutput) value; - if (areEqual(par1.primaryOutput, par2.primaryOutput)) { - if (par1.secondaryOutput == null || (par1.secondaryOutput != null && par2.secondaryOutput != null && areEqual(par1.secondaryOutput, par2.secondaryOutput))) { - key = pairs.getKey(); - break; - } - } - } - - if (tmp instanceof PressurizedOutput && value instanceof PressurizedRecipe) { - PressurizedOutput par1 = (PressurizedOutput) tmp; - PressurizedOutput par2 = ((PressurizedRecipe) value).recipeOutput; - if (areEqual(par1.getItemOutput(), (par2.getItemOutput()))) { - if (par1.getGasOutput().isGasEqual(par2.getGasOutput())) { - key = pairs.getKey(); - break; - - } - } - } - } - - it.remove(); - } - } - - recipe = map.get(key); - - } catch (Exception e) { - e.printStackTrace(); - } - - map.remove(key); - } - - @Override - public String describe() { - if (tmp instanceof ItemStack) - return "Removing " + description + " Recipe for : " + ((ItemStack) tmp).getDisplayName(); - else if (tmp instanceof FluidStack) - return "Removing " + description + " Recipe for : " + ((FluidStack) tmp).getFluid().getLocalizedName(); - else if (tmp instanceof ChemicalPairOutput) - return "Removing " + description + " Recipe for : " + ((ChemicalPairOutput) tmp).leftGas.getGas().getLocalizedName(); - else if (tmp instanceof ChanceOutput) - return "Removing " + description + " Recipe for : " + ((ChanceOutput) tmp).primaryOutput.getDisplayName(); - else if (tmp instanceof GasStack) - return "Removing " + description + " Recipe for : " + ((GasStack) tmp).getGas().getLocalizedName(); - else if (tmp instanceof PressurizedInput) - return "Removing " + description + " Recipe for : " + ((PressurizedInput) tmp).getSolid().getDisplayName(); - else if (tmp instanceof InfusionInput) - return "Removing " + description + " Recipe for : " + ((InfusionInput) tmp).inputStack.getDisplayName(); - else - return super.getRecipeInfo(); - } - - @Override - public String describeUndo() { - if (tmp instanceof ItemStack) - return "Restoring " + description + " Recipe for : " + ((ItemStack) tmp).getDisplayName(); - else if (tmp instanceof FluidStack) - return "Restoring " + description + " Recipe for : " + ((FluidStack) tmp).getFluid().getLocalizedName(); - else if (tmp instanceof ChemicalPairOutput) - return "Restoring " + description + " Recipe for : " + ((ChemicalPairOutput) tmp).leftGas.getGas().getLocalizedName(); - else if (tmp instanceof ChanceOutput) - return "Restoring " + description + " Recipe for : " + ((ChanceOutput) tmp).primaryOutput.getDisplayName(); - else if (tmp instanceof GasStack) - return "Restoring " + description + " Recipe for : " + ((GasStack) tmp).getGas().getLocalizedName(); - else if (tmp instanceof PressurizedInput) - return "Restoring " + description + " Recipe for : " + ((PressurizedInput) tmp).getSolid().getDisplayName(); - else if (tmp instanceof InfusionInput) - return "Restoring " + description + " Recipe for : " + ((InfusionInput) tmp).inputStack.getDisplayName(); - else - return super.getRecipeInfo(); +@SuppressWarnings("rawtypes") +public class RemoveMekanismRecipe extends BaseMapRemoval { + public RemoveMekanismRecipe(String name, Map map, Map recipes) { + super(name, map, recipes); } + + @Override + protected String getRecipeInfo(Entry recipe) { + MachineRecipe machineRecipe = recipe.getValue(); + MachineOutput output = recipe.getValue().recipeOutput; + + if(machineRecipe instanceof CombinerRecipe) { + return LogHelper.getStackDescription(((ItemStackOutput)output).output); + } else if (machineRecipe instanceof CrusherRecipe) { + return LogHelper.getStackDescription(((ItemStackOutput)output).output); + } else if (machineRecipe instanceof CrystallizerRecipe) { + return LogHelper.getStackDescription(((ItemStackOutput)output).output); + } + + return null; + } } diff --git a/src/main/java/modtweaker2/utils/BaseMapAddition.java b/src/main/java/modtweaker2/utils/BaseMapAddition.java index 424ae6f..67bbfca 100644 --- a/src/main/java/modtweaker2/utils/BaseMapAddition.java +++ b/src/main/java/modtweaker2/utils/BaseMapAddition.java @@ -67,11 +67,11 @@ public abstract class BaseMapAddition extends BaseMapModification { @Override public String describe() { - return String.format("Adding %d %s Recipe(s) for %s", recipes.size(), name, getRecipeInfo()); + return String.format("[ModTweaker2] Adding %d %s Recipe(s) for %s", recipes.size(), name, getRecipeInfo()); } @Override public String describeUndo() { - return String.format("Removing %d %s Recipe(s) for %s", recipes.size(), name, getRecipeInfo()); + return String.format("[ModTweaker2] Removing %d %s Recipe(s) for %s", recipes.size(), name, getRecipeInfo()); } } From 3c7d6c120e6501d561bfb8c31007003ad2f92356 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Mon, 13 Jul 2015 21:11:01 +0200 Subject: [PATCH 29/31] Fixed Bug in ExNihilo recipe handlers --- src/main/java/modtweaker2/mods/exnihilo/handlers/Hammer.java | 4 ++-- src/main/java/modtweaker2/mods/exnihilo/handlers/Sieve.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/modtweaker2/mods/exnihilo/handlers/Hammer.java b/src/main/java/modtweaker2/mods/exnihilo/handlers/Hammer.java index 03be181..27242ce 100644 --- a/src/main/java/modtweaker2/mods/exnihilo/handlers/Hammer.java +++ b/src/main/java/modtweaker2/mods/exnihilo/handlers/Hammer.java @@ -83,7 +83,7 @@ public class Hammer { for(Entry> entry : recipes.entrySet()) { if(!map.containsKey(entry.getKey())) { // no recipe for input available, add new entry - map.put(entry.getKey(), entry.getValue()); + map.put(entry.getKey(), new ArrayList(entry.getValue())); } else { // recipes already available, add to present list ArrayList list = map.get(entry.getKey()); @@ -216,7 +216,7 @@ public class Hammer { public void undo() { for(Entry> entry : successful.entrySet()) { if(!map.containsKey(entry.getKey())) { - map.put(entry.getKey(), entry.getValue()); + map.put(entry.getKey(), new ArrayList(entry.getValue())); } else { map.get(entry.getKey()).addAll(entry.getValue()); } diff --git a/src/main/java/modtweaker2/mods/exnihilo/handlers/Sieve.java b/src/main/java/modtweaker2/mods/exnihilo/handlers/Sieve.java index 48acd00..bcd929a 100644 --- a/src/main/java/modtweaker2/mods/exnihilo/handlers/Sieve.java +++ b/src/main/java/modtweaker2/mods/exnihilo/handlers/Sieve.java @@ -84,7 +84,7 @@ public class Sieve { for(Entry> entry : recipes.entrySet()) { if(!map.containsKey(entry.getKey())) { // no recipe for input available, add new entry - map.put(entry.getKey(), entry.getValue()); + map.put(entry.getKey(), new ArrayList(entry.getValue())); } else { // recipes already available, add to present list ArrayList list = map.get(entry.getKey()); @@ -233,7 +233,7 @@ public class Sieve { public void undo() { for(Entry> entry : successful.entrySet()) { if(!map.containsKey(entry.getKey())) { - map.put(entry.getKey(), entry.getValue()); + map.put(entry.getKey(), new ArrayList(entry.getValue())); } else { map.get(entry.getKey()).addAll(entry.getValue()); } From 9a9f6ccaf29c777cace1bc1776179768bbb80b34 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Mon, 13 Jul 2015 21:36:01 +0200 Subject: [PATCH 30/31] Added Thermal Expansion Insolator support --- .../mods/thermalexpansion/ThermalHelper.java | 40 ++++ .../commands/ThermalExpansionLogger.java | 23 +++ .../thermalexpansion/handlers/Furnace.java | 2 +- .../thermalexpansion/handlers/Insolator.java | 190 ++++++++++++++++++ 4 files changed, 254 insertions(+), 1 deletion(-) create mode 100644 src/main/java/modtweaker2/mods/thermalexpansion/handlers/Insolator.java diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java b/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java index d383efe..8b4b867 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/ThermalHelper.java @@ -10,6 +10,7 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import cofh.thermalexpansion.util.crafting.CrucibleManager.RecipeCrucible; import cofh.thermalexpansion.util.crafting.FurnaceManager.RecipeFurnace; +import cofh.thermalexpansion.util.crafting.InsolatorManager.RecipeInsolator; import cofh.thermalexpansion.util.crafting.PulverizerManager.RecipePulverizer; import cofh.thermalexpansion.util.crafting.SawmillManager.RecipeSawmill; import cofh.thermalexpansion.util.crafting.SmelterManager.RecipeSmelter; @@ -18,6 +19,7 @@ import cofh.thermalexpansion.util.crafting.TransposerManager.RecipeTransposer; public class ThermalHelper { public static Constructor crucibleRecipe; public static Constructor furanceRecipe; + public static Constructor insolatorRecipe; public static Constructor pulverizerRecipe; public static Constructor sawmillRecipe; public static Constructor smelterRecipe; @@ -27,6 +29,7 @@ public class ThermalHelper { try { crucibleRecipe = getConstructor(RecipeCrucible.class, ItemStack.class, FluidStack.class, int.class); furanceRecipe = getConstructor(RecipeFurnace.class, ItemStack.class, ItemStack.class, int.class); + insolatorRecipe = getConstructor(RecipeInsolator.class, ItemStack.class, ItemStack.class, ItemStack.class, ItemStack.class, int.class, int.class); pulverizerRecipe = getConstructor(RecipePulverizer.class, ItemStack.class, ItemStack.class, ItemStack.class, int.class, int.class); sawmillRecipe = getConstructor(RecipeSawmill.class, ItemStack.class, ItemStack.class, ItemStack.class, int.class, int.class); smelterRecipe = getConstructor(RecipeSmelter.class, ItemStack.class, ItemStack.class, ItemStack.class, ItemStack.class, int.class, int.class); @@ -185,6 +188,43 @@ public class ThermalHelper { return true; } + public static boolean equals(RecipeInsolator r1, RecipeInsolator r2) { + if(r1 == r2) { + return true; + } + + if(r1 == null || r2 == null) { + return false; + } + + if(!areEqualOrNull(r1.getPrimaryInput(), r2.getPrimaryInput())) { + return false; + } + + if(!areEqualOrNull(r1.getSecondaryInput(), r2.getSecondaryInput())) { + return false; + } + + if(r1.getEnergy() != r2.getEnergy()) { + return false; + } + + if(!areEqualOrNull(r1.getPrimaryOutput(), r2.getPrimaryOutput())) { + return false; + } + + if(!areEqualOrNull(r1.getSecondaryOutput(), r2.getSecondaryOutput())) { + return false; + } + + if(r1.getSecondaryOutput() != null && r2.getSecondaryOutput() != null && + r1.getSecondaryOutputChance() != r2.getSecondaryOutputChance()) { + return false; + } + + return true; + } + public static boolean equals(RecipeTransposer r1, RecipeTransposer r2) { if(r1 == r2) { return true; diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java b/src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java index 6f20a1b..ac90c1c 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/commands/ThermalExpansionLogger.java @@ -14,6 +14,8 @@ import cofh.thermalexpansion.util.crafting.CrucibleManager; import cofh.thermalexpansion.util.crafting.CrucibleManager.RecipeCrucible; import cofh.thermalexpansion.util.crafting.FurnaceManager; import cofh.thermalexpansion.util.crafting.FurnaceManager.RecipeFurnace; +import cofh.thermalexpansion.util.crafting.InsolatorManager; +import cofh.thermalexpansion.util.crafting.InsolatorManager.RecipeInsolator; import cofh.thermalexpansion.util.crafting.PulverizerManager; import cofh.thermalexpansion.util.crafting.PulverizerManager.RecipePulverizer; import cofh.thermalexpansion.util.crafting.SawmillManager; @@ -29,6 +31,7 @@ public class ThermalExpansionLogger implements ICommandFunction { static { validArguments.add("crucible"); validArguments.add("furnace"); + validArguments.add("insolator"); validArguments.add("pulverizer"); validArguments.add("sawmill"); validArguments.add("smelter"); @@ -62,6 +65,26 @@ public class ThermalExpansionLogger implements ICommandFunction { } } + if(args.isEmpty() || args.contains("insolator")) { + for(RecipeInsolator recipe : InsolatorManager.getRecipeList()) { + if(recipe.getSecondaryOutput() != null) { + MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Insolator.addRecipe(%d, %s, %s, %s, %s, %d);", + recipe.getEnergy(), + LogHelper.getStackDescription(recipe.getPrimaryInput()), + LogHelper.getStackDescription(recipe.getSecondaryInput()), + LogHelper.getStackDescription(recipe.getPrimaryOutput()), + LogHelper.getStackDescription(recipe.getSecondaryOutput()), + recipe.getSecondaryOutputChance())); + } else { + MineTweakerAPI.logCommand(String.format("mods.thermalexpansion.Insolator.addRecipe(%d, %s, %s, %s);", + recipe.getEnergy(), + LogHelper.getStackDescription(recipe.getPrimaryInput()), + LogHelper.getStackDescription(recipe.getSecondaryInput()), + LogHelper.getStackDescription(recipe.getPrimaryOutput()))); + } + } + } + if(args.isEmpty() || args.contains("pulverizer")) { for(RecipePulverizer recipe : PulverizerManager.getRecipeList()) { if(recipe.getSecondaryOutput() != null) { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java index 94b2e07..d40851a 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Furnace.java @@ -26,7 +26,7 @@ public class Furnace { public static final String name = "Thermal Expansion Furnace"; -// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod public static void addRecipe(int energy, IItemStack input, IItemStack output) { diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Insolator.java b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Insolator.java new file mode 100644 index 0000000..7c49d08 --- /dev/null +++ b/src/main/java/modtweaker2/mods/thermalexpansion/handlers/Insolator.java @@ -0,0 +1,190 @@ +package modtweaker2.mods.thermalexpansion.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.IUndoableAction; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; +import minetweaker.api.item.IItemStack; +import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.ReflectionHelper; +import modtweaker2.mods.thermalexpansion.ThermalHelper; +import modtweaker2.utils.BaseListAddition; +import modtweaker2.utils.BaseListRemoval; +import stanhebben.zenscript.annotations.Optional; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; +import cofh.thermalexpansion.util.crafting.InsolatorManager; +import cofh.thermalexpansion.util.crafting.InsolatorManager.RecipeInsolator; + +@ZenClass("mods.thermalexpansion.Insolator") +public class Insolator { + + public static final String name = "Thermal Expansion Insolator"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void addRecipe(int energy, IItemStack primaryInput, IItemStack secondaryInput, IItemStack primaryOutput, @Optional IItemStack secondaryOutput, @Optional int secondaryChance) { + if(primaryInput == null || secondaryInput == null || primaryOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(InsolatorManager.recipeExists(toStack(primaryInput), toStack(secondaryInput))) { + LogHelper.logWarning(String.format("Duplicate %s Recipe found for %s and %s. Command ignored!", name, primaryInput.toString(), secondaryInput.toString())); + return; + } + + RecipeInsolator recipe = ReflectionHelper.getInstance(ThermalHelper.insolatorRecipe, toStack(primaryInput), toStack(secondaryInput), toStack(primaryOutput), toStack(secondaryOutput), secondaryChance, energy); + + if(recipe != null) { + MineTweakerAPI.apply(new Add(recipe)); + } else { + LogHelper.logError(String.format("Error while creating instance for %s recipe.", name)); + } + } + + private static class Add extends BaseListAddition { + public Add(RecipeInsolator recipe) { + super(Insolator.name, null); + recipes.add(recipe); + } + + public void apply() { + for(RecipeInsolator recipe : recipes) { + boolean applied = InsolatorManager.addRecipe( + recipe.getEnergy(), + recipe.getPrimaryInput(), + recipe.getSecondaryInput(), + recipe.getPrimaryOutput(), + recipe.getSecondaryOutput(), + recipe.getSecondaryOutputChance(), + false); + + if(applied) { + successful.add(recipe); + } + } + + } + + public void undo() { + for(RecipeInsolator recipe : recipes) { + InsolatorManager.removeRecipe(recipe.getPrimaryInput(), recipe.getSecondaryInput()); + } + + } + + @Override + protected boolean equals(RecipeInsolator recipe, RecipeInsolator otherRecipe) { + return ThermalHelper.equals(recipe, otherRecipe); + } + + @Override + protected String getRecipeInfo(RecipeInsolator recipe) { + return LogHelper.getStackDescription(recipe.getPrimaryOutput()); + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void removeRecipe(IIngredient input1, IIngredient input2) { + List recipes = new LinkedList(); + + for(RecipeInsolator recipe : InsolatorManager.getRecipeList()) { + if(recipe != null && matches(input1, toIItemStack(recipe.getPrimaryInput())) && matches(input2, toIItemStack(recipe.getSecondaryInput()))) { + recipes.add(recipe); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + LogHelper.logWarning(String.format("No %s Recipes found for %s and %s.", name, input1.toString(), input2.toString())); + } + } + + private static class Remove extends BaseListRemoval { + + public Remove(List recipes) { + super(Insolator.name, null, recipes); + } + + @Override + public void apply() { + for(RecipeInsolator recipe : recipes) { + boolean removed = InsolatorManager.removeRecipe(recipe.getPrimaryInput(), recipe.getSecondaryInput()); + + if(removed) { + successful.add(recipe); + } + } + } + + @Override + public void undo() { + for(RecipeInsolator recipe : recipes) { + InsolatorManager.addRecipe( + recipe.getEnergy(), + recipe.getPrimaryInput(), + recipe.getSecondaryInput(), + recipe.getPrimaryOutput(), + recipe.getSecondaryOutput(), + recipe.getSecondaryOutputChance()); + } + } + + @Override + protected boolean equals(RecipeInsolator recipe, RecipeInsolator otherRecipe) { + return ThermalHelper.equals(recipe, otherRecipe); + } + + @Override + public String getRecipeInfo(RecipeInsolator recipe) { + return LogHelper.getStackDescription(recipe.getPrimaryOutput()); + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void refreshRecipes() { + MineTweakerAPI.apply(new Refresh()); + } + + private static class Refresh implements IUndoableAction { + + public void apply() { + InsolatorManager.refreshRecipes(); + } + + public boolean canUndo() { + return true; + } + + public String describe() { + return "Refreshing " + Insolator.name + " recipes"; + } + + public void undo() { + } + + public String describeUndo() { + return "Ignoring undo of " + Insolator.name + " recipe refresh"; + } + + public Object getOverrideKey() { + return null; + } + } + +} From 9bbd26d7ac5026c767d1977eb0c82d2272af8c48 Mon Sep 17 00:00:00 2001 From: Zixxl Date: Mon, 13 Jul 2015 21:58:48 +0200 Subject: [PATCH 31/31] Added Insolator handler to registry --- .../modtweaker2/mods/thermalexpansion/ThermalExpansion.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/modtweaker2/mods/thermalexpansion/ThermalExpansion.java b/src/main/java/modtweaker2/mods/thermalexpansion/ThermalExpansion.java index 69436ed..fc1f304 100644 --- a/src/main/java/modtweaker2/mods/thermalexpansion/ThermalExpansion.java +++ b/src/main/java/modtweaker2/mods/thermalexpansion/ThermalExpansion.java @@ -3,6 +3,7 @@ package modtweaker2.mods.thermalexpansion; import minetweaker.MineTweakerAPI; import modtweaker2.mods.thermalexpansion.handlers.Crucible; import modtweaker2.mods.thermalexpansion.handlers.Furnace; +import modtweaker2.mods.thermalexpansion.handlers.Insolator; import modtweaker2.mods.thermalexpansion.handlers.Pulverizer; import modtweaker2.mods.thermalexpansion.handlers.Sawmill; import modtweaker2.mods.thermalexpansion.handlers.Smelter; @@ -13,6 +14,7 @@ public class ThermalExpansion { public ThermalExpansion(){ MineTweakerAPI.registerClass(Crucible.class); MineTweakerAPI.registerClass(Furnace.class); + MineTweakerAPI.registerClass(Insolator.class); MineTweakerAPI.registerClass(Pulverizer.class); MineTweakerAPI.registerClass(Sawmill.class); MineTweakerAPI.registerClass(Smelter.class);

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 z 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