diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 67858355b..906e35be7 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -526,7 +526,7 @@ public class OreDictManager { } public static class DictFrame { - String[] mats; + public String[] mats; float hazMult = 1.0F; List hazards = new ArrayList(); diff --git a/src/main/java/com/hbm/inventory/material/MaterialShapes.java b/src/main/java/com/hbm/inventory/material/MaterialShapes.java index d22cc8c70..7de3a9e84 100644 --- a/src/main/java/com/hbm/inventory/material/MaterialShapes.java +++ b/src/main/java/com/hbm/inventory/material/MaterialShapes.java @@ -4,7 +4,9 @@ public enum MaterialShapes { QUANTUM(1), // 1/72 of an ingot, allows the ingot to be divisible through 2, 4, 6, 8, 9, 12, 24 and 36 NUGGET(8, "nugget"), + DUSTTINY(NUGGET.quantity, "dustTiny"), WIRE(9), + BILLET(NUGGET.quantity * 6, "billet"), INGOT(NUGGET.quantity * 9, "ingot"), DUST(INGOT.quantity, "dust"), PLATE(INGOT.quantity, "plate"), @@ -16,5 +18,9 @@ public enum MaterialShapes { private MaterialShapes(int quantity, String... prefixes) { this.quantity = quantity; this.prefixes = prefixes; + + for(String prefix : prefixes) { + Mats.prefixByName.put(prefix, this); + } } } diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index d89b7e858..80998bc6b 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -1,17 +1,39 @@ package com.hbm.inventory.material; -/* with every new rewrite, optimization and improvement, the code becomes more gregian */ -public class Mats { +import static com.hbm.inventory.material.MaterialShapes.*; +import java.util.HashMap; + +import com.hbm.inventory.OreDictManager; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.material.NTMMaterial.SmeltingBehavior; + +/* with every new rewrite, optimization and improvement, the code becomes more gregian */ +/** + * Defines materials that wrap around DictFrames to more accurately describe that material. + * Direct uses are the crucible and possibly item auto-gen, depending on what traits are set. + * @author hbm + */ +public class Mats { + + public static HashMap prefixByName = new HashMap(); + public static HashMap matByName = new HashMap(); + public static NTMMaterial + IRON = makeSmeltable(OreDictManager.IRON, 0).omitAutoGen(), + GOLD = makeSmeltable(OreDictManager.GOLD, 0).omitAutoGen(), + STEEL = makeSmeltable(OreDictManager.STEEL, 0).setShapes(DUSTTINY, INGOT, DUST, PLATE, BLOCK), + TUNGSTEN = makeSmeltable(OreDictManager.W, 0).setShapes(WIRE, INGOT, DUST, BLOCK), + COPPER = makeSmeltable(OreDictManager.CU, 0).setShapes(WIRE, INGOT, DUST, PLATE, BLOCK), + ALUMINIUM = makeSmeltable(OreDictManager.AL, 0).setShapes(WIRE, INGOT, DUST, PLATE, BLOCK), + MINGRADE = makeSmeltable(OreDictManager.MINGRADE, 0).setShapes(WIRE, INGOT, DUST, BLOCK), + ALLOY = makeSmeltable(OreDictManager.ALLOY, 0).setShapes(WIRE, INGOT, DUST, PLATE, BLOCK); + + public static NTMMaterial make(DictFrame dict) { + return new NTMMaterial(dict); + } - IRON = make("Iron"), - GOLD = make("Gold"), - STEEL = make("Steel"), - TUNGSTEN = make("Tungsten"), - COPPER = make("Copper"); - - public static NTMMaterial make(String... names) { - return new NTMMaterial(names); + public static NTMMaterial makeSmeltable(DictFrame dict, int color) { + return new NTMMaterial(dict).smeltable(SmeltingBehavior.SMELTABLE).setMoltenColor(color); } } diff --git a/src/main/java/com/hbm/inventory/material/NTMMaterial.java b/src/main/java/com/hbm/inventory/material/NTMMaterial.java index d013df374..5d1a01636 100644 --- a/src/main/java/com/hbm/inventory/material/NTMMaterial.java +++ b/src/main/java/com/hbm/inventory/material/NTMMaterial.java @@ -1,5 +1,7 @@ package com.hbm.inventory.material; +import com.hbm.inventory.OreDictManager.DictFrame; + /** * Encapsulates most materials that are currently listed as DictFrames, even vanilla ones. * @author hbm @@ -7,14 +9,16 @@ package com.hbm.inventory.material; */ public class NTMMaterial { - public String[] names; public MaterialShapes[] shapes = new MaterialShapes[0]; public boolean omitItemGen = false; public SmeltingBehavior smeltable = SmeltingBehavior.NOT_SMELTABLE; public int moltenColor = 0xFF4A00; - public NTMMaterial(String... names) { - this.names = names; + public NTMMaterial(DictFrame dict) { + + for(String name : dict.mats) { + Mats.matByName.put(name, this); + } } /** Shapes for autogen */