From 0b18e5c12e4fc2f8585260d66fdca0f805f2b15e Mon Sep 17 00:00:00 2001 From: Zixxl Date: Wed, 1 Jul 2015 11:04:44 +0200 Subject: [PATCH] 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")); + } + } + } +}