Added command to print Botania recipes

This commit is contained in:
Zixxl 2015-07-01 11:04:44 +02:00
parent a0a8f2f26e
commit 0b18e5c12e
6 changed files with 149 additions and 58 deletions

View file

@ -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")) {

View file

@ -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 <minecraft:piston> or <appliedenergistics2:item.ItemMultiMaterial:156>
@ -58,18 +61,33 @@ public class InputHelper {
}
return sb.toString();
} else if (object instanceof FluidStack) {
return "<liquid:" + ((FluidStack)object).getFluid().getName() + ">";
} else if (object instanceof String) {
List<ItemStack> ores = OreDictionary.getOres((String)object);
if(!ores.isEmpty()) {
return "<ore:" + (String)object + ">";
} else {
return "\"" + (String)object + "\"";
}
} else if (object != null) {
return "\"" + object.toString() + "\"";
} else {
return "null";
}
}
public static String getStackDescription(FluidStack stack) {
if(stack != null) {
return "<liquid:" + stack.getFluid().getName() + ">";
} 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<IItemStack> stacks = new ArrayList<IItemStack>();

View file

@ -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<ItemStack> 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<String> toLowerCase(List<String> stringList) {
ListIterator<String> iterator = stringList.listIterator();
while(iterator.hasNext()) {
iterator.set(iterator.next().toLowerCase());
}
return stringList;
}
public static String join(List<String> 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();
}
}

View file

@ -0,0 +1,34 @@
package modtweaker2.helpers;
import java.util.List;
import java.util.ListIterator;
public class StringHelper {
public static List<String> toLowerCase(List<String> stringList) {
ListIterator<String> iterator = stringList.listIterator();
while(iterator.hasNext()) {
iterator.set(iterator.next().toLowerCase());
}
return stringList;
}
public static String join(List<String> 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();
}
}

View file

@ -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<String> args = LogHelper.toLowerCase(Arrays.asList(arguments));
List<String> 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()),

View file

@ -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<String> validArguments = new LinkedList<String>();
static {
validArguments.add("apothecary");
validArguments.add("elventrade");
validArguments.add("manainfusion");
validArguments.add("runealtar");
}
@Override
public void execute(String[] arguments, IPlayer player) {
List<String> 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"));
}
}
}
}