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