aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/core/material
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gtPlusPlus/core/material')
-rw-r--r--src/main/java/gtPlusPlus/core/material/ALLOY.java1009
-rw-r--r--src/main/java/gtPlusPlus/core/material/ELEMENT.java255
-rw-r--r--src/main/java/gtPlusPlus/core/material/Ion.java30
-rw-r--r--src/main/java/gtPlusPlus/core/material/MISC_MATERIALS.java328
-rw-r--r--src/main/java/gtPlusPlus/core/material/Material.java1461
-rw-r--r--src/main/java/gtPlusPlus/core/material/MaterialGenerator.java464
-rw-r--r--src/main/java/gtPlusPlus/core/material/MaterialStack.java109
-rw-r--r--src/main/java/gtPlusPlus/core/material/NONMATERIAL.java44
-rw-r--r--src/main/java/gtPlusPlus/core/material/ORES.java850
-rw-r--r--src/main/java/gtPlusPlus/core/material/Particle.java153
-rw-r--r--src/main/java/gtPlusPlus/core/material/gregtech/CustomGTMaterials.java79
-rw-r--r--src/main/java/gtPlusPlus/core/material/nuclear/FLUORIDES.java284
-rw-r--r--src/main/java/gtPlusPlus/core/material/nuclear/NUCLIDE.java376
-rw-r--r--src/main/java/gtPlusPlus/core/material/state/MaterialState.java18
14 files changed, 5460 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..fd7547970c
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/ALLOY.java
@@ -0,0 +1,1009 @@
+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 ENERGYCRYSTAL = new Material(
+ "Energy Crystal", //Material Name
+ MaterialState.SOLID, //State
+ new short[]{228, 255, 0, 0}, //Material Colour
+ 5660, //Melting Point in C
+ 7735, //Boiling Point in C
+ 150, //Protons
+ 80, //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)
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ //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..01d3fd5330
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/ELEMENT.java
@@ -0,0 +1,255 @@
+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.lib.CORE;
+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", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminium", "Silicon", "Phosphorus", "Sulfur", "Chlorine", "Argon", "Potassium", "Calcium", "Scandium", "Titanium", "Vanadium", "Chromium", "Manganese", "Iron", "Cobalt", "Nickel", "Copper", "Zinc", "Gallium", "Germanium", "Arsenic", "Selenium", "Bromine", "Krypton", "Rubidium", "Strontium", "Yttrium", "Zirconium", "Niobium", "Molybdenum", "Technetium", "Ruthenium", "Rhodium", "Palladium", "Silver", "Cadmium", "Indium", "Tin", "Antimony", "Tellurium", "Iodine", "Xenon", "Caesium", "Barium", "Lanthanum", "Cerium", "Praseodymium", "Neodymium", "Promethium", "Samarium", "Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum", "Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium", "Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium", "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Nihonium", "Flerovium", "Moscovium", "Livermorium", "Tennessine", "Oganesson"};
+
+ //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.Phosphor);
+ 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 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 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 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 ASTATINE = new Material("Astatine", MaterialState.SOLID, TextureSets.NUCLEAR.get(), new short[]{170, 180, 170}, 302, 337, 85, 125, false, "At", 1);//Not a GT Inherited Material
+ public final Material RADON = MaterialUtils.generateMaterialFromGtENUM(Materials.Radon);
+ public final Material FRANCIUM = new Material("Francium", MaterialState.SOLID, TextureSets.NUCLEAR.get(), new short[]{170, 160, 170}, 27, 677, 87, 136, false, "Fr", 1);//Not a GT Inherited Material
+ 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 ACTINIUM = new Material("Actinium", MaterialState.SOLID, TextureSets.NUCLEAR.get(), new short[]{150, 165, 165}, 1050, 3200, 89, 138, false, "Ac", 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 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 PLUTONIUM244 = MaterialUtils.generateMaterialFromGtENUM(Materials.Plutonium);
+ public final Material PLUTONIUM241 = MaterialUtils.generateMaterialFromGtENUM(Materials.Plutonium241);
+ public final Material AMERICIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Americium); //Americium
+ 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 BERKELIUM = new Material("Berkelium", MaterialState.SOLID, TextureSets.NUCLEAR.get(), new short[]{110, 250, 85}, 985, 710, 97, 150, false, "Bk", 4);//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 EINSTEINIUM = new Material("Einsteinium", MaterialState.SOLID, TextureSets.NUCLEAR.get(), new short[]{255, 85, 110}, 860, 3500, 99, 153, false, "Es", 5);//Not a GT Inherited Material //Boiling Point is made up
+ 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());
+
+ //Fictional
+ public final Material YELLORIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Yellorium, new short[] {255, 242, 10}, TextureSets.NUCLEAR.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
+ public final Material PLUTONIUM239 = new Material("Plutonium-239", MaterialState.SOLID, TextureSets.NUCLEAR.get(), Materials.Plutonium.mDurability, Materials.Plutonium.mRGBa, Materials.Plutonium.mMeltingPoint, Materials.Plutonium.mBlastFurnaceTemp, 94, 145, false, StringUtils.superscript("239Pu"), 4, 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 STRONTIUM90 = new Material("Strontium-90", MaterialState.SOLID, TextureSets.NUCLEAR.get(), Materials.Strontium.mDurability, Materials.Strontium.mRGBa, Materials.Strontium.mMeltingPoint, Materials.Strontium.mBlastFurnaceTemp, 38, 52, false, StringUtils.superscript("90Sr"), 2, false);//Not a GT Inherited Material
+ public final Material POLONIUM210 = new Material("Polonium-210", MaterialState.SOLID, TextureSets.NUCLEAR.get(), POLONIUM.vDurability, POLONIUM.getRGBA(), POLONIUM.getMeltingPointK(), POLONIUM.getBoilingPointK(), 84, 126, false, StringUtils.superscript("210Po"), 2, false);//Not a GT Inherited Material
+ public final Material AMERICIUM241 = new Material("Americium-241", MaterialState.SOLID, TextureSets.NUCLEAR.get(), Materials.Americium.mDurability, Materials.Americium.mRGBa, Materials.Americium.mMeltingPoint, Materials.Americium.mBlastFurnaceTemp, 95, 146, false, StringUtils.superscript("241Am"), 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
+ if (CORE.GTNH){
+ //yay
+ Materials a1 = MaterialUtils.getMaterial("Trinium");
+ Materials a2 = Materials.valueOf("Trinium");
+ Materials a3 = Materials.get("Trinium");
+ Materials a4;
+ if (a1 == null) {
+ Logger.INFO("[Material] First attempt to find Trinium failed, using backup method.");
+ if (a2 == null) {
+ Logger.INFO("[Material] Fallback attempt to find Trinium failed, using second fallback.");
+ if (a3 == null) {
+ Logger.INFO("[Material] Fallback attempt to find Trinium failed, dumping materials.");
+ for (Materials m : Materials.values()) {
+ Logger.INFO("[Material] Found "+MaterialUtils.getMaterialName(m));
+ }
+ a4 = null;
+ }
+ else {
+ Logger.INFO("[Material] a3 Found "+MaterialUtils.getMaterialName(a3));
+ a4 = a3;
+ }
+ }
+ else {
+ Logger.INFO("[Material] a2 Found "+MaterialUtils.getMaterialName(a2));
+ a4 = a2;
+ }
+ TRINIUM = MaterialUtils.generateMaterialFromGtENUM(a4);
+ }
+ else {
+ Logger.INFO("[Material] a1 Found "+MaterialUtils.getMaterialName(a1));
+ TRINIUM = MaterialUtils.generateMaterialFromGtENUM(a1);
+ }
+
+ TRINIUM_REFINED = TRINIUM;
+
+ }
+ else {
+ TRINIUM = new Material("Trinium", MaterialState.SOLID, TextureSet.SET_FINE, new short[]{70, 110, 30}, 604, 4057, 181, 133, false, "Ke", 0, false);//Not a GT Inherited Material
+ TRINIUM_REFINED = new Material("Refined Trinium", MaterialState.SOLID, TextureSets.REFINED.get(), new short[]{210, 255, 170}, 4304, 14057, 181, 133, false, "Ke", 0, new MaterialStack[]{new MaterialStack(TRINIUM, 1)});//Not a GT Inherited Material
+ }
+ }
+
+ 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, "⚷⚙⚷ 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}, 12255, 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
+
+
+ //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, "§", 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/Ion.java b/src/main/java/gtPlusPlus/core/material/Ion.java
new file mode 100644
index 0000000000..2b5b113b92
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/Ion.java
@@ -0,0 +1,30 @@
+package gtPlusPlus.core.material;
+
+public class Ion {
+
+ private final Material mElement;
+ private final boolean mContainsPositiveCharge;
+ private final int mTotalIonization;
+
+ public Ion(Material aMat, int chargeAmount) {
+ mElement = aMat;
+ mContainsPositiveCharge = (chargeAmount >= 0);
+ mTotalIonization = chargeAmount;
+ }
+
+ public synchronized final Material getElement() {
+ return mElement;
+ }
+
+ public synchronized final boolean containsPositiveCharge() {
+ return mContainsPositiveCharge;
+ }
+
+ public synchronized final int getTotalIonization() {
+ return mTotalIonization;
+ }
+
+ public final boolean isNeutral() {
+ return mTotalIonization == 0;
+ }
+}
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..2740f49d71
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/MISC_MATERIALS.java
@@ -0,0 +1,328 @@
+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 seperately.
+ * Most are just compositions which will have dusts assigned to them.
+ */
+
+ public static void run() {
+ MaterialUtils.generateSpecialDustAndAssignToAMaterial(STRONTIUM_OXIDE, false);
+ MaterialUtils.generateSpecialDustAndAssignToAMaterial(STRONTIUM_HYDROXIDE, false);
+ WATER.registerComponentForMaterial(FluidUtils.getWater(1000));
+ }
+
+ 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[]{
+ 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[]{
+ 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[]{
+ 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[]{
+ 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[]{
+ 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[]{
+ 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[]{
+ 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[]{
+ 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[]{
+ 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[]{
+ 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[]{
+ 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[]{
+ 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[]{
+ new MaterialStack(ELEMENT.getInstance().SODIUM, 1),
+ new MaterialStack(ELEMENT.getInstance().CHLORINE, 1),
+ });
+
+
+ public static final Material SODIUM_HYDROXIDE = new Material(
+ "Sodium Hydroxide",
+ MaterialState.PURE_GAS,
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.getInstance().SODIUM, 1),
+ new MaterialStack(HYDROXIDE, 1),
+ });
+
+ public static final Material SALT_WATER = new Material(
+ "Salt Water",
+ MaterialState.PURE_LIQUID,
+ new MaterialStack[]{
+ new MaterialStack(WATER, 3),
+ new MaterialStack(SODIUM_CHLORIDE, 1),
+ });
+
+ public static final Material BRINE = new Material(
+ "Brine",
+ MaterialState.PURE_LIQUID,
+ new MaterialStack[]{
+ 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[]{
+ new MaterialStack(ELEMENT.getInstance().STRONTIUM, 1),
+ new MaterialStack(MISC_MATERIALS.HYDROXIDE, 2)
+ });
+
+
+
+}
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..0e9eb9b376
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/Material.java
@@ -0,0 +1,1461 @@
+package gtPlusPlus.core.material;
+
+import static gregtech.api.enums.GT_Values.M;
+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 gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.TextureSet;
+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.lib.LoadedMods;
+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.gregtech.api.enums.CustomOrePrefix;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_Aspect_Wrapper;
+import gtPlusPlus.xmod.tinkers.material.BaseTinkersMaterial;
+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;
+
+public class Material {
+
+ public static final Set<Material> mMaterialMap = new HashSet<Material>();
+ public static HashMap<String, Material> mMaterialCache = new HashMap<String, Material>();
+
+ public static final Map<String, Map<String, ItemStack>> mComponentMap = new HashMap<String, Map<String, ItemStack>>();
+
+ public static HashMap<String, String> sChemicalFormula = new HashMap<String, String>();
+
+ private String unlocalizedName;
+ private String localizedName;
+
+ private MaterialState materialState;
+ private TextureSet textureSet;
+
+ private Fluid mFluid;
+ private Fluid vPlasma;
+
+ 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;
+
+ private TC_Aspect_Wrapper[] vAspects;
+
+ public BaseTinkersMaterial vTiConHandler;
+
+
+ public static AutoMap<Materials> invalidMaterials = new AutoMap<Materials>();
+
+
+ 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<String, ItemStack>());
+
+ try {
+ this.unlocalizedName = Utils.sanitizeString(materialName);
+ this.localizedName = materialName;
+ 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<Short>();
+ Set<Material> set4 = new HashSet<Material>();
+ 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.vAspects = null;
+
+
+ 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<Byte>();
+ 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 = (byte) 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 (int v=0;v<this.vSmallestRatio.length;v++){
+ tempSmallestSize=(int) (tempSmallestSize+this.vSmallestRatio[v]);
+ }
+ 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();
+ }
+ }
+ this.vPlasma = this.generatePlasma();
+ }
+ else {
+ this.mFluid = null;
+ this.vPlasma = null;
+ }
+ String ratio = "";
+ if (this.vSmallestRatio != null) {
+ for (int hu=0;hu<this.vSmallestRatio.length;hu++){
+ if (ratio.equals("")){
+ ratio = String.valueOf(this.vSmallestRatio[hu]);
+ }
+ else {
+ ratio = ratio + ":" +this.vSmallestRatio[hu];
+ }
+ }
+ }
+
+ this.textureSet = setTextureSet(set, vTier);
+
+ if (LoadedMods.TiCon && 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().AMERICIUM) {
+ 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<Material>();
+ 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<Material>(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";
+ }
+
+ final public MaterialState getState(){
+ return this.materialState;
+ }
+
+ final public short[] getRGB(){
+ if (this.RGBA != null) {
+ return this.RGBA;
+ }
+ return new short[] {255,0,0};
+ }
+
+ final public 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};
+ }
+
+ final public 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]);
+ }
+
+ final public long getProtons() {
+ return this.vProtons;
+ }
+
+ public final long getNeutrons() {
+ return this.vNeutrons;
+ }
+
+ final public 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<String, ItemStack>();
+ 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));
+ }
+
+ }
+
+ final public 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 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 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);
+ }
+
+ /**
+ * 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(CustomOrePrefix.milled.get(), stacksize);
+ }
+
+ public final boolean hasSolidForm() {
+ if (ItemUtils.checkForInvalidItems(new ItemStack[] {getDust(1), getBlock(1), getTinyDust(1), getSmallDust(1)})) {
+ return true;
+ }
+ return false;
+ }
+
+ final public 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;
+ }
+
+ final public 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 final 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++){
+ //tempPercentage = tempPercentage+inputs[x].percentageToUse;
+ //this.mMaterialList.add(inputs[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 (int r=0;r<tempRatio.length;r++){
+ tempRatioStringThing1 = tempRatioStringThing1 + tempRatio[r] +" : ";
+ }
+ Logger.MATERIALS("Default Ratio: "+tempRatioStringThing1);
+
+ String tempRatioStringThing = "";
+ int tempSmallestCraftingUseSize = 0;
+ for (int r=0;r<smallestRatio.length;r++){
+ tempRatioStringThing = tempRatioStringThing + smallestRatio[r] +" : ";
+ tempSmallestCraftingUseSize = (int) (tempSmallestCraftingUseSize + smallestRatio[r]);
+ }
+ //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){
+ dummyFormula = dummyFormula + "(" + aChemFormula + ")" + dummyFormulaArray[e];
+ }
+ else {
+ dummyFormula = dummyFormula + aChemFormula + dummyFormulaArray[e];
+ }
+ }
+ else if (dummyFormulaArray[e] == 1){
+ if (aChemFormula.length() > 3){
+ 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 final static 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;
+ }
+
+ final public FluidStack getFluidStack(final int fluidAmount) {
+ if (this.mFluid == null){
+ return null;
+ }
+ final FluidStack moltenFluid = new FluidStack(this.mFluid, fluidAmount);
+ return moltenFluid;
+ }
+
+ final public boolean setFluid(Fluid aFluid) {
+ if (this.mFluid == null){
+ this.mFluid = aFluid;
+ return true;
+ }
+ return false;
+ }
+
+
+ final public int calculateMeltingPoint(){
+ try {
+ AutoMap<Integer> aDataSet = new AutoMap<Integer>();
+ 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;
+ }
+ }
+
+ final public int calculateBoilingPoint(){
+ try {
+
+ AutoMap<Integer> aDataSet = new AutoMap<Integer>();
+ 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;
+ }
+ }
+
+ final public long calculateProtons(){
+ try {
+
+ AutoMap<Long> aDataSet = new AutoMap<Long>();
+ 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;
+ }
+ }
+
+ final public long calculateNeutrons(){
+ try {
+
+ AutoMap<Long> aDataSet = new AutoMap<Long>();
+ 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, ItemStack>();
+ }
+ 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;
+ }
+ }
+
+} \ No newline at end of file
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..d1ea784b81
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/MaterialGenerator.java
@@ -0,0 +1,464 @@
+package gtPlusPlus.core.material;
+
+import java.util.Set;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.util.GT_Utility;
+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.plates.BaseItemPlate;
+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;
+import net.minecraft.block.Block;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidStack;
+
+public class MaterialGenerator {
+
+ public static final AutoMap<Set<RunnableWithInfo<Material>>> mRecipeMapsToGenerate = new AutoMap<Set<RunnableWithInfo<Material>>>();
+
+ @SuppressWarnings("unused")
+ private static volatile Item temp;
+ @SuppressWarnings("unused")
+ private static volatile Block tempBlock;
+
+
+ public static boolean addFluidExtractionRecipe(ItemStack aEmpty, ItemStack aRemains, FluidStack aFluid) {
+ return addFluidExtractionRecipe(aEmpty, aRemains, aFluid, null, null);
+ }
+
+ /**
+ * Called Reflectively from CORE.RA.addFluidExtractionRecipe
+ * @param aSpecial
+ * @return
+ */
+ public static boolean addFluidExtractionRecipe(ItemStack aEmpty, ItemStack aRemains, FluidStack aFluid, Integer aDuration, Integer aEU) {
+ RecipeGen_FluidCanning g = new RecipeGen_FluidCanning(true, aEmpty, aRemains, aFluid, aDuration, aEU);
+ if (g != null && g.valid()) {
+ //Logger.INFO("[FIND] Adding Extraction recipe for "+ItemUtils.getItemName(aEmpty)+", "+ItemUtils.getItemName(aRemains)+", "+ItemUtils.getFluidName(aFluid));
+ return true;
+ }
+ Logger.INFO("[ERROR] FAILED adding Extraction recipe for "+ItemUtils.getItemName(aEmpty)+", "+ItemUtils.getItemName(aRemains)+", "+ItemUtils.getFluidName(aFluid));
+ return false;
+ }
+
+
+ public static boolean addFluidCannerRecipe(ItemStack aEmpty, ItemStack aFullContainer, FluidStack aFluidIn, FluidStack rFluidOut) {
+ return addFluidCannerRecipe(aEmpty, aFullContainer, aFluidIn, rFluidOut, null, null);
+ }
+ /**
+ * Called Reflectively from CORE.RA.addFluidCannerRecipe
+ * @return
+ */
+ public static boolean addFluidCannerRecipe(ItemStack aEmpty, ItemStack aFullContainer, FluidStack aFluidIn, FluidStack rFluidOut, Integer aTime, Integer aEu) {
+ /*GT_Recipe r = new Recipe_GT(
+ true,
+ new ItemStack[] {aEmpty},
+ new ItemStack[] {aFullContainer},
+ null,
+ new int[] {},
+ new FluidStack[] {rFluidIn},
+ new FluidStack[] {rFluidOut},
+ 0, 0, 0);*/
+ //new RecipeGen_FluidCanning(r, false);
+ 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);
+ }
+ } 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.getNumberedAdvancedCircuit(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, Colour.intValue());
+ }
+
+ 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);
+
+ 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, Colour.intValue());
+ 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);
+
+ 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);
+ 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..63a9ccce9c
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/MaterialStack.java
@@ -0,0 +1,109 @@
+package gtPlusPlus.core.material;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+import net.minecraft.item.ItemStack;
+
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
+
+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 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..7ab72d50bc
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/NONMATERIAL.java
@@ -0,0 +1,44 @@
+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..82757b2ee6
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/ORES.java
@@ -0,0 +1,850 @@
+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, 2),
+ new MaterialStack(ELEMENT.getInstance().SULFUR, 2),
+ });
+
+ 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..e93129ec58
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/Particle.java
@@ -0,0 +1,153 @@
+package gtPlusPlus.core.material;
+
+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;
+import net.minecraft.item.ItemStack;
+
+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<Particle>();
+
+ 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/gregtech/CustomGTMaterials.java b/src/main/java/gtPlusPlus/core/material/gregtech/CustomGTMaterials.java
new file mode 100644
index 0000000000..20aebb80ed
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/gregtech/CustomGTMaterials.java
@@ -0,0 +1,79 @@
+package gtPlusPlus.core.material.gregtech;
+
+public class CustomGTMaterials {
+
+ //public static Materials Fireclay = new MaterialBuilder(626, TextureSet.SET_ROUGH, "Fireclay").addDustItems().setRGB(173, 160, 155).setColor(Dyes.dyeBrown).setMaterialList(new MaterialStack(Brick, 1)).constructMaterial();
+
+ /**int aMetaItemSubID,
+ * TextureSet aIconSet,
+ * float aToolSpeed,
+ * int aDurability,
+ * int aToolQuality,
+ * boolean aUnificatable,
+ * String aName, String aDefaultLocalName,
+ * String aConfigSection,
+ * boolean aCustomOre,
+ * String aCustomID) {
+
+ **/
+
+ /*public static List<Materials> Custom_GT_Materials = new ArrayList<Materials>();
+
+ public static Materials Zirconium = materialBuilder_Element(1232, TextureSet.SET_METALLIC, 6.0F, 256, 2, 1|2|8|32|64|128, 200, 200, 200, 0, "Zirconium", "Zirconium", 0, 0, 1811, 0, false, false, 3, 1, 1, Dyes.dyeLightGray, Element.Zr, Arrays.asList(new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 3)));
+ public static Materials Geikielite = materialBuilder(1234, TextureSet.SET_SHINY, new int[]{1,2,3}, "Geikielite", Dyes.dyeBlack, Arrays.asList(new MaterialStack(Titanium, 1), new MaterialStack(Magnesium, 1), new MaterialStack(Oxygen, 3)));
+ public static Materials Zirconolite = materialBuilder(1235, TextureSet.SET_METALLIC, new int[]{1,2,3}, "Zirconolite", Dyes.dyeBlack, Arrays.asList(new MaterialStack(Calcium, 1), new MaterialStack(Zirconium, 1), new MaterialStack(Titanium, 2), new MaterialStack(Oxygen, 7)));
+
+ public static final void run(){
+ Utils.LOG_INFO("[Custom] Trying to initialise custom materials.");
+ }
+
+ private final static boolean registerMaterial(Materials r){
+ Custom_GT_Materials.add(r);
+ Utils.LOG_INFO("[Custom] Registered new Gregtech material - "+r.mName);
+ return true;
+ }
+
+ public final static Materials materialBuilder(int ID, TextureSet texture, int[] rgb, String materialName, Dyes dyeColour, List<MaterialStack> composition){
+ Materials newMat = new Materials(
+ ID,
+ texture,
+ 1.0F,
+ 0,
+ 2,
+ 1 |8 ,
+ rgb[0], rgb[1], rgb[2], 0,
+ materialName, materialName,
+ 0, 0, -1, 0, false, false, 3, 1, 1,
+ dyeColour,
+ 1,
+ composition
+ );
+ registerMaterial(newMat);
+ return newMat;
+ }
+
+ public final static Materials materialBuilder_Element(
+ int ID, TextureSet texture,
+ float a, int b, int c,
+ int d, int r2, int g2, int b2, int a2,
+ String materialName, String e,
+ int f, int g, int h, int i,
+ boolean j, boolean k,
+ int l, int m, int n,
+ Dyes dyeColour, Element o,
+ List<TC_AspectStack> aspects){
+ Materials newMat = new Materials(
+ ID, texture,
+ a, b, c,
+ d, r2, g2, b2, a2,
+ materialName, e,
+ f, g, h, i, j, k, l, m, n,
+ dyeColour, o,
+ aspects
+ );
+ registerMaterial(newMat);
+ return newMat;
+ }
+*/
+
+}
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..d5c6e4a6bf
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/nuclear/FLUORIDES.java
@@ -0,0 +1,284 @@
+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,
+ "ZrF4",
+ -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)2Be(OH)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(FLUORIDES.BERYLLIUM_HYDROXIDE, 1)
+ });
+
+
+
+ //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..9bc7459f0e
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/nuclear/NUCLIDE.java
@@ -0,0 +1,376 @@
+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", //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(
+ "LiFBeF2ThF4UF4", //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(
+ "LiFBeF2ZrF4UF4", //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(
+ "LiFBeF2ZrF4U235", //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(
+ "LiFBeF2UF4FP", //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 LiFBeF2UF4FP", //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(
+ "UF6F2FP", //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(
+ "LiFBeF2", //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(
+ "LiFBeF2UF4", //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(
+ "LiFThF4", //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(
+ "LiFBeF2ThF4", //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 LiFThF4", //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 LiFBeF2ThF4", //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(
+ "UF6F2", //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..460fe019dc
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/material/state/MaterialState.java
@@ -0,0 +1,18 @@
+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 int STATE;
+ private MaterialState (final int State){
+ this.STATE = State;
+ }
+ public int ID() {
+ return this.STATE;
+ }
+}