aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/core/material
diff options
context:
space:
mode:
authorRaven Szewczyk <git@eigenraven.me>2024-05-24 19:50:35 +0100
committerRaven Szewczyk <git@eigenraven.me>2024-05-24 19:50:35 +0100
commit6d1b2216464d4dad449ac6fcfec476832224a55e (patch)
tree526a0c15f7056313c80e6c0386e025e9b3f61781 /src/main/java/gtPlusPlus/core/material
parentb5d35f40afa606ed1b07061dad82e0521a59c186 (diff)
downloadGT5-Unofficial-6d1b2216464d4dad449ac6fcfec476832224a55e.tar.gz
GT5-Unofficial-6d1b2216464d4dad449ac6fcfec476832224a55e.tar.bz2
GT5-Unofficial-6d1b2216464d4dad449ac6fcfec476832224a55e.zip
Merge addon sources
Diffstat (limited to 'src/main/java/gtPlusPlus/core/material')
-rw-r--r--src/main/java/gtPlusPlus/core/material/ALLOY.java828
-rw-r--r--src/main/java/gtPlusPlus/core/material/ELEMENT.java651
-rw-r--r--src/main/java/gtPlusPlus/core/material/MISC_MATERIALS.java592
-rw-r--r--src/main/java/gtPlusPlus/core/material/Material.java1725
-rw-r--r--src/main/java/gtPlusPlus/core/material/MaterialGenerator.java428
-rw-r--r--src/main/java/gtPlusPlus/core/material/MaterialStack.java116
-rw-r--r--src/main/java/gtPlusPlus/core/material/NONMATERIAL.java42
-rw-r--r--src/main/java/gtPlusPlus/core/material/ORES.java701
-rw-r--r--src/main/java/gtPlusPlus/core/material/Particle.java154
-rw-r--r--src/main/java/gtPlusPlus/core/material/nuclear/FLUORIDES.java244
-rw-r--r--src/main/java/gtPlusPlus/core/material/nuclear/NUCLIDE.java311
-rw-r--r--src/main/java/gtPlusPlus/core/material/state/MaterialState.java22
12 files changed, 5814 insertions, 0 deletions
diff --git a/src/main/java/gtPlusPlus/core/material/ALLOY.java b/src/main/java/gtPlusPlus/core/material/ALLOY.java
new file mode 100644
index 0000000000..6618c61dd3
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/ALLOY.java
@@ -0,0 +1,828 @@
+package gtPlusPlus.core.material;
+
+import gregtech.api.enums.Materials;
+import gtPlusPlus.core.material.state.MaterialState;
+import gtPlusPlus.core.util.minecraft.MaterialUtils;
+
+public final class ALLOY {
+
+ // Just some GT Alloys that I need within mine.
+ public static final Material BRONZE = MaterialUtils.generateMaterialFromGtENUM(Materials.Bronze);
+ public static final Material STEEL = MaterialUtils.generateMaterialFromGtENUM(Materials.Steel);
+ public static final Material STEEL_BLACK = MaterialUtils.generateMaterialFromGtENUM(Materials.BlackSteel);
+ public static final Material INVAR = MaterialUtils.generateMaterialFromGtENUM(Materials.Invar);
+ public static final Material KANTHAL = MaterialUtils.generateMaterialFromGtENUM(Materials.Kanthal);
+ public static final Material NICHROME = MaterialUtils.generateMaterialFromGtENUM(Materials.Nichrome);
+ public static final Material TUNGSTENSTEEL = MaterialUtils.generateMaterialFromGtENUM(Materials.TungstenSteel);
+ public static final Material STAINLESS_STEEL = MaterialUtils.generateMaterialFromGtENUM(Materials.StainlessSteel);
+ public static final Material OSMIRIDIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Osmiridium);
+ public static final Material POLYETHYLENE = MaterialUtils.generateMaterialFromGtENUM(Materials.Plastic);
+ public static final Material POLYTETRAFLUOROETHYLENE = MaterialUtils
+ .generateMaterialFromGtENUM(Materials.Polytetrafluoroethylene);
+ public static final Material ENERGYCRYSTAL = new Material(
+ "Energy Crystal", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 228, 255, 0, 0 }, // Material Colour
+ 4660, // Melting Point in C
+ 5735, // Boiling Point in C
+ 90, // Protons
+ 40, // Neutrons
+ true, // Uses Blast furnace?
+ "⬟ ⯂ ⬢ ⬣ ⯃ ⯄",
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().AER, 5),
+ new MaterialStack(ELEMENT.getInstance().IGNIS, 5), new MaterialStack(ELEMENT.getInstance().TERRA, 5),
+ new MaterialStack(ELEMENT.getInstance().AQUA, 5) });
+
+ public static final Material BLOODSTEEL = new Material(
+ "Blood Steel", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 142, 28, 0, 0 }, // Material Colour
+ 2500, // Melting Point in C
+ 0, // Boiling Point in C
+ 100, // Protons
+ 100, // Neutrons
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ALLOY.STEEL, 5), new MaterialStack(ELEMENT.getInstance().IGNIS, 5) });
+
+ public static final Material STABALLOY = new Material(
+ "Staballoy", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 68, 75, 66, 0 }, // Material Colour
+ 3450, // Melting Point in C
+ -1,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().URANIUM238, 9),
+ new MaterialStack(ELEMENT.getInstance().TITANIUM, 1) });
+
+ public static final Material TANTALLOY_60 = new Material(
+ "Tantalloy-60", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 213, 231, 237, 0 }, // Material Colour
+ 3025, // Melting Point in C
+ -1,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().TUNGSTEN, 4),
+ new MaterialStack(ELEMENT.getInstance().TANTALUM, 46) });
+
+ public static final Material TANTALLOY_61 = new Material(
+ "Tantalloy-61", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 193, 211, 217, 0 }, // Material Colour
+ 3030, // Melting Point in C
+ -1,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ALLOY.TANTALLOY_60, 2),
+ new MaterialStack(ELEMENT.getInstance().TITANIUM, 12),
+ new MaterialStack(ELEMENT.getInstance().YTTRIUM, 8) });
+
+ public static final Material TUMBAGA = new Material(
+ "Tumbaga", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 255, 178, 15, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().GOLD, 70),
+ new MaterialStack(ELEMENT.getInstance().COPPER, 30) });
+
+ public static final Material POTIN = new Material(
+ "Potin", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 201, 151, 129, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().LEAD, 40), new MaterialStack(ALLOY.BRONZE, 40),
+ new MaterialStack(ELEMENT.getInstance().TIN, 20) });
+
+ /*
+ * public static final Material BEDROCKIUM = new Material( "Bedrockium", //Material Name new short[]{32, 32, 32, 0},
+ * //Material Colour 7735, //Melting Point in C 0, //Boiling Point in C 100, //Protons 100, //Neutrons false, //Uses
+ * Blast furnace? //Material Stacks with Percentage of required elements. null);
+ */
+
+ public static final Material INCONEL_625 = new Material(
+ "Inconel-625", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 128, 200, 128, 0 }, // Material Colour
+ 2425, // Melting Point in C
+ 3758,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().NICKEL, 3),
+ new MaterialStack(ELEMENT.getInstance().CHROMIUM, 7),
+ new MaterialStack(ELEMENT.getInstance().MOLYBDENUM, 10), new MaterialStack(INVAR, 10),
+ new MaterialStack(NICHROME, 13) });
+
+ public static final Material INCONEL_690 = new Material(
+ "Inconel-690", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 118, 220, 138, 0 }, // Material Colour
+ 3425, // Melting Point in C
+ 4895,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().CHROMIUM, 5),
+ new MaterialStack(ELEMENT.getInstance().NIOBIUM, 10),
+ new MaterialStack(ELEMENT.getInstance().MOLYBDENUM, 10), new MaterialStack(NICHROME, 15) });
+
+ public static final Material INCONEL_792 = new Material(
+ "Inconel-792", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 108, 240, 118, 0 }, // Material Colour
+ 3425, // Melting Point in C
+ 6200,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().NICKEL, 20),
+ new MaterialStack(ELEMENT.getInstance().NIOBIUM, 10),
+ new MaterialStack(ELEMENT.getInstance().ALUMINIUM, 20), new MaterialStack(NICHROME, 10) });
+
+ public static final Material NITINOL_60 = new Material(
+ "Nitinol 60", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 5651, // Melting Point in C
+ 8975,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().NICKEL, 40),
+ new MaterialStack(ELEMENT.getInstance().TITANIUM, 60) });
+
+ public static final Material ZERON_100 = new Material(
+ "Zeron-100", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 180, 180, 20, 0 }, // Material Colour
+ 6100,
+ 9785,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().CHROMIUM, 26),
+ new MaterialStack(ELEMENT.getInstance().NICKEL, 6), new MaterialStack(ELEMENT.getInstance().MOLYBDENUM, 4),
+ new MaterialStack(ELEMENT.getInstance().COPPER, 20), new MaterialStack(ELEMENT.getInstance().TUNGSTEN, 4),
+ new MaterialStack(ALLOY.STEEL, 40) });
+
+ public static final Material MARAGING250 = new Material(
+ "Maraging Steel 250", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 2413, // Melting Point in C
+ 4555,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ALLOY.STEEL, 64),
+ new MaterialStack(ELEMENT.getInstance().MOLYBDENUM, 4),
+ new MaterialStack(ELEMENT.getInstance().TITANIUM, 4), new MaterialStack(ELEMENT.getInstance().NICKEL, 16),
+ new MaterialStack(ELEMENT.getInstance().COBALT, 8), });
+
+ public static final Material MARAGING300 = new Material(
+ "Maraging Steel 300", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 2413, // Melting Point in C
+ 4555,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ALLOY.STEEL, 64), new MaterialStack(ELEMENT.getInstance().TITANIUM, 4),
+ new MaterialStack(ELEMENT.getInstance().ALUMINIUM, 4), new MaterialStack(ELEMENT.getInstance().NICKEL, 16),
+ new MaterialStack(ELEMENT.getInstance().COBALT, 8), });
+
+ public static final Material MARAGING350 = new Material(
+ "Maraging Steel 350", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 2413, // Melting Point in C
+ 4555,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ALLOY.STEEL, 64), new MaterialStack(ELEMENT.getInstance().ALUMINIUM, 4),
+ new MaterialStack(ELEMENT.getInstance().MOLYBDENUM, 4), new MaterialStack(ELEMENT.getInstance().NICKEL, 16),
+ new MaterialStack(ELEMENT.getInstance().COBALT, 8), });
+
+ public static final Material AQUATIC_STEEL = new Material(
+ "Watertight Steel", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 120, 120, 180 }, // Material Colour
+ 2673, // Melting Point in C
+ 4835,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ALLOY.STEEL, 60), new MaterialStack(ELEMENT.getInstance().CARBON, 10),
+ new MaterialStack(ELEMENT.getInstance().MANGANESE, 5), new MaterialStack(ELEMENT.getInstance().SILICON, 10),
+ new MaterialStack(ELEMENT.getInstance().PHOSPHORUS, 5), new MaterialStack(ELEMENT.getInstance().SULFUR, 5),
+ new MaterialStack(ELEMENT.getInstance().ALUMINIUM, 5) });
+
+ public static final Material STELLITE = new Material(
+ "Stellite", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 4310, // Melting Point in C
+ 6250,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().COBALT, 35),
+ new MaterialStack(ELEMENT.getInstance().CHROMIUM, 35),
+ new MaterialStack(ELEMENT.getInstance().MANGANESE, 20),
+ new MaterialStack(ELEMENT.getInstance().TITANIUM, 10) });
+
+ public static final Material TALONITE = new Material(
+ "Talonite", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 3454, // Melting Point in C
+ 5500,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().COBALT, 40),
+ new MaterialStack(ELEMENT.getInstance().CHROMIUM, 30),
+ new MaterialStack(ELEMENT.getInstance().PHOSPHORUS, 20),
+ new MaterialStack(ELEMENT.getInstance().MOLYBDENUM, 10) });
+
+ public static final Material HASTELLOY_W = new Material(
+ "Hastelloy-W", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 3350, // Melting Point in C
+ 5755,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().IRON, 06),
+ new MaterialStack(ELEMENT.getInstance().COBALT, 2), new MaterialStack(ELEMENT.getInstance().MOLYBDENUM, 24),
+ new MaterialStack(ELEMENT.getInstance().CHROMIUM, 6),
+ new MaterialStack(ELEMENT.getInstance().NICKEL, 62) });
+
+ public static final Material HASTELLOY_X = new Material(
+ "Hastelloy-X", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 3350, // Melting Point in C
+ 5755,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().IRON, 18),
+ new MaterialStack(ELEMENT.getInstance().MANGANESE, 2), new MaterialStack(ELEMENT.getInstance().SILICON, 2),
+ new MaterialStack(ELEMENT.getInstance().MOLYBDENUM, 8),
+ new MaterialStack(ELEMENT.getInstance().CHROMIUM, 22),
+ new MaterialStack(ELEMENT.getInstance().NICKEL, 48) });
+
+ public static final Material HASTELLOY_N = new Material(
+ "Hastelloy-N", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 4350, // Melting Point in C
+ 6875,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().YTTRIUM, 8),
+ new MaterialStack(ELEMENT.getInstance().MOLYBDENUM, 16),
+ new MaterialStack(ELEMENT.getInstance().CHROMIUM, 8), new MaterialStack(ELEMENT.getInstance().TITANIUM, 8),
+ new MaterialStack(ELEMENT.getInstance().NICKEL, 60) });
+
+ public static final Material HASTELLOY_C276 = new Material(
+ "Hastelloy-C276", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 4350, // Melting Point in C
+ 6520,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().COBALT, 2),
+ new MaterialStack(ELEMENT.getInstance().MOLYBDENUM, 16),
+ new MaterialStack(ELEMENT.getInstance().TUNGSTEN, 2), new MaterialStack(ELEMENT.getInstance().COPPER, 2),
+ new MaterialStack(ELEMENT.getInstance().CHROMIUM, 14),
+ new MaterialStack(ELEMENT.getInstance().NICKEL, 64) });
+
+ public static final Material INCOLOY_020 = new Material(
+ "Incoloy-020", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 3425, // Melting Point in C
+ 5420,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().IRON, 40),
+ new MaterialStack(ELEMENT.getInstance().COPPER, 4), new MaterialStack(ELEMENT.getInstance().CHROMIUM, 20),
+ new MaterialStack(ELEMENT.getInstance().NICKEL, 36) });
+
+ public static final Material INCOLOY_DS = new Material(
+ "Incoloy-DS", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 3425, // Melting Point in C
+ 5420,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().IRON, 46),
+ new MaterialStack(ELEMENT.getInstance().COBALT, 18), new MaterialStack(ELEMENT.getInstance().CHROMIUM, 18),
+ new MaterialStack(ELEMENT.getInstance().NICKEL, 18) });
+
+ public static final Material INCOLOY_MA956 = new Material(
+ "Incoloy-MA956", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 4425, // Melting Point in C
+ 6875,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().IRON, 64),
+ new MaterialStack(ELEMENT.getInstance().ALUMINIUM, 12),
+ new MaterialStack(ELEMENT.getInstance().CHROMIUM, 20),
+ new MaterialStack(ELEMENT.getInstance().YTTRIUM, 4) });
+
+ public static final Material TUNGSTEN_CARBIDE = new Material(
+ "Tungsten Carbide", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 44, 44, 44, 0 }, // Material Colour
+ 3422, // Melting Point in C
+ -1,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ false, // Generate cells
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().CARBON, 50),
+ new MaterialStack(ELEMENT.getInstance().TUNGSTEN, 50) });
+
+ public static final Material TUNGSTEN_TITANIUM_CARBIDE = new Material(
+ "Tungsten Titanium Carbide", // Material Name
+ MaterialState.SOLID, // State
+ null,
+ 4422, // Melting Point in C
+ -1,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(TUNGSTEN_CARBIDE, 70),
+ new MaterialStack(ELEMENT.getInstance().TITANIUM, 30) });
+
+ public static final Material SILICON_CARBIDE = new Material(
+ "Silicon Carbide", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 40, 48, 36, 0 }, // Material Colour
+ 1414, // Melting Point in C
+ -1,
+ -1,
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().SILICON, 50),
+ new MaterialStack(ELEMENT.getInstance().CARBON, 50) });
+
+ public static final Material TANTALUM_CARBIDE = new Material(
+ "Tantalum Carbide", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 139, 136, 120, 0 }, // Material Colour
+ 2980, // Melting Point in C
+ -1,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().TANTALUM, 50),
+ new MaterialStack(ELEMENT.getInstance().CARBON, 50) });
+
+ public static final Material ZIRCONIUM_CARBIDE = new Material(
+ "Zirconium Carbide", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 222, 202, 180, 0 }, // Material Colour
+ 1555, // Melting Point in C
+ -1,
+ -1,
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().ZIRCONIUM, 50),
+ new MaterialStack(ELEMENT.getInstance().CARBON, 50) });
+
+ public static final Material NIOBIUM_CARBIDE = new Material(
+ "Niobium Carbide", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 205, 197, 191, 0 }, // Material Colour
+ 2477, // Melting Point in C
+ -1,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().NIOBIUM, 50),
+ new MaterialStack(ELEMENT.getInstance().CARBON, 50) });
+
+ public static final Material ARCANITE = new Material(
+ "Arcanite", // Material Name
+ MaterialState.SOLID, // State
+ null,
+ 5666, // Melting Point in C
+ 9875,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().THORIUM232, 40),
+ new MaterialStack(ENERGYCRYSTAL, 40), new MaterialStack(ELEMENT.getInstance().ORDO, 10),
+ new MaterialStack(ELEMENT.getInstance().PERDITIO, 10) });
+
+ public static final Material LEAGRISIUM = new Material(
+ "Grisium", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 53, 93, 106, 0 }, // Material Colour
+ 3850, // Melting Point in C
+ 5550, // Boiling Point in C
+ 96, // Protons
+ 128, // Neutrons
+ true, // Uses Blast furnace?
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().TITANIUM, 18),
+ new MaterialStack(ELEMENT.getInstance().CARBON, 18), new MaterialStack(ELEMENT.getInstance().POTASSIUM, 18),
+ new MaterialStack(ELEMENT.getInstance().LITHIUM, 18), new MaterialStack(ELEMENT.getInstance().SULFUR, 18),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 10) }); // Material Stacks with Percentage of
+ // required elements.
+
+ public static final Material EGLIN_STEEL_BASE = new Material(
+ "Eglin Steel Base Compound", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1,
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().IRON, 12), new MaterialStack(KANTHAL, 3),
+ new MaterialStack(INVAR, 15) });
+
+ public static final Material EGLIN_STEEL = new Material(
+ "Eglin Steel", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 139, 69, 19, 0 }, // Material Colour
+ 1048, // Melting Point in C
+ 1973, // Boiling Point in C
+ -1,
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ALLOY.EGLIN_STEEL_BASE, 10),
+ new MaterialStack(ELEMENT.getInstance().SULFUR, 1), new MaterialStack(ELEMENT.getInstance().SILICON, 4),
+ new MaterialStack(ELEMENT.getInstance().CARBON, 1) });
+
+ public static final Material HG1223 = new Material(
+ "HG-1223", // Material Name
+ MaterialState.LIQUID, // State
+ new short[] { 39, 85, 159, 0 }, // Material Colour
+ 6357, // Melting Point in C
+ 8563, // Boiling Point in C
+ -1,
+ -1,
+ false, // Uses Blast furnace?
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().MERCURY, 1),
+ new MaterialStack(ELEMENT.getInstance().BARIUM, 2), new MaterialStack(ELEMENT.getInstance().CALCIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().COPPER, 3), new MaterialStack(ELEMENT.getInstance().OXYGEN, 8) });
+
+ public static final Material HS188A = new Material(
+ "HS188-A", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 4870, // Melting Point in C
+ 7550, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ true, // Uses Blast furnace?
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().COBALT, 20),
+ new MaterialStack(ELEMENT.getInstance().HAFNIUM, 20), new MaterialStack(TALONITE, 16),
+ new MaterialStack(ELEMENT.getInstance().RHENIUM, 10), new MaterialStack(NIOBIUM_CARBIDE, 10),
+ new MaterialStack(HASTELLOY_X, 8), new MaterialStack(TUNGSTENSTEEL, 8),
+ new MaterialStack(ZIRCONIUM_CARBIDE, 8), }); // Material Stacks with Percentage of required
+ // elements.
+
+ /**
+ * Stargate Materials - #D2FFA9 210, 255, 170
+ */
+ public static final Material TRINIUM_TITANIUM = new Material(
+ "Trinium Titanium Alloy", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 3750, // Melting Point in C
+ 7210, // Boiling Point in C
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().TRINIUM_REFINED, 3),
+ new MaterialStack(ELEMENT.getInstance().TITANIUM, 7) });
+
+ public static final Material TRINIUM_NAQUADAH = new Material(
+ "Trinium Naquadah Alloy", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 4200, // Melting Point in C
+ 7400, // Boiling Point in C
+ -1,
+ -1,
+ false, // Uses Blast furnace?
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().TRINIUM_REFINED, 5),
+ new MaterialStack(ELEMENT.getInstance().NAQUADAH, 9) });
+ public static final Material TRINIUM_NAQUADAH_CARBON = new Material(
+ "Trinium Naquadah Carbonite", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 6500, // Melting Point in C
+ 9000, // Boiling Point in C
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ new MaterialStack[] { new MaterialStack(TRINIUM_NAQUADAH, 9),
+ new MaterialStack(ELEMENT.getInstance().CARBON, 1) });
+
+ public static final Material TRINIUM_REINFORCED_STEEL = new Material(
+ "Arceus Alloy 2B", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 205, 197, 23, 0 }, // Material Colour
+ 7555, // Melting Point in C
+ 12350,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().TRINIUM_REFINED, 30),
+ new MaterialStack(ALLOY.MARAGING350, 40), new MaterialStack(ALLOY.TUNGSTENSTEEL, 20),
+ new MaterialStack(ALLOY.OSMIRIDIUM, 10), new MaterialStack(ELEMENT.getInstance().STRONTIUM, 10) });
+
+ /*
+ * Witchery Material
+ */
+
+ public static final Material KOBOLDITE = new Material(
+ "Koboldite", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 80, 210, 255, 0 }, // Material Colour
+ -1, // Melting Point in C
+ -1,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().NICKEL, 35),
+ new MaterialStack(ELEMENT.getInstance().THAUMIUM, 30), new MaterialStack(ELEMENT.getInstance().IRON, 35) });
+
+ /*
+ * Top Tier Alloys
+ */
+
+ public static final Material HELICOPTER = new Material(
+ "HeLiCoPtEr", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 5763,
+ 8192,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().HELIUM, 20),
+ new MaterialStack(ELEMENT.getInstance().LITHIUM, 20), new MaterialStack(ELEMENT.getInstance().COBALT, 20),
+ new MaterialStack(ELEMENT.getInstance().PLATINUM, 20),
+ new MaterialStack(ELEMENT.getInstance().ERBIUM, 20) });
+
+ // 0lafe Compound
+ public static final Material LAFIUM = new Material(
+ "Lafium Compound", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 6350, // Melting Point in C
+ 9865, // Boiling Point in C
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ALLOY.HASTELLOY_N, 8),
+ new MaterialStack(ELEMENT.getInstance().NAQUADAH, 4), new MaterialStack(ELEMENT.getInstance().SAMARIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().TUNGSTEN, 4), new MaterialStack(ELEMENT.getInstance().ARGON, 2),
+ new MaterialStack(ELEMENT.getInstance().ALUMINIUM, 6), new MaterialStack(ELEMENT.getInstance().NICKEL, 8),
+ new MaterialStack(ELEMENT.getInstance().CARBON, 2) });
+
+ // Cinobi Alloy
+ public static final Material CINOBITE = new Material(
+ "Cinobite A243", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 7350, // Melting Point in C
+ 12565, // Boiling Point in C
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ALLOY.ZERON_100, 16),
+ new MaterialStack(ELEMENT.getInstance().NAQUADRIA, 7),
+ new MaterialStack(ELEMENT.getInstance().GADOLINIUM, 5),
+ new MaterialStack(ELEMENT.getInstance().ALUMINIUM, 3), new MaterialStack(ELEMENT.getInstance().MERCURY, 2),
+ new MaterialStack(ELEMENT.getInstance().TIN, 2), new MaterialStack(ELEMENT.getInstance().TITANIUM, 12),
+ new MaterialStack(ALLOY.OSMIRIDIUM, 6) });
+
+ // Piky Alloy
+ public static final Material PIKYONIUM = new Material(
+ "Pikyonium 64B", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 52, 103, 186, 0 }, // Material Colour
+ 6850, // Melting Point in C
+ 11765, // Boiling Point in C
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ALLOY.INCONEL_792, 16), new MaterialStack(ALLOY.EGLIN_STEEL, 10),
+ new MaterialStack(ELEMENT.getInstance().NAQUADAH_ENRICHED, 8),
+ new MaterialStack(ELEMENT.getInstance().CERIUM, 6), new MaterialStack(ELEMENT.getInstance().ANTIMONY, 4),
+ new MaterialStack(ELEMENT.getInstance().PLATINUM, 4), new MaterialStack(ELEMENT.getInstance().YTTERBIUM, 2),
+ new MaterialStack(ALLOY.TUNGSTENSTEEL, 8) });
+
+ // Piky Alloy
+ public static final Material ABYSSAL = new Material(
+ "Abyssal Alloy", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 9650, // Melting Point in C
+ 13765, // Boiling Point in C
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ALLOY.STAINLESS_STEEL, 10),
+ new MaterialStack(ALLOY.TUNGSTEN_CARBIDE, 10), new MaterialStack(ALLOY.NICHROME, 10),
+ new MaterialStack(ALLOY.BRONZE, 10), new MaterialStack(ALLOY.INCOLOY_MA956, 10),
+ new MaterialStack(ELEMENT.getInstance().IODINE, 2), new MaterialStack(ELEMENT.getInstance().RADON, 2),
+ new MaterialStack(ELEMENT.getInstance().GERMANIUM, 2), });
+
+ // Alkalus Alloy
+ public static final Material LAURENIUM = new Material(
+ "Laurenium", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 244, 168, 255, 0 }, // Material Colour
+ 6825, // Melting Point in C
+ 11355, // Boiling Point in C
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ALLOY.EGLIN_STEEL, 40),
+ new MaterialStack(ELEMENT.getInstance().INDIUM, 10), new MaterialStack(ELEMENT.getInstance().CHROMIUM, 20),
+ new MaterialStack(ELEMENT.getInstance().DYSPROSIUM, 5),
+ new MaterialStack(ELEMENT.getInstance().RHENIUM, 5), });
+
+ // Bot Alloy
+ public static final Material BOTMIUM = new Material(
+ "Botmium", // Material Name
+ MaterialState.SOLID, // State
+ new short[] { 80, 160, 80, 0 }, // Material Colour
+ 8220, // Melting Point in C
+ 10540, // Boiling Point in C
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ALLOY.NITINOL_60, 2),
+ new MaterialStack(ELEMENT.getInstance().OSMIUM, 12), new MaterialStack(ELEMENT.getInstance().RUTHENIUM, 12),
+ new MaterialStack(ELEMENT.getInstance().THALLIUM, 6), });
+
+ // Titansteel
+ public static final Material TITANSTEEL = new Material(
+ "Titansteel", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 8250, // Melting Point in C
+ 11765, // Boiling Point in C
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ALLOY.TUNGSTEN_TITANIUM_CARBIDE, 3),
+ new MaterialStack(ELEMENT.getInstance().IGNIS, 1), new MaterialStack(ELEMENT.getInstance().TERRA, 1),
+ new MaterialStack(ELEMENT.getInstance().PERDITIO, 1), });
+
+ public static final Material OCTIRON = new Material(
+ "Octiron", // Material Name
+ MaterialState.SOLID, // State
+ null,
+ 9120, // Melting Point in C
+ 14200,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ARCANITE, 30), new MaterialStack(TITANSTEEL, 30),
+ new MaterialStack(ENERGYCRYSTAL, 5), new MaterialStack(STEEL_BLACK, 10),
+ new MaterialStack(ELEMENT.getInstance().THAUMIUM, 25) });
+
+ public static final Material BLACK_TITANIUM = new Material(
+ "Black Titanium", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ Materials.Titanium.mMeltingPoint * 4, // Melting Point in C
+ Materials.Titanium.mMeltingPoint * 16,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().TITANIUM, 55),
+ new MaterialStack(ELEMENT.getInstance().LANTHANUM, 12),
+ new MaterialStack(ELEMENT.getInstance().TUNGSTEN, 8), new MaterialStack(ELEMENT.getInstance().COBALT, 6),
+ new MaterialStack(ELEMENT.getInstance().MANGANESE, 4),
+ new MaterialStack(ELEMENT.getInstance().PHOSPHORUS, 4),
+ new MaterialStack(ELEMENT.getInstance().PALLADIUM, 4), new MaterialStack(ELEMENT.getInstance().NIOBIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().ARGON, 5) });
+
+ public static final Material BABBIT_ALLOY = new Material(
+ "Babbit Alloy", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 268, // Melting Point in C
+ 589,
+ -1,
+ -1,
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().TIN, 10),
+ new MaterialStack(ELEMENT.getInstance().LEAD, 72), new MaterialStack(ELEMENT.getInstance().ANTIMONY, 16),
+ new MaterialStack(ELEMENT.getInstance().ARSENIC, 2) });
+
+ public static final Material INDALLOY_140 = new Material(
+ "Indalloy 140", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 5200, // Melting Point in C
+ 6500,
+ -1,
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().BISMUTH, 47),
+ new MaterialStack(ELEMENT.getInstance().LEAD, 25), new MaterialStack(ELEMENT.getInstance().TIN, 13),
+ new MaterialStack(ELEMENT.getInstance().CADMIUM, 10), new MaterialStack(ELEMENT.getInstance().INDIUM, 5) });
+
+ // Quantum
+ public static final Material QUANTUM = new Material(
+ "Quantum", // Material Name
+ MaterialState.SOLID, // State
+ null, // Material Colour
+ 10500, // Melting Point in C
+ 25000, // Boiling Point in C
+ 150, // Protons
+ 200, // Neutrons
+ true, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ALLOY.STELLITE, 15), new MaterialStack(ALLOY.ENERGYCRYSTAL, 5),
+ new MaterialStack(ALLOY.SILICON_CARBIDE, 5), new MaterialStack(ELEMENT.getInstance().GALLIUM, 5),
+ new MaterialStack(ELEMENT.getInstance().AMERICIUM, 5),
+ new MaterialStack(ELEMENT.getInstance().PALLADIUM, 5), new MaterialStack(ELEMENT.getInstance().BISMUTH, 5),
+ new MaterialStack(ELEMENT.getInstance().GERMANIUM, 5) });
+}
diff --git a/src/main/java/gtPlusPlus/core/material/ELEMENT.java b/src/main/java/gtPlusPlus/core/material/ELEMENT.java
new file mode 100644
index 0000000000..9bcea2a47b
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/ELEMENT.java
@@ -0,0 +1,651 @@
+package gtPlusPlus.core.material;
+
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.TextureSet;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.client.CustomTextureSet.TextureSets;
+import gtPlusPlus.core.material.state.MaterialState;
+import gtPlusPlus.core.util.data.StringUtils;
+import gtPlusPlus.core.util.minecraft.MaterialUtils;
+
+public final class ELEMENT {
+
+ public static final String[] NAMES = new String[] { "Hydrogen", "Helium" };
+
+ // First 50 Elements
+ public final Material HYDROGEN = MaterialUtils.generateMaterialFromGtENUM(Materials.Hydrogen);
+ public final Material HELIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Helium);
+ public final Material LITHIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Lithium);
+ public final Material BERYLLIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Beryllium);
+ public final Material BORON = MaterialUtils.generateMaterialFromGtENUM(Materials.Boron);
+ public final Material CARBON = MaterialUtils.generateMaterialFromGtENUM(Materials.Carbon);
+ public final Material NITROGEN = MaterialUtils.generateMaterialFromGtENUM(Materials.Nitrogen);
+ public final Material OXYGEN = MaterialUtils.generateMaterialFromGtENUM(Materials.Oxygen);
+ public final Material FLUORINE = MaterialUtils.generateMaterialFromGtENUM(Materials.Fluorine);
+ public final Material NEON = new Material(
+ "Neon",
+ MaterialState.PURE_GAS,
+ new short[] { 240, 180, 30 },
+ -248,
+ -246,
+ 10,
+ 10,
+ false,
+ "Ne",
+ 0); // Not a GT Inherited Material
+ public final Material SODIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Sodium);
+ public final Material MAGNESIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Magnesium);
+ public final Material ALUMINIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Aluminium);
+ public final Material ALUMINIUMOXIDE = MaterialUtils.generateMaterialFromGtENUM(Materials.Aluminiumoxide);
+ public final Material SILICON = MaterialUtils.generateMaterialFromGtENUM(Materials.Silicon);
+ public final Material SILICONDIOXIDE = MaterialUtils.generateMaterialFromGtENUM(Materials.SiliconDioxide);
+ public final Material PHOSPHORUS = MaterialUtils.generateMaterialFromGtENUM(Materials.Phosphorus);
+ public final Material SULFUR = MaterialUtils.generateMaterialFromGtENUM(Materials.Sulfur);
+ public final Material CHLORINE = MaterialUtils.generateMaterialFromGtENUM(Materials.Chlorine);
+ public final Material ARGON = MaterialUtils.generateMaterialFromGtENUM(Materials.Argon);
+ public final Material POTASSIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Potassium);
+ public final Material CALCIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Calcium);
+ public final Material SCANDIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Scandium);
+ public final Material TITANIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Titanium);
+ public final Material VANADIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Vanadium);
+ public final Material CHROMIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Chrome);
+ public final Material MANGANESE = MaterialUtils.generateMaterialFromGtENUM(Materials.Manganese);
+ public final Material IRON = MaterialUtils.generateMaterialFromGtENUM(Materials.Iron);
+ public final Material COBALT = MaterialUtils.generateMaterialFromGtENUM(Materials.Cobalt);
+ public final Material NICKEL = MaterialUtils.generateMaterialFromGtENUM(Materials.Nickel);
+ public final Material COPPER = MaterialUtils.generateMaterialFromGtENUM(Materials.Copper);
+ public final Material ZINC = MaterialUtils.generateMaterialFromGtENUM(Materials.Zinc);
+ public final Material GALLIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Gallium);
+ public final Material GERMANIUM = new Material(
+ "Germanium",
+ MaterialState.SOLID,
+ new short[] { 200, 200, 200 },
+ 937,
+ 2830,
+ 32,
+ 41,
+ false,
+ "Ge",
+ 0); // Not a GT Inherited Material
+ public final Material ARSENIC = MaterialUtils.generateMaterialFromGtENUM(Materials.Arsenic);
+ public final Material SELENIUM = new Material(
+ "Selenium",
+ MaterialState.SOLID,
+ new short[] { 190, 190, 190 },
+ 217,
+ 685,
+ 34,
+ 45,
+ false,
+ "Se",
+ 0); // Not a GT Inherited Material
+ public final Material BROMINE = new Material(
+ "Bromine",
+ MaterialState.PURE_LIQUID,
+ new short[] { 200, 25, 25 },
+ -7,
+ 58,
+ 35,
+ 45,
+ false,
+ "Br",
+ 0); // Not a GT Inherited Material
+ public final Material KRYPTON = new Material(
+ "Krypton",
+ MaterialState.PURE_GAS,
+ new short[] { 5, 200, 220 },
+ -157,
+ -153,
+ 36,
+ 48,
+ false,
+ "Kr",
+ 0); // Not a GT Inherited Material
+ public final Material RUBIDIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Rubidium);
+ public final Material STRONTIUM = MaterialUtils
+ .generateMaterialFromGtENUM(Materials.Strontium, new short[] { 230, 210, 110 }, TextureSet.SET_FLINT);
+ public final Material YTTRIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Yttrium);
+ public final Material ZIRCONIUM = new Material(
+ "Zirconium",
+ MaterialState.SOLID,
+ new short[] { 255, 250, 205 },
+ 1855,
+ 4377,
+ 40,
+ 51,
+ false,
+ "Zr",
+ 0); // Not a GT Inherited Material
+ public final Material NIOBIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Niobium);
+ public final Material MOLYBDENUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Molybdenum);
+
+ public final Material RUTHENIUM = new Material(
+ "Ruthenium",
+ MaterialState.SOLID,
+ new short[] { 220, 220, 220 },
+ 2250,
+ 3900,
+ 44,
+ 57,
+ false,
+ "Ru",
+ 0); // Not a GT Inherited Material
+ public final Material RHODIUM = new Material(
+ "Rhodium",
+ MaterialState.SOLID,
+ new short[] { 220, 220, 220 },
+ 1966,
+ 3727,
+ 45,
+ 58,
+ false,
+ "Rh",
+ 0); // Not a GT Inherited Material
+ public final Material AMERICIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Americium);
+ public final Material TECHNETIUM = new Material(
+ "Technetium",
+ MaterialState.SOLID,
+ TextureSets.NUCLEAR.get(),
+ new short[] { 220, 220, 220 },
+ 2200,
+ 4877,
+ 43,
+ 55,
+ false,
+ "Tc",
+ 2); // Not a GT Inherited Material
+ public final Material NEPTUNIUM = new Material(
+ "Neptunium",
+ MaterialState.SOLID,
+ TextureSets.NUCLEAR.get(),
+ new short[] { 200, 220, 205 },
+ 640,
+ 3902,
+ 93,
+ 144,
+ false,
+ "Np",
+ 2); // Not a GT Inherited Material
+
+ public final Material PALLADIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Palladium);
+ public final Material SILVER = MaterialUtils.generateMaterialFromGtENUM(Materials.Silver);
+ public final Material CADMIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Cadmium);
+ public final Material INDIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Indium);
+ public final Material TIN = MaterialUtils.generateMaterialFromGtENUM(Materials.Tin);
+ public final Material ANTIMONY = MaterialUtils.generateMaterialFromGtENUM(Materials.Antimony);
+ public final Material TELLURIUM = new Material(
+ "Tellurium",
+ MaterialState.SOLID,
+ new short[] { 210, 210, 210 },
+ 449,
+ 989,
+ 52,
+ 76,
+ false,
+ "Te",
+ 0); // Not a GT Inherited Material
+ public final Material IODINE = new Material(
+ "Iodine",
+ MaterialState.SOLID,
+ TextureSet.SET_SHINY,
+ new short[] { 96, 96, 96 },
+ 114,
+ 184,
+ 53,
+ 74,
+ false,
+ "I",
+ 0); // Not a GT Inherited Material
+ public final Material XENON = new Material(
+ "Xenon",
+ MaterialState.PURE_GAS,
+ new short[] { 5, 105, 210 },
+ -111,
+ -108,
+ 54,
+ 77,
+ false,
+ "Xe",
+ 0); // Not a GT Inherited Material
+ public final Material CAESIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Caesium);
+ public final Material BARIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Barium);
+ public final Material LANTHANUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Lanthanum);
+ public final Material CERIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Cerium);
+ public final Material PRASEODYMIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Praseodymium);
+ public final Material NEODYMIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Neodymium);
+ public final Material PROMETHIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Promethium);
+ public final Material SAMARIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Samarium);
+ public final Material EUROPIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Europium);
+ public final Material GADOLINIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Gadolinium);
+ public final Material TERBIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Terbium);
+ public final Material DYSPROSIUM = new Material(
+ "Dysprosium",
+ MaterialState.SOLID,
+ new short[] { 180, 180, 180 },
+ 1412,
+ 2562,
+ 66,
+ 97,
+ false,
+ "Dy",
+ 0); // Not a GT Inherited Material
+ public final Material HOLMIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Holmium);
+ public final Material ERBIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Erbium);
+ public final Material THULIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Thulium);
+ public final Material YTTERBIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Ytterbium);
+ public final Material LUTETIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Lutetium);
+ public final Material HAFNIUM = new Material(
+ "Hafnium",
+ MaterialState.SOLID,
+ new short[] { 128, 128, 128 },
+ 2150,
+ 5400,
+ 72,
+ 106,
+ false,
+ "Hf",
+ 0); // Not a GT Inherited Material
+
+ // Second 50 elements
+ public final Material TANTALUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Tantalum);
+ public final Material TUNGSTEN = MaterialUtils.generateMaterialFromGtENUM(Materials.Tungsten);
+ public final Material RHENIUM = new Material(
+ "Rhenium",
+ MaterialState.SOLID,
+ new short[] { 150, 150, 150 },
+ 3180,
+ 3627,
+ 75,
+ 111,
+ false,
+ "Re",
+ 0); // Not a GT Inherited Material
+ public final Material OSMIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Osmium);
+ public final Material IRIDIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Iridium);
+ public final Material PLATINUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Platinum);
+ public final Material GOLD = MaterialUtils.generateMaterialFromGtENUM(Materials.Gold);
+ public final Material MERCURY = MaterialUtils.generateMaterialFromGtENUM(Materials.Mercury); // Mercury
+ public final Material THALLIUM = new Material(
+ "Thallium",
+ MaterialState.SOLID,
+ new short[] { 175, 175, 175 },
+ 304,
+ 1457,
+ 81,
+ 123,
+ false,
+ "Tl",
+ 0); // Not a GT Inherited Material
+ public final Material LEAD = MaterialUtils.generateMaterialFromGtENUM(Materials.Lead);
+ public final Material BISMUTH = MaterialUtils.generateMaterialFromGtENUM(Materials.Bismuth);
+ public final Material POLONIUM = new Material(
+ "Polonium",
+ MaterialState.SOLID,
+ TextureSets.NUCLEAR.get(),
+ new short[] { 180, 170, 180 },
+ 254,
+ 962,
+ 84,
+ 125,
+ false,
+ "Po",
+ 1); // Not a GT Inherited Material
+
+ public final Material RADON = MaterialUtils.generateMaterialFromGtENUM(Materials.Radon);
+
+ public final Material RADIUM = new Material(
+ "Radium",
+ MaterialState.SOLID,
+ TextureSets.NUCLEAR.get(),
+ new short[] { 165, 165, 165 },
+ 700,
+ 1737,
+ 88,
+ 138,
+ false,
+ "Ra",
+ 1); // Not a GT Inherited Material
+
+ public final Material THORIUM = new Material(
+ "Thorium",
+ MaterialState.SOLID,
+ Materials.Thorium.mRGBa,
+ Materials.Thorium.mMeltingPoint,
+ Materials.Thorium.mBlastFurnaceTemp,
+ 90,
+ 142,
+ false,
+ StringUtils.superscript("Th"),
+ 1);
+ public final Material PROTACTINIUM = new Material(
+ "Protactinium",
+ MaterialState.SOLID,
+ TextureSets.NUCLEAR.get(),
+ new short[] { 190, 150, 170 },
+ 1568,
+ 4027,
+ 91,
+ 140,
+ false,
+ "Pa",
+ 1); // Not a GT Inherited Material
+ public final Material URANIUM238 = MaterialUtils.generateMaterialFromGtENUM(Materials.Uranium);
+ public final Material URANIUM235 = MaterialUtils.generateMaterialFromGtENUM(Materials.Uranium235);
+ public final Material PLUTONIUM241 = MaterialUtils.generateMaterialFromGtENUM(Materials.Plutonium241);
+ public final Material CURIUM = new Material(
+ "Curium",
+ MaterialState.SOLID,
+ TextureSets.NUCLEAR.get(),
+ new short[] { 175, 85, 110 },
+ 1340,
+ 3110,
+ 96,
+ 151,
+ false,
+ "Cm",
+ 3); // Not a GT Inherited Material
+
+ public final Material CALIFORNIUM = new Material(
+ "Californium",
+ MaterialState.SOLID,
+ TextureSets.NUCLEAR.get(),
+ new short[] { 85, 110, 205 },
+ 899,
+ 1472,
+ 98,
+ 153,
+ false,
+ "Cf",
+ 4); // Not a GT Inherited Material
+
+ public final Material FERMIUM = new Material(
+ "Fermium",
+ MaterialState.LIQUID,
+ TextureSets.NUCLEAR.get(),
+ new short[] { 75, 90, 25 },
+ 1527,
+ 3850,
+ 100,
+ 157,
+ false,
+ "Fm",
+ 5); // Not a GT Inherited Material //Boiling Point is made up
+
+ // Misc
+ public final Material AER = MaterialUtils.generateMaterialFromGtENUM(Materials.InfusedAir, TextureSets.GEM_A.get());
+ public final Material IGNIS = MaterialUtils
+ .generateMaterialFromGtENUM(Materials.InfusedFire, TextureSets.GEM_A.get());
+ public final Material TERRA = MaterialUtils
+ .generateMaterialFromGtENUM(Materials.InfusedEarth, TextureSets.GEM_A.get());
+ public final Material AQUA = MaterialUtils
+ .generateMaterialFromGtENUM(Materials.InfusedWater, TextureSets.GEM_A.get());
+ public final Material PERDITIO = MaterialUtils
+ .generateMaterialFromGtENUM(Materials.InfusedEntropy, TextureSets.GEM_A.get());
+ public final Material ORDO = MaterialUtils
+ .generateMaterialFromGtENUM(Materials.InfusedOrder, TextureSets.GEM_A.get());
+
+ public final Material NAQUADAH = MaterialUtils.generateMaterialFromGtENUM(Materials.Naquadah);
+ public final Material NAQUADAH_ENRICHED = MaterialUtils.generateMaterialFromGtENUM(Materials.NaquadahEnriched);
+ public final Material NAQUADRIA = MaterialUtils.generateMaterialFromGtENUM(Materials.Naquadria);
+ public final Material TRINIUM;
+ public final Material TRINIUM_REFINED;
+ // https://github.com/Blood-Asp/GT5-Unofficial/issues/609
+
+ // Custom Isotopes
+ public final Material LITHIUM7 = new Material(
+ "Lithium 7",
+ MaterialState.SOLID,
+ TextureSet.SET_SHINY,
+ Materials.Lithium.mRGBa,
+ Materials.Lithium.mMeltingPoint,
+ Materials.Lithium.mBlastFurnaceTemp,
+ Materials.Lithium.getProtons(),
+ Materials.Lithium.getNeutrons(),
+ Materials.Lithium.mBlastFurnaceRequired,
+ StringUtils.superscript("7Li"),
+ 0,
+ false); // Not a GT Inherited Material
+ public final Material URANIUM232 = new Material(
+ "Uranium 232",
+ MaterialState.SOLID,
+ TextureSets.NUCLEAR.get(),
+ new short[] { 88, 220, 103, 0 },
+ 1132,
+ 4131,
+ 92,
+ 140,
+ false,
+ StringUtils.superscript("232U"),
+ 4); // Not a GT Inherited Material
+ public final Material URANIUM233 = new Material(
+ "Uranium 233",
+ MaterialState.SOLID,
+ TextureSets.NUCLEAR.get(),
+ new short[] { 73, 220, 83, 0 },
+ 1132,
+ 4131,
+ 92,
+ 141,
+ false,
+ StringUtils.superscript("233U"),
+ 2); // Not a GT Inherited Material
+ public final Material THORIUM232 = new Material(
+ "Thorium 232",
+ MaterialState.SOLID,
+ TextureSets.NUCLEAR.get(),
+ new short[] { 15, 60, 15, 0 },
+ Materials.Thorium.mMeltingPoint,
+ Materials.Thorium.mBlastFurnaceTemp,
+ 90,
+ 142,
+ false,
+ StringUtils.superscript("232Th"),
+ 1,
+ true); // Not a GT Inherited Material
+
+ // RTG Fuels
+ public final Material PLUTONIUM238 = new Material(
+ "Plutonium-238",
+ MaterialState.SOLID,
+ TextureSets.NUCLEAR.get(),
+ Materials.Plutonium241.mDurability,
+ Materials.Plutonium241.mRGBa,
+ Materials.Plutonium241.mMeltingPoint,
+ Materials.Plutonium241.mBlastFurnaceTemp,
+ 94,
+ 144,
+ false,
+ StringUtils.superscript("238Pu"),
+ 2,
+ false); // Not a GT Inherited Material
+
+ public final Material MAGIC = MaterialUtils
+ .generateMaterialFromGtENUM(Materials.Magic, new short[] { 10, 185, 140 });
+ public final Material THAUMIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Thaumium);
+
+ static {
+ Logger.MATERIALS("Initialising Base Elements.");
+ }
+
+ private static final ELEMENT INSTANCE = new ELEMENT();
+
+ public ELEMENT() {
+ // GTNH Trinium Handling
+ TRINIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Trinium);
+ TRINIUM_REFINED = TRINIUM;
+ }
+
+ public static ELEMENT getInstance() {
+ return INSTANCE;
+ }
+
+ public static class STANDALONE {
+
+ public static final Material CELESTIAL_TUNGSTEN = new Material(
+ "Celestial Tungsten",
+ MaterialState.SOLID,
+ TextureSets.REFINED.get(),
+ new short[] { 50, 50, 50, 2 },
+ INSTANCE.TUNGSTEN.getMeltingPointC() + 6500,
+ INSTANCE.TUNGSTEN.getBoilingPointC() + 7500,
+ 160,
+ 101,
+ true,
+ "✦◆✦",
+ 0); // Not a GT Inherited Material
+ public static final Material ASTRAL_TITANIUM = new Material(
+ "Astral Titanium",
+ MaterialState.SOLID,
+ TextureSets.REFINED.get(),
+ new short[] { 220, 160, 240, 2 },
+ INSTANCE.TITANIUM.getMeltingPointC() + 7500,
+ INSTANCE.TITANIUM.getBoilingPointC() + 7500,
+ 145,
+ 133,
+ true,
+ "✧◇✧",
+ 0); // Not a GT Inherited Material
+ public static final Material CHRONOMATIC_GLASS = new Material(
+ "Chromatic Glass",
+ MaterialState.SOLID,
+ new short[] { 255, 255, 255, 3 },
+ 9200,
+ 17550,
+ 40,
+ 51,
+ false,
+ "⌘☯𓍰 𓍱 𓍲 𓍳 𓍴 𓍵 𓍶 𓍷 𓍸 ☯⌘ ",
+ 0); // Not a GT Inherited Material
+ public static final Material ADVANCED_NITINOL = new Material(
+ "Advanced Nitinol",
+ MaterialState.SOLID,
+ TextureSets.ENRICHED.get(),
+ ALLOY.NITINOL_60.getRGB(),
+ 8400,
+ 14377,
+ 40,
+ 51,
+ true,
+ StringUtils.subscript("⚷⚙⚷ Ni4Ti6"),
+ 0); // Not a GT Inherited Material
+ public static final Material HYPOGEN = new Material(
+ "Hypogen",
+ MaterialState.SOLID,
+ TextureSets.NUCLEAR.get(),
+ new short[] { 220, 120, 75, 2 },
+ 11255,
+ 19377,
+ 240,
+ 251,
+ true,
+ "Hy⚶",
+ 0); // Not a GT Inherited Material
+ public static final Material RHUGNOR = new Material(
+ "Rhugnor",
+ MaterialState.SOLID,
+ TextureSets.ENRICHED.get(),
+ new short[] { 190, 0, 255, 0 },
+ 8750,
+ 14757,
+ 184,
+ 142,
+ true,
+ "Fs⚶",
+ 0); // Not a GT Inherited Material //funeris
+ public static final Material FORCE = new Material(
+ "Force",
+ MaterialState.SOLID,
+ TextureSets.ENRICHED.get(),
+ new short[] { 250, 250, 20, 0 },
+ 4550,
+ 6830,
+ 63,
+ 81,
+ true,
+ "Fc⚙",
+ 0); // Not a GT Inherited Material
+
+ // Runescape materials
+ public static final Material BLACK_METAL = new Material(
+ "Black Metal",
+ MaterialState.SOLID,
+ TextureSet.SET_METALLIC,
+ new short[] { 5, 5, 5 },
+ 2350,
+ 4650,
+ 24,
+ 17,
+ false,
+ "҈",
+ 0,
+ new MaterialStack[] { new MaterialStack(getInstance().LEAD, 15),
+ new MaterialStack(getInstance().MANGANESE, 25), new MaterialStack(getInstance().CARBON, 60) }); // Not
+ // a
+ // GT
+ // Inherited
+ // Material
+ public static final Material WHITE_METAL = new Material(
+ "White Metal",
+ MaterialState.SOLID,
+ TextureSet.SET_METALLIC,
+ new short[] { 255, 255, 255 },
+ 4560,
+ 7580,
+ 35,
+ 41,
+ false,
+ "҉",
+ 0,
+ new MaterialStack[] { new MaterialStack(getInstance().COPPER, 5),
+ new MaterialStack(getInstance().ANTIMONY, 10), new MaterialStack(getInstance().PLATINUM, 10),
+ new MaterialStack(getInstance().TIN, 75) }); // Not a GT Inherited Material
+
+ public static final Material GRANITE = new Material(
+ "Ancient Granite",
+ MaterialState.SOLID,
+ TextureSet.SET_SAND,
+ new short[] { 107, 107, 107 },
+ 500,
+ 2000,
+ 16,
+ 12,
+ false,
+ "«»",
+ 0,
+ false,
+ new MaterialStack[] { new MaterialStack(getInstance().OXYGEN, 16),
+ new MaterialStack(getInstance().IRON, 10), new MaterialStack(getInstance().SILICONDIOXIDE, 10),
+ new MaterialStack(getInstance().ALUMINIUMOXIDE, 6), new MaterialStack(getInstance().POTASSIUM, 6),
+ new MaterialStack(getInstance().CALCIUM, 4), new MaterialStack(getInstance().SODIUM, 4),
+ new MaterialStack(getInstance().YTTERBIUM, 2) }); // Not
+ // a
+ // GT
+ // Inherited
+ // Material
+
+ public static final Material RUNITE = new Material(
+ "Runite",
+ MaterialState.SOLID,
+ TextureSet.SET_FINE,
+ new short[] { 60, 200, 190 },
+ 6750,
+ 11550,
+ 73,
+ 87,
+ true,
+ "Rt*",
+ 0); // Not a GT Inherited Material
+ public static final Material DRAGON_METAL = new Material(
+ "Dragonblood",
+ MaterialState.SOLID,
+ TextureSet.SET_SHINY,
+ new short[] { 220, 40, 20, 2 },
+ 10160,
+ 17850,
+ 96,
+ 105,
+ true,
+ "۞",
+ 0); // Not a GT Inherited Material
+ }
+}
diff --git a/src/main/java/gtPlusPlus/core/material/MISC_MATERIALS.java b/src/main/java/gtPlusPlus/core/material/MISC_MATERIALS.java
new file mode 100644
index 0000000000..c46b05fbb8
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/MISC_MATERIALS.java
@@ -0,0 +1,592 @@
+package gtPlusPlus.core.material;
+
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.TextureSet;
+import gtPlusPlus.core.client.CustomTextureSet.TextureSets;
+import gtPlusPlus.core.material.state.MaterialState;
+import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.core.util.minecraft.MaterialUtils;
+
+public final class MISC_MATERIALS {
+
+ /*
+ * Some of these materials purely exist as data objects, items will most likely be assigned separately. Most are
+ * just compositions which will have dusts assigned to them.
+ */
+
+ public static void run() {
+ MaterialUtils.generateSpecialDustAndAssignToAMaterial(POTASSIUM_NITRATE, false);
+ MaterialUtils.generateSpecialDustAndAssignToAMaterial(SODIUM_NITRATE, false);
+ MaterialUtils.generateSpecialDustAndAssignToAMaterial(STRONTIUM_OXIDE, false);
+ MaterialUtils.generateSpecialDustAndAssignToAMaterial(STRONTIUM_HYDROXIDE, false);
+ MaterialUtils.generateSpecialDustAndAssignToAMaterial(CYANOACETIC_ACID, false);
+ MaterialUtils.generateSpecialDustAndAssignToAMaterial(SODIUM_CYANIDE, false);
+ MaterialUtils.generateSpecialDustAndAssignToAMaterial(CALCIUM_CHLORIDE, false);
+ MaterialUtils.generateSpecialDustAndAssignToAMaterial(COPPER_SULFATE, false);
+ MaterialUtils.generateSpecialDustAndAssignToAMaterial(COPPER_SULFATE_HYDRATED, false);
+ WATER.registerComponentForMaterial(FluidUtils.getWater(1000));
+ }
+
+ public static final Material POTASSIUM_NITRATE = new Material(
+ "Potassium Nitrate",
+ MaterialState.SOLID, // State
+ null,
+ null,
+ -1,
+ -1,
+ -1,
+ -1,
+ false,
+ "KNO3",
+ 0,
+ false,
+ new MaterialStack(ELEMENT.getInstance().POTASSIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().NITROGEN, 1),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 3));
+ public static final Material SODIUM_NITRATE = new Material(
+ "Sodium Nitrate",
+ MaterialState.SOLID, // State
+ null,
+ null,
+ -1,
+ -1,
+ -1,
+ -1,
+ false,
+ "NaNO3",
+ 0,
+ false,
+ new MaterialStack(ELEMENT.getInstance().SODIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().NITROGEN, 1),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 3));
+
+ public static final Material SOLAR_SALT_COLD = new Material(
+ "Solar Salt (Cold)",
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack(POTASSIUM_NITRATE, 4),
+ new MaterialStack(SODIUM_NITRATE, 6));
+
+ public static final Material SOLAR_SALT_HOT = new Material(
+ "Solar Salt (Hot)",
+ MaterialState.PURE_LIQUID, // State
+ new short[] { 200, 25, 25 }, // Material Colour
+ 1200, // Melting Point in C
+ 3300, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack(POTASSIUM_NITRATE, 4),
+ new MaterialStack(SODIUM_NITRATE, 6));
+
+ public static final Material STRONTIUM_OXIDE = new Material(
+ "Strontium Oxide",
+ MaterialState.SOLID,
+ TextureSet.SET_METALLIC,
+ null,
+ -1,
+ -1,
+ -1,
+ -1,
+ false,
+ "SrO",
+ 0,
+ false,
+ new MaterialStack(ELEMENT.getInstance().STRONTIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 1));
+
+ public static final Material SELENIUM_DIOXIDE = new Material(
+ "Selenium Dioxide",
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack(ELEMENT.getInstance().SELENIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 2));
+
+ public static final Material SELENIOUS_ACID = new Material(
+ "Selenious Acid",
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack(SELENIUM_DIOXIDE, 1),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 8),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 4));
+
+ public static final Material HYDROGEN_CYANIDE = new Material(
+ "Hydrogen Cyanide",
+ MaterialState.PURE_GAS, // State
+ null, // Material Colour
+ 4, // Melting Point in C
+ 26, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 1),
+ new MaterialStack(ELEMENT.getInstance().CARBON, 1),
+ new MaterialStack(ELEMENT.getInstance().NITROGEN, 1));
+
+ public static final Material CARBON_MONOXIDE = new Material(
+ "Carbon Monoxide",
+ MaterialState.PURE_GAS, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack(ELEMENT.getInstance().CARBON, 1),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 1));
+
+ public static final Material CARBON_DIOXIDE = new Material(
+ "Carbon Dioxide",
+ MaterialState.PURE_GAS, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack(ELEMENT.getInstance().CARBON, 1),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 2));
+
+ public static final Material WOODS_GLASS = new Material(
+ "Wood's Glass", // Material Name
+ MaterialState.SOLID, // State
+ TextureSets.GEM_A.get(), // Texture Set
+ new short[] { 220, 60, 255 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ false,
+ "Si4Ba3Na2Ni",
+ 0,
+ false,
+ new MaterialStack(ELEMENT.getInstance().SILICON, 40),
+ new MaterialStack(ELEMENT.getInstance().BARIUM, 30),
+ new MaterialStack(ELEMENT.getInstance().SODIUM, 20),
+ new MaterialStack(ELEMENT.getInstance().NICKEL, 10));
+
+ /*
+ * Rare Earth Materials
+ */
+
+ public static final Material RARE_EARTH_LOW = new Material(
+ "Rare Earth (I)", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.GEM_A.get(), // Texture Set
+ null, // Material Colour
+ 1200,
+ 2500,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ORES.GREENOCKITE, 1), new MaterialStack(ORES.LANTHANITE_CE, 1),
+ new MaterialStack(ORES.AGARDITE_CD, 1), new MaterialStack(ORES.YTTRIALITE, 1),
+ new MaterialStack(MaterialUtils.generateMaterialFromGtENUM(Materials.NetherQuartz), 1),
+ new MaterialStack(MaterialUtils.generateMaterialFromGtENUM(Materials.Galena), 1),
+ new MaterialStack(MaterialUtils.generateMaterialFromGtENUM(Materials.Chalcopyrite), 1),
+ new MaterialStack(ORES.CRYOLITE, 1), new MaterialStack(ELEMENT.getInstance().YTTRIUM, 1) });
+
+ public static final Material RARE_EARTH_MID = new Material(
+ "Rare Earth (II)", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.ENRICHED.get(), // Texture Set
+ null, // Material Colour
+ 3500,
+ 5000,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ORES.LANTHANITE_ND, 1), new MaterialStack(ORES.AGARDITE_ND, 1),
+ new MaterialStack(ORES.YTTRIAITE, 1), new MaterialStack(ORES.CROCROITE, 1),
+ new MaterialStack(ORES.NICHROMITE, 1), new MaterialStack(ORES.ZIRCON, 1),
+ new MaterialStack(ELEMENT.STANDALONE.GRANITE, 1), new MaterialStack(ELEMENT.STANDALONE.BLACK_METAL, 1),
+ new MaterialStack(ELEMENT.STANDALONE.RUNITE, 1) });
+
+ public static final Material RARE_EARTH_HIGH = new Material(
+ "Rare Earth (III)", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.REFINED.get(), // Texture Set
+ null, // Material Colour
+ 5200,
+ 7500,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ORES.GADOLINITE_Y, 1), new MaterialStack(ORES.LEPERSONNITE, 1),
+ new MaterialStack(ORES.FLORENCITE, 1), new MaterialStack(ORES.FLUORCAPHITE, 1),
+ new MaterialStack(ORES.LAUTARITE, 1), new MaterialStack(ORES.DEMICHELEITE_BR, 1),
+ new MaterialStack(ORES.ALBURNITE, 1), new MaterialStack(ORES.SAMARSKITE_Y, 1),
+ new MaterialStack(ORES.AGARDITE_LA, 1), });
+
+ public static final Material WATER = new Material(
+ "Water",
+ MaterialState.PURE_LIQUID,
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 2),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 1));
+
+ // OH
+ public static final Material HYDROXIDE = new Material(
+ "Hydroxide", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 1),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 1));
+
+ // NH3
+ public static final Material AMMONIA = new Material(
+ "Ammonia", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -77, // Melting Point in C
+ -33, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack(ELEMENT.getInstance().NITROGEN, 1),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 3));
+
+ // NH4
+ public static final Material AMMONIUM = new Material(
+ "Ammonium", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack(ELEMENT.getInstance().NITROGEN, 1),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 4));
+
+ public static final Material HYDROGEN_CHLORIDE = new Material(
+ "Hydrogen Chloride",
+ MaterialState.PURE_GAS,
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 1),
+ new MaterialStack(ELEMENT.getInstance().CHLORINE, 1));
+
+ public static final Material HYDROGEN_CHLORIDE_MIX = new Material(
+ "Hydrogen Chloride Mix",
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 1),
+ new MaterialStack(ELEMENT.getInstance().CHLORINE, 1));
+
+ public static final Material SODIUM_CHLORIDE = new Material(
+ "Sodium Chloride",
+ MaterialState.PURE_GAS,
+ new MaterialStack(ELEMENT.getInstance().SODIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().CHLORINE, 1));
+
+ public static final Material SALT_WATER = new Material(
+ "Salt Water",
+ MaterialState.PURE_LIQUID,
+ new MaterialStack(WATER, 3),
+ new MaterialStack(SODIUM_CHLORIDE, 1));
+
+ public static final Material BRINE = new Material(
+ "Brine",
+ MaterialState.PURE_LIQUID,
+ new MaterialStack(SALT_WATER, 1),
+ new MaterialStack(SODIUM_CHLORIDE, 2));
+
+ public static final Material STRONTIUM_HYDROXIDE = new Material(
+ "Strontium Hydroxide",
+ MaterialState.SOLID,
+ TextureSet.SET_METALLIC,
+ null,
+ -1,
+ -1,
+ -1,
+ -1,
+ false,
+ "Sr(OH)2",
+ 0,
+ false,
+ new MaterialStack(ELEMENT.getInstance().STRONTIUM, 1),
+ new MaterialStack(MISC_MATERIALS.HYDROXIDE, 2));
+
+ // Glue Chemicals
+
+ public static final Material ACETIC_ANHYDRIDE = new Material(
+ "Acetic Anhydride",
+ MaterialState.PURE_LIQUID, // State
+ new short[] { 250, 240, 110 }, // Material Colour
+ -73, // Melting Point in C
+ 139, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ "(CH3CO)2O",
+ 0,
+ true,
+ new MaterialStack(ELEMENT.getInstance().CARBON, 4),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 6),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 3));
+
+ public static final Material CHLOROACETIC_ACID = new Material(
+ "Chloroacetic Acid",
+ MaterialState.PURE_LIQUID, // State
+ new short[] { 230, 200, 90 }, // Material Colour
+ 63, // Melting Point in C
+ 189, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ "ClCH2-COOH",
+ 0,
+ true,
+ new MaterialStack(ELEMENT.getInstance().CARBON, 2),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 3),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 2),
+ new MaterialStack(ELEMENT.getInstance().CHLORINE, 1));
+
+ public static final Material DICHLOROACETIC_ACID = new Material(
+ "Dichloroacetic Acid",
+ MaterialState.PURE_LIQUID, // State
+ new short[] { 190, 160, 60 }, // Material Colour
+ 13, // Melting Point in C
+ 194, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ "Cl2CH-COOH",
+ 0,
+ true,
+ new MaterialStack(ELEMENT.getInstance().CARBON, 2),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 2),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 2),
+ new MaterialStack(ELEMENT.getInstance().CHLORINE, 2));
+
+ public static final Material TRICHLOROACETIC_ACID = new Material(
+ "Trichloroacetic Acid",
+ MaterialState.PURE_LIQUID, // State
+ new short[] { 120, 100, 30 }, // Material Colour
+ 57, // Melting Point in C
+ 196, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ "Cl3C-COOH",
+ 0,
+ true,
+ new MaterialStack(ELEMENT.getInstance().CARBON, 2),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 1),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 2),
+ new MaterialStack(ELEMENT.getInstance().CHLORINE, 3));
+
+ public static final Material CHLOROACETIC_MIXTURE = new Material(
+ "Chloroacetic Mixture",
+ MaterialState.LIQUID, // State
+ null,
+ new short[] { 210, 160, 10 },
+ 40,
+ 192,
+ -1,
+ -1,
+ false,
+ "Cl?H?C-COOH",
+ 0,
+ true,
+ new MaterialStack(ELEMENT.getInstance().CARBON, 6),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 6),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 6),
+ new MaterialStack(ELEMENT.getInstance().CHLORINE, 6));
+
+ public static final Material SODIUM_CYANIDE = new Material(
+ "Sodium Cyanide",
+ MaterialState.SOLID, // State
+ new short[] { 180, 190, 255 }, // Material Colour
+ 563, // Melting Point in C
+ 1496, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ "NaCN",
+ 0,
+ false,
+ new MaterialStack(ELEMENT.getInstance().SODIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().CARBON, 1),
+ new MaterialStack(ELEMENT.getInstance().NITROGEN, 1));
+
+ public static final Material CALCIUM_CHLORIDE = new Material(
+ "Calcium Chloride",
+ MaterialState.SOLID, // State
+ new short[] { 180, 190, 255 }, // Material Colour
+ 563, // Melting Point in C
+ 1496, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ "CaCl2",
+ 0,
+ false,
+ new MaterialStack(ELEMENT.getInstance().CALCIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().CHLORINE, 2));
+
+ public static final Material CYANOACETIC_ACID = new Material(
+ "Cyanoacetic Acid",
+ MaterialState.SOLID, // State
+ new short[] { 130, 130, 40 }, // Material Colour
+ 66, // Melting Point in C
+ 108, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ "C3H3NO2",
+ 0,
+ false,
+ new MaterialStack(ELEMENT.getInstance().CARBON, 3),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 3),
+ new MaterialStack(ELEMENT.getInstance().NITROGEN, 1),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 2));
+
+ public static final Material SOLID_ACID_MIXTURE = new Material(
+ "Solid Acid Catalyst Mixture",
+ MaterialState.LIQUID, // State
+ new short[] { 80, 40, 0 }, // Material Colour
+ -10, // Melting Point in C
+ 337, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ "?H2SO4?",
+ 0,
+ true,
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 2),
+ new MaterialStack(ELEMENT.getInstance().SULFUR, 1),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 4));
+
+ public static final Material COPPER_SULFATE = new Material(
+ "Copper(II) Sulfate",
+ MaterialState.SOLID, // State
+ new short[] { 200, 200, 200 }, // Material Colour
+ 590, // Melting Point in C
+ 650, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ "CuSO4",
+ 0,
+ false,
+ new MaterialStack(ELEMENT.getInstance().COPPER, 1),
+ new MaterialStack(ELEMENT.getInstance().SULFUR, 1),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 4));
+
+ public static final Material COPPER_SULFATE_HYDRATED = new Material(
+ "Copper(II) Sulfate Pentahydrate",
+ MaterialState.SOLID, // State
+ new short[] { 90, 170, 255 }, // Material Colour
+ 590, // Melting Point in C
+ 650, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ "CuSO4∙(H2O)5",
+ 0,
+ false,
+ new MaterialStack(ELEMENT.getInstance().COPPER, 1),
+ new MaterialStack(ELEMENT.getInstance().SULFUR, 1),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 4));
+
+ public static final Material ETHYL_CYANOACETATE = new Material(
+ "Ethyl Cyanoacetate",
+ MaterialState.PURE_LIQUID, // State
+ new short[] { 0, 75, 160 }, // Material Colour
+ -22, // Melting Point in C
+ 210, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ "C5H7NO2",
+ 0,
+ true,
+ new MaterialStack(ELEMENT.getInstance().CARBON, 2),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 1),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 2),
+ new MaterialStack(ELEMENT.getInstance().CHLORINE, 3));
+
+ public static final Material CYANOACRYLATE_POLYMER = new Material(
+ "Cyanoacrylate Polymer",
+ MaterialState.LIQUID, // State
+ new short[] { 140, 150, 160 }, // Material Colour
+ -25, // Melting Point in C
+ 55, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ "(-C6H7NO2-)n",
+ 0,
+ true,
+ new MaterialStack(ELEMENT.getInstance().CARBON, 2),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 1),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 2),
+ new MaterialStack(ELEMENT.getInstance().CHLORINE, 3));
+
+ public static final Material ETHYL_CYANOACRYLATE = new Material(
+ "Ethyl Cyanoacrylate (Super Glue)",
+ MaterialState.PURE_LIQUID, // State
+ new short[] { 170, 190, 200 }, // Material Colour
+ -25, // Melting Point in C
+ 55, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ "C6H7NO2",
+ 0,
+ true,
+ new MaterialStack(ELEMENT.getInstance().CARBON, 2),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 1),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 2),
+ new MaterialStack(ELEMENT.getInstance().CHLORINE, 3));
+
+ public static final Material MUTATED_LIVING_SOLDER = new Material(
+ "Mutated Living Solder",
+ MaterialState.PURE_LIQUID, // State
+ new short[] { 147, 109, 155 }, // Material Colour
+ -200, // Melting Point in C
+ 500, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ "?Sn?Bi?",
+ 0,
+ true,
+ new MaterialStack(ELEMENT.getInstance().TIN, 1),
+ new MaterialStack(ELEMENT.getInstance().BISMUTH, 1));
+}
diff --git a/src/main/java/gtPlusPlus/core/material/Material.java b/src/main/java/gtPlusPlus/core/material/Material.java
new file mode 100644
index 0000000000..fec80060ac
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/Material.java
@@ -0,0 +1,1725 @@
+package gtPlusPlus.core.material;
+
+import static gregtech.api.enums.GT_Values.M;
+import static gregtech.api.enums.Mods.TinkerConstruct;
+import static gtPlusPlus.core.util.math.MathUtils.safeCast_LongToInt;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.TextureSet;
+import gregtech.api.util.GT_LanguageManager;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.core.item.base.BaseItemComponent.ComponentTypes;
+import gtPlusPlus.core.item.base.cell.BaseItemCell;
+import gtPlusPlus.core.material.state.MaterialState;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.data.StringUtils;
+import gtPlusPlus.core.util.math.MathUtils;
+import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.minecraft.MaterialUtils;
+import gtPlusPlus.xmod.tinkers.material.BaseTinkersMaterial;
+
+public class Material {
+
+ public static final Set<Material> mMaterialMap = new HashSet<>();
+ public static HashMap<String, Material> mMaterialCache = new HashMap<>();
+
+ public static final Map<String, Map<String, ItemStack>> mComponentMap = new HashMap<>();
+
+ public static HashMap<String, String> sChemicalFormula = new HashMap<>();
+
+ private String unlocalizedName;
+ private String localizedName;
+ private String translatedName;
+
+ private MaterialState materialState;
+ private TextureSet textureSet;
+
+ private Fluid mFluid;
+ private Fluid mPlasma;
+
+ private boolean vGenerateCells;
+
+ protected Object dataVar = MathUtils.generateSingularRandomHexValue();
+
+ private ArrayList<MaterialStack> vMaterialInput = new ArrayList<>();
+ public long[] vSmallestRatio;
+ public short vComponentCount;
+
+ private short[] RGBA;
+
+ private boolean usesBlastFurnace;
+ public boolean isRadioactive;
+ public byte vRadiationLevel;
+
+ private int meltingPointK;
+ private int boilingPointK;
+ private int meltingPointC;
+ private int boilingPointC;
+ private long vProtons;
+ private long vNeutrons;
+ private long vMass;
+ public int smallestStackSizeWhenProcessing; // Add a check for <=0 || > 64
+ public int vTier;
+ public int vVoltageMultiplier;
+ public String vChemicalFormula;
+ public String vChemicalSymbol;
+
+ public long vDurability;
+ public int vToolQuality;
+ public int vHarvestLevel;
+
+ public BaseTinkersMaterial vTiConHandler;
+
+ public short werkstoffID;
+
+ public static AutoMap<Materials> invalidMaterials = new AutoMap<>();
+
+ public Material(final String materialName, final MaterialState defaultState, final MaterialStack... inputs) {
+ this(materialName, defaultState, null, inputs);
+ }
+
+ public Material(final String materialName, final MaterialState defaultState, final short[] rgba,
+ final MaterialStack... inputs) {
+ this(materialName, defaultState, null, 0, rgba, -1, -1, -1, -1, false, "", 0, false, false, inputs);
+ }
+
+ public Material(final String materialName, final MaterialState defaultState, final short[] rgba, int radiationLevel,
+ MaterialStack... materialStacks) {
+ this(
+ materialName,
+ defaultState,
+ null,
+ 0,
+ rgba,
+ -1,
+ -1,
+ -1,
+ -1,
+ false,
+ "",
+ radiationLevel,
+ false,
+ materialStacks);
+ }
+
+ public Material(String materialName, MaterialState defaultState, short[] rgba, int j, int k, int l, int m,
+ int radiationLevel, MaterialStack[] materialStacks) {
+ this(materialName, defaultState, null, 0, rgba, j, k, l, m, false, "", radiationLevel, false, materialStacks);
+ }
+
+ public Material(String materialName, MaterialState defaultState, final TextureSet set, short[] rgba,
+ int meltingPoint, int boilingPoint, int protons, int neutrons, int radiationLevel,
+ MaterialStack[] materialStacks) {
+ this(
+ materialName,
+ defaultState,
+ set,
+ 0,
+ rgba,
+ meltingPoint,
+ boilingPoint,
+ protons,
+ neutrons,
+ false,
+ "",
+ radiationLevel,
+ false,
+ materialStacks);
+ }
+
+ public Material(final String materialName, final MaterialState defaultState, final short[] rgba,
+ final int meltingPoint, final int boilingPoint, final long protons, final long neutrons,
+ final boolean blastFurnace, final MaterialStack... inputs) {
+ this(
+ materialName,
+ defaultState,
+ 0,
+ rgba,
+ meltingPoint,
+ boilingPoint,
+ protons,
+ neutrons,
+ blastFurnace,
+ "",
+ 0,
+ inputs);
+ }
+
+ public Material(final String materialName, final MaterialState defaultState, final short[] rgba,
+ final int meltingPoint, final int boilingPoint, final long protons, final long neutrons,
+ final boolean blastFurnace, final String chemSymbol, final MaterialStack... inputs) {
+ this(
+ materialName,
+ defaultState,
+ 0,
+ rgba,
+ meltingPoint,
+ boilingPoint,
+ protons,
+ neutrons,
+ blastFurnace,
+ chemSymbol,
+ 0,
+ inputs);
+ }
+
+ public Material(final String materialName, final MaterialState defaultState, final short[] rgba,
+ final int meltingPoint, final int boilingPoint, final long protons, final long neutrons,
+ final boolean blastFurnace, boolean generateCells, final MaterialStack... inputs) {
+ this(
+ materialName,
+ defaultState,
+ null,
+ 0,
+ rgba,
+ meltingPoint,
+ boilingPoint,
+ protons,
+ neutrons,
+ blastFurnace,
+ "",
+ 0,
+ generateCells,
+ true,
+ inputs);
+ }
+
+ public Material(final String materialName, final MaterialState defaultState, final short[] rgba,
+ final int meltingPoint, final int boilingPoint, final long protons, final long neutrons,
+ final boolean blastFurnace, final int radiationLevel, final MaterialStack... inputs) {
+ this(
+ materialName,
+ defaultState,
+ 0,
+ rgba,
+ meltingPoint,
+ boilingPoint,
+ protons,
+ neutrons,
+ blastFurnace,
+ "",
+ radiationLevel,
+ inputs);
+ }
+
+ public Material(final String materialName, final MaterialState defaultState, final long durability,
+ final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons, final long neutrons,
+ final boolean blastFurnace, final int radiationLevel, final MaterialStack... inputs) {
+ this(
+ materialName,
+ defaultState,
+ durability,
+ rgba,
+ meltingPoint,
+ boilingPoint,
+ protons,
+ neutrons,
+ blastFurnace,
+ "",
+ radiationLevel,
+ inputs);
+ }
+
+ public Material(final String materialName, final MaterialState defaultState, final short[] rgba,
+ final int meltingPoint, final int boilingPoint, final long protons, final long neutrons,
+ final boolean blastFurnace, final String chemicalSymbol, final int radiationLevel,
+ final MaterialStack... inputs) {
+ this(
+ materialName,
+ defaultState,
+ 0,
+ rgba,
+ meltingPoint,
+ boilingPoint,
+ protons,
+ neutrons,
+ blastFurnace,
+ chemicalSymbol,
+ radiationLevel,
+ inputs);
+ }
+
+ public Material(final String materialName, final MaterialState defaultState, final short[] rgba,
+ final int meltingPoint, final int boilingPoint, final long protons, final long neutrons,
+ final boolean blastFurnace, final String chemicalSymbol, final int radiationLevel, boolean addCells,
+ final MaterialStack... inputs) {
+ this(
+ materialName,
+ defaultState,
+ null,
+ 0,
+ rgba,
+ meltingPoint,
+ boilingPoint,
+ protons,
+ neutrons,
+ blastFurnace,
+ chemicalSymbol,
+ radiationLevel,
+ addCells,
+ true,
+ inputs);
+ }
+
+ public Material(final String materialName, final MaterialState defaultState, TextureSet textureSet,
+ final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons, final long neutrons,
+ final boolean blastFurnace, final String chemicalSymbol, final int radiationLevel,
+ final MaterialStack... inputs) {
+ this(
+ materialName,
+ defaultState,
+ textureSet,
+ 0,
+ rgba,
+ meltingPoint,
+ boilingPoint,
+ protons,
+ neutrons,
+ blastFurnace,
+ chemicalSymbol,
+ radiationLevel,
+ true,
+ true,
+ inputs);
+ }
+
+ public Material(final String materialName, final MaterialState defaultState, TextureSet textureSet,
+ final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons, final long neutrons,
+ final boolean blastFurnace, final String chemicalSymbol, final int radiationLevel, boolean addCells,
+ final MaterialStack... inputs) {
+ this(
+ materialName,
+ defaultState,
+ textureSet,
+ 0,
+ rgba,
+ meltingPoint,
+ boilingPoint,
+ protons,
+ neutrons,
+ blastFurnace,
+ chemicalSymbol,
+ radiationLevel,
+ addCells,
+ true,
+ inputs);
+ }
+
+ private Material(final String materialName, final MaterialState defaultState, final long durability,
+ final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons, final long neutrons,
+ final boolean blastFurnace, final String chemicalSymbol, final int radiationLevel,
+ final MaterialStack... inputs) {
+ this(
+ materialName,
+ defaultState,
+ null,
+ durability,
+ rgba,
+ meltingPoint,
+ boilingPoint,
+ protons,
+ neutrons,
+ blastFurnace,
+ chemicalSymbol,
+ radiationLevel,
+ true,
+ true,
+ inputs);
+ }
+
+ public Material(final String materialName, final MaterialState defaultState, final TextureSet set,
+ final long durability, final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons,
+ final long neutrons, final boolean blastFurnace, final String chemicalSymbol, final int radiationLevel,
+ boolean generateCells, final MaterialStack... inputs) {
+ this(
+ materialName,
+ defaultState,
+ set,
+ durability,
+ rgba,
+ meltingPoint,
+ boilingPoint,
+ protons,
+ neutrons,
+ blastFurnace,
+ chemicalSymbol,
+ radiationLevel,
+ true,
+ true,
+ inputs);
+ }
+
+ public Material(final String materialName, final MaterialState defaultState, final TextureSet set,
+ final long durability, short[] rgba, final int meltingPoint, final int boilingPoint, final long protons,
+ final long neutrons, final boolean blastFurnace, String chemicalSymbol, final int radiationLevel,
+ boolean generateCells, boolean generateFluid, final MaterialStack... inputs) {
+
+ if (mMaterialMap.add(this)) {}
+
+ if (defaultState == MaterialState.ORE) {
+ rgba = null;
+ }
+
+ mComponentMap.put(unlocalizedName, new HashMap<>());
+
+ try {
+ this.unlocalizedName = Utils.sanitizeString(materialName);
+ this.localizedName = materialName;
+ this.translatedName = GT_LanguageManager
+ .addStringLocalization("gtplusplus.material." + unlocalizedName, localizedName);
+ mMaterialCache.put(getLocalizedName().toLowerCase(), this);
+ Logger.INFO("Stored " + getLocalizedName() + " to cache with key: " + getLocalizedName().toLowerCase());
+
+ this.materialState = defaultState;
+
+ Logger.MATERIALS(this.getLocalizedName() + " is " + defaultState.name() + ".");
+
+ this.vGenerateCells = generateCells;
+
+ // Add Components to an array.
+ if (inputs == null) {
+ this.vMaterialInput = null;
+ } else {
+ if (inputs.length != 0) {
+ for (int i = 0; i < inputs.length; i++) {
+ if (inputs[i] != null) {
+ this.vMaterialInput.add(i, inputs[i]);
+ }
+ }
+ }
+ }
+
+ // set RGB
+
+ if (rgba == null) {
+ if (vMaterialInput.size() > 0) {
+
+ try {
+ Short[] mMixedRGB = new Short[3];
+ AutoMap<Material> mMaterialSet = MaterialUtils.getCompoundMaterialsRecursively(this);
+ for (int mnh = 0; mnh < 3; mnh++) {
+ AutoMap<Short> aDataSet = new AutoMap<>();
+ Set<Material> set4 = new HashSet<>();
+ for (Material u : mMaterialSet) {
+ // if (u.getState() == MaterialState.ORE || u.getState() == MaterialState.SOLID)
+ set4.add(u);
+ }
+ for (Material e : set4) {
+ aDataSet.put(e.getRGB()[mnh]);
+ }
+
+ Short aAverage = MathUtils.getShortAverage(aDataSet);
+ if (aAverage > Short.MAX_VALUE || aAverage < Short.MIN_VALUE
+ || aAverage < 0
+ || aAverage > 255) {
+ if (aAverage > 255) {
+ while (aAverage > 255) {
+ aAverage = (short) (aAverage / 2);
+ }
+ }
+ aAverage = (short) Math.max(Math.min(aAverage, 255), 0);
+ }
+ mMixedRGB[mnh] = aAverage;
+ }
+
+ if (mMixedRGB != null && mMixedRGB[0] != null && mMixedRGB[1] != null && mMixedRGB[2] != null) {
+ this.RGBA = new short[] { mMixedRGB[0], mMixedRGB[1], mMixedRGB[2], 0 };
+ } else {
+ this.RGBA = Materials.Steel.mRGBa;
+ }
+ } catch (Throwable t) {
+ t.printStackTrace();
+ this.RGBA = Materials.Steel.mRGBa;
+ }
+ } else {
+ // Boring Grey Material
+
+ int aValueForGen = this.getUnlocalizedName()
+ .hashCode();
+ int hashSize = MathUtils.howManyPlaces(aValueForGen);
+
+ String a = String.valueOf(aValueForGen);
+ String b = "";
+
+ if (hashSize < 9) {
+ int aSecondHash = this.materialState.hashCode();
+ int hashSize2 = MathUtils.howManyPlaces(aSecondHash);
+ if (hashSize2 + hashSize >= 9) {
+ b = String.valueOf(aValueForGen);
+ } else {
+ String c = b;
+ while (MathUtils.howManyPlaces(hashSize + c.length()) < 9) {
+ c = c + c.hashCode();
+ }
+ b = c;
+ }
+ }
+
+ String valueR;
+ if (b != null) {
+ valueR = a + b;
+ } else {
+ valueR = a;
+ }
+ short fc[] = new short[3];
+ int aIndex = 0;
+ for (char gg : valueR.toCharArray()) {
+ short ui = Short.parseShort("" + gg);
+ if (ui > 255 || ui < 0) {
+ if (ui > 255) {
+ while (ui > 255) {
+ ui = (short) (ui / 2);
+ }
+ } else {
+ ui = 0;
+ }
+ }
+ fc[aIndex++] = ui;
+ }
+ this.RGBA = fc;
+ }
+ } else {
+ this.RGBA = rgba;
+ }
+
+ // Set Melting/Boiling point, if value is -1 calculate it from compound inputs.
+ if (meltingPoint != -1) {
+ this.meltingPointC = meltingPoint;
+ } else {
+ this.meltingPointC = this.calculateMeltingPoint();
+ }
+ if (boilingPoint != -1) {
+ if (boilingPoint != 0) {
+ this.boilingPointC = boilingPoint;
+ } else {
+ this.boilingPointC = meltingPoint * 4;
+ }
+ } else {
+ this.boilingPointC = this.calculateBoilingPoint();
+ }
+
+ this.meltingPointK = (int) MathUtils.celsiusToKelvin(this.meltingPointC);
+ this.boilingPointK = (int) MathUtils.celsiusToKelvin(this.boilingPointC);
+
+ // Set Proton/Neutron count, if value is -1 calculate it from compound inputs.
+ if (protons != -1) {
+ this.vProtons = protons;
+ } else {
+ this.vProtons = this.calculateProtons();
+ }
+ if (boilingPoint != -1) {
+ this.vNeutrons = neutrons;
+ } else {
+ this.vNeutrons = this.calculateNeutrons();
+ }
+
+ this.vMass = this.getMass();
+
+ // Sets tool Durability
+ if (durability != 0) {
+ this.vDurability = durability;
+ } else {
+ long aTempDura = 0;
+ for (MaterialStack g : this.getComposites()) {
+ if (g != null) {
+ aTempDura += safeCast_LongToInt(
+ g.getStackMaterial()
+ .getMass() * 2000);
+ }
+ }
+ this.vDurability = aTempDura > 0 ? aTempDura
+ : (this.getComposites()
+ .isEmpty() ? 51200
+ : 32000 * this.getComposites()
+ .size());
+ }
+
+ if ((this.vDurability >= 0) && (this.vDurability < 64000)) {
+ this.vToolQuality = 1;
+ this.vHarvestLevel = 2;
+ } else if ((this.vDurability >= 64000) && (this.vDurability < 128000)) {
+ this.vToolQuality = 2;
+ this.vHarvestLevel = 2;
+ } else if ((this.vDurability >= 128000) && (this.vDurability < 256000)) {
+ this.vToolQuality = 3;
+ this.vHarvestLevel = 2;
+ } else if ((this.vDurability >= 256000) && (this.vDurability < 512000)) {
+ this.vToolQuality = 3;
+ this.vHarvestLevel = 3;
+ } else if ((this.vDurability >= 512000) && (this.vDurability <= Integer.MAX_VALUE)) {
+ this.vToolQuality = 4;
+ this.vHarvestLevel = 4;
+ } else {
+ this.vToolQuality = 1;
+ this.vHarvestLevel = 1;
+ }
+
+ // Sets the Rad level
+ if (radiationLevel > 0) {
+ Logger.MATERIALS(this.getLocalizedName() + " is radioactive. Level: " + radiationLevel + ".");
+ this.isRadioactive = true;
+ this.vRadiationLevel = (byte) radiationLevel;
+ } else {
+ if (vMaterialInput.size() > 0) {
+ AutoMap<Byte> aDataSet = new AutoMap<>();
+ for (MaterialStack m : this.vMaterialInput) {
+ aDataSet.put(m.getStackMaterial().vRadiationLevel);
+ }
+ byte aAverage = MathUtils.getByteAverage(aDataSet);
+ if (aAverage > 0) {
+ Logger.MATERIALS(
+ this.getLocalizedName() + " is radioactive due to trace elements. Level: "
+ + aAverage
+ + ".");
+ this.isRadioactive = true;
+ this.vRadiationLevel = aAverage;
+ } else {
+ Logger.MATERIALS(this.getLocalizedName() + " is not radioactive.");
+ this.isRadioactive = false;
+ this.vRadiationLevel = 0;
+ }
+ } else {
+ Logger.MATERIALS(this.getLocalizedName() + " is not radioactive.");
+ this.isRadioactive = false;
+ this.vRadiationLevel = 0;
+ }
+ }
+
+ /*
+ * if (vMaterialInput.size() > 0) { AutoMap<Integer> aDataSet = new AutoMap<Integer>(); int bonus = 0; bonus
+ * += this.vMaterialInput.size(); bonus += MathUtils.roundToClosestInt(meltingPointC/1000);
+ * aDataSet.put(bonus); for (MaterialStack m : this.vMaterialInput) {
+ * aDataSet.put(m.getStackMaterial().vTier); } int aAverage = MathUtils.getIntAverage(aDataSet); if
+ * (aAverage > Integer.MAX_VALUE || aAverage < Integer.MIN_VALUE) { aAverage = 0; } if (aAverage > 0) {
+ * this.vTier = Math.min(aAverage, 10); } else { this.vTier = MaterialUtils.getTierOfMaterial((int)
+ * MathUtils.celsiusToKelvin(meltingPoint)); } } else { this.vTier = MaterialUtils.getTierOfMaterial((int)
+ * MathUtils.celsiusToKelvin(meltingPoint)); }
+ */
+ this.vTier = MaterialUtils.getTierOfMaterial(meltingPoint);
+
+ // Sets the materials 'tier'. Will probably replace this logic.
+
+ this.usesBlastFurnace = blastFurnace;
+ this.vVoltageMultiplier = MaterialUtils.getVoltageForTier(vTier);
+
+ this.vComponentCount = this.getComponentCount(inputs);
+ this.vSmallestRatio = this.getSmallestRatio(this.vMaterialInput);
+ int tempSmallestSize = 0;
+
+ if (this.vSmallestRatio != null) {
+ for (long l : this.vSmallestRatio) {
+ tempSmallestSize = (int) (tempSmallestSize + l);
+ }
+ this.smallestStackSizeWhenProcessing = tempSmallestSize; // Valid stacksizes
+ } else {
+ this.smallestStackSizeWhenProcessing = 1; // Valid stacksizes
+ }
+
+ // Makes a Fancy Chemical Tooltip
+
+ if (chemicalSymbol == null) {
+ chemicalSymbol = "";
+ }
+
+ this.vChemicalSymbol = chemicalSymbol;
+ if (this.vMaterialInput != null) {
+ this.vChemicalFormula = this.getToolTip(chemicalSymbol, OrePrefixes.dust.mMaterialAmount / M, true);
+ } else if (!this.vChemicalSymbol.equals("")) {
+ Logger.MATERIALS("materialInput is null, using a valid chemical symbol.");
+ this.vChemicalFormula = this.vChemicalSymbol;
+ } else {
+ Logger.MATERIALS("MaterialInput == null && chemicalSymbol probably equals nothing");
+ this.vChemicalSymbol = "??";
+ this.vChemicalFormula = "??";
+ }
+
+ if (generateFluid) {
+ final Materials aGregtechMaterial = tryFindGregtechMaterialEquivalent();
+ FluidStack aTest = FluidUtils.getWildcardFluidStack(localizedName, 1);
+ if (aTest != null) {
+ this.mFluid = aTest.getFluid();
+ checkForCellAndGenerate(this);
+ } else {
+ if (aGregtechMaterial != null && !MaterialUtils.isNullGregtechMaterial(aGregtechMaterial)) {
+ aTest = FluidUtils.getWildcardFluidStack(aGregtechMaterial, 1);
+ }
+ if (aTest != null) {
+ this.mFluid = aTest.getFluid();
+ checkForCellAndGenerate(this);
+ } else {
+ mFluid = generateFluid();
+ }
+ }
+ // Don't generate plasma for composites
+ if (this.getComposites()
+ .isEmpty()) {
+ this.mPlasma = this.generatePlasma();
+ }
+ } else {
+ this.mFluid = null;
+ this.mPlasma = null;
+ }
+ String ratio = "";
+ if (this.vSmallestRatio != null) {
+ for (long l : this.vSmallestRatio) {
+ if (ratio.equals("")) {
+ ratio = String.valueOf(l);
+ } else {
+ ratio = ratio + ":" + l;
+ }
+ }
+ }
+
+ this.textureSet = setTextureSet(set, vTier);
+
+ if (TinkerConstruct.isModLoaded() && this.materialState == MaterialState.SOLID) {
+ if (this.getProtons() >= 98 || this.getComposites()
+ .size() > 1 || this.getMeltingPointC() >= 3600) {
+ this.vTiConHandler = new BaseTinkersMaterial(this);
+ }
+ }
+
+ sChemicalFormula.put(materialName.toLowerCase(), this.vChemicalFormula);
+ Logger.MATERIALS("Creating a Material instance for " + materialName);
+ Logger.MATERIALS(
+ "Formula: " + this.vChemicalFormula
+ + " Smallest Stack: "
+ + this.smallestStackSizeWhenProcessing
+ + " Smallest Ratio:"
+ + ratio);
+ Logger.MATERIALS("Protons: " + this.vProtons);
+ Logger.MATERIALS("Neutrons: " + this.vNeutrons);
+ Logger.MATERIALS("Mass: " + this.vMass + "/units");
+ Logger.MATERIALS("Melting Point: " + this.meltingPointC + "C.");
+ Logger.MATERIALS("Boiling Point: " + this.boilingPointC + "C.");
+ } catch (Throwable t) {
+ Logger.MATERIALS("Stack Trace for " + materialName);
+ t.printStackTrace();
+ }
+ }
+
+ private static void checkForCellAndGenerate(Material material) {
+ if (!material.vGenerateCells) {
+ return;
+ }
+ String aName = Utils.sanitizeString(material.unlocalizedName);
+ String aName2 = Utils.sanitizeString(material.unlocalizedName.toLowerCase());
+ String aName3 = (material.localizedName == null) ? aName : material.localizedName;
+ ItemStack aTestCell1 = ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cell" + aName, 1);
+ ItemStack aTestCell2 = ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cell" + aName2, 1);
+ ItemStack aTestCell3 = ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cell" + aName3, 1);
+ if (aTestCell1 == null && aTestCell2 == null && aTestCell3 == null) {
+ Logger.INFO("Generating cell for " + material.localizedName);
+ new BaseItemCell(material);
+ } else {
+ if (aTestCell1 != null) {
+ Logger.INFO("Registering existing cell for " + material.localizedName + ", " + aName);
+ material.registerComponentForMaterial(OrePrefixes.cell, aTestCell1);
+ } else if (aTestCell2 != null) {
+ Logger.INFO("Registering existing cell for " + material.localizedName + ", " + aName2);
+ material.registerComponentForMaterial(OrePrefixes.cell, aTestCell2);
+ } else if (aTestCell3 != null) {
+ Logger.INFO("Registering existing cell for " + material.localizedName + ", " + aName3);
+ material.registerComponentForMaterial(OrePrefixes.cell, aTestCell3);
+ }
+ }
+ }
+
+ public final TextureSet getTextureSet() {
+ synchronized (this) {
+ return textureSet;
+ }
+ }
+
+ public TextureSet setTextureSet(TextureSet set) {
+ return setTextureSet(set, vTier);
+ }
+
+ public TextureSet setTextureSet(TextureSet set, int aTier) {
+ if (set != null) {
+ Logger.MATERIALS(
+ "Set textureset for " + this.localizedName
+ + " to be "
+ + set.mSetName
+ + ". This textureSet was supplied.");
+ return set;
+ }
+
+ int aGem = 0;
+ int aShiny = 0;
+ TextureSet aSet = null;
+
+ // Check Mixture Contents
+ for (MaterialStack m : this.getComposites()) {
+
+ // Gems
+ if (m.getStackMaterial() == ELEMENT.getInstance().AER) {
+ aGem++;
+ } else if (m.getStackMaterial() == ELEMENT.getInstance().AQUA) {
+ aGem++;
+ } else if (m.getStackMaterial() == ELEMENT.getInstance().IGNIS) {
+ aGem++;
+ } else if (m.getStackMaterial() == ELEMENT.getInstance().TERRA) {
+ aGem++;
+ } else if (m.getStackMaterial() == ELEMENT.getInstance().MAGIC) {
+ aGem++;
+ }
+ // Shiny Materials
+ if (m.getStackMaterial() == ELEMENT.getInstance().GOLD) {
+ aShiny++;
+ } else if (m.getStackMaterial() == ELEMENT.getInstance().SILVER) {
+ aShiny++;
+ } else if (m.getStackMaterial() == ELEMENT.getInstance().PLATINUM) {
+ aShiny++;
+ } else if (m.getStackMaterial() == ELEMENT.getInstance().TITANIUM) {
+ aShiny++;
+ } else if (m.getStackMaterial() == ELEMENT.getInstance().GERMANIUM) {
+ aShiny++;
+ } else if (m.getStackMaterial() == ELEMENT.getInstance().GALLIUM) {
+ aShiny++;
+ } else if (m.getStackMaterial() == ELEMENT.getInstance().MERCURY) {
+ aShiny++;
+ } else if (m.getStackMaterial() == ELEMENT.getInstance().MAGIC) {
+ aShiny++;
+ } else if (m.getStackMaterial() == ELEMENT.getInstance().SAMARIUM) {
+ aShiny++;
+ } else if (m.getStackMaterial() == ELEMENT.getInstance().TANTALUM) {
+ aShiny++;
+ }
+ }
+
+ if (aSet == null) {
+ if (aGem >= this.getComposites()
+ .size() / 2) {
+ if (MathUtils.isNumberEven(aGem)) {
+ Logger.MATERIALS(
+ "Set textureset for " + this.localizedName
+ + " to be "
+ + TextureSet.SET_GEM_HORIZONTAL.mSetName
+ + ".");
+ return TextureSet.SET_GEM_HORIZONTAL;
+ } else {
+ Logger.MATERIALS(
+ "Set textureset for " + this.localizedName
+ + " to be "
+ + TextureSet.SET_GEM_VERTICAL.mSetName
+ + ".");
+ return TextureSet.SET_GEM_VERTICAL;
+ }
+ }
+ }
+
+ if (aSet == null) {
+ if (aShiny >= this.getComposites()
+ .size() / 3) {
+ Logger.MATERIALS(
+ "Set textureset for " + this.localizedName + " to be " + TextureSet.SET_SHINY.mSetName + ".");
+ return TextureSet.SET_SHINY;
+ }
+ }
+
+ // build hash table with count
+ AutoMap<Material> sets = new AutoMap<>();
+ if (this.vMaterialInput != null) {
+ for (MaterialStack r : this.vMaterialInput) {
+ if (r.getStackMaterial()
+ .getTextureSet().mSetName.toLowerCase()
+ .contains("fluid")) {
+ sets.put(ELEMENT.getInstance().GOLD);
+ } else {
+ sets.put(r.getStackMaterial());
+ }
+ }
+ TextureSet mostUsedTypeTextureSet = MaterialUtils.getMostCommonTextureSet(new ArrayList<>(sets.values()));
+ if (mostUsedTypeTextureSet != null && mostUsedTypeTextureSet instanceof TextureSet) {
+ Logger.MATERIALS(
+ "Set textureset for " + this.localizedName + " to be " + mostUsedTypeTextureSet.mSetName + ".");
+ return mostUsedTypeTextureSet;
+ }
+ }
+ Logger.MATERIALS(
+ "Set textureset for " + this.localizedName + " to be " + Materials.Iron.mIconSet.mSetName + ". [Fallback]");
+ return Materials.Gold.mIconSet;
+ }
+
+ public final String getLocalizedName() {
+ if (this.localizedName != null) {
+ return this.localizedName;
+ }
+ return "ERROR BAD LOCALIZED NAME";
+ }
+
+ public final String getUnlocalizedName() {
+ if (this.unlocalizedName != null) {
+ return this.unlocalizedName;
+ }
+ return "ERROR.BAD.UNLOCALIZED.NAME";
+ }
+
+ public final String getTranslatedName() {
+ if (this.translatedName != null) {
+ return this.translatedName;
+ }
+ return "ERROR.BAD.TRANSLATED.NAME";
+ }
+
+ public final MaterialState getState() {
+ return this.materialState;
+ }
+
+ public final short[] getRGB() {
+ if (this.RGBA != null) {
+ return this.RGBA;
+ }
+ return new short[] { 255, 0, 0 };
+ }
+
+ public final short[] getRGBA() {
+ if (this.RGBA != null) {
+ if (this.RGBA.length == 4) {
+ return this.RGBA;
+ } else {
+ return new short[] { this.RGBA[0], this.RGBA[1], this.RGBA[2], 0 };
+ }
+ }
+ return new short[] { 255, 0, 0, 0 };
+ }
+
+ public final int getRgbAsHex() {
+
+ final int returnValue = Utils.rgbtoHexValue(this.RGBA[0], this.RGBA[1], this.RGBA[2]);
+ if (returnValue == 0) {
+ return (int) this.dataVar;
+ }
+ return Utils.rgbtoHexValue(this.RGBA[0], this.RGBA[1], this.RGBA[2]);
+ }
+
+ public final long getProtons() {
+ return this.vProtons;
+ }
+
+ public final long getNeutrons() {
+ return this.vNeutrons;
+ }
+
+ public final long getMass() {
+ return this.vProtons + this.vNeutrons;
+ }
+
+ public final int getMeltingPointC() {
+ return this.meltingPointC;
+ }
+
+ public final int getBoilingPointC() {
+ return this.boilingPointC;
+ }
+
+ public final int getMeltingPointK() {
+ return this.meltingPointK;
+ }
+
+ public final int getBoilingPointK() {
+ return this.boilingPointK;
+ }
+
+ public final boolean requiresBlastFurnace() {
+ return this.usesBlastFurnace;
+ }
+
+ public final ItemStack getComponentByPrefix(OrePrefixes aPrefix, int stacksize) {
+ String aKey = aPrefix.name();
+ Map<String, ItemStack> g = mComponentMap.get(this.unlocalizedName);
+ if (g == null) {
+ Map<String, ItemStack> aMap = new HashMap<>();
+ mComponentMap.put(unlocalizedName, aMap);
+ g = aMap;
+ }
+ ItemStack i = g.get(aKey);
+ if (i != null) {
+ return ItemUtils.getSimpleStack(i, stacksize);
+ } else {
+ // Try get a GT Material
+ Materials Erf = MaterialUtils.getMaterial(this.unlocalizedName);
+ if (Erf != null && !MaterialUtils.isNullGregtechMaterial(Erf)) {
+ ItemStack Erg = ItemUtils.getOrePrefixStack(aPrefix, Erf, stacksize);
+ if (Erg != null && ItemUtils.checkForInvalidItems(Erg)) {
+ Logger.MATERIALS("Found \"" + aKey + this.unlocalizedName + "\" using backup GT Materials option.");
+ g.put(aKey, Erg);
+ mComponentMap.put(unlocalizedName, g);
+ return Erg;
+ } else {
+ // Try get a molten cell
+ if (aPrefix == OrePrefixes.cell) {
+ Erg = ItemUtils.getOrePrefixStack(OrePrefixes.cellMolten, Erf, stacksize);
+ if (Erg != null && ItemUtils.checkForInvalidItems(Erg)) {
+ Logger.MATERIALS(
+ "Found \"" + OrePrefixes.cellMolten.name()
+ + this.unlocalizedName
+ + "\" using backup GT Materials option.");
+ g.put(aKey, Erg);
+ mComponentMap.put(unlocalizedName, g);
+ return Erg;
+ }
+ }
+ }
+ } else {
+ ItemStack u = ItemUtils.getItemStackOfAmountFromOreDictNoBroken(aKey + this.unlocalizedName, stacksize);
+ if (u != null) {
+ g.put(aKey, u);
+ mComponentMap.put(unlocalizedName, g);
+ return u;
+ }
+ }
+ // Logger.MATERIALS("Unabled to find \"" + aKey + this.unlocalizedName + "\"");
+ return ItemUtils.getErrorStack(stacksize, (aKey + this.unlocalizedName + " x" + stacksize));
+ }
+ }
+
+ public final Block getBlock() {
+ Block b = Block.getBlockFromItem(getBlock(1).getItem());
+ if (b == null) {
+ Logger.INFO(
+ "[ERROR] Tried to get invalid block for " + this.getLocalizedName()
+ + ", returning debug block instead.");
+ }
+ return b != null ? b : Blocks.lit_furnace;
+ }
+
+ public final ItemStack getBlock(final int stacksize) {
+ ItemStack i = getComponentByPrefix(OrePrefixes.block, stacksize);
+ return i != null ? i
+ : ItemUtils.getItemStackOfAmountFromOreDictNoBroken("block" + this.unlocalizedName, stacksize);
+ }
+
+ public final ItemStack getDust(final int stacksize) {
+ ItemStack i = getComponentByPrefix(OrePrefixes.dust, stacksize);
+ return i != null ? i : ItemUtils.getGregtechDust("dust" + this.unlocalizedName, stacksize);
+ }
+
+ public final ItemStack getSmallDust(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.dustSmall, stacksize);
+ }
+
+ public final ItemStack getTinyDust(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.dustTiny, stacksize);
+ }
+
+ public final ItemStack getIngot(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.ingot, stacksize);
+ }
+
+ public final ItemStack getHotIngot(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.ingotHot, stacksize);
+ }
+
+ public final ItemStack getPlate(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.plate, stacksize);
+ }
+
+ public final ItemStack getPlateDouble(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.plateDouble, stacksize);
+ }
+
+ public final ItemStack getPlateDense(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.plateDense, stacksize);
+ }
+
+ public final ItemStack getGear(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.gearGt, stacksize);
+ }
+
+ public final ItemStack getRod(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.stick, stacksize);
+ }
+
+ public final ItemStack getLongRod(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.stickLong, stacksize);
+ }
+
+ public final ItemStack getBolt(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.bolt, stacksize);
+ }
+
+ public final ItemStack getScrew(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.screw, stacksize);
+ }
+
+ public final ItemStack getFineWire(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.wireFine, stacksize);
+ }
+
+ public final ItemStack getFoil(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.foil, stacksize);
+ }
+
+ public final ItemStack getRing(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.ring, stacksize);
+ }
+
+ public final ItemStack getRotor(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.rotor, stacksize);
+ }
+
+ public final ItemStack getFrameBox(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.frameGt, stacksize);
+ }
+
+ public final ItemStack getCell(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.cell, stacksize);
+ }
+
+ public final ItemStack getPlasmaCell(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.cellPlasma, stacksize);
+ }
+
+ public final ItemStack getNugget(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.nugget, stacksize);
+ }
+
+ public final ItemStack getWire01(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.wireGt01, stacksize);
+ }
+
+ public final ItemStack getWire02(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.wireGt02, stacksize);
+ }
+
+ public final ItemStack getWire04(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.wireGt04, stacksize);
+ }
+
+ public final ItemStack getWire08(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.wireGt08, stacksize);
+ }
+
+ public final ItemStack getWire12(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.wireGt12, stacksize);
+ }
+
+ public final ItemStack getWire16(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.wireGt16, stacksize);
+ }
+
+ public final ItemStack getCable01(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.cableGt01, stacksize);
+ }
+
+ public final ItemStack getCable02(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.cableGt02, stacksize);
+ }
+
+ public final ItemStack getCable04(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.cableGt04, stacksize);
+ }
+
+ public final ItemStack getCable08(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.cableGt08, stacksize);
+ }
+
+ public final ItemStack getCable12(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.cableGt12, stacksize);
+ }
+
+ public final ItemStack getCable16(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.cableGt16, stacksize);
+ }
+
+ /**
+ * Ore Components
+ *
+ * @return
+ */
+ public final ItemStack getOre(final int stacksize) {
+ return ItemUtils.getItemStackOfAmountFromOreDictNoBroken(
+ "ore" + Utils.sanitizeString(this.getUnlocalizedName()),
+ stacksize);
+ }
+
+ public final Block getOreBlock(final int stacksize) {
+ // Logger.DEBUG_MATERIALS("Trying to get ore block for "+this.getLocalizedName()+". Looking for
+ // '"+"ore"+Utils.sanitizeString(this.getUnlocalizedName())+"'.");
+ try {
+ ItemStack a1 = getOre(1);
+ Item a2 = a1.getItem();
+ Block a3 = Block.getBlockFromItem(a2);
+ if (a3 != null) {
+ return a3;
+ }
+
+ Block x = Block.getBlockFromItem(
+ ItemUtils
+ .getItemStackOfAmountFromOreDictNoBroken(
+ "ore" + Utils.sanitizeString(this.unlocalizedName),
+ stacksize)
+ .getItem());
+ if (x != null) {
+ return x;
+ }
+ } catch (Throwable t) {
+ // t.printStackTrace();
+ }
+ // Logger.MATERIALS("Failed getting the Ore Block for "+this.getLocalizedName()+".");
+ return Blocks.stone;
+ }
+
+ public final ItemStack getCrushed(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.crushed, stacksize);
+ }
+
+ public final ItemStack getCrushedPurified(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.crushedPurified, stacksize);
+ }
+
+ public final ItemStack getCrushedCentrifuged(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.crushedCentrifuged, stacksize);
+ }
+
+ public final ItemStack getDustPurified(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.dustPure, stacksize);
+ }
+
+ public final ItemStack getDustImpure(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.dustImpure, stacksize);
+ }
+
+ public final ItemStack getMilled(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.milled, stacksize);
+ }
+
+ public final ItemStack getRawOre(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.rawOre, stacksize);
+ }
+
+ public final boolean hasSolidForm() {
+ if (ItemUtils
+ .checkForInvalidItems(new ItemStack[] { getDust(1), getBlock(1), getTinyDust(1), getSmallDust(1) })) {
+ return true;
+ }
+ return false;
+ }
+
+ public final ItemStack[] getMaterialComposites() {
+ if (this.vMaterialInput != null && !this.vMaterialInput.isEmpty()) {
+ final ItemStack[] temp = new ItemStack[this.vMaterialInput.size()];
+ for (int i = 0; i < this.vMaterialInput.size(); i++) {
+ // Utils.LOG_MATERIALS("i:"+i);
+ ItemStack testNull = null;
+ try {
+ testNull = this.vMaterialInput.get(i)
+ .getValidStack();
+ } catch (final Throwable r) {
+ Logger.MATERIALS("Failed gathering material stack for " + this.localizedName + ".");
+ Logger.MATERIALS("What Failed: Length:" + this.vMaterialInput.size() + " current:" + i);
+ }
+ try {
+ if (testNull != null) {
+ // Utils.LOG_MATERIALS("not null");
+ temp[i] = this.vMaterialInput.get(i)
+ .getValidStack();
+ }
+ } catch (final Throwable r) {
+ Logger.MATERIALS("Failed setting slot " + i + ", using " + this.localizedName);
+ }
+ }
+ return temp;
+ }
+ return new ItemStack[] {};
+ }
+
+ public final ArrayList<MaterialStack> getComposites() {
+ return this.vMaterialInput;
+ }
+
+ public final int[] getMaterialCompositeStackSizes() {
+ if (!this.vMaterialInput.isEmpty()) {
+ final int[] temp = new int[this.vMaterialInput.size()];
+ for (int i = 0; i < this.vMaterialInput.size(); i++) {
+ if (this.vMaterialInput.get(i) != null) {
+ temp[i] = this.vMaterialInput.get(i)
+ .getDustStack().stackSize;
+ } else {
+ temp[i] = 0;
+ }
+ }
+ return temp;
+ }
+ return new int[] {};
+ }
+
+ private short getComponentCount(final MaterialStack[] inputs) {
+
+ if (inputs == null || inputs.length < 1) {
+ return 1;
+ }
+ int counterTemp = 0;
+ for (final MaterialStack m : inputs) {
+ if (m.getStackMaterial() != null) {
+ counterTemp++;
+ }
+ }
+ if (counterTemp != 0) {
+ return (short) counterTemp;
+ } else {
+ return 1;
+ }
+ }
+
+ public final long[] getSmallestRatio(final ArrayList<MaterialStack> tempInput) {
+ if (tempInput != null) {
+ if (!tempInput.isEmpty()) {
+ Logger.MATERIALS("length: " + tempInput.size());
+ Logger.MATERIALS("(inputs != null): " + (tempInput != null));
+ // Utils.LOG_MATERIALS("length: "+inputs.length);
+ final long[] tempRatio = new long[tempInput.size()];
+ for (int x = 0; x < tempInput.size(); x++) {
+ if (tempInput.get(x) != null) {
+ tempRatio[x] = tempInput.get(x)
+ .getPartsPerOneHundred();
+ }
+ }
+
+ final long[] smallestRatio = MathUtils.simplifyNumbersToSmallestForm(tempRatio);
+
+ if (smallestRatio.length > 0) {
+ String tempRatioStringThing1 = "";
+ for (long value : tempRatio) {
+ tempRatioStringThing1 = tempRatioStringThing1 + value + " : ";
+ }
+ Logger.MATERIALS("Default Ratio: " + tempRatioStringThing1);
+
+ String tempRatioStringThing = "";
+ int tempSmallestCraftingUseSize = 0;
+ for (long l : smallestRatio) {
+ tempRatioStringThing = tempRatioStringThing + l + " : ";
+ tempSmallestCraftingUseSize = (int) (tempSmallestCraftingUseSize + l);
+ }
+ // this.smallestStackSizeWhenProcessing = tempSmallestCraftingUseSize;
+ Logger.MATERIALS("Smallest Ratio: " + tempRatioStringThing);
+ return smallestRatio;
+ }
+ }
+ }
+ return new long[] {};
+ }
+
+ public final String getToolTip(final String chemSymbol, final long aMultiplier, final boolean aShowQuestionMarks) {
+ if (!aShowQuestionMarks && (this.vChemicalFormula.equals("?") || this.vChemicalFormula.equals("??"))) {
+ return "";
+ }
+ Logger.MATERIALS("===============| Calculating Atomic Formula for " + this.localizedName + " |===============");
+ if (!chemSymbol.equals("")) {
+ return chemSymbol;
+ }
+ final ArrayList<MaterialStack> tempInput = this.vMaterialInput;
+ if (tempInput != null) {
+ if (!tempInput.isEmpty()) {
+ String dummyFormula = "";
+ final long[] dummyFormulaArray = this.getSmallestRatio(tempInput);
+ if (dummyFormulaArray != null) {
+ if (dummyFormulaArray.length >= 1) {
+ for (int e = 0; e < tempInput.size(); e++) {
+ MaterialStack g = tempInput.get(e);
+ if (g != null) {
+ if (g.getStackMaterial() != null) {
+
+ String aChemSymbol = g.getStackMaterial().vChemicalSymbol;
+ String aChemFormula = g.getStackMaterial().vChemicalFormula;
+
+ if (aChemSymbol == null) {
+ aChemSymbol = "??";
+ }
+ if (aChemFormula == null) {
+ aChemFormula = "??";
+ }
+
+ if (!aChemSymbol.equals("??")) {
+ if (dummyFormulaArray[e] > 1) {
+
+ if (aChemFormula.length() > 3
+ || StringUtils.uppercaseCount(aChemFormula) > 1) {
+ dummyFormula = dummyFormula + "("
+ + aChemFormula
+ + ")"
+ + dummyFormulaArray[e];
+ } else {
+ dummyFormula = dummyFormula + aChemFormula + dummyFormulaArray[e];
+ }
+ } else if (dummyFormulaArray[e] == 1) {
+ if (aChemFormula.length() > 3
+ || StringUtils.uppercaseCount(aChemFormula) > 1) {
+ dummyFormula = dummyFormula + "(" + aChemFormula + ")";
+ } else {
+ dummyFormula = dummyFormula + aChemFormula;
+ }
+ } else {
+ dummyFormula = dummyFormula + "??";
+ }
+ } else {
+ dummyFormula = dummyFormula + "??";
+ }
+ } else {
+ dummyFormula = dummyFormula + "??";
+ }
+ }
+ }
+ return StringUtils.subscript(dummyFormula);
+ // return dummyFormula;
+ }
+ Logger.MATERIALS("dummyFormulaArray <= 0");
+ }
+ Logger.MATERIALS("dummyFormulaArray == null");
+ }
+ Logger.MATERIALS("tempInput.length <= 0");
+ }
+ Logger.MATERIALS("tempInput == null");
+ return "??";
+ }
+
+ public final boolean queueFluidGeneration() {
+ return isFluidQueued = true;
+ }
+
+ public static final void generateQueuedFluids() {
+ for (Material m : mMaterialMap) {
+ if (m.isFluidQueued) {}
+ }
+ }
+
+ // If we need a fluid, let's just queue it for later.
+ public boolean isFluidQueued = false;
+
+ public final Fluid generateFluid() {
+ if (this.materialState == MaterialState.ORE) {
+ return null;
+ }
+
+ Fluid aGTBaseFluid = null;
+
+ // Clean up Internal Fluid Generation
+ final Materials n1 = MaterialUtils
+ .getMaterial(this.getLocalizedName(), Utils.sanitizeString(this.getLocalizedName()));
+ final Materials n2 = MaterialUtils
+ .getMaterial(this.getUnlocalizedName(), Utils.sanitizeString(this.getUnlocalizedName()));
+
+ FluidStack f1 = FluidUtils.getWildcardFluidStack(n1, 1);
+ FluidStack f2 = FluidUtils.getWildcardFluidStack(n2, 1);
+ FluidStack f3 = FluidUtils
+ .getWildcardFluidStack(Utils.sanitizeString(this.getUnlocalizedName(), new char[] { '-', '_' }), 1);
+ FluidStack f4 = FluidUtils
+ .getWildcardFluidStack(Utils.sanitizeString(this.getLocalizedName(), new char[] { '-', '_' }), 1);
+
+ if (f1 != null) {
+ aGTBaseFluid = f1.getFluid();
+ } else if (f2 != null) {
+ aGTBaseFluid = f2.getFluid();
+ } else if (f3 != null) {
+ aGTBaseFluid = f3.getFluid();
+ } else if (f4 != null) {
+ aGTBaseFluid = f4.getFluid();
+ }
+
+ ItemStack aFullCell = ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cell" + this.getUnlocalizedName(), 1);
+ ItemStack aFullCell2 = ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cell" + this.getLocalizedName(), 1);
+ ItemStack aFullCell3 = ItemUtils.getItemStackOfAmountFromOreDictNoBroken(
+ "cell" + Utils.sanitizeString(this.getUnlocalizedName(), new char[] { '-', '_' }),
+ 1);
+ ItemStack aFullCell4 = ItemUtils.getItemStackOfAmountFromOreDictNoBroken(
+ "cell" + Utils.sanitizeString(this.getLocalizedName(), new char[] { '-', '_' }),
+ 1);
+
+ Logger.MATERIALS("Generating our own fluid.");
+ // Generate a Cell if we need to, but first validate all four searches are invalid
+
+ if (!ItemUtils.checkForInvalidItems(new ItemStack[] { aFullCell, aFullCell2, aFullCell3, aFullCell4 })) {
+ if (this.vGenerateCells) {
+ Item g = new BaseItemCell(this);
+ aFullCell = ItemUtils.getSimpleStack(g);
+ Logger.MATERIALS("Generated a cell for " + this.getUnlocalizedName());
+ } else {
+ Logger.MATERIALS("Did not generate a cell for " + this.getUnlocalizedName());
+ }
+ } else {
+ // One cell we searched for was valid, let's register it.
+ if (aFullCell != null) {
+ this.registerComponentForMaterial(ComponentTypes.CELL, aFullCell);
+ } else if (aFullCell2 != null) {
+ this.registerComponentForMaterial(ComponentTypes.CELL, aFullCell2);
+ } else if (aFullCell3 != null) {
+ this.registerComponentForMaterial(ComponentTypes.CELL, aFullCell3);
+ } else if (aFullCell4 != null) {
+ this.registerComponentForMaterial(ComponentTypes.CELL, aFullCell4);
+ }
+ }
+
+ // We found a GT fluid, let's use it.
+ // Good chance we registered the cell from this material too.
+ if (aGTBaseFluid != null) {
+ return aGTBaseFluid;
+ }
+
+ // This fluid does not exist at all, time to generate it.
+ if (this.materialState == MaterialState.SOLID) {
+ return FluidUtils.addGTFluid(
+ this.getUnlocalizedName(),
+ "Molten " + this.getLocalizedName(),
+ this.RGBA,
+ 4,
+ this.getMeltingPointK(),
+ aFullCell,
+ ItemUtils.getEmptyCell(),
+ 1000,
+ this.vGenerateCells);
+ } else if (this.materialState == MaterialState.LIQUID || this.materialState == MaterialState.PURE_LIQUID) {
+ return FluidUtils.addGTFluid(
+ this.getUnlocalizedName(),
+ this.getLocalizedName(),
+ this.RGBA,
+ 0,
+ this.getMeltingPointK(),
+ aFullCell,
+ ItemUtils.getEmptyCell(),
+ 1000,
+ this.vGenerateCells);
+ } else if (this.materialState == MaterialState.GAS || this.materialState == MaterialState.PURE_GAS) {
+ return FluidUtils
+ .generateGas(unlocalizedName, this.getLocalizedName(), getMeltingPointK(), getRGBA(), vGenerateCells);
+ /*
+ * return FluidUtils.addGTFluid( this.getUnlocalizedName(), this.getLocalizedName()+" Gas", this.RGBA, 2,
+ * this.getMeltingPointK(), aFullCell, ItemUtils.getEmptyCell(), 1000, this.vGenerateCells);
+ */
+ } else { // Plasma
+ return this.generatePlasma();
+ }
+ }
+
+ public final Fluid generatePlasma() {
+ if (this.materialState == MaterialState.ORE) {
+ return null;
+ }
+ final Materials isValid = tryFindGregtechMaterialEquivalent();
+
+ if (!this.vGenerateCells) {
+ return null;
+ }
+ if (isValid != null) {
+ for (Materials m : invalidMaterials.values()) {
+ if (isValid == m) {
+ return null;
+ }
+ }
+ if (isValid.mPlasma != null) {
+ Logger.MATERIALS("Using a pre-defined Plasma from GT.");
+ return isValid.mPlasma;
+ }
+ }
+ Logger.MATERIALS("Generating our own Plasma.");
+ return FluidUtils.addGTPlasma(this);
+ }
+
+ public Fluid getFluid() {
+ return mFluid;
+ }
+
+ public Fluid getPlasma() {
+ return mPlasma;
+ }
+
+ public final FluidStack getFluidStack(final int fluidAmount) {
+ if (this.mFluid == null) {
+ return null;
+ }
+ final FluidStack moltenFluid = new FluidStack(this.mFluid, fluidAmount);
+ return moltenFluid;
+ }
+
+ public final boolean setFluid(Fluid aFluid) {
+ if (this.mFluid == null) {
+ this.mFluid = aFluid;
+ return true;
+ }
+ return false;
+ }
+
+ public final int calculateMeltingPoint() {
+ try {
+ AutoMap<Integer> aDataSet = new AutoMap<>();
+ for (MaterialStack m : this.vMaterialInput) {
+ aDataSet.put(
+ m.getStackMaterial()
+ .getMeltingPointC());
+ }
+ long aAverage = MathUtils.getIntAverage(aDataSet);
+ return MathUtils.safeInt(aAverage);
+ } catch (Throwable r) {
+ r.printStackTrace();
+ return 500;
+ }
+ }
+
+ public final int calculateBoilingPoint() {
+ try {
+
+ AutoMap<Integer> aDataSet = new AutoMap<>();
+ for (MaterialStack m : this.vMaterialInput) {
+ aDataSet.put(
+ m.getStackMaterial()
+ .getBoilingPointC());
+ }
+ long aAverage = MathUtils.getIntAverage(aDataSet);
+ return MathUtils.safeInt(aAverage);
+ } catch (Throwable r) {
+ r.printStackTrace();
+ return 2500;
+ }
+ }
+
+ public final long calculateProtons() {
+ try {
+
+ AutoMap<Long> aDataSet = new AutoMap<>();
+ for (MaterialStack m : this.vMaterialInput) {
+ aDataSet.put(
+ m.getStackMaterial()
+ .getProtons());
+ }
+ long aAverage = MathUtils.getLongAverage(aDataSet);
+ return MathUtils.safeInt(aAverage);
+ } catch (Throwable r) {
+ r.printStackTrace();
+ return 50;
+ }
+ }
+
+ public final long calculateNeutrons() {
+ try {
+
+ AutoMap<Long> aDataSet = new AutoMap<>();
+ for (MaterialStack m : this.vMaterialInput) {
+ aDataSet.put(
+ m.getStackMaterial()
+ .getNeutrons());
+ }
+ long aAverage = MathUtils.getLongAverage(aDataSet);
+ return MathUtils.safeInt(aAverage);
+ } catch (Throwable r) {
+ r.printStackTrace();
+ return 75;
+ }
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (!Material.class.isInstance(obj)) {
+ return false;
+ }
+ Material aObj = (Material) obj;
+ if (aObj.unlocalizedName.equals(this.unlocalizedName)) {
+ if (aObj.localizedName.equals(this.localizedName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean registerComponentForMaterial(FluidStack aStack) {
+ return registerComponentForMaterial(this, aStack);
+ }
+
+ private static boolean registerComponentForMaterial(Material componentMaterial, FluidStack aStack) {
+ if (componentMaterial != null && aStack != null && componentMaterial.mFluid == null) {
+ componentMaterial.mFluid = aStack.getFluid();
+ return true;
+ }
+ return false;
+ }
+
+ public boolean registerComponentForMaterial(ComponentTypes aPrefix, ItemStack aStack) {
+ return registerComponentForMaterial(this, aPrefix.getGtOrePrefix(), aStack);
+ }
+
+ public boolean registerComponentForMaterial(OrePrefixes aPrefix, ItemStack aStack) {
+ return registerComponentForMaterial(this, aPrefix, aStack);
+ }
+
+ public static boolean registerComponentForMaterial(Material componentMaterial, ComponentTypes aPrefix,
+ ItemStack aStack) {
+ return registerComponentForMaterial(componentMaterial, aPrefix.getGtOrePrefix(), aStack);
+ }
+
+ public static boolean registerComponentForMaterial(Material componentMaterial, OrePrefixes aPrefix,
+ ItemStack aStack) {
+ if (componentMaterial == null) {
+ return false;
+ }
+ // Register Component
+ Map<String, ItemStack> aMap = Material.mComponentMap.get(componentMaterial.getUnlocalizedName());
+ if (aMap == null) {
+ aMap = new HashMap<>();
+ }
+ String aKey = aPrefix.name();
+ ItemStack x = aMap.get(aKey);
+ if (x == null) {
+ aMap.put(aKey, aStack);
+ Logger.MATERIALS(
+ "Registering a material component. Item: [" + componentMaterial.getUnlocalizedName()
+ + "] Map: ["
+ + aKey
+ + "]");
+ Material.mComponentMap.put(componentMaterial.getUnlocalizedName(), aMap);
+ return true;
+ } else {
+ // Bad
+ Logger.MATERIALS("Tried to double register a material component. ");
+ return false;
+ }
+ }
+
+ public Materials tryFindGregtechMaterialEquivalent() {
+ return tryFindGregtechMaterialEquivalent(this);
+ }
+
+ public static Materials tryFindGregtechMaterialEquivalent(Material aMaterial) {
+ String aMaterialName = aMaterial.getLocalizedName();
+ Materials aGregtechMaterial = Materials.get(aMaterialName);
+ if (aGregtechMaterial == null || MaterialUtils.isNullGregtechMaterial(aGregtechMaterial)) {
+ aMaterialName = aMaterialName.replace(" ", "_");
+ aGregtechMaterial = Materials.get(aMaterialName);
+ if (aGregtechMaterial == null || MaterialUtils.isNullGregtechMaterial(aGregtechMaterial)) {
+ aMaterialName = aMaterialName.replace(" ", "");
+ aGregtechMaterial = Materials.get(aMaterialName);
+ if (aGregtechMaterial == null || MaterialUtils.isNullGregtechMaterial(aGregtechMaterial)) {
+ return null;
+ } else {
+ return aGregtechMaterial;
+ }
+ } else {
+ return aGregtechMaterial;
+ }
+ } else {
+ return aGregtechMaterial;
+ }
+ }
+
+ public void setWerkstoffID(short werkstoffID) {
+ this.werkstoffID = werkstoffID;
+ }
+}
diff --git a/src/main/java/gtPlusPlus/core/material/MaterialGenerator.java b/src/main/java/gtPlusPlus/core/material/MaterialGenerator.java
new file mode 100644
index 0000000000..df2abd0acb
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/MaterialGenerator.java
@@ -0,0 +1,428 @@
+package gtPlusPlus.core.material;
+
+import java.util.Set;
+
+import net.minecraft.block.Block;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidStack;
+
+import gtPlusPlus.api.interfaces.RunnableWithInfo;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.core.block.base.BasicBlock.BlockTypes;
+import gtPlusPlus.core.block.base.BlockBaseModular;
+import gtPlusPlus.core.block.base.BlockBaseOre;
+import gtPlusPlus.core.item.base.BaseItemComponent;
+import gtPlusPlus.core.item.base.BaseItemComponent.ComponentTypes;
+import gtPlusPlus.core.item.base.bolts.BaseItemBolt;
+import gtPlusPlus.core.item.base.dusts.BaseItemDust;
+import gtPlusPlus.core.item.base.dusts.BaseItemDust.DustState;
+import gtPlusPlus.core.item.base.gears.BaseItemGear;
+import gtPlusPlus.core.item.base.ingots.BaseItemIngot;
+import gtPlusPlus.core.item.base.ingots.BaseItemIngotHot;
+import gtPlusPlus.core.item.base.nugget.BaseItemNugget;
+import gtPlusPlus.core.item.base.ore.BaseItemCentrifugedCrushedOre;
+import gtPlusPlus.core.item.base.ore.BaseItemCrushedOre;
+import gtPlusPlus.core.item.base.ore.BaseItemImpureDust;
+import gtPlusPlus.core.item.base.ore.BaseItemPurifiedCrushedOre;
+import gtPlusPlus.core.item.base.ore.BaseItemPurifiedDust;
+import gtPlusPlus.core.item.base.ore.BaseItemRawOre;
+import gtPlusPlus.core.item.base.plates.BaseItemPlate;
+import gtPlusPlus.core.item.base.plates.BaseItemPlateDense;
+import gtPlusPlus.core.item.base.plates.BaseItemPlateDouble;
+import gtPlusPlus.core.item.base.rings.BaseItemRing;
+import gtPlusPlus.core.item.base.rods.BaseItemRod;
+import gtPlusPlus.core.item.base.rods.BaseItemRodLong;
+import gtPlusPlus.core.item.base.rotors.BaseItemRotor;
+import gtPlusPlus.core.item.base.screws.BaseItemScrew;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.material.nuclear.FLUORIDES;
+import gtPlusPlus.core.material.state.MaterialState;
+import gtPlusPlus.core.recipe.common.CI;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_AlloySmelter;
+import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_Assembler;
+import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_BlastSmelter;
+import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_DustGeneration;
+import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_Extruder;
+import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_FluidCanning;
+import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_Fluids;
+import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_Fluorite;
+import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_MaterialProcessing;
+import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_MetalRecipe;
+import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_Ore;
+import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_Plasma;
+import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_Plates;
+import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_Recycling;
+import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_ShapedCrafting;
+
+public class MaterialGenerator {
+
+ public static final AutoMap<Set<RunnableWithInfo<Material>>> mRecipeMapsToGenerate = new AutoMap<>();
+
+ @SuppressWarnings("unused")
+ private static volatile Item temp;
+
+ @SuppressWarnings("unused")
+ private static volatile Block tempBlock;
+
+ @Deprecated
+ public static boolean addFluidCannerRecipe(ItemStack aEmpty, ItemStack aFullContainer, FluidStack aFluidIn,
+ FluidStack rFluidOut) {
+ return addFluidCannerRecipe(aEmpty, aFullContainer, aFluidIn, rFluidOut, null, null);
+ }
+
+ @Deprecated
+ public static boolean addFluidCannerRecipe(ItemStack aEmpty, ItemStack aFullContainer, FluidStack aFluidIn,
+ FluidStack rFluidOut, Integer aTime, Integer aEu) {
+
+ RecipeGen_FluidCanning g = new RecipeGen_FluidCanning(false, aEmpty, aFullContainer, aFluidIn, null, null, 0);
+ if (g != null && g.valid()) {
+ return true;
+ }
+ return false;
+ }
+
+ public static void generate(final Material matInfo) {
+ generate(matInfo, true);
+ }
+
+ public static void generate(final Material matInfo, final boolean generateEverything) {
+ generate(matInfo, generateEverything, true);
+ }
+
+ public static boolean generate(final Material matInfo, final boolean generateEverything,
+ final boolean generateBlastSmelterRecipes) {
+ try {
+ final String unlocalizedName = matInfo.getUnlocalizedName();
+ final String materialName = matInfo.getLocalizedName();
+ final short[] C = matInfo.getRGBA();
+ final int Colour = Utils.rgbtoHexValue(C[0], C[1], C[2]);
+ final boolean hotIngot = matInfo.requiresBlastFurnace();
+ int materialTier = matInfo.vTier; // TODO
+
+ if ((materialTier > 10) || (materialTier <= 0)) {
+ materialTier = 2;
+ }
+
+ int sRadiation = 0;
+ if (ItemUtils.isRadioactive(materialName) || (matInfo.vRadiationLevel != 0)) {
+ sRadiation = matInfo.vRadiationLevel;
+ }
+
+ if (matInfo.getState() == MaterialState.SOLID) {
+ if (generateEverything == true) {
+ if (sRadiation >= 1) {
+ tempBlock = new BlockBaseModular(matInfo, BlockTypes.STANDARD);
+ temp = new BaseItemIngot(matInfo);
+
+ temp = new BaseItemDust(matInfo);
+ temp = new BaseItemNugget(matInfo);
+ temp = new BaseItemPlate(matInfo);
+ temp = new BaseItemRod(matInfo);
+ temp = new BaseItemRodLong(matInfo);
+ } else {
+ tempBlock = new BlockBaseModular(matInfo, BlockTypes.STANDARD);
+ tempBlock = new BlockBaseModular(matInfo, BlockTypes.FRAME);
+ temp = new BaseItemIngot(matInfo);
+ if (hotIngot) {
+ temp = new BaseItemIngotHot(matInfo);
+ }
+ temp = new BaseItemDust(matInfo);
+ temp = new BaseItemNugget(matInfo);
+ temp = new BaseItemPlate(matInfo);
+ temp = new BaseItemPlateDouble(matInfo);
+ temp = new BaseItemBolt(matInfo);
+ temp = new BaseItemRod(matInfo);
+ temp = new BaseItemRodLong(matInfo);
+ temp = new BaseItemRing(matInfo);
+ temp = new BaseItemScrew(matInfo);
+ temp = new BaseItemRotor(matInfo);
+ temp = new BaseItemGear(matInfo);
+ temp = new BaseItemPlateDense(matInfo);
+ }
+ } else {
+ tempBlock = new BlockBaseModular(matInfo, BlockTypes.STANDARD);
+
+ temp = new BaseItemIngot(matInfo);
+ temp = new BaseItemDust(matInfo);
+ temp = new BaseItemNugget(matInfo);
+ temp = new BaseItemPlate(matInfo);
+ temp = new BaseItemPlateDouble(matInfo);
+ }
+ } else if (matInfo.getState() == MaterialState.LIQUID) {
+ if (generateEverything == true) {
+ tempBlock = new BlockBaseModular(matInfo, BlockTypes.STANDARD);
+ }
+ temp = new BaseItemIngot(matInfo);
+ temp = new BaseItemDust(matInfo);
+ temp = new BaseItemNugget(matInfo);
+ temp = new BaseItemPlate(matInfo);
+ temp = new BaseItemPlateDouble(matInfo);
+ } else if (matInfo.getState() == MaterialState.GAS) {
+ temp = new BaseItemDust(matInfo);
+ FluidUtils.generateGas(unlocalizedName, materialName, matInfo.getMeltingPointK(), C, true);
+ } else if (matInfo.getState() == MaterialState.PURE_GAS) {
+ FluidUtils.generateGas(unlocalizedName, materialName, matInfo.getMeltingPointK(), C, true);
+ return true;
+ } else if (matInfo.getState() == MaterialState.PURE_LIQUID) {
+ FluidUtils.generateFluidNoPrefix(unlocalizedName, materialName, matInfo.getMeltingPointK(), C);
+ return true;
+ } else if (matInfo.getState() == MaterialState.ORE) {
+
+ }
+
+ // Add A jillion Recipes - old code
+ new RecipeGen_AlloySmelter(matInfo);
+ new RecipeGen_Assembler(matInfo);
+ if (generateBlastSmelterRecipes) {
+ new RecipeGen_BlastSmelter(matInfo);
+ }
+ new RecipeGen_MetalRecipe(matInfo);
+ new RecipeGen_Extruder(matInfo);
+ new RecipeGen_Fluids(matInfo);
+ new RecipeGen_Plates(matInfo);
+ new RecipeGen_ShapedCrafting(matInfo);
+ new RecipeGen_MaterialProcessing(matInfo);
+
+ new RecipeGen_DustGeneration(matInfo);
+ new RecipeGen_Recycling(matInfo);
+ new RecipeGen_Plasma(matInfo);
+
+ return true;
+
+ } catch (final Throwable t) {
+
+ Logger.MATERIALS("" + matInfo.getLocalizedName() + " failed to generate.");
+ return false;
+ }
+ }
+
+ public static void generateDusts(final Material matInfo) {
+ final String unlocalizedName = matInfo.getUnlocalizedName();
+ final String materialName = matInfo.getLocalizedName();
+ final short[] C = matInfo.getRGBA();
+ final int Colour = Utils.rgbtoHexValue(C[0], C[1], C[2]);
+ int materialTier = matInfo.vTier; // TODO
+
+ if ((materialTier > 10) || (materialTier <= 0)) {
+ materialTier = 2;
+ }
+
+ int sRadiation = 0;
+ if (ItemUtils.isRadioactive(materialName) || (matInfo.vRadiationLevel != 0)) {
+ sRadiation = matInfo.vRadiationLevel;
+ }
+
+ if (matInfo.getState() == MaterialState.SOLID) {
+ temp = new BaseItemDust(matInfo);
+ }
+
+ // Add A jillion Recipes - old code
+ try {
+ RecipeGen_DustGeneration.addMixerRecipe_Standalone(matInfo);
+ new RecipeGen_Fluids(matInfo);
+ new RecipeGen_MaterialProcessing(matInfo);
+ } catch (Throwable t) {
+ Logger.MATERIALS("Failed to generate some recipes for " + materialName);
+ Logger.ERROR("Failed to generate some recipes for " + materialName);
+ t.printStackTrace();
+ }
+ // RecipeGen_Recycling.generateRecipes(matInfo);
+ }
+
+ public static void generateNuclearMaterial(final Material matInfo) {
+ generateNuclearMaterial(matInfo, true);
+ }
+
+ public static void generateNuclearDusts(final Material matInfo) {
+ generateNuclearDusts(matInfo, true);
+ }
+
+ public static void generateNuclearDusts(final Material matInfo, boolean generateDehydratorRecipe) {
+ generateNuclearMaterial(matInfo, false, true, false, false, true);
+ if (generateDehydratorRecipe && matInfo.getFluid() != null && matInfo.getDust(0) != null) {
+ CORE.RA.addDehydratorRecipe(
+ new ItemStack[] { CI.getNumberedCircuit(20) },
+ matInfo.getFluidStack(144),
+ null,
+ new ItemStack[] { matInfo.getDust(1), },
+ new int[] { 10000 },
+ 10 * (matInfo.vVoltageMultiplier / 5), // Time in ticks
+ matInfo.vVoltageMultiplier); // EU
+ } else {
+ Logger.INFO(
+ "Nuclear Dehydrator: Did not generate recipe for " + matInfo.getLocalizedName()
+ + " | Null Fluid? "
+ + (matInfo.getFluid() == null)
+ + " | Null Dust? "
+ + (matInfo.getDust(0) == null));
+ }
+ }
+
+ public static void generateNuclearMaterial(final Material matInfo, final boolean generatePlates) {
+ generateNuclearMaterial(matInfo, true, true, true, generatePlates, true);
+ }
+
+ public static void generateNuclearMaterial(final Material matInfo, final boolean generateBlock,
+ final boolean generateDusts, final boolean generateIngot, final boolean generatePlates,
+ final boolean disableOptionalRecipes) {
+ try {
+
+ if (generateBlock) {
+ tempBlock = new BlockBaseModular(matInfo, BlockTypes.STANDARD);
+ }
+ if (generateDusts) {
+ temp = new BaseItemDust(matInfo);
+ }
+ if (generateIngot) {
+ temp = new BaseItemIngot(matInfo);
+ temp = new BaseItemNugget(matInfo);
+ }
+
+ if (generatePlates) {
+ temp = new BaseItemPlate(matInfo);
+ temp = new BaseItemPlateDouble(matInfo);
+ new RecipeGen_Plates(matInfo);
+ new RecipeGen_Extruder(matInfo);
+ new RecipeGen_Assembler(matInfo);
+ }
+
+ if (!disableOptionalRecipes) {
+ new RecipeGen_ShapedCrafting(matInfo);
+ new RecipeGen_Fluids(matInfo);
+ new RecipeGen_MaterialProcessing(matInfo);
+ new RecipeGen_Recycling(matInfo);
+ }
+
+ new RecipeGen_MetalRecipe(matInfo);
+ new RecipeGen_DustGeneration(matInfo, disableOptionalRecipes);
+ new RecipeGen_Plasma(matInfo);
+
+ } catch (final Throwable t) {
+ Logger.MATERIALS("" + matInfo.getLocalizedName() + " failed to generate.");
+ }
+ }
+
+ public static void generateOreMaterial(final Material matInfo) {
+ generateOreMaterial(matInfo, true, true, true, matInfo.getRGBA());
+ }
+
+ @SuppressWarnings("unused")
+ public static void generateOreMaterial(final Material matInfo, boolean generateOre, boolean generateDust,
+ boolean generateSmallTinyDusts, short[] customRGB) {
+ try {
+
+ if (matInfo == null) {
+ Logger.DEBUG_MATERIALS("Invalid Material while constructing null material.");
+ return;
+ }
+
+ final String unlocalizedName = matInfo.getUnlocalizedName();
+ final String materialName = matInfo.getLocalizedName();
+ final short[] C = customRGB;
+ final Integer Colour = Utils.rgbtoHexValue(C[0], C[1], C[2]);
+
+ if (Colour == null) {
+ Logger.DEBUG_MATERIALS("Invalid Material while constructing " + materialName + ".");
+ return;
+ }
+
+ int sRadiation = 0;
+ if (matInfo.vRadiationLevel > 0) {
+ sRadiation = matInfo.vRadiationLevel;
+ }
+
+ if (generateOre) {
+ tempBlock = new BlockBaseOre(matInfo, BlockTypes.ORE);
+ }
+
+ DustState aState = new DustState(generateDust, generateSmallTinyDusts, generateSmallTinyDusts);
+
+ if (!aState.generatesDust()) {
+ if (aState.generatesSmallDust()) {
+ temp = new BaseItemComponent(matInfo, ComponentTypes.DUSTSMALL);
+ }
+ if (aState.generatesTinyDust()) {
+ temp = new BaseItemComponent(matInfo, ComponentTypes.DUSTTINY);
+ }
+ } else {
+ temp = new BaseItemDust(aState, matInfo);
+ }
+
+ temp = new BaseItemCrushedOre(matInfo);
+ temp = new BaseItemCentrifugedCrushedOre(matInfo);
+ temp = new BaseItemPurifiedCrushedOre(matInfo);
+ temp = new BaseItemImpureDust(matInfo);
+ temp = new BaseItemPurifiedDust(matInfo);
+ temp = new BaseItemRawOre(matInfo);
+
+ Logger.MATERIALS(
+ "Generated all ore components for " + matInfo.getLocalizedName()
+ + ", now generating processing recipes.");
+
+ if (matInfo == FLUORIDES.FLUORITE) {
+ new RecipeGen_Fluorite(matInfo);
+ } else {
+ new RecipeGen_Ore(matInfo);
+ }
+
+ } catch (final Throwable t) {
+ Logger.MATERIALS(
+ "[Error] " + (matInfo != null ? matInfo.getLocalizedName() : "Null Material") + " failed to generate.");
+ t.printStackTrace();
+ }
+ }
+
+ public static boolean generateOreMaterialWithAllExcessComponents(final Material matInfo) {
+ try {
+ if (matInfo == null) {
+ Logger.DEBUG_MATERIALS("Invalid Material while constructing null material.");
+ return false;
+ }
+ final short[] C = matInfo.getRGBA();
+ final Integer Colour = Utils.rgbtoHexValue(C[0], C[1], C[2]);
+
+ tempBlock = new BlockBaseOre(matInfo, BlockTypes.ORE);
+ tempBlock = new BlockBaseModular(matInfo, BlockTypes.STANDARD);
+ temp = new BaseItemIngot(matInfo);
+ temp = new BaseItemDust(matInfo);
+ temp = new BaseItemNugget(matInfo);
+ temp = new BaseItemPlate(matInfo);
+ temp = new BaseItemPlateDouble(matInfo);
+
+ temp = new BaseItemCrushedOre(matInfo);
+ temp = new BaseItemCentrifugedCrushedOre(matInfo);
+ temp = new BaseItemPurifiedCrushedOre(matInfo);
+ temp = new BaseItemImpureDust(matInfo);
+ temp = new BaseItemPurifiedDust(matInfo);
+ temp = new BaseItemRawOre(matInfo);
+
+ Logger.MATERIALS(
+ "Generated all ore & base components for " + matInfo.getLocalizedName()
+ + ", now generating processing recipes.");
+
+ new RecipeGen_Ore(matInfo, true);
+ new RecipeGen_AlloySmelter(matInfo);
+ new RecipeGen_Assembler(matInfo);
+ new RecipeGen_BlastSmelter(matInfo);
+ new RecipeGen_MetalRecipe(matInfo);
+ new RecipeGen_Extruder(matInfo);
+ new RecipeGen_Fluids(matInfo);
+ new RecipeGen_Plates(matInfo);
+ new RecipeGen_ShapedCrafting(matInfo);
+ new RecipeGen_MaterialProcessing(matInfo);
+ new RecipeGen_DustGeneration(matInfo);
+ new RecipeGen_Recycling(matInfo);
+ new RecipeGen_Plasma(matInfo);
+ return true;
+ } catch (final Throwable t) {
+ Logger.MATERIALS("" + matInfo.getLocalizedName() + " failed to generate.");
+ t.printStackTrace();
+ return false;
+ }
+ }
+}
diff --git a/src/main/java/gtPlusPlus/core/material/MaterialStack.java b/src/main/java/gtPlusPlus/core/material/MaterialStack.java
new file mode 100644
index 0000000000..37070a35ec
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/MaterialStack.java
@@ -0,0 +1,116 @@
+package gtPlusPlus.core.material;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+import net.minecraft.item.ItemStack;
+
+import gregtech.api.enums.OrePrefixes;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import gtPlusPlus.xmod.bartworks.BW_Utils;
+
+public class MaterialStack {
+
+ private final transient int[] vAmount;
+ private final Material stackMaterial;
+ private final double vPercentageToUse;
+
+ public MaterialStack(final Material inputs, final double partOutOf100) {
+ this.stackMaterial = inputs;
+ // Logger.INFO("Tried getting MaterialStack for "+inputs.getLocalizedName());
+ this.vPercentageToUse = partOutOf100;
+ this.vAmount = this.math(partOutOf100);
+ }
+
+ private int[] math(final double val) {
+ double i;
+ // Cast to a BigDecimal to round it.
+ final BigDecimal bd = new BigDecimal(val).setScale(2, RoundingMode.HALF_EVEN);
+ i = bd.doubleValue();
+ // Split the string into xx.xx
+ final String[] arr = String.valueOf(i)
+ .split("\\.");
+ final int[] intArr = new int[2];
+ intArr[0] = Integer.parseInt(arr[0]);
+ intArr[1] = Integer.parseInt(arr[1]);
+ return intArr;
+ }
+
+ public ItemStack getValidStack() {
+ if (this.stackMaterial.getDust(1) == null) {
+ // if (this.stackMaterial.getCell(1) == null){
+ return null;
+ // }
+ // return this.stackMaterial.getCell(this.vAmount[0]);
+ }
+ return this.stackMaterial.getDust(this.vAmount[0]);
+ }
+
+ public ItemStack getDustStack() {
+ return this.stackMaterial.getDust(this.vAmount[0]);
+ }
+
+ public ItemStack getDustStack(final int amount) {
+ return this.stackMaterial.getDust(amount);
+ }
+
+ public ItemStack getUnificatedDustStack(final int amount) {
+ if (this.stackMaterial.werkstoffID != 0) {
+ ItemStack stack = BW_Utils
+ .getCorrespondingItemStack(OrePrefixes.dust, this.stackMaterial.werkstoffID, amount);
+ if (stack != null) {
+ return stack;
+ }
+ }
+ return getDustStack(amount);
+ }
+
+ public Material getStackMaterial() {
+ if (this.stackMaterial == null) {
+ Logger.MATERIALS("Tried getStackMaterial, got an invalid material.");
+ Logger.MATERIALS(ReflectionUtils.getMethodName(0));
+ Logger.MATERIALS(ReflectionUtils.getMethodName(1));
+ Logger.MATERIALS(ReflectionUtils.getMethodName(2));
+ Logger.MATERIALS(ReflectionUtils.getMethodName(3));
+ return null;
+ }
+ return this.stackMaterial;
+ }
+
+ public double getvPercentageToUse() {
+ return this.vPercentageToUse;
+ }
+
+ public long[] getSmallestStackSizes() {
+ return this.stackMaterial.getSmallestRatio(this.stackMaterial.getComposites());
+ }
+
+ public int getPartsPerOneHundred() {
+ if (this.vAmount != null) {
+ if ((this.vAmount[0] >= 1) && (this.vAmount[0] <= 100)) {
+ return this.vAmount[0];
+ }
+ }
+ return 100;
+ }
+
+ public ItemStack getLeftOverStacksFromDecimalValue() {
+ final int temp = this.vAmount[1];
+ int getCount;
+ if ((temp >= 25) && (temp <= 99)) {
+ getCount = temp / 25;
+ return this.stackMaterial.getSmallDust(getCount);
+ } else if ((temp >= 11) && (temp <= 24)) {
+ getCount = temp / 11;
+ return this.stackMaterial.getTinyDust(getCount);
+ } else {
+ return null;
+ }
+ }
+
+ public ItemStack[] getValidItemStacks() {
+ return ItemUtils.validItemsForOreDict(this.stackMaterial.getUnlocalizedName());
+ }
+}
diff --git a/src/main/java/gtPlusPlus/core/material/NONMATERIAL.java b/src/main/java/gtPlusPlus/core/material/NONMATERIAL.java
new file mode 100644
index 0000000000..5e084b84bf
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/NONMATERIAL.java
@@ -0,0 +1,42 @@
+package gtPlusPlus.core.material;
+
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.TextureSet;
+import gtPlusPlus.core.util.minecraft.MaterialUtils;
+
+public class NONMATERIAL {
+
+ // Soul Sand
+ public static final Material SOULSAND = MaterialUtils.generateMaterialFromGtENUM(Materials.SoulSand);
+
+ // Redstone
+ public static final Material REDSTONE = MaterialUtils.generateMaterialFromGtENUM(Materials.Redstone);
+
+ // Glowstone Dust
+ public static final Material GLOWSTONE = MaterialUtils.generateMaterialFromGtENUM(Materials.Glowstone);
+
+ // Enderpearl
+ public static final Material ENDERPEARL = MaterialUtils.generateMaterialFromGtENUM(Materials.EnderPearl);
+
+ // Raw Flesh
+ public static final Material MEAT = MaterialUtils.generateMaterialFromGtENUM(Materials.MeatRaw);
+
+ // Clay
+ public static final Material CLAY = MaterialUtils.generateMaterialFromGtENUM(Materials.Clay);
+
+ // Wrought Iron
+ public static final Material WROUGHT_IRON = MaterialUtils.generateMaterialFromGtENUM(Materials.WroughtIron);
+
+ // PTFE
+ public static final Material PTFE = MaterialUtils
+ .generateMaterialFromGtENUM(MaterialUtils.getMaterial("Polytetrafluoroethylene", "Plastic"));
+
+ // Plastic
+ public static final Material PLASTIC = MaterialUtils
+ .generateMaterialFromGtENUM(MaterialUtils.getMaterial("Plastic", "Rubber"));
+
+ static {
+ MEAT.setTextureSet(TextureSet.SET_ROUGH);
+ CLAY.setTextureSet(TextureSet.SET_ROUGH);
+ }
+}
diff --git a/src/main/java/gtPlusPlus/core/material/ORES.java b/src/main/java/gtPlusPlus/core/material/ORES.java
new file mode 100644
index 0000000000..5079639e38
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/ORES.java
@@ -0,0 +1,701 @@
+package gtPlusPlus.core.material;
+
+import gregtech.api.enums.TextureSet;
+import gtPlusPlus.core.client.CustomTextureSet.TextureSets;
+import gtPlusPlus.core.material.state.MaterialState;
+
+public final class ORES {
+
+ public static final Material AGARDITE_CD = new Material(
+ "Agardite (Cd)", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_METALLIC, // Texture Set
+ new short[] { 170, 188, 33, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // (CdCa)Cu7(AsO2)4(O2H)5·3H2O
+ new MaterialStack(ELEMENT.getInstance().CADMIUM, 1), new MaterialStack(ELEMENT.getInstance().CALCIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().COPPER, 7), new MaterialStack(ELEMENT.getInstance().ARSENIC, 4),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 21),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 11) });
+
+ public static final Material AGARDITE_LA = new Material(
+ "Agardite (La)", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_FINE, // Texture Set
+ new short[] { 206, 232, 9, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // (LaCa)Cu5(AsO6)2(OH)4·3H2O
+ new MaterialStack(ELEMENT.getInstance().LANTHANUM, 1), new MaterialStack(ELEMENT.getInstance().CALCIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().COPPER, 5), new MaterialStack(ELEMENT.getInstance().ARSENIC, 2),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 19),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 10) });
+
+ public static final Material AGARDITE_ND = new Material(
+ "Agardite (Nd)", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_METALLIC, // Texture Set
+ new short[] { 225, 244, 78, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // (NdCa)Cu6(As3O3)2(O2H)6·3H2O
+ new MaterialStack(ELEMENT.getInstance().NEODYMIUM, 1), new MaterialStack(ELEMENT.getInstance().CALCIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().COPPER, 6), new MaterialStack(ELEMENT.getInstance().ARSENIC, 6),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 21),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 12) });
+
+ public static final Material AGARDITE_Y = new Material(
+ "Agardite (Y)", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_METALLIC, // Texture Set
+ new short[] { 210, 232, 44, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // (YCa)Cu5(As2O4)3(OH)6·3H2O
+ new MaterialStack(ELEMENT.getInstance().YTTRIUM, 1), new MaterialStack(ELEMENT.getInstance().CALCIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().COPPER, 5), new MaterialStack(ELEMENT.getInstance().ARSENIC, 6),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 21),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 12) });
+
+ // Alburnite
+ // Ag8GeTe2S4
+ public static final Material ALBURNITE = new Material(
+ "Alburnite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_METALLIC, // Texture Set
+ new short[] { 16, 5, 105, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ 0, // Radiation
+ new MaterialStack[] { // Na3AlF6
+ new MaterialStack(ELEMENT.getInstance().GOLD, 8), new MaterialStack(ELEMENT.getInstance().GERMANIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().TELLURIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().SULFUR, 4) });
+
+ public static final Material CERITE = new Material(
+ "Cerite", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.REFINED.get(), // Texture Set
+ new short[] { 68, 13, 0, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // (Ce,La,Ca)9(Mg,Fe+3)(SiO4)6(SiO3OH)(OH)3
+ new MaterialStack(ELEMENT.getInstance().CERIUM, 9), new MaterialStack(ELEMENT.getInstance().LANTHANUM, 9),
+ new MaterialStack(ELEMENT.getInstance().CALCIUM, 9), new MaterialStack(ELEMENT.getInstance().MAGNESIUM, 3),
+ new MaterialStack(ELEMENT.getInstance().IRON, 3), new MaterialStack(ELEMENT.getInstance().SILICON, 7),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 20),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 4) });
+
+ // Comancheite
+ // Hg55N24(NH2,OH)4(Cl,Br)34
+ public static final Material COMANCHEITE = new Material(
+ "Comancheite", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.REFINED.get(), // Texture Set
+ new short[] { 65, 205, 105, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ 0, // Radiation
+ new MaterialStack[] { // Na3AlF6
+ new MaterialStack(ELEMENT.getInstance().MERCURY, 54 / 4),
+ new MaterialStack(ELEMENT.getInstance().NITROGEN, 28 / 4),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 12 / 4),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 8 / 4),
+ new MaterialStack(ELEMENT.getInstance().CHLORINE, 34 / 4),
+ new MaterialStack(ELEMENT.getInstance().BROMINE, 34 / 4) });
+
+ public static final Material CROCROITE = new Material(
+ "Crocoite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_GEM_VERTICAL, // Texture Set
+ new short[] { 255, 143, 84, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().LEAD, 2),
+ new MaterialStack(ELEMENT.getInstance().CHROMIUM, 2), new MaterialStack(ELEMENT.getInstance().OXYGEN, 3),
+ new MaterialStack(ELEMENT.getInstance().CAESIUM, 1), });
+
+ public static final Material CRYOLITE = new Material(
+ "Cryolite (F)", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_SHINY, // Texture Set
+ new short[] { 205, 205, 255, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // Na3AlF6
+ new MaterialStack(ELEMENT.getInstance().SODIUM, 3), new MaterialStack(ELEMENT.getInstance().ALUMINIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 6) });
+
+ // Demicheleite-(Br)
+ // BiSBr
+ public static final Material DEMICHELEITE_BR = new Material(
+ "Demicheleite (Br)", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_SHINY, // Texture Set
+ new short[] { 165, 75, 75, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // Na3AlF6
+ new MaterialStack(ELEMENT.getInstance().BISMUTH, 13), new MaterialStack(ELEMENT.getInstance().SULFUR, 11),
+ new MaterialStack(ELEMENT.getInstance().BROMINE, 1) });
+
+ public static final Material FLORENCITE = new Material(
+ "Florencite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_METALLIC, // Texture Set
+ new short[] { 249, 249, 124, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // SmAl3(PO4)2(OH)6
+ new MaterialStack(ELEMENT.getInstance().SAMARIUM, 1), new MaterialStack(ELEMENT.getInstance().ALUMINIUM, 3),
+ new MaterialStack(ELEMENT.getInstance().PHOSPHORUS, 1), new MaterialStack(ELEMENT.getInstance().OXYGEN, 10),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 6) });
+
+ public static final Material FLUORCAPHITE = new Material(
+ "Fluorcaphite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_FINE, // Texture Set
+ new short[] { 255, 255, 30, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // (Ca,Sr,Ce,Na)5(PO4)3F
+ new MaterialStack(ELEMENT.getInstance().CALCIUM, 5), new MaterialStack(MISC_MATERIALS.STRONTIUM_OXIDE, 5),
+ new MaterialStack(ELEMENT.getInstance().CERIUM, 5), new MaterialStack(ELEMENT.getInstance().SODIUM, 5),
+ new MaterialStack(ELEMENT.getInstance().PHOSPHORUS, 3), new MaterialStack(ELEMENT.getInstance().OXYGEN, 12),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 6), });
+
+ // Gadolinite_Ce
+ public static final Material GADOLINITE_CE = new Material(
+ "Gadolinite (Ce)", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.REFINED.get(), // Texture Set
+ new short[] { 15, 159, 59, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().CERIUM, 4),
+ new MaterialStack(ELEMENT.getInstance().ERBIUM, 2), new MaterialStack(ELEMENT.getInstance().LANTHANUM, 2),
+ new MaterialStack(ELEMENT.getInstance().NEODYMIUM, 2), new MaterialStack(ELEMENT.getInstance().YTTRIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().GADOLINIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().BERYLLIUM, 2), new MaterialStack(ELEMENT.getInstance().SILICON, 7),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 14), });
+
+ // Gadolinite_Y
+ public static final Material GADOLINITE_Y = new Material(
+ "Gadolinite (Y)", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.REFINED.get(), // Texture Set
+ new short[] { 35, 189, 99, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().CERIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().ERBIUM, 2), new MaterialStack(ELEMENT.getInstance().LANTHANUM, 2),
+ new MaterialStack(ELEMENT.getInstance().NEODYMIUM, 2), new MaterialStack(ELEMENT.getInstance().YTTRIUM, 4),
+ new MaterialStack(ELEMENT.getInstance().GADOLINIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().BERYLLIUM, 3), new MaterialStack(ELEMENT.getInstance().SILICON, 4),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 9), });
+
+ public static final Material GEIKIELITE = new Material(
+ "Geikielite", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.GEM_A.get(), // Texture Set
+ new short[] { 187, 193, 204, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().MAGNESIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().TITANIUM, 1), new MaterialStack(ELEMENT.getInstance().OXYGEN, 3) });
+
+ public static final Material GREENOCKITE = new Material(
+ "Greenockite", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.GEM_A.get(), // Texture Set
+ new short[] { 110, 193, 25, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().CADMIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().SULFUR, 1), });
+
+ public static final Material HIBONITE = new Material(
+ "Hibonite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_METALLIC, // Texture Set
+ new short[] { 58, 31, 0, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // ((Ca,Ce)(Al,Ti,Mg)12O19)
+ new MaterialStack(ELEMENT.getInstance().CALCIUM, 1), new MaterialStack(ELEMENT.getInstance().CERIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().ALUMINIUM, 12),
+ new MaterialStack(ELEMENT.getInstance().TITANIUM, 12),
+ new MaterialStack(ELEMENT.getInstance().MAGNESIUM, 12),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 19), });
+
+ // Honeaite
+ // Au3TlTe2
+ public static final Material HONEAITE = new Material(
+ "Honeaite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_FINE, // Texture Set
+ new short[] { 165, 165, 5, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ 0, // Radiation
+ new MaterialStack[] { // Na3AlF6
+ new MaterialStack(ELEMENT.getInstance().GOLD, 3), new MaterialStack(ELEMENT.getInstance().THALLIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().TELLURIUM, 2) });
+
+ // Irarsite
+ // (Ir,Ru,Rh,Pt)AsS
+ public static final Material IRARSITE = new Material(
+ "Irarsite", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.ENRICHED.get(), // Texture Set
+ new short[] { 125, 105, 105, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ 0, // Radiation
+ new MaterialStack[] { // Na3AlF6
+ new MaterialStack(ELEMENT.getInstance().IRIDIUM, 1), new MaterialStack(ELEMENT.getInstance().RUTHENIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().RHODIUM, 1), new MaterialStack(ELEMENT.getInstance().PLATINUM, 1),
+ new MaterialStack(ELEMENT.getInstance().ARSENIC, 1), new MaterialStack(ELEMENT.getInstance().SULFUR, 1),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 1) });
+
+ // Kashinite
+ // (Ir,Rh)2S3
+ public static final Material KASHINITE = new Material(
+ "Kashinite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_SHINY, // Texture Set
+ new short[] { 75, 105, 75, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ 0, // Radiation
+ new MaterialStack[] { // Na3AlF6
+ new MaterialStack(ELEMENT.getInstance().IRIDIUM, 2), new MaterialStack(ELEMENT.getInstance().RHODIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().SULFUR, 3) });
+
+ // Tl(Cl,Br)
+ public static final Material LAFOSSAITE = new Material(
+ "Lafossaite", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.REFINED.get(), // Texture Set
+ new short[] { 165, 105, 205, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // Na3AlF6
+ new MaterialStack(ELEMENT.getInstance().CHLORINE, 1), new MaterialStack(ELEMENT.getInstance().BROMINE, 1),
+ new MaterialStack(ELEMENT.getInstance().THALLIUM, 1) });
+
+ public static final Material LANTHANITE_CE = new Material(
+ "Lanthanite (Ce)", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_METALLIC, // Texture Set
+ new short[] { 186, 113, 179, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // (Ce)2(CO3)3·8(H2O)
+ new MaterialStack(ELEMENT.getInstance().CERIUM, 2), new MaterialStack(ELEMENT.getInstance().OXYGEN, 3),
+ new MaterialStack(ELEMENT.getInstance().CALCIUM, 3), new MaterialStack(ELEMENT.getInstance().HYDROGEN, 2),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 1), });
+
+ public static final Material LANTHANITE_LA = new Material(
+ "Lanthanite (La)", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.REFINED.get(), // Texture Set
+ new short[] { 219, 160, 214, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // (La)2(CO3)3·8(H2O)
+ new MaterialStack(ELEMENT.getInstance().LANTHANUM, 2), new MaterialStack(ELEMENT.getInstance().OXYGEN, 3),
+ new MaterialStack(ELEMENT.getInstance().CALCIUM, 3), new MaterialStack(ELEMENT.getInstance().HYDROGEN, 2),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 1), });
+
+ public static final Material LANTHANITE_ND = new Material(
+ "Lanthanite (Nd)", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_METALLIC, // Texture Set
+ new short[] { 153, 76, 145, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // (Nd)2(CO3)3·8(H2O)
+ new MaterialStack(ELEMENT.getInstance().NEODYMIUM, 2), new MaterialStack(ELEMENT.getInstance().OXYGEN, 3),
+ new MaterialStack(ELEMENT.getInstance().CALCIUM, 3), new MaterialStack(ELEMENT.getInstance().HYDROGEN, 2),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 1), });
+
+ // Iodine Source
+ public static final Material LAUTARITE = new Material(
+ "Lautarite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_FINE, // Texture Set
+ new short[] { 165, 105, 205, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // Na3AlF6
+ new MaterialStack(ELEMENT.getInstance().CALCIUM, 1), new MaterialStack(ELEMENT.getInstance().IODINE, 2),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 6) });
+
+ public static final Material LEPERSONNITE = new Material(
+ "Lepersonnite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_EMERALD, // Texture Set
+ new short[] { 175, 175, 20, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().CALCIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().YTTERBIUM, 3),
+ new MaterialStack(ELEMENT.getInstance().GADOLINIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().DYSPROSIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().URANIUM235, 2), new MaterialStack(ELEMENT.getInstance().OXYGEN, 29),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 24) });
+
+ // Miessiite
+ // Pd11Te2Se2
+ public static final Material MIESSIITE = new Material(
+ "Miessiite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_FINE, // Texture Set
+ new short[] { 75, 75, 75, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ 0, // Radiation
+ new MaterialStack[] { // Na3AlF6
+ new MaterialStack(ELEMENT.getInstance().PALLADIUM, 11),
+ new MaterialStack(ELEMENT.getInstance().TELLURIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().SELENIUM, 2) });
+
+ public static final Material NICHROMITE = new Material(
+ "Nichromite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_METALLIC, // Texture Set
+ new short[] { 22, 19, 19, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().NICKEL, 1),
+ new MaterialStack(ELEMENT.getInstance().COBALT, 1), new MaterialStack(ELEMENT.getInstance().IRON, 3),
+ new MaterialStack(ELEMENT.getInstance().ALUMINIUM, 2), new MaterialStack(ELEMENT.getInstance().CHROMIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 8) });
+
+ // Perroudite
+ // Hg5Ag4S5(I,Br)2Cl2
+ public static final Material PERROUDITE = new Material(
+ "Perroudite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_METALLIC, // Texture Set
+ new short[] { 77, 165, 174, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ 0, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().SULFUR, 5),
+ new MaterialStack(ELEMENT.getInstance().SILVER, 4), new MaterialStack(ELEMENT.getInstance().IODINE, 2),
+ new MaterialStack(ELEMENT.getInstance().MERCURY, 5), new MaterialStack(ELEMENT.getInstance().BROMINE, 2),
+ new MaterialStack(ELEMENT.getInstance().CHLORINE, 2) });
+
+ public static final Material POLYCRASE = new Material(
+ "Polycrase", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_ROUGH, // Texture Set
+ new short[] { 51, 0, 11, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().YTTRIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().CALCIUM, 1), new MaterialStack(ELEMENT.getInstance().CERIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().URANIUM235, 1), new MaterialStack(ELEMENT.getInstance().THORIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().TITANIUM, 2), new MaterialStack(ELEMENT.getInstance().NIOBIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().TANTALUM, 2), new MaterialStack(ELEMENT.getInstance().OXYGEN, 6) });
+
+ // Radiobarite
+ // Radium, Barium, Barite?
+ public static final Material RADIOBARITE = new Material(
+ "Barite (Rd)", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_FLINT, // Texture Set
+ new short[] { 205, 205, 205, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ 0, // Radiation
+ new MaterialStack[] { // Na3AlF6
+ new MaterialStack(ELEMENT.getInstance().BARIUM, 32), new MaterialStack(ELEMENT.getInstance().RADIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().SULFUR, 16), new MaterialStack(ELEMENT.getInstance().OXYGEN, 15) });
+
+ // Samarskite_Y
+ public static final Material SAMARSKITE_Y = new Material(
+ "Samarskite (Y)", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.ENRICHED.get(), // Texture Set
+ new short[] { 65, 163, 164, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().YTTRIUM, 2), // Y not YT/YB
+ new MaterialStack(ELEMENT.getInstance().IRON, 10), new MaterialStack(ELEMENT.getInstance().URANIUM235, 2),
+ new MaterialStack(ELEMENT.getInstance().THORIUM, 3), new MaterialStack(ELEMENT.getInstance().NIOBIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().TANTALUM, 3) });
+
+ // Samarskite_YB
+ public static final Material SAMARSKITE_YB = new Material(
+ "Samarskite (Yb)", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.ENRICHED.get(), // Texture Set
+ new short[] { 95, 193, 194, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().YTTERBIUM, 2), // Y not YT/YB
+ new MaterialStack(ELEMENT.getInstance().IRON, 9), new MaterialStack(ELEMENT.getInstance().URANIUM235, 3),
+ new MaterialStack(ELEMENT.getInstance().THORIUM, 2), new MaterialStack(ELEMENT.getInstance().NIOBIUM, 3),
+ new MaterialStack(ELEMENT.getInstance().TANTALUM, 2) });
+
+ public static final Material TITANITE = new Material(
+ "Titanite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_METALLIC, // Texture Set
+ new short[] { 184, 198, 105, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().CALCIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().TITANIUM, 2), new MaterialStack(ELEMENT.getInstance().SILICON, 2),
+ new MaterialStack(ELEMENT.getInstance().THORIUM, 1), new MaterialStack(ELEMENT.getInstance().OXYGEN, 10) });
+
+ public static final Material XENOTIME = new Material(
+ "Xenotime", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_OPAL, // Texture Set
+ new short[] { 235, 89, 199, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().YTTRIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().YTTERBIUM, 2), new MaterialStack(ELEMENT.getInstance().ERBIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().EUROPIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().PHOSPHORUS, 2),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 8) });
+
+ public static final Material YTTRIAITE = new Material( // TODO
+ "Yttriaite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_METALLIC, // Texture Set
+ new short[] { 255, 143, 84, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().YTTRIUM, 1), // Y not YT/YB
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 3), new MaterialStack(ELEMENT.getInstance().IRON, 4),
+ new MaterialStack(ELEMENT.getInstance().TIN, 1), new MaterialStack(ELEMENT.getInstance().NITROGEN, 2) });
+
+ public static final Material YTTRIALITE = new Material(
+ "Yttrialite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_RUBY, // Texture Set
+ new short[] { 35, 189, 99, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().YTTRIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().THORIUM, 2), new MaterialStack(ELEMENT.getInstance().SILICON, 2),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 7), });
+
+ public static final Material YTTROCERITE = new Material(
+ "Yttrocerite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_DIAMOND, // Texture Set
+ new short[] { 35, 19, 199, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().CERIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().CALCIUM, 1), new MaterialStack(ELEMENT.getInstance().FLUORINE, 5),
+ new MaterialStack(ELEMENT.getInstance().YTTRIUM, 1), });
+
+ public static final Material ZIMBABWEITE = new Material(
+ "Zimbabweite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_FINE, // Texture Set
+ new short[] { 193, 187, 131, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().CALCIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().POTASSIUM, 2), new MaterialStack(ELEMENT.getInstance().LEAD, 1),
+ new MaterialStack(ELEMENT.getInstance().ARSENIC, 4), new MaterialStack(ELEMENT.getInstance().NIOBIUM, 4),
+ new MaterialStack(ELEMENT.getInstance().TANTALUM, 4), new MaterialStack(ELEMENT.getInstance().TITANIUM, 4),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 18) });
+
+ public static final Material ZIRCON = new Material(
+ "Zircon", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.GEM_A.get(), // Texture Set
+ new short[] { 195, 19, 19, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().ZIRCONIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().SILICON, 1), new MaterialStack(ELEMENT.getInstance().OXYGEN, 4), });
+
+ public static final Material ZIRCONILITE = new Material(
+ "Zirconolite", // Material Name
+ MaterialState.ORE, // State
+ TextureSet.SET_FINE, // Texture Set
+ new short[] { 45, 26, 0, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().CALCIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().ZIRCONIUM, 2), new MaterialStack(ELEMENT.getInstance().TITANIUM, 4),
+ new MaterialStack(ELEMENT.getInstance().CERIUM, 1), new MaterialStack(ELEMENT.getInstance().OXYGEN, 14) });
+
+ public static final Material ZIRCOPHYLLITE = new Material(
+ "Zircophyllite", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.REFINED.get(), // Texture Set
+ new short[] { 30, 0, 6, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().POTASSIUM, 3),
+ new MaterialStack(ELEMENT.getInstance().SODIUM, 3), new MaterialStack(ELEMENT.getInstance().MANGANESE, 7),
+ new MaterialStack(ELEMENT.getInstance().IRON, 7), new MaterialStack(ELEMENT.getInstance().ZIRCONIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().TITANIUM, 2), new MaterialStack(ELEMENT.getInstance().NIOBIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().SILICON, 8), new MaterialStack(ELEMENT.getInstance().OXYGEN, 13),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 7), });
+
+ public static final Material ZIRKELITE = new Material(
+ "Zirkelite", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.GEM_A.get(), // Texture Set
+ new short[] { 229, 208, 48, 0 }, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ -1, // Radiation
+ new MaterialStack[] { // (Ca,Th,Ce)Zr(Ti,Nb)2O7
+ new MaterialStack(ELEMENT.getInstance().CALCIUM, 1), new MaterialStack(ELEMENT.getInstance().THORIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().CERIUM, 1), new MaterialStack(ELEMENT.getInstance().ZIRCONIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().TITANIUM, 2), new MaterialStack(ELEMENT.getInstance().NIOBIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().OXYGEN, 7) });
+
+ public static final Material DEEP_EARTH_REACTOR_FUEL_DEPOSIT = new Material(
+ "Radioactive Mineral Mix", // Material Name
+ MaterialState.ORE, // State
+ TextureSets.NUCLEAR.get(), // Texture Set
+ null, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ 4, // Radiation
+ new MaterialStack[] { // Na3AlF6
+ new MaterialStack(ELEMENT.getInstance().RADON, 2), new MaterialStack(ELEMENT.getInstance().RADIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().URANIUM235, 1),
+ new MaterialStack(ELEMENT.getInstance().URANIUM238, 10),
+ new MaterialStack(ELEMENT.getInstance().THORIUM, 25),
+ new MaterialStack(ELEMENT.getInstance().THORIUM232, 4), new MaterialStack(FLUORCAPHITE, 6),
+ new MaterialStack(SAMARSKITE_Y, 8), new MaterialStack(TITANITE, 4) });
+}
diff --git a/src/main/java/gtPlusPlus/core/material/Particle.java b/src/main/java/gtPlusPlus/core/material/Particle.java
new file mode 100644
index 0000000000..b5cd30184e
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/Particle.java
@@ -0,0 +1,154 @@
+package gtPlusPlus.core.material;
+
+import net.minecraft.item.ItemStack;
+
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.core.item.ModItems;
+import gtPlusPlus.core.item.chemistry.IonParticles;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+
+public class Particle {
+
+ public static final Particle GRAVITON;
+
+ public static final Particle UP;
+ public static final Particle DOWN;
+ public static final Particle CHARM;
+ public static final Particle STRANGE;
+ public static final Particle TOP;
+ public static final Particle BOTTOM;
+
+ public static final Particle ELECTRON;
+ public static final Particle ELECTRON_NEUTRINO;
+ public static final Particle MUON;
+ public static final Particle MUON_NEUTRINO;
+ public static final Particle TAU;
+ public static final Particle TAU_NEUTRINO;
+
+ public static final Particle GLUON;
+ public static final Particle PHOTON;
+ public static final Particle Z_BOSON;
+ public static final Particle W_BOSON;
+ public static final Particle HIGGS_BOSON;
+
+ public static final Particle PROTON;
+ public static final Particle NEUTRON;
+ public static final Particle LAMBDA;
+ public static final Particle OMEGA;
+
+ public static final Particle PION;
+ public static final Particle ETA_MESON;
+
+ public static final Particle UNKNOWN;
+
+ public static final AutoMap<Particle> aMap = new AutoMap<>();
+
+ static {
+
+ /*
+ * Standard Model of Physics
+ */
+
+ // I exist, because I must.
+ GRAVITON = new Particle(ElementaryGroup.BOSON, "Graviton");
+
+ // Quarks
+ UP = new Particle(ElementaryGroup.QUARK, "Up");
+ DOWN = new Particle(ElementaryGroup.QUARK, "Down");
+ CHARM = new Particle(ElementaryGroup.QUARK, "Charm");
+ STRANGE = new Particle(ElementaryGroup.QUARK, "Strange");
+ TOP = new Particle(ElementaryGroup.QUARK, "Top");
+ BOTTOM = new Particle(ElementaryGroup.QUARK, "Bottom");
+
+ // Leptons
+ ELECTRON = new Particle(ElementaryGroup.LEPTON, "Electron");
+ MUON = new Particle(ElementaryGroup.LEPTON, "Muon");
+ TAU = new Particle(ElementaryGroup.LEPTON, "Tau");
+ ELECTRON_NEUTRINO = new Particle(ElementaryGroup.LEPTON, "Electron Neutrino");
+ MUON_NEUTRINO = new Particle(ElementaryGroup.LEPTON, "Muon Neutrino");
+ TAU_NEUTRINO = new Particle(ElementaryGroup.LEPTON, "Tau Neutrino");
+
+ // Bosons
+ GLUON = new Particle(ElementaryGroup.BOSON, "Gluon");
+ PHOTON = new Particle(ElementaryGroup.BOSON, "Photon");
+ Z_BOSON = new Particle(ElementaryGroup.BOSON, "Z Boson");
+ W_BOSON = new Particle(ElementaryGroup.BOSON, "W Boson");
+ HIGGS_BOSON = new Particle(ElementaryGroup.BOSON, "Higgs Boson");
+
+ /*
+ * Composite Particles
+ */
+
+ // Baryons
+ PROTON = new Particle(ElementaryGroup.BARYON, "Proton", new Particle[] { UP, UP, DOWN });
+ NEUTRON = new Particle(ElementaryGroup.BARYON, "Neutron", new Particle[] { UP, DOWN, DOWN });
+ LAMBDA = new Particle(ElementaryGroup.BARYON, "Lambda", new Particle[] { UP, DOWN, STRANGE });
+ OMEGA = new Particle(ElementaryGroup.BARYON, "Omega", new Particle[] { STRANGE, STRANGE, STRANGE });
+
+ // Mesons
+ PION = new Particle(ElementaryGroup.MESON, "Pion", new Particle[] { MUON, MUON_NEUTRINO });
+ ETA_MESON = new Particle(ElementaryGroup.MESON, "ETA Meson", new Particle[] { PION, PION, PION });
+
+ // Wildcard
+ UNKNOWN = new Particle(ElementaryGroup.UNKNOWN, "Unknown");
+ }
+
+ public static enum ElementaryGroup {
+ QUARK,
+ LEPTON,
+ BOSON,
+ BARYON,
+ MESON,
+ UNKNOWN;
+ }
+
+ public final ElementaryGroup mParticleType;
+ public final String mParticleName;
+ public final Particle[] mComposition;
+
+ public Particle(ElementaryGroup aParticleType, String aParticleName) {
+ this(aParticleType, aParticleName, null);
+ }
+
+ public Particle(ElementaryGroup aParticleType, String aParticleName, Particle[] aComposition) {
+ mParticleType = aParticleType;
+ mParticleName = aParticleName;
+ mComposition = aComposition == null ? new Particle[] { this } : aComposition;
+ aMap.put(this);
+ }
+
+ public static ItemStack getIon(String aElementName, int aCharge) {
+ for (String g : gtPlusPlus.core.item.chemistry.IonParticles.NameToMetaMap.keySet()) {
+ if (g.toLowerCase()
+ .equals(Utils.sanitizeString(aElementName.toLowerCase()))) {
+ Integer meta = gtPlusPlus.core.item.chemistry.IonParticles.NameToMetaMap
+ .get(Utils.sanitizeString(aElementName.toLowerCase()));
+ if (meta == null) {
+ meta = 0;
+ }
+ ItemStack aIon = ItemUtils.simpleMetaStack(ModItems.itemIonParticleBase, meta, 1);
+ if (aCharge != 0) {
+ IonParticles.setChargeState(aIon, aCharge);
+ }
+ return aIon;
+ }
+ }
+ return null;
+ }
+
+ public static ItemStack getBaseParticle(Particle aParticle) {
+ String aPartName = Utils.sanitizeString(aParticle.mParticleName.toLowerCase());
+ for (String g : gtPlusPlus.core.item.chemistry.StandardBaseParticles.NameToMetaMap.keySet()) {
+ if (g.toLowerCase()
+ .equals(aPartName)) {
+ Integer meta = gtPlusPlus.core.item.chemistry.StandardBaseParticles.NameToMetaMap.get(aPartName);
+ if (meta == null) {
+ meta = 0;
+ }
+ return ItemUtils.simpleMetaStack(ModItems.itemStandarParticleBase, meta, 1);
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/gtPlusPlus/core/material/nuclear/FLUORIDES.java b/src/main/java/gtPlusPlus/core/material/nuclear/FLUORIDES.java
new file mode 100644
index 0000000000..5a50a604da
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/nuclear/FLUORIDES.java
@@ -0,0 +1,244 @@
+package gtPlusPlus.core.material.nuclear;
+
+import gregtech.api.enums.Materials;
+import gtPlusPlus.core.material.ELEMENT;
+import gtPlusPlus.core.material.MISC_MATERIALS;
+import gtPlusPlus.core.material.Material;
+import gtPlusPlus.core.material.MaterialStack;
+import gtPlusPlus.core.material.state.MaterialState;
+
+public class FLUORIDES {
+
+ public static final Material FLUORITE = new Material(
+ "Fluorite (F)", // Material Name
+ MaterialState.ORE, // State
+ null, // Material Colour
+ Materials.Fluorine.mMeltingPoint, // Melting Point in C
+ Materials.Fluorine.mBlastFurnaceTemp, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ false, // Generate cells
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().CALCIUM, 16),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 32), new MaterialStack(ELEMENT.getInstance().IRON, 4),
+ new MaterialStack(ELEMENT.getInstance().CARBON, 2) });
+
+ // ThF4
+ public static final Material THORIUM_TETRAFLUORIDE = new Material(
+ "Thorium Tetrafluoride", // Material Name
+ MaterialState.LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().THORIUM232, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 4) });
+
+ // ThF6
+ public static final Material THORIUM_HEXAFLUORIDE = new Material(
+ "Thorium Hexafluoride", // Material Name
+ MaterialState.LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().THORIUM232, 1),
+ new MaterialStack(ELEMENT.getInstance().THORIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 12) });
+
+ // UF4
+ public static final Material URANIUM_TETRAFLUORIDE = new Material(
+ "Uranium Tetrafluoride", // Material Name
+ MaterialState.LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().URANIUM233, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 4) });
+
+ // UF6
+ public static final Material URANIUM_HEXAFLUORIDE = new Material(
+ "Uranium Hexafluoride", // Material Name
+ MaterialState.LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(FLUORIDES.URANIUM_TETRAFLUORIDE, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 2) });
+
+ // ZrF4
+
+ public static final Material ZIRCONIUM_TETRAFLUORIDE = new Material(
+ "Zirconium Tetrafluoride", // Material Name
+ MaterialState.LIQUID, // State
+ null, // Texture Set (Autogenerated)
+ 0,
+ null, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ false,
+ "ZrF\u2084",
+ -1,
+ true,
+ false,
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().ZIRCONIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 4) });
+
+ /*
+ * public static final Material ZIRCONIUM_TETRAFLUORIDE = new Material( "Zirconium Tetrafluoride", //Material Name
+ * MaterialState.LIQUID, //State null, //Material Colour -1, //Melting Point in C -1, //Boiling Point in C -1,
+ * //Protons -1, //Neutrons false, //Uses Blast furnace? //Material Stacks with Percentage of required elements. new
+ * MaterialStack[]{ new MaterialStack(ELEMENT.getInstance().ZIRCONIUM, 1), new
+ * MaterialStack(ELEMENT.getInstance().FLUORINE, 4) });
+ */
+
+ // BeF2
+ public static final Material BERYLLIUM_FLUORIDE = new Material(
+ "Beryllium Fluoride", // Material Name
+ MaterialState.LIQUID, // State
+ null, // Material Colour
+ -1,
+ -1,
+ -1,
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().BERYLLIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 2) });
+
+ // LiF
+ public static final Material LITHIUM_FLUORIDE = new Material(
+ "Lithium Fluoride", // Material Name
+ MaterialState.LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().LITHIUM7, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 1) });
+
+ // LFTR sub components
+
+ // (NH4)HF2
+ public static final Material AMMONIUM_BIFLUORIDE = new Material(
+ "Ammonium Bifluoride", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ 126, // Melting Point in C
+ 240, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(MISC_MATERIALS.AMMONIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().HYDROGEN, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 2) });
+
+ // Be(OH)2
+ public static final Material BERYLLIUM_HYDROXIDE = new Material(
+ "Beryllium Hydroxide", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().BERYLLIUM, 1),
+ new MaterialStack(MISC_MATERIALS.HYDROXIDE, 2) });
+
+ // (NH4)2BeF4
+ public static final Material AMMONIUM_TETRAFLUOROBERYLLATE = new Material(
+ "Ammonium Tetrafluoroberyllate", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ 280, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(MISC_MATERIALS.AMMONIUM, 2),
+ new MaterialStack(ELEMENT.getInstance().BERYLLIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 4) });
+
+ // LFTR Output
+ public static final Material NEPTUNIUM_HEXAFLUORIDE = new Material(
+ "Neptunium Hexafluoride", // Material Name
+ MaterialState.GAS, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().NEPTUNIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 6) });
+
+ public static final Material TECHNETIUM_HEXAFLUORIDE = new Material(
+ "Technetium Hexafluoride", // Material Name
+ MaterialState.GAS, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().TECHNETIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 6) });
+
+ public static final Material SELENIUM_HEXAFLUORIDE = new Material(
+ "Selenium Hexafluoride", // Material Name
+ MaterialState.GAS, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().SELENIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 6) });
+
+ public static final Material SODIUM_FLUORIDE = new Material(
+ "Sodium Fluoride", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().SODIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 1) });
+
+ private static final FLUORIDES INSTANCE = new FLUORIDES();
+
+ public static FLUORIDES getInstance() {
+ return INSTANCE;
+ }
+}
diff --git a/src/main/java/gtPlusPlus/core/material/nuclear/NUCLIDE.java b/src/main/java/gtPlusPlus/core/material/nuclear/NUCLIDE.java
new file mode 100644
index 0000000000..ebd24bad07
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/nuclear/NUCLIDE.java
@@ -0,0 +1,311 @@
+package gtPlusPlus.core.material.nuclear;
+
+import gtPlusPlus.core.client.CustomTextureSet.TextureSets;
+import gtPlusPlus.core.material.ELEMENT;
+import gtPlusPlus.core.material.Material;
+import gtPlusPlus.core.material.MaterialStack;
+import gtPlusPlus.core.material.state.MaterialState;
+import gtPlusPlus.core.util.data.StringUtils;
+
+public final class NUCLIDE {
+
+ public static final Material Li2BeF4 = new Material(
+ "Lithium Tetrafluoroberyllate (LFTB)", // Material Name
+ MaterialState.LIQUID, // State
+ TextureSets.NUCLEAR.get(),
+ null, // Material Colour
+ 566, // Melting Point in C
+ 870, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript(StringUtils.superscript("7") + "Li2BeF4"), // Chemical Formula
+ 4, // Radioactivity Level
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(FLUORIDES.LITHIUM_FLUORIDE, 2),
+ new MaterialStack(FLUORIDES.BERYLLIUM_FLUORIDE, 1) });
+
+ public static final Material LiFBeF2ThF4UF4 = new Material(
+ "LFTR Fuel 3", // Material Name
+ MaterialState.LIQUID, // State
+ TextureSets.NUCLEAR.get(),
+ null, // Material Colour
+ 566, // Melting Point in C
+ 870, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript(StringUtils.superscript("7") + "LiFBeF2ThF4UF4"), // Chemical Formula
+ 5, // Radioactivity Level
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(FLUORIDES.LITHIUM_FLUORIDE, 65),
+ new MaterialStack(FLUORIDES.BERYLLIUM_FLUORIDE, 28), new MaterialStack(FLUORIDES.THORIUM_TETRAFLUORIDE, 1),
+ new MaterialStack(FLUORIDES.URANIUM_TETRAFLUORIDE, 1) });
+
+ public static final Material LiFBeF2ZrF4UF4 = new Material(
+ "LFTR Fuel 2", // Material Name
+ MaterialState.LIQUID, // State
+ TextureSets.NUCLEAR.get(),
+ null, // Material Colour
+ 650, // Melting Point in C
+ 940, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript(StringUtils.superscript("7") + "LiFBeF2ZrF4UF4"), // Chemical Formula
+ 5, // Radioactivity Level
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(FLUORIDES.LITHIUM_FLUORIDE, 65),
+ new MaterialStack(FLUORIDES.BERYLLIUM_FLUORIDE, 28),
+ new MaterialStack(FLUORIDES.ZIRCONIUM_TETRAFLUORIDE, 5),
+ new MaterialStack(FLUORIDES.URANIUM_TETRAFLUORIDE, 2) });
+
+ public static final Material LiFBeF2ZrF4U235 = new Material(
+ "LFTR Fuel 1", // Material Name
+ MaterialState.LIQUID, // State
+ TextureSets.NUCLEAR.get(),
+ null, // Material Colour
+ 590, // Melting Point in C
+ 890, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript(StringUtils.superscript("7") + "LiFBeF2ZrF4") + StringUtils.superscript("235U"), // Chemical
+ // Formula
+ 5, // Radioactivity Level
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(FLUORIDES.LITHIUM_FLUORIDE, 55),
+ new MaterialStack(FLUORIDES.BERYLLIUM_FLUORIDE, 25),
+ new MaterialStack(FLUORIDES.ZIRCONIUM_TETRAFLUORIDE, 6),
+ new MaterialStack(ELEMENT.getInstance().URANIUM235, 14) });
+
+ // Misc
+ public static final Material BurntLftrFuel_MK1 = new Material(
+ "Burnt Reactor Fuel I", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript(StringUtils.superscript("7") + "LiBeF2UF4FP"), // Chemical Formula
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().LITHIUM, 1),
+ new MaterialStack(FLUORIDES.BERYLLIUM_FLUORIDE, 1), new MaterialStack(FLUORIDES.URANIUM_TETRAFLUORIDE, 1),
+ new MaterialStack(ELEMENT.getInstance().PROTACTINIUM, 1) });
+
+ public static final Material BurntLftrFuel_MK2 = new Material(
+ "Burnt Reactor Fuel II", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript(StringUtils.superscript("7") + "LiBeF2UF4FP"), // Chemical Formula
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().LITHIUM, 1),
+ new MaterialStack(FLUORIDES.BERYLLIUM_FLUORIDE, 1), new MaterialStack(FLUORIDES.URANIUM_TETRAFLUORIDE, 1),
+ new MaterialStack(ELEMENT.getInstance().PROTACTINIUM, 1) });
+
+ // LFTR Core Fluids
+ public static final Material LiFBeF2UF4FP = new Material(
+ "Uranium Depleted Molten Salt (U Salt)", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript(StringUtils.superscript("7") + "LiFBeF2UF4FP"), // Chemical Formula
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(FLUORIDES.LITHIUM_FLUORIDE, 1),
+ new MaterialStack(FLUORIDES.BERYLLIUM_FLUORIDE, 1), new MaterialStack(FLUORIDES.URANIUM_TETRAFLUORIDE, 1),
+ new MaterialStack(ELEMENT.getInstance().PROTACTINIUM, 1) });
+
+ public static final Material Sparged_LiFBeF2UF4FP = new Material(
+ "Helium Sparged U Salt", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript(StringUtils.superscript("7") + "LiFBeF2UF4FP"), // Chemical Formula
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(FLUORIDES.LITHIUM_FLUORIDE, 1),
+ new MaterialStack(FLUORIDES.BERYLLIUM_FLUORIDE, 1), new MaterialStack(FLUORIDES.URANIUM_TETRAFLUORIDE, 1),
+ new MaterialStack(ELEMENT.getInstance().PROTACTINIUM, 1) });
+
+ public static final Material UF6F2FP = new Material(
+ "Phosphorous Uranium Hexafluoride (P-UF6)", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript("UF6F2FP"), // Chemical Formula
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(FLUORIDES.URANIUM_HEXAFLUORIDE, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 3),
+ new MaterialStack(ELEMENT.getInstance().PHOSPHORUS, 1) });
+
+ public static final Material LiFBeF2 = new Material(
+ "Stable Molten Salt Base", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript(StringUtils.superscript("7") + "LiFBeF2"), // Chemical Formula
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(FLUORIDES.LITHIUM_FLUORIDE, 1),
+ new MaterialStack(FLUORIDES.BERYLLIUM_FLUORIDE, 1) });
+
+ public static final Material LiFBeF2UF4 = new Material(
+ "LFTR Fuel Base", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript(StringUtils.superscript("7") + "LiFBeF2UF4"), // Chemical Formula
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(LiFBeF2, 1), new MaterialStack(FLUORIDES.URANIUM_TETRAFLUORIDE, 1) });
+
+ // LFTR Blanket Fluids
+
+ // Tier 1 Fuel blanket output
+ public static final Material LiFThF4 = new Material(
+ "Thorium Depleted Molten Salt (T Salt)", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript(StringUtils.superscript("7") + "LiFThF4"), // Chemical Formula
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(FLUORIDES.LITHIUM_FLUORIDE, 1),
+ new MaterialStack(FLUORIDES.THORIUM_TETRAFLUORIDE, 1) });
+
+ // Tier 2 Fuel blanket output
+ public static final Material LiFBeF2ThF4 = new Material(
+ "Thorium-Beryllium Depleted Molten Salt (TB Salt)", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript(StringUtils.superscript("7") + "LiFBeF2ThF4"), // Chemical Formula
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(FLUORIDES.LITHIUM_FLUORIDE, 1),
+ new MaterialStack(FLUORIDES.BERYLLIUM_FLUORIDE, 1),
+ new MaterialStack(FLUORIDES.THORIUM_TETRAFLUORIDE, 1) });
+
+ // Tier 1 Fuel blanket output
+ public static final Material Sparged_LiFThF4 = new Material(
+ "Fluorine Sparged T Salt", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript(StringUtils.superscript("7") + "LiFThF4"), // Chemical Formula
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(FLUORIDES.LITHIUM_FLUORIDE, 1),
+ new MaterialStack(FLUORIDES.THORIUM_TETRAFLUORIDE, 1) });
+
+ // Tier 2 Fuel blanket output
+ public static final Material Sparged_LiFBeF2ThF4 = new Material(
+ "Fluorine Sparged TB Salt", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript(StringUtils.superscript("7") + "LiFBeF2ThF4"), // Chemical Formula
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(FLUORIDES.LITHIUM_FLUORIDE, 1),
+ new MaterialStack(FLUORIDES.BERYLLIUM_FLUORIDE, 1),
+ new MaterialStack(FLUORIDES.THORIUM_TETRAFLUORIDE, 1) });
+
+ public static final Material UF6F2 = new Material(
+ "Fluorinated Uranium Hexafluoride (F-UF6)", // Material Name
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1, // Neutrons
+ false, // Uses Blast furnace?
+ StringUtils.subscript("UF6F2"), // Chemical Formula
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(FLUORIDES.URANIUM_HEXAFLUORIDE, 1),
+ new MaterialStack(ELEMENT.getInstance().FLUORINE, 2) });
+
+ // Secondary material is molten metal
+ public static final Material NAQ_FUEL_T1 = new Material(
+ "Naquadah Fuel",
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().NAQUADAH, 2),
+ new MaterialStack(ELEMENT.getInstance().TANTALUM, 3) });
+
+ // Secondary material is a plasma
+ public static final Material NAQ_FUEL_T2 = new Material(
+ "Enriched Naquadah Fuel",
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().NAQUADAH_ENRICHED, 2),
+ new MaterialStack(ELEMENT.getInstance().TITANIUM, 3) });
+
+ // Secondary material is a plasma
+ public static final Material NAQ_FUEL_T3 = new Material(
+ "Naquadria Fuel",
+ MaterialState.PURE_LIQUID, // State
+ null, // Material Colour
+ -1, // Melting Point in C
+ -1, // Boiling Point in C
+ -1, // Protons
+ -1,
+ false, // Uses Blast furnace?
+ // Material Stacks with Percentage of required elements.
+ new MaterialStack[] { new MaterialStack(ELEMENT.getInstance().NAQUADRIA, 2),
+ new MaterialStack(ELEMENT.getInstance().AMERICIUM, 3) });
+
+ private static final NUCLIDE INSTANCE = new NUCLIDE();
+
+ public static NUCLIDE getInstance() {
+ return INSTANCE;
+ }
+}
diff --git a/src/main/java/gtPlusPlus/core/material/state/MaterialState.java b/src/main/java/gtPlusPlus/core/material/state/MaterialState.java
new file mode 100644
index 0000000000..9fb5cde101
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/state/MaterialState.java
@@ -0,0 +1,22 @@
+package gtPlusPlus.core.material.state;
+
+public enum MaterialState {
+
+ SOLID(0),
+ LIQUID(1),
+ GAS(2),
+ PLASMA(3),
+ PURE_LIQUID(4),
+ ORE(5),
+ PURE_GAS(6);
+
+ private final int STATE;
+
+ private MaterialState(final int State) {
+ this.STATE = State;
+ }
+
+ public int ID() {
+ return this.STATE;
+ }
+}