Factorization rework

This commit is contained in:
Zixxl 2015-07-07 14:17:47 +02:00
parent 39e415b36d
commit 47be63311c
6 changed files with 94 additions and 9 deletions

View file

@ -14,6 +14,7 @@ import modtweaker2.mods.botania.lexicon.commands.LexiconKnowledgeTypesLogger;
import modtweaker2.mods.botania.lexicon.commands.LexiconPageLogger; import modtweaker2.mods.botania.lexicon.commands.LexiconPageLogger;
import modtweaker2.mods.chisel.commands.ChiselGroupLogger; import modtweaker2.mods.chisel.commands.ChiselGroupLogger;
import modtweaker2.mods.chisel.commands.ChiselVariationLogger; import modtweaker2.mods.chisel.commands.ChiselVariationLogger;
import modtweaker2.mods.factorization.commands.FactorizationLogger;
import modtweaker2.mods.mekanism.gas.GasLogger; import modtweaker2.mods.mekanism.gas.GasLogger;
import modtweaker2.mods.tconstruct.MaterialLogger; import modtweaker2.mods.tconstruct.MaterialLogger;
import modtweaker2.mods.tconstruct.commands.TConstructLogger; import modtweaker2.mods.tconstruct.commands.TConstructLogger;
@ -75,6 +76,10 @@ public class Commands {
if (TweakerPlugin.isLoaded("ThermalExpansion")) { if (TweakerPlugin.isLoaded("ThermalExpansion")) {
MineTweakerAPI.server.addMineTweakerCommand("texpansion", new String[] {"/minetweaker texpansion [FILTER]", " Outputs a list of all Thermal Expansion recipes."}, new ThermalExpansionLogger()); 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());
}
} }
} }

View file

@ -8,8 +8,11 @@ import modtweaker2.helpers.ReflectionHelper;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
public class FactorizationHelper { public class FactorizationHelper {
@SuppressWarnings("rawtypes")
public static List lacerator = null; public static List lacerator = null;
@SuppressWarnings("rawtypes")
public static List slag = null; public static List slag = null;
@SuppressWarnings("rawtypes")
public static List crystallizer = null; public static List crystallizer = null;
static { static {
@ -22,15 +25,13 @@ public class FactorizationHelper {
private FactorizationHelper() {} private FactorizationHelper() {}
@SuppressWarnings("unchecked") public static Object getLaceratorRecipe(Object input, ItemStack output, float probability) {
public static Object getLaceratorRecipe(ItemStack input, ItemStack output, float probability) {
return ReflectionHelper.getInstance(ReflectionHelper.getConstructor("factorization.oreprocessing.TileEntityGrinder$GrinderRecipe", Object.class, ItemStack.class, float.class), return ReflectionHelper.getInstance(ReflectionHelper.getConstructor("factorization.oreprocessing.TileEntityGrinder$GrinderRecipe", Object.class, ItemStack.class, float.class),
input, input,
output, output,
probability); probability);
} }
@SuppressWarnings("unchecked")
public static Object getSlagFurnaceRecipe(ItemStack input, float chance1, ItemStack output1, float chance2, ItemStack output2) { 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), return ReflectionHelper.getInstance(ReflectionHelper.getConstructor("factorization.oreprocessing.TileEntitySlagFurnace$SmeltingResult", ItemStack.class, float.class, ItemStack.class, float.class, ItemStack.class),
input, input,
@ -40,7 +41,6 @@ public class FactorizationHelper {
output2); output2);
} }
@SuppressWarnings("unchecked")
public static Object getCrystallizerRecipe(ItemStack input, ItemStack output, ItemStack solution, float output_count) { 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), return ReflectionHelper.getInstance(ReflectionHelper.getConstructor("factorization.oreprocessing.TileEntityCrystallizer$CrystalRecipe", ItemStack.class, ItemStack.class, float.class, ItemStack.class),
input, input,

View file

@ -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<String> validArguments = new LinkedList<String>();
static {
validArguments.add("crystallizer");
validArguments.add("lacerator");
validArguments.add("slagfurnace");
}
@Override
public void execute(String[] arguments, IPlayer player) {
List<String> 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.<ItemStack>getObject(recipe, "input")),
InputHelper.getStackDescription(ReflectionHelper.<ItemStack>getObject(recipe, "output")),
InputHelper.getStackDescription(ReflectionHelper.<ItemStack>getObject(recipe, "solution")),
ReflectionHelper.<Float>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.<String>getObject(recipe, "oreName") != null ?
InputHelper.getStackDescription(ReflectionHelper.<String>getObject(recipe, "oreName")) :
InputHelper.getStackDescription(ReflectionHelper.<ItemStack>getObject(recipe, "itemstack")),
InputHelper.getStackDescription(ReflectionHelper.<ItemStack>getObject(recipe, "output")),
ReflectionHelper.<Float>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.<ItemStack>getObject(recipe, "input")),
InputHelper.getStackDescription(ReflectionHelper.<ItemStack>getObject(recipe, "output2")),
ReflectionHelper.<Float>getObject(recipe, "prob2"),
InputHelper.getStackDescription(ReflectionHelper.<ItemStack>getObject(recipe, "output1")),
ReflectionHelper.<Float>getObject(recipe, "prob1")));
}
}
if (player != null) {
player.sendChat(MineTweakerImplementationAPI.platform.getMessage("List generated; see minetweaker.log in your minecraft dir"));
}
}
}
}

View file

@ -35,6 +35,7 @@ public class Crystallizer {
} }
private static class Add extends BaseListAddition<Object> { private static class Add extends BaseListAddition<Object> {
@SuppressWarnings("unchecked")
public Add(Object recipe) { public Add(Object recipe) {
super(Crystallizer.name, FactorizationHelper.crystallizer); super(Crystallizer.name, FactorizationHelper.crystallizer);
recipes.add(recipe); recipes.add(recipe);
@ -69,6 +70,7 @@ public class Crystallizer {
} }
private static class Remove extends BaseListRemoval<Object> { private static class Remove extends BaseListRemoval<Object> {
@SuppressWarnings("unchecked")
public Remove(List<Object> recipes) { public Remove(List<Object> recipes) {
super(Crystallizer.name, FactorizationHelper.crystallizer, recipes); super(Crystallizer.name, FactorizationHelper.crystallizer, recipes);
} }

View file

@ -1,6 +1,7 @@
package modtweaker2.mods.factorization.handlers; package modtweaker2.mods.factorization.handlers;
import static modtweaker2.helpers.InputHelper.toIItemStack; import static modtweaker2.helpers.InputHelper.toIItemStack;
import static modtweaker2.helpers.InputHelper.toObject;
import static modtweaker2.helpers.InputHelper.toStack; import static modtweaker2.helpers.InputHelper.toStack;
import static modtweaker2.helpers.StackHelper.matches; import static modtweaker2.helpers.StackHelper.matches;
@ -28,13 +29,14 @@ public class Lacerator {
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ZenMethod @ZenMethod
public static void addRecipe(IItemStack input, IItemStack output, double probability) { public static void addRecipe(IIngredient input, IItemStack output, double probability) {
Object recipe = FactorizationHelper.getLaceratorRecipe(toStack(input), toStack(output), (float) probability); Object recipe = FactorizationHelper.getLaceratorRecipe(toObject(input), toStack(output), (float) probability);
MineTweakerAPI.apply(new Add(toStack(input), recipe)); MineTweakerAPI.apply(new Add(recipe));
} }
private static class Add extends BaseListAddition<Object> { private static class Add extends BaseListAddition<Object> {
public Add(ItemStack output, Object recipe) { @SuppressWarnings("unchecked")
public Add(Object recipe) {
super(Lacerator.name, FactorizationHelper.lacerator); super(Lacerator.name, FactorizationHelper.lacerator);
recipes.add(recipe); recipes.add(recipe);
} }
@ -67,6 +69,7 @@ public class Lacerator {
} }
private static class Remove extends BaseListRemoval<Object> { private static class Remove extends BaseListRemoval<Object> {
@SuppressWarnings("unchecked")
public Remove(List<Object> recipes) { public Remove(List<Object> recipes) {
super(Lacerator.name, FactorizationHelper.lacerator, recipes); super(Lacerator.name, FactorizationHelper.lacerator, recipes);
} }

View file

@ -34,6 +34,7 @@ public class SlagFurnace {
} }
private static class Add extends BaseListAddition<Object> { private static class Add extends BaseListAddition<Object> {
@SuppressWarnings("unchecked")
public Add(ItemStack input, Object recipe) { public Add(ItemStack input, Object recipe) {
super(SlagFurnace.name, FactorizationHelper.slag); super(SlagFurnace.name, FactorizationHelper.slag);
recipes.add(recipe); recipes.add(recipe);
@ -69,7 +70,8 @@ public class SlagFurnace {
} }
private static class Remove extends BaseListRemoval<Object> { private static class Remove extends BaseListRemoval<Object> {
public Remove(List<Object> recipes) { @SuppressWarnings("unchecked")
public Remove(List<Object> recipes) {
super(SlagFurnace.name, FactorizationHelper.slag, recipes); super(SlagFurnace.name, FactorizationHelper.slag, recipes);
} }