ModTweaker/src/main/java/modtweaker2/mods/mekanism/commands/MekanismLogger.java

239 lines
14 KiB
Java

package modtweaker2.mods.mekanism.commands;
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import mekanism.api.gas.GasStack;
import mekanism.common.recipe.RecipeHandler.Recipe;
import mekanism.common.recipe.machines.ChemicalInfuserRecipe;
import mekanism.common.recipe.machines.CombinerRecipe;
import mekanism.common.recipe.machines.CrusherRecipe;
import mekanism.common.recipe.machines.CrystallizerRecipe;
import mekanism.common.recipe.machines.DissolutionRecipe;
import mekanism.common.recipe.machines.EnrichmentRecipe;
import mekanism.common.recipe.machines.InjectionRecipe;
import mekanism.common.recipe.machines.MetallurgicInfuserRecipe;
import mekanism.common.recipe.machines.OxidationRecipe;
import mekanism.common.recipe.machines.PressurizedRecipe;
import mekanism.common.recipe.machines.PurificationRecipe;
import mekanism.common.recipe.machines.SawmillRecipe;
import mekanism.common.recipe.machines.SeparatorRecipe;
import mekanism.common.recipe.machines.SmeltingRecipe;
import mekanism.common.recipe.machines.ThermalEvaporationRecipe;
import mekanism.common.recipe.machines.SolarNeutronRecipe;
import mekanism.common.recipe.machines.WasherRecipe;
import minetweaker.MineTweakerAPI;
import minetweaker.MineTweakerImplementationAPI;
import minetweaker.api.player.IPlayer;
import minetweaker.api.server.ICommandFunction;
import modtweaker2.helpers.LogHelper;
import modtweaker2.helpers.StringHelper;
public class MekanismLogger implements ICommandFunction {
private static final List<String> validArguments = new LinkedList<String>();
static {
validArguments.add("Combiner");
validArguments.add("Compressor");
validArguments.add("Crusher");
validArguments.add("Crystallizer");
validArguments.add("Dissolution");
validArguments.add("Enrichment");
validArguments.add("SolarEvaporation");
validArguments.add("Infuser");
validArguments.add("Injection");
validArguments.add("SolarNeutronActivator");
validArguments.add("Oxidizer");
validArguments.add("Purification");
validArguments.add("Reaction");
validArguments.add("Sawmill");
validArguments.add("Separator");
validArguments.add("Washer");
}
@SuppressWarnings({ "unchecked" })
@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(CrystallizerRecipe recipe : (Collection<CrystallizerRecipe>)Recipe.CHEMICAL_CRYSTALLIZER.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.chemical.Crystallizer.addRecipe(%s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.ingredient),
LogHelper.getStackDescription(recipe.recipeOutput.output)));
}
}
if(args.isEmpty() || args.contains("Dissolution")) {
for(DissolutionRecipe recipe : (Collection<DissolutionRecipe>)Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.chemical.Dissolution.addRecipe(%s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.ingredient),
LogHelper.getStackDescription(recipe.recipeOutput.output)));
}
}
if(args.isEmpty() || args.contains("Infuser")) {
for(ChemicalInfuserRecipe recipe : (Collection<ChemicalInfuserRecipe>)Recipe.CHEMICAL_INFUSER.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.chemical.Infuser.addRecipe(%s, %s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.leftGas),
LogHelper.getStackDescription(recipe.recipeInput.rightGas),
LogHelper.getStackDescription(recipe.recipeOutput.output)));
}
}
if(args.isEmpty() || args.contains("Injection")) {
for(InjectionRecipe recipe : (Collection<InjectionRecipe>)Recipe.CHEMICAL_INJECTION_CHAMBER.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.chemical.Injection.addRecipe(%s, %s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.itemStack),
LogHelper.getStackDescription(new GasStack(recipe.recipeInput.gasType, 1)),
LogHelper.getStackDescription(recipe.recipeOutput.output)));
}
}
if(args.isEmpty() || args.contains("Oxidizer")) {
for(OxidationRecipe recipe : (Collection<OxidationRecipe>)Recipe.CHEMICAL_OXIDIZER.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.chemical.Oxidizer.addRecipe(%s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.ingredient),
LogHelper.getStackDescription(recipe.recipeOutput.output)));
}
}
if(args.isEmpty() || args.contains("Washer")) {
for(WasherRecipe recipe : (Collection<WasherRecipe>)Recipe.CHEMICAL_WASHER.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.chemical.Washer.addRecipe(%s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.ingredient),
LogHelper.getStackDescription(recipe.recipeOutput.output)));
}
}
if(args.isEmpty() || args.contains("Combiner")) {
for(CombinerRecipe recipe : (Collection<CombinerRecipe>)Recipe.COMBINER.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.Combiner.addRecipe(%s, %s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.itemStack),
LogHelper.getStackDescription(recipe.recipeOutput.output),
LogHelper.getStackDescription(new GasStack(recipe.recipeInput.gasType, 1))));
}
}
if(args.isEmpty() || args.contains("Compressor")) {
for(CombinerRecipe recipe : (Collection<CombinerRecipe>)Recipe.COMBINER.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.Compressor.addRecipe(%s, %s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.itemStack),
LogHelper.getStackDescription(new GasStack(recipe.recipeInput.gasType, 1)),
LogHelper.getStackDescription(recipe.recipeOutput.output)));
}
}
if(args.isEmpty() || args.contains("Crusher")) {
for(CrusherRecipe recipe : (Collection<CrusherRecipe>)Recipe.CRUSHER.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.Crusher.addRecipe(%s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.ingredient),
LogHelper.getStackDescription(recipe.recipeOutput.output)));
}
}
if(args.isEmpty() || args.contains("Smelter")) {
for(SmeltingRecipe recipe : (Collection<SmeltingRecipe>)Recipe.ENERGIZED_SMELTER.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.Smelter.addRecipe(%s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.ingredient),
LogHelper.getStackDescription(recipe.recipeOutput.output)));
}
}
if(args.isEmpty() || args.contains("Enrichment")) {
for(EnrichmentRecipe recipe : (Collection<EnrichmentRecipe>)Recipe.ENRICHMENT_CHAMBER.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.Enrichment.addRecipe(%s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.ingredient),
LogHelper.getStackDescription(recipe.recipeOutput.output)));
}
}
if(args.isEmpty() || args.contains("Infuser")) {
for(MetallurgicInfuserRecipe recipe : (Collection<MetallurgicInfuserRecipe>)Recipe.METALLURGIC_INFUSER.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.Infuser.addRecipe(\"%s\", %d, %s, %s);",
recipe.getInput().infuse.type.name,
recipe.getInput().infuse.amount,
LogHelper.getStackDescription(recipe.recipeInput.inputStack),
LogHelper.getStackDescription(recipe.recipeOutput.output)));
}
}
if(args.isEmpty() || args.contains("Purification")) {
for(PurificationRecipe recipe : (Collection<PurificationRecipe>)Recipe.PURIFICATION_CHAMBER.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.Purification.addRecipe(%s, %s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.itemStack),
LogHelper.getStackDescription(new GasStack(recipe.recipeInput.gasType, 1)),
LogHelper.getStackDescription(recipe.recipeOutput.output)));
}
}
if(args.isEmpty() || args.contains("Reaction")) {
for(PressurizedRecipe recipe : (Collection<PressurizedRecipe>)Recipe.PRESSURIZED_REACTION_CHAMBER.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.Reaction.addRecipe(%s, %s, %s, %s, %s, %s, %d);",
LogHelper.getStackDescription(recipe.recipeInput.getSolid()),
LogHelper.getStackDescription(recipe.recipeInput.getFluid()),
LogHelper.getStackDescription(recipe.recipeInput.getGas()),
LogHelper.getStackDescription(recipe.recipeOutput.getItemOutput()),
LogHelper.getStackDescription(recipe.recipeOutput.getGasOutput()),
recipe.extraEnergy,
recipe.ticks));
}
}
if(args.isEmpty() || args.contains("Sawmill")) {
for(SawmillRecipe recipe : (Collection<SawmillRecipe>)Recipe.PRECISION_SAWMILL.get().values()) {
if(recipe.getOutput().hasSecondary()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.Sawmill.addRecipe(%s, %s, %s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.ingredient),
LogHelper.getStackDescription(recipe.recipeOutput.primaryOutput),
LogHelper.getStackDescription(recipe.recipeOutput.secondaryOutput),
recipe.recipeOutput.secondaryChance));
} else {
MineTweakerAPI.logCommand(String.format("mods.mekanism.Sawmill.addRecipe(%s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.ingredient),
LogHelper.getStackDescription(recipe.recipeOutput.primaryOutput)));
}
}
}
if(args.isEmpty() || args.contains("Separator")) {
for(SeparatorRecipe recipe : (Collection<SeparatorRecipe>)Recipe.ELECTROLYTIC_SEPARATOR.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.Separator.addRecipe(%s, %s, %s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.ingredient),
recipe.energyUsage,
LogHelper.getStackDescription(recipe.recipeOutput.leftGas),
LogHelper.getStackDescription(recipe.recipeOutput.rightGas)));
}
}
if(args.isEmpty() || args.contains("SolarEvaporation")) {
for(ThermalEvaporationRecipe recipe : (Collection<ThermalEvaporationRecipe>)Recipe.THERMAL_EVAPORATION_PLANT.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.SolarEvaporation.addRecipe(%s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.ingredient),
LogHelper.getStackDescription(recipe.recipeOutput.output)));
}
}
if(args.isEmpty() || args.contains("SolarNeutronActivator")) {
for(SolarNeutronRecipe recipe : (Collection<SolarNeutronRecipe>)Recipe.SOLAR_NEUTRON_ACTIVATOR.get().values()) {
MineTweakerAPI.logCommand(String.format("mods.mekanism.SolarNeutronActivator.addRecipe(%s, %s);",
LogHelper.getStackDescription(recipe.recipeInput.ingredient),
LogHelper.getStackDescription(recipe.recipeOutput.output)));
}
}
if (player != null) {
player.sendChat(MineTweakerImplementationAPI.platform.getMessage("List generated; see minetweaker.log in your minecraft dir"));
}
}
}
}