diff --git a/build.gradle b/build.gradle index 4c4d395..1523c5b 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { apply plugin: 'forge' -version = "0.9.1" +version = "0.9.2" group= "modtweaker" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "ModTweaker~2" diff --git a/libs/Railcraft_1.7.10-9.4.0.0-dev.jar b/libs/Railcraft_1.7.10-9.6.1.0-dev.jar similarity index 59% rename from libs/Railcraft_1.7.10-9.4.0.0-dev.jar rename to libs/Railcraft_1.7.10-9.6.1.0-dev.jar index d77da66..c942231 100644 Binary files a/libs/Railcraft_1.7.10-9.4.0.0-dev.jar and b/libs/Railcraft_1.7.10-9.6.1.0-dev.jar differ diff --git a/src/main/java/modtweaker2/ModProps.java b/src/main/java/modtweaker2/ModProps.java index 1326aba..f62ccbe 100644 --- a/src/main/java/modtweaker2/ModProps.java +++ b/src/main/java/modtweaker2/ModProps.java @@ -4,6 +4,6 @@ public class ModProps { public static final String NAME = "Mod Tweaker 2", name = NAME; public static final String MODID = "modtweaker2", modid = MODID; - public static final String VERSION = "0.9.1", version = VERSION; + public static final String VERSION = "0.9.2", version = VERSION; public static final String DEPENDENCIES = "required-after:MineTweaker3", dependencies = DEPENDENCIES; } diff --git a/src/main/java/modtweaker2/mods/railcraft/RailcraftHelper.java b/src/main/java/modtweaker2/mods/railcraft/RailcraftHelper.java index a4a3c31..3ea25b2 100644 --- a/src/main/java/modtweaker2/mods/railcraft/RailcraftHelper.java +++ b/src/main/java/modtweaker2/mods/railcraft/RailcraftHelper.java @@ -19,12 +19,14 @@ public class RailcraftHelper { public static List oven = null; public static List crusher = null; public static List rolling = null; + public static List fuels = null; static { try { furnace = RailcraftCraftingManager.blastFurnace.getRecipes(); oven = RailcraftCraftingManager.cokeOven.getRecipes(); crusher = RailcraftCraftingManager.rockCrusher.getRecipes(); rolling = RailcraftCraftingManager.rollingMachine.getRecipeList(); + fuels = ReflectionHelper.>getObject(RailcraftCraftingManager.blastFurnace, "fuels"); } catch (Exception e) {} } diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java b/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java index 6fdea70..c64e4f5 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/BlastFurnace.java @@ -11,10 +11,14 @@ import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; import mods.railcraft.api.crafting.IBlastFurnaceRecipe; +import modtweaker2.helpers.InputHelper; import modtweaker2.helpers.LogHelper; +import modtweaker2.helpers.StackHelper; import modtweaker2.mods.railcraft.RailcraftHelper; import modtweaker2.utils.BaseListAddition; import modtweaker2.utils.BaseListRemoval; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntityFurnace; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @@ -22,9 +26,17 @@ import stanhebben.zenscript.annotations.ZenMethod; public class BlastFurnace { public static final String name = "Railcraft Blast Furnace"; + public static final String nameFuel = "Railcraft Blast Furnace (Fuel)"; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod public static void addRecipe(IItemStack input, boolean matchDamage, boolean matchNBT, int cookTime, IItemStack output) { + if(input == null || output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + MineTweakerAPI.apply(new Add(RailcraftHelper.getBlastFurnaceRecipe(toStack(input), matchDamage, matchNBT, cookTime, toStack(output)))); } @@ -40,9 +52,16 @@ public class BlastFurnace { return LogHelper.getStackDescription(recipe.getOutput()); } } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod public static void removeRecipe(IIngredient output) { + if(output == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + List recipes = new LinkedList(); for (IBlastFurnaceRecipe r : RailcraftHelper.furnace) { @@ -69,4 +88,79 @@ public class BlastFurnace { return LogHelper.getStackDescription(recipe.getOutput()); } } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + public static void addFuel(IIngredient itemInput) { + if(itemInput == null) { + LogHelper.logError(String.format("Required parameters missing for %s Recipe.", name)); + return; + } + + List fuels = new LinkedList(); + + for(IItemStack item : itemInput.getItems()) { + + boolean match = false; + + for(ItemStack fuel : RailcraftHelper.fuels) { + if(StackHelper.matches(item, InputHelper.toIItemStack(fuel))) { + match = true; + break; + } + } + + if(!match && TileEntityFurnace.isItemFuel(InputHelper.toStack(item))) { + fuels.add(InputHelper.toStack(item)); + } + } + + if(!fuels.isEmpty()) { + MineTweakerAPI.apply(new AddFuels(fuels)); + } else { + LogHelper.logWarning(String.format("No %s added.", nameFuel)); + } + } + + private static class AddFuels extends BaseListAddition { + public AddFuels(List fuels) { + super(BlastFurnace.nameFuel, RailcraftHelper.fuels, fuels); + } + + @Override + protected String getRecipeInfo(ItemStack recipe) { + return LogHelper.getStackDescription(recipe); + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + @ZenMethod + private static void removeFuel(IIngredient itemInput) { + List fuels = new LinkedList(); + + for(ItemStack fuel : RailcraftHelper.fuels) { + if(StackHelper.matches(itemInput, InputHelper.toIItemStack(fuel))) { + fuels.add(fuel); + } + } + + if(!fuels.isEmpty()) { + MineTweakerAPI.apply(new RemoveFuels(fuels)); + } else { + LogHelper.logWarning(String.format("No %s found for argument %s.", nameFuel, itemInput.toString())); + } + } + + private static class RemoveFuels extends BaseListRemoval { + public RemoveFuels(List fuels) { + super(BlastFurnace.nameFuel, RailcraftHelper.fuels, fuels); + } + + @Override + protected String getRecipeInfo(ItemStack recipe) { + return LogHelper.getStackDescription(recipe); + } + } } diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java b/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java index ea051d6..5ff8859 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/CokeOven.java @@ -28,6 +28,8 @@ public class CokeOven { public static final String name = "Railcraft Coke Oven"; + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /** * Adds a recipe for the Coke Oven * diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java b/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java index ebb1a9f..3116017 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/RockCrusher.java @@ -23,6 +23,8 @@ public class RockCrusher { public static final String name = "Railcraft Rock Crusher"; + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addRecipe(IItemStack input, boolean matchDamage, boolean matchNBT, IItemStack[] output, double[] chances) { IRockCrusherRecipe recipe = RailcraftHelper.getRockCrusherRecipe(toStack(input), matchDamage, matchNBT); diff --git a/src/main/java/modtweaker2/mods/railcraft/handlers/RollingMachine.java b/src/main/java/modtweaker2/mods/railcraft/handlers/RollingMachine.java index fa51768..bf45c75 100644 --- a/src/main/java/modtweaker2/mods/railcraft/handlers/RollingMachine.java +++ b/src/main/java/modtweaker2/mods/railcraft/handlers/RollingMachine.java @@ -24,6 +24,8 @@ public class RollingMachine { public static final String name = "Railcraft Rolling Machine"; + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @ZenMethod public static void addShaped(IItemStack output, IIngredient[][] ingredients) { MineTweakerAPI.apply(new Add(new ShapedOreRecipe(toStack(output), toShapedObjects(ingredients))));