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.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());
}
}
}

View file

@ -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,

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> {
@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<Object> {
@SuppressWarnings("unchecked")
public Remove(List<Object> recipes) {
super(Crystallizer.name, FactorizationHelper.crystallizer, recipes);
}

View file

@ -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<Object> {
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<Object> {
@SuppressWarnings("unchecked")
public Remove(List<Object> recipes) {
super(Lacerator.name, FactorizationHelper.lacerator, recipes);
}

View file

@ -34,6 +34,7 @@ public class SlagFurnace {
}
private static class Add extends BaseListAddition<Object> {
@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<Object> {
public Remove(List<Object> recipes) {
@SuppressWarnings("unchecked")
public Remove(List<Object> recipes) {
super(SlagFurnace.name, FactorizationHelper.slag, recipes);
}