Added command to print Botania recipes
This commit is contained in:
parent
a0a8f2f26e
commit
0b18e5c12e
6 changed files with 149 additions and 58 deletions
|
@ -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")) {
|
||||
|
|
|
@ -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,17 +61,32 @@ 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) {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
34
src/main/java/modtweaker2/helpers/StringHelper.java
Normal file
34
src/main/java/modtweaker2/helpers/StringHelper.java
Normal 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();
|
||||
}
|
||||
}
|
|
@ -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()),
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue