diff --git a/libs/Botania r1.3-154 custom build-deobf.jar b/libs/Botania r1.3-154 custom build-deobf.jar deleted file mode 100644 index 7f8a04a..0000000 Binary files a/libs/Botania r1.3-154 custom build-deobf.jar and /dev/null differ diff --git a/libs/Botania r1.7-201-deobf.jar b/libs/Botania r1.7-201-deobf.jar new file mode 100644 index 0000000..7a69f86 Binary files /dev/null and b/libs/Botania r1.7-201-deobf.jar differ diff --git a/src/main/java/modtweaker2/helpers/LogHelper.java b/src/main/java/modtweaker2/helpers/LogHelper.java index d87b5b4..63fc336 100644 --- a/src/main/java/modtweaker2/helpers/LogHelper.java +++ b/src/main/java/modtweaker2/helpers/LogHelper.java @@ -9,6 +9,7 @@ import minetweaker.MineTweakerImplementationAPI; import minetweaker.api.player.IPlayer; import minetweaker.mc1710.data.NBTConverter; import modtweaker2.utils.TweakerPlugin; +import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; @@ -61,6 +62,8 @@ public class LogHelper { return getStackDescription((ItemStack)object); } else if (object instanceof FluidStack) { return getStackDescription((FluidStack)object); + } else if (object instanceof Block) { + return getStackDescription(new ItemStack((Block)object, 1, 0)); } else if (TweakerPlugin.isLoaded("Mekanism") && object instanceof GasStack) { return getStackDescription((GasStack)object); } else if (object instanceof String) { diff --git a/src/main/java/modtweaker2/mods/botania/Botania.java b/src/main/java/modtweaker2/mods/botania/Botania.java index 83eea65..0797b23 100644 --- a/src/main/java/modtweaker2/mods/botania/Botania.java +++ b/src/main/java/modtweaker2/mods/botania/Botania.java @@ -2,10 +2,12 @@ package modtweaker2.mods.botania; import minetweaker.MineTweakerAPI; import modtweaker2.mods.botania.handlers.Apothecary; +import modtweaker2.mods.botania.handlers.Brew; import modtweaker2.mods.botania.handlers.ElvenTrade; import modtweaker2.mods.botania.handlers.Lexicon; import modtweaker2.mods.botania.handlers.ManaInfusion; import modtweaker2.mods.botania.handlers.Orechid; +import modtweaker2.mods.botania.handlers.PureDaisy; import modtweaker2.mods.botania.handlers.RuneAltar; import net.minecraft.item.ItemStack; import vazkii.botania.common.item.block.ItemBlockSpecialFlower; @@ -13,9 +15,11 @@ import vazkii.botania.common.item.block.ItemBlockSpecialFlower; public class Botania { public Botania() { MineTweakerAPI.registerClass(Apothecary.class); + MineTweakerAPI.registerClass(Brew.class); MineTweakerAPI.registerClass(ElvenTrade.class); MineTweakerAPI.registerClass(ManaInfusion.class); MineTweakerAPI.registerClass(Orechid.class); + MineTweakerAPI.registerClass(PureDaisy.class); MineTweakerAPI.registerClass(RuneAltar.class); MineTweakerAPI.registerClass(Lexicon.class); } diff --git a/src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java b/src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java index 95e2d9c..a1a6636 100644 --- a/src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java +++ b/src/main/java/modtweaker2/mods/botania/commands/BotaniaLogger.java @@ -10,10 +10,13 @@ import minetweaker.api.player.IPlayer; import minetweaker.api.server.ICommandFunction; import modtweaker2.helpers.LogHelper; import modtweaker2.helpers.StringHelper; +import net.minecraft.item.ItemStack; import vazkii.botania.api.BotaniaAPI; +import vazkii.botania.api.recipe.RecipeBrew; import vazkii.botania.api.recipe.RecipeElvenTrade; import vazkii.botania.api.recipe.RecipeManaInfusion; import vazkii.botania.api.recipe.RecipePetals; +import vazkii.botania.api.recipe.RecipePureDaisy; import vazkii.botania.api.recipe.RecipeRuneAltar; public class BotaniaLogger implements ICommandFunction { @@ -22,8 +25,10 @@ public class BotaniaLogger implements ICommandFunction { static { validArguments.add("apothecary"); + validArguments.add("brew"); validArguments.add("elventrade"); validArguments.add("manainfusion"); + validArguments.add("puredaisy"); validArguments.add("runealtar"); } @@ -45,6 +50,14 @@ public class BotaniaLogger implements ICommandFunction { } } + if(args.isEmpty() || args.contains("brew")) { + for(RecipeBrew recipe : BotaniaAPI.brewRecipes) { + MineTweakerAPI.logCommand(String.format("mods.botania.Brew.addRecipe(%s, \"%s\");", + LogHelper.getListDescription(recipe.getInputs()), + recipe.getBrew().getKey())); + } + } + if(args.isEmpty() || args.contains("elventrade")) { for(RecipeElvenTrade recipe : BotaniaAPI.elvenTradeRecipes) { MineTweakerAPI.logCommand(String.format("mods.botania.ElvenTrade.addRecipe(%s, %s);", @@ -65,6 +78,14 @@ public class BotaniaLogger implements ICommandFunction { } } + if(args.isEmpty() || args.contains("puredaisy")) { + for(RecipePureDaisy recipe : BotaniaAPI.pureDaisyRecipes) { + MineTweakerAPI.logCommand(String.format("mods.botania.PureDaisy.addRecipe(%s, %s);", + LogHelper.getStackDescription(recipe.getInput()), + LogHelper.getStackDescription(new ItemStack(recipe.getOutput(), 1, recipe.getOutputMeta())))); + } + } + if(args.isEmpty() || args.contains("runealtar")) { for(RecipeRuneAltar recipe : BotaniaAPI.runeAltarRecipes) { MineTweakerAPI.logCommand(String.format("mods.botania.RuneAltar.addRecipe(%s, %s, %d);", diff --git a/src/main/java/modtweaker2/mods/botania/handlers/Brew.java b/src/main/java/modtweaker2/mods/botania/handlers/Brew.java new file mode 100644 index 0000000..5dd8866 --- /dev/null +++ b/src/main/java/modtweaker2/mods/botania/handlers/Brew.java @@ -0,0 +1,83 @@ +package modtweaker2.mods.botania.handlers; + +import java.util.LinkedList; +import java.util.List; + +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IIngredient; +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 vazkii.botania.api.BotaniaAPI; +import vazkii.botania.api.recipe.RecipeBrew; + +@ZenClass("mods.botania.Brew") +public class Brew { + + public static final String name = "Botania Brew"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void addRecipe(IIngredient[] inputItems, String brewName) { + if(inputItems == null || inputItems.length == 0 || brewName == null || brewName.length() == 0) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + if(!BotaniaAPI.brewMap.containsKey(brewName)) { + LogHelper.logError(String.format("Unknown brew name \"%s\" for %s recipe.", brewName, name)); + } + + RecipeBrew recipe = new RecipeBrew(BotaniaAPI.brewMap.get(brewName), InputHelper.toObjects(inputItems)); + + MineTweakerAPI.apply(new Add(recipe)); + } + + private static class Add extends BaseListAddition { + + protected Add(RecipeBrew recipe) { + super(Brew.name, BotaniaAPI.brewRecipes); + recipes.add(recipe); + } + + @Override + protected String getRecipeInfo(RecipeBrew recipe) { + return recipe.getBrew().getKey(); + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void removeRecipe(String brewName) { + List recipes = new LinkedList(); + + for(RecipeBrew recipe : BotaniaAPI.brewRecipes) { + if(recipe.getBrew().getKey().equalsIgnoreCase(brewName)) { + recipes.add(recipe); + } + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + + } + } + + public static class Remove extends BaseListRemoval { + + protected Remove(List recipes) { + super(Brew.name, BotaniaAPI.brewRecipes, recipes); + } + + @Override + protected String getRecipeInfo(RecipeBrew recipe) { + return recipe.getBrew().getKey(); + } + } +} diff --git a/src/main/java/modtweaker2/mods/botania/handlers/PureDaisy.java b/src/main/java/modtweaker2/mods/botania/handlers/PureDaisy.java new file mode 100644 index 0000000..e2478a8 --- /dev/null +++ b/src/main/java/modtweaker2/mods/botania/handlers/PureDaisy.java @@ -0,0 +1,82 @@ +package modtweaker2.mods.botania.handlers; + +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.block.Block; +import net.minecraft.item.ItemStack; +import stanhebben.zenscript.annotations.Optional; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; +import vazkii.botania.api.BotaniaAPI; +import vazkii.botania.api.recipe.RecipePureDaisy; + +@ZenClass("mods.botania.PureDaisy") +public class PureDaisy { + + public static final String name = "Botania PureDaisy"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void addRecipe(IIngredient blockInput, IItemStack blockOutput) { + if(blockInput == null || blockOutput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + Object input = InputHelper.toObject(blockInput); + if(input instanceof ItemStack) input = Block.getBlockFromItem(((ItemStack)input).getItem()); + ItemStack output = InputHelper.toStack(blockOutput); + + RecipePureDaisy recipe = new RecipePureDaisy(input, Block.getBlockFromItem(output.getItem()), output.getItemDamage()); + + MineTweakerAPI.apply(new Add(recipe)); + } + + private static class Add extends BaseListAddition { + public Add(RecipePureDaisy recipe) { + super(PureDaisy.name, BotaniaAPI.pureDaisyRecipes); + recipes.add(recipe); + } + + @Override + protected String getRecipeInfo(RecipePureDaisy recipe) { + return LogHelper.getStackDescription(new ItemStack(recipe.getOutput(), 1, recipe.getOutputMeta())); + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + public static void removeRecipe(IIngredient input, @Optional IIngredient output) { + List recipes = new LinkedList(); + + for(RecipePureDaisy recipe : BotaniaAPI.pureDaisyRecipes) { + recipes.add(recipe); + } + + if(!recipes.isEmpty()) { + MineTweakerAPI.apply(new Remove(recipes)); + } else { + + } + } + + private static class Remove extends BaseListRemoval { + public Remove(List recipes) { + super(PureDaisy.name, BotaniaAPI.pureDaisyRecipes, recipes); + } + + @Override + protected String getRecipeInfo(RecipePureDaisy recipe) { + return LogHelper.getStackDescription(new ItemStack(recipe.getOutput(), 1, recipe.getOutputMeta())); + } + } +}