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;