diff --git a/src/main/java/modtweaker2/Commands.java b/src/main/java/modtweaker2/Commands.java index a412b14..7993b3e 100644 --- a/src/main/java/modtweaker2/Commands.java +++ b/src/main/java/modtweaker2/Commands.java @@ -14,6 +14,7 @@ import modtweaker2.mods.botania.lexicon.commands.LexiconKnowledgeTypesLogger; import modtweaker2.mods.botania.lexicon.commands.LexiconPageLogger; import modtweaker2.mods.chisel.commands.ChiselGroupLogger; import modtweaker2.mods.chisel.commands.ChiselVariationLogger; +import modtweaker2.mods.factorization.commands.FactorizationLogger; import modtweaker2.mods.mekanism.gas.GasLogger; import modtweaker2.mods.tconstruct.MaterialLogger; import modtweaker2.mods.tconstruct.commands.TConstructLogger; @@ -75,6 +76,10 @@ public class Commands { if (TweakerPlugin.isLoaded("ThermalExpansion")) { MineTweakerAPI.server.addMineTweakerCommand("texpansion", new String[] {"/minetweaker texpansion [FILTER]", " Outputs a list of all Thermal Expansion recipes."}, new ThermalExpansionLogger()); } + + if (TweakerPlugin.isLoaded("factorization")) { + MineTweakerAPI.server.addMineTweakerCommand("factorization", new String[] {"/minetweaker factorization [FILTER]", " Outputs a list of all Factorization recipes."}, new FactorizationLogger()); + } } } diff --git a/src/main/java/modtweaker2/mods/factorization/FactorizationHelper.java b/src/main/java/modtweaker2/mods/factorization/FactorizationHelper.java index 37d5372..3410022 100644 --- a/src/main/java/modtweaker2/mods/factorization/FactorizationHelper.java +++ b/src/main/java/modtweaker2/mods/factorization/FactorizationHelper.java @@ -8,8 +8,11 @@ import modtweaker2.helpers.ReflectionHelper; import net.minecraft.item.ItemStack; public class FactorizationHelper { + @SuppressWarnings("rawtypes") public static List lacerator = null; + @SuppressWarnings("rawtypes") public static List slag = null; + @SuppressWarnings("rawtypes") public static List crystallizer = null; static { @@ -22,15 +25,13 @@ public class FactorizationHelper { private FactorizationHelper() {} - @SuppressWarnings("unchecked") - public static Object getLaceratorRecipe(ItemStack input, ItemStack output, float probability) { + public static Object getLaceratorRecipe(Object input, ItemStack output, float probability) { return ReflectionHelper.getInstance(ReflectionHelper.getConstructor("factorization.oreprocessing.TileEntityGrinder$GrinderRecipe", Object.class, ItemStack.class, float.class), input, output, probability); } - @SuppressWarnings("unchecked") public static Object getSlagFurnaceRecipe(ItemStack input, float chance1, ItemStack output1, float chance2, ItemStack output2) { return ReflectionHelper.getInstance(ReflectionHelper.getConstructor("factorization.oreprocessing.TileEntitySlagFurnace$SmeltingResult", ItemStack.class, float.class, ItemStack.class, float.class, ItemStack.class), input, @@ -40,7 +41,6 @@ public class FactorizationHelper { output2); } - @SuppressWarnings("unchecked") public static Object getCrystallizerRecipe(ItemStack input, ItemStack output, ItemStack solution, float output_count) { return ReflectionHelper.getInstance(ReflectionHelper.getConstructor("factorization.oreprocessing.TileEntityCrystallizer$CrystalRecipe", ItemStack.class, ItemStack.class, float.class, ItemStack.class), input, diff --git a/src/main/java/modtweaker2/mods/factorization/commands/FactorizationLogger.java b/src/main/java/modtweaker2/mods/factorization/commands/FactorizationLogger.java new file mode 100644 index 0000000..b05bc84 --- /dev/null +++ b/src/main/java/modtweaker2/mods/factorization/commands/FactorizationLogger.java @@ -0,0 +1,73 @@ +package modtweaker2.mods.factorization.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.ReflectionHelper; +import modtweaker2.helpers.StringHelper; +import modtweaker2.mods.factorization.FactorizationHelper; +import net.minecraft.item.ItemStack; + +public class FactorizationLogger implements ICommandFunction { + + private static final List validArguments = new LinkedList(); + + static { + validArguments.add("crystallizer"); + validArguments.add("lacerator"); + validArguments.add("slagfurnace"); + } + + @Override + public void execute(String[] arguments, IPlayer player) { + List args = StringHelper.toLowerCase(Arrays.asList(arguments)); + + if(!validArguments.containsAll(args)) { + if(player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid arguments for command. Valid arguments: " + StringHelper.join(validArguments, ", "))); + } + } else { + if(args.isEmpty() || args.contains("crystallizer")) { + for(Object recipe : FactorizationHelper.crystallizer) { + MineTweakerAPI.logCommand(String.format("mods.factorization.Crystallizer.addRecipe(%s, %s, %s, %s);", + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "input")), + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output")), + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "solution")), + ReflectionHelper.getObject(recipe, "output_count"))); + } + } + + if(args.isEmpty() || args.contains("lacerator")) { + for(Object recipe : FactorizationHelper.lacerator) { + MineTweakerAPI.logCommand(String.format("mods.factorization.Lacerator.addRecipe(%s, %s, %s);", + ReflectionHelper.getObject(recipe, "oreName") != null ? + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "oreName")) : + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "itemstack")), + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output")), + ReflectionHelper.getObject(recipe, "probability"))); + } + } + + if(args.isEmpty() || args.contains("slagfurnace")) { + for(Object recipe : FactorizationHelper.slag) { + MineTweakerAPI.logCommand(String.format("mods.factorization.SlagFurnace.addRecipe(%s, %s, %s, %s, %s);", + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "input")), + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output2")), + ReflectionHelper.getObject(recipe, "prob2"), + InputHelper.getStackDescription(ReflectionHelper.getObject(recipe, "output1")), + ReflectionHelper.getObject(recipe, "prob1"))); + } + } + + if (player != null) { + player.sendChat(MineTweakerImplementationAPI.platform.getMessage("List generated; see minetweaker.log in your minecraft dir")); + } + } + } +} \ No newline at end of file diff --git a/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java b/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java index 3c0cccd..fb50cb2 100644 --- a/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java +++ b/src/main/java/modtweaker2/mods/factorization/handlers/Crystallizer.java @@ -35,6 +35,7 @@ public class Crystallizer { } private static class Add extends BaseListAddition { + @SuppressWarnings("unchecked") public Add(Object recipe) { super(Crystallizer.name, FactorizationHelper.crystallizer); recipes.add(recipe); @@ -69,6 +70,7 @@ public class Crystallizer { } private static class Remove extends BaseListRemoval { + @SuppressWarnings("unchecked") public Remove(List recipes) { super(Crystallizer.name, FactorizationHelper.crystallizer, recipes); } diff --git a/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java b/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java index fe7a7ea..3cabcee 100644 --- a/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java +++ b/src/main/java/modtweaker2/mods/factorization/handlers/Lacerator.java @@ -1,6 +1,7 @@ package modtweaker2.mods.factorization.handlers; import static modtweaker2.helpers.InputHelper.toIItemStack; +import static modtweaker2.helpers.InputHelper.toObject; import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.StackHelper.matches; @@ -28,13 +29,14 @@ public class Lacerator { ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @ZenMethod - public static void addRecipe(IItemStack input, IItemStack output, double probability) { - Object recipe = FactorizationHelper.getLaceratorRecipe(toStack(input), toStack(output), (float) probability); - MineTweakerAPI.apply(new Add(toStack(input), recipe)); + public static void addRecipe(IIngredient input, IItemStack output, double probability) { + Object recipe = FactorizationHelper.getLaceratorRecipe(toObject(input), toStack(output), (float) probability); + MineTweakerAPI.apply(new Add(recipe)); } private static class Add extends BaseListAddition { - public Add(ItemStack output, Object recipe) { + @SuppressWarnings("unchecked") + public Add(Object recipe) { super(Lacerator.name, FactorizationHelper.lacerator); recipes.add(recipe); } @@ -67,6 +69,7 @@ public class Lacerator { } private static class Remove extends BaseListRemoval { + @SuppressWarnings("unchecked") public Remove(List recipes) { super(Lacerator.name, FactorizationHelper.lacerator, recipes); } diff --git a/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java b/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java index 31cfa77..5f72fe6 100644 --- a/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java +++ b/src/main/java/modtweaker2/mods/factorization/handlers/SlagFurnace.java @@ -34,6 +34,7 @@ public class SlagFurnace { } private static class Add extends BaseListAddition { + @SuppressWarnings("unchecked") public Add(ItemStack input, Object recipe) { super(SlagFurnace.name, FactorizationHelper.slag); recipes.add(recipe); @@ -69,7 +70,8 @@ public class SlagFurnace { } private static class Remove extends BaseListRemoval { - public Remove(List recipes) { + @SuppressWarnings("unchecked") + public Remove(List recipes) { super(SlagFurnace.name, FactorizationHelper.slag, recipes); }