import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import items.Database; import items.Item; import items.Recipe; import items.Utils; import org.jgrapht.Graph; import org.jgrapht.graph.DefaultWeightedEdge; import org.jgrapht.graph.EdgeReversedGraph; import org.jgrapht.nio.Attribute; import org.jgrapht.nio.DefaultAttribute; import org.jgrapht.nio.dot.DOTExporter; import java.io.File; import java.util.HashMap; import java.util.Map; public class Test { public static void main(String[] args) throws JsonProcessingException { //System.out.println(items.Database.AdaptiveControlUnit); Map totalRequirements = Database.HeavyModularFrame.getRecipe().getTotalRequirements(); System.out.println(totalRequirements); ObjectMapper om = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT); String json = om.writeValueAsString(totalRequirements); System.out.println(json); Map rawOnly = Utils.getRawOnly(Database.HeavyModularFrame.getRecipe().getTotalRequirements()); String json2 = om.writeValueAsString(rawOnly); String json3 = om.writeValueAsString(Recipe.getInputs(rawOnly)); System.out.println(json2); System.out.println(json3); Item ACU = Database.AdaptiveControlUnit; System.out.println(om.writeValueAsString(Utils.getRawOnly(ACU.getRecipe().getTotalRequirements()))); System.out.println(om.writeValueAsString(ACU.getRecipe().getTotalRequirements())); System.out.println(); System.out.println(om.writeValueAsString(ACU)); System.out.println(ACU.getProductionRate()); System.out.println("total requirements for ACU"); System.out.println(om.writeValueAsString(Utils.shorten(ACU.getRecipe().getTotalRequirements()))); //System.out.println(Database.AdaptiveControlUnit.getRecipe().getRequirementRates(Database.AdaptiveControlUnit)); System.out.println("requirement rate for ACU"); System.out.println(om.writeValueAsString(Utils.shorten(ACU.getRecipe().getRequirementRates(ACU)))); Graph x = ACU.getRecipe().buildGraph(ACU); DOTExporter de = new DOTExporter<>(Utils::dotID); de.setEdgeAttributeProvider(defaultWeightedEdge -> { Map m = new HashMap<>(); m.put("label", DefaultAttribute.createAttribute(x.getEdgeWeight(defaultWeightedEdge))); return m; }); de.exportGraph(x, new File("acu.dot")); de.exportGraph(new EdgeReversedGraph<>(x), new File("acu2.dot")); Utils.fixSums(ACU, x); de.exportGraph(x, new File("acu3.dot")); } }