diff --git a/.gitignore b/.gitignore index d43b6ebc5..07c0f81f7 100644 --- a/.gitignore +++ b/.gitignore @@ -93,3 +93,7 @@ visualores/ *__pycache__* servers.dat + +.idea/material_theme_project_new.xml +.idea/discord.xml +.idea/workspace.xml \ No newline at end of file diff --git a/config/betterquesting/resources/supersymmetry/lang/en_us.lang b/config/betterquesting/resources/supersymmetry/lang/en_us.lang index 22901f2cd..33165da84 100644 --- a/config/betterquesting/resources/supersymmetry/lang/en_us.lang +++ b/config/betterquesting/resources/supersymmetry/lang/en_us.lang @@ -1883,10 +1883,10 @@ susy.quest.db.1610061980.title=Trip Hammer susy.quest.db.1610061980.desc=The §6Trip Hammer§r can swing a hammer for you!%n%nA trip hammer needs a §6Cog§r and a §6Hammer§r to work. You can put §a4§r of them around one anvil to reach the maximum efficiency.%n%nYou can insert items into a anvil using hoppers or pipes, and the product will be dropped in-world unless a chest or another type of storage is placed next to the Trip Hammer, opposite of the side where you insert the Cog. susy.quest.db.1677924297.title=Better Oven susy.quest.db.1677924297.desc=The §6Refractory Oven§r is an upgraded version of the §7Stone Oven§r, which has §a2.5x§r processing speed and a lower change of failure. -susy.quest.db.1766408250.title=The Road to Rubylith -susy.quest.db.1766408250.desc=You may have noticed the rather complicated questline below. It all heads towards §7rubylith§r, which is essentially a really chemically complex sheet of plastic that you use to, essentially, stencil stencils.%n%nDo not worry about automating this; you will only need §76§r to get through HV! Even still, we wish you good luck. susy.quest.db.1766162782.title=Extenders & Bridges susy.quest.db.1766162782.desc=§3§6Bridges§r and §6extenders§r are §cdelegators§r; they can delegate one face of your §bmachine§r or §bpipes§r onto one or more equivalent faces.%n%nBoth bridges and extenders have four variants: §3inv§r, §3tank§r, §3invtank§r, and §5universal§r. As their names suggest, they allow automation of items, fluids, items plus fluids, and, for universal ones, energy as well. §oNone§r of them, however, can attach to other §cdelegators§r.%n%n§6Bridges§r will allow §bpipes§r or §bcables§r from different directions to pass through each other in one block without turning, which will be very useful for compact logistic designs.%n%n§6Extenders§r can expand one face on your §bmachine§r to five faces. An extender has three kinds of faces: §4primary§r, §4secondary§r, and §4normal§r faces. All import/extract actions on the §4normal§r or §4secondary§r faces will be delegated to the §bmachines§r or §bpipes§r adjacent to the §4primary§r face, and the actions on the §4primary§r face will be delegated to the §4secondary§r face.%n%nApart from the §5Universal Delegators§r that require aluminum, you can now craft all §cdelegators§r for your automation. +susy.quest.db.1766408250.title=The Road to Rubylith +susy.quest.db.1766408250.desc=You may have noticed the rather complicated questline below. It all heads towards §7rubylith§r, which is essentially a really chemically complex sheet of plastic that you use to, essentially, stencil stencils.%n%nDo not worry about automating this; you will only need §76§r to get through HV! Even still, we wish you good luck. susy.quest.db.1767849062.title=Don't Take Granite for Granted susy.quest.db.1767849062.desc=You might encounter some §dGranite§r while mining underground. §dGranite§r is a type of §cigneous rock§r that is hard and tough, making it an ideal material for crafting §7mortars§r. So, don't ignore it! susy.quest.db.1786950658.title=Zener Diode diff --git a/groovy/classes/ChangeFlags.groovy b/groovy/classes/ChangeFlags.groovy index b32607a41..ae00d3074 100644 --- a/groovy/classes/ChangeFlags.groovy +++ b/groovy/classes/ChangeFlags.groovy @@ -83,6 +83,8 @@ class ChangeFlags { setupFluidType(Iodine, FluidStorageKeys.GAS, 460) setupFluidType(Chlorine, FluidStorageKeys.PLASMA) setupFluidType(Selenium, FluidStorageKeys.LIQUID, 494) + setupFluidType(OsmiumTetroxide, FluidStorageKeys.LIQUID, 404) + OsmiumTetroxide.addFlags("NO_UNIFICATION") //setupFluidType(Iron3Chloride, FluidStorageKeys.GAS, 590) setupFluidType(CarbonDioxide, SusyFluidStorageKeys.SUPERCRITICAL, 304) @@ -202,6 +204,8 @@ class ChangeFlags { setupSlurries(Sphalerite) setupSlurries(Pollucite) setupSlurries(Arsenopyrite) + Pentlandite.addFlags("generate_sifted", "generate_flotated"); + setupSlurries(Pentlandite) setupFluidType(PolyvinylAcetate, FluidStorageKeys.LIQUID, 385) diff --git a/groovy/material/FirstDegreeMaterials.groovy b/groovy/material/FirstDegreeMaterials.groovy index 80d3e274b..382de3dc0 100644 --- a/groovy/material/FirstDegreeMaterials.groovy +++ b/groovy/material/FirstDegreeMaterials.groovy @@ -758,13 +758,13 @@ public class FirstDegreeMaterials { .colorAverage() .build() - Diamminedichloropalladium = new Material.Builder(8201, SuSyUtility.susyId('diamminedichloropalladium')) + Diaminedichloropalladium = new Material.Builder(8201, SuSyUtility.susyId('diaminedichloropalladium')) .dust() .components(Palladium, Nitrogen * 2, Hydrogen * 6, Chlorine * 2) .color(0xd4d192) .build(); - Diamminedichloropalladium.setFormula("Pd(NH3)2Cl2", true) + Diaminedichloropalladium.setFormula("Pd(NH3)2Cl2", true) DecarburizedAir = new Material.Builder(8202, SuSyUtility.susyId('decarburized_air')) .gas() @@ -1777,6 +1777,7 @@ public class FirstDegreeMaterials { .colorAverage() .build(); + ImpureCobaltOxide = new Material.Builder(8360, SuSyUtility.susyId('impure_cobalt_oxide')) .dust() .components(CobaltOxide) @@ -2609,7 +2610,19 @@ public class FirstDegreeMaterials { .build() .setFormula("(?)(Mn(NO3)2)(H2O)", true) - //FREE IDs: 8484-8485 + SeleniumDioxide = new Material.Builder(8484, SuSyUtility.susyId("selenium_dioxide")) + .dust() + .components(Selenium * 1, Oxygen * 2) + .colorAverage() + .build(); + + CobaltSulfateSolution = new Material.Builder(8485, SuSyUtility.susyId("cobalt_sulfate_solution")) + .fluid() + .components(Cobalt * 1, Sulfur * 1, Oxygen * 4) + .colorAverage() + .build(); + + CobaltSulfateSolution.setFormula("(CoSO4)(H2O)", true) UltramaficTailingSlurry = new Material.Builder(8486, SuSyUtility.susyId('ultramafic_tailing_slurry')) .liquid() @@ -3594,5 +3607,24 @@ public class FirstDegreeMaterials { .components(LithiumNitrate * 2, Water * 1) .colorAverage() .build() + + // FREE IDs: 8641-8649 + + AmmoniumHexachlororhodate = new Material.Builder(8650, SuSyUtility.susyId('ammonium_hexachlororhodate')) + .dust() + .components(Nitrogen * 3, Hydrogen * 12, Rhodium * 1, Chlorine * 6) + .colorAverage() + .build(); + + AmmoniumHexachlororhodate.setFormula('(NH4)3(RhCl6)', true); + + AmmoniumHexachloroiridate = new Material.Builder(8651, SuSyUtility.susyId('ammonium_hexachloroiridate')) + .dust() + .components(Nitrogen * 3, Hydrogen * 12, Iridium * 1, Chlorine * 6) + .colorAverage() + .build(); + + AmmoniumHexachloroiridate.setFormula('(NH4)2(IrCl6)', true); + } } diff --git a/groovy/material/OrganicChemistryMaterials.groovy b/groovy/material/OrganicChemistryMaterials.groovy index dc6050632..b800c03fa 100644 --- a/groovy/material/OrganicChemistryMaterials.groovy +++ b/groovy/material/OrganicChemistryMaterials.groovy @@ -173,6 +173,7 @@ public class OrganicChemistryMaterials { .components(Chloromethane * 1, Water * 1) .colorAverage() .build(); + OneTwoDichloroethylene = new Material.Builder(15025, SuSyUtility.susyId('one_two_dichloroethylene')) .liquid() @@ -249,7 +250,11 @@ public class OrganicChemistryMaterials { .colorAverage() .build(); - //FREE ID: 15038 + DiIsobutylene = new Material.Builder(15038, SuSyUtility.susyId('diisobutylene')) + .fluid() + .components(Carbon * 8, Hydrogen * 16) + .color(0xa79781) + .build(); MethylAcetateSolution = new Material.Builder(15039, SuSyUtility.susyId('methyl_acetate_solution')) .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) @@ -280,7 +285,11 @@ public class OrganicChemistryMaterials { .colorAverage() .build(); - //FREE ID: 15044 + SodiumHypophosphiteSolution = new Material.Builder(15044, SuSyUtility.susyId('sodium_hypophosphite_solution')) + .fluid() + .components(SodiumHypophosphite * 1, AceticAcid * 1) + .colorAverage() + .build(); DichlorobenzidineSolution = new Material.Builder(15045, SuSyUtility.susyId('dichlorobenzidine_solution')) .liquid() @@ -2596,5 +2605,36 @@ public class OrganicChemistryMaterials { .components(Butadiene * 3, Styrene * 1) .color(0x3b2d2b) .build(); + + TrimethylpentylphosphinicAcid = new Material.Builder(15414, SuSyUtility.susyId('trimethylpentylphosphinic_acid')) + .fluid() + .components(Carbon * 16, Hydrogen * 35, Oxygen * 2, Phosphorus * 1) + .colorAverage() + .build() + + OneHexanethiol = new Material.Builder(15415, SuSyUtility.susyId('one_hexanethiol')) + .fluid() + .components(Carbon * 6, Hydrogen * 14, Sulfur * 1) + .colorAverage() + .build() + + OneBromohexane = new Material.Builder(15416, SuSyUtility.susyId('one_bromohexane')) + .fluid() + .components(Carbon * 6, Hydrogen * 13, Bromine * 1) + .colorAverage() + .build() + + DiNHexylsulfide = new Material.Builder(15417, SuSyUtility.susyId('di_n_hexyl_sulfide')) + .fluid() + .components(Carbon * 12, Hydrogen * 26, Sulfur * 1) + .colorAverage() + .build() + + TriIsobutylene = new Material.Builder(15418, SuSyUtility.susyId('triisobutylene')) + .fluid() + .components(Carbon * 12, Hydrogen * 24) + .color(0xb9ac9a) + .build(); + } } diff --git a/groovy/material/SecondDegreeMaterials.groovy b/groovy/material/SecondDegreeMaterials.groovy index a1d87159a..3ee7435ff 100644 --- a/groovy/material/SecondDegreeMaterials.groovy +++ b/groovy/material/SecondDegreeMaterials.groovy @@ -713,33 +713,52 @@ public class SecondDegreeMaterials { .components(Iron * 8, Zinc * 1) .colorAverage() .build(); - - ImpureLithiumCarbonateSolution = new Material.Builder(13115, SuSyUtility.susyId("impure_lithium_carbonate_solution")) - .liquid() - .components(Carbon * 2, Lithium * 2, Oxygen * 3, Water) + + PotassiumPersulfateSolution = new Material.Builder(13115, SuSyUtility.susyId('potassium_persulfate_solution')) + .fluid() + .components(PotassiumPersulfate * 1, Water * 1) .colorAverage() - .build() - .setFormula("(C)(Li2CO3)(H2O)", true); + .build(); - LithiumCarbonateSolution = new Material.Builder(13116, SuSyUtility.susyId("lithium_carbonate_solution")) - .liquid() - .components(Lithium * 2, Carbon * 1, Oxygen * 3, Water) + PotassiumPersulfateSolution.setFormula("(K2S2O8)(H2O)", true) + + PotassiumOsmateSolution = new Material.Builder(13116, SuSyUtility.susyId('potassium_osmate_solution')) + .fluid() + .components(Potassium * 2, Osmium * 1, Oxygen * 7, Hydrogen * 6) + .color(0xbf21a0) + .build(); + + PotassiumOsmateSolution.setFormula("(K2[OsO2(OH)4])(H2O)", true) + + // FREE IDs: 13117-13129 + + HexachloroiridicAcidSolution = new Material.Builder(13130, SuSyUtility.susyId('hexachloroiridic_acid_solution')) + .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) + .components(HexachloroiridicAcid * 1, Water * 1) + .color(0x8f8f8f) + .build(); + + HexachlororhodicAcidSolution = new Material.Builder(13131, SuSyUtility.susyId('hexachlororhodic_acid_solution')) + .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) + .components(Hydrogen * 3, Rhodium * 1, Chlorine * 6, Water * 1) .colorAverage() - .build() - .setFormula("(Li2CO3)(H2O)", true); + .build(); - AcidicArgonHydrogenMixture = new Material.Builder(13117, SuSyUtility.susyId("acidic_argon_hydrogen_mixture")) - .gas(new FluidBuilder().attribute(FluidAttributes.ACID)) - .components(Argon, Hydrogen * 4, HydrogenChloride) + HexachlororuthenicAcidSolution = new Material.Builder(13132, SuSyUtility.susyId('hexachlororuthenic_acid_solution')) + .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) + .components(Hydrogen * 2, Ruthenium * 1, Chlorine * 6, Water * 1) .colorAverage() - .build() - .setFormula("(Ar)(HCl)(H)", true); + .build(); + + HexachlororuthenicAcidSolution.setFormula('(H2RuCl6)2(H2O)35', true) - AmmoniacalArgonHydrogenMixture = new Material.Builder(13118, SuSyUtility.susyId("ammoniacal_argon_hydrogen_mixture")) - .gas() - .components(Argon, Hydrogen * 4, Ammonia) + AmmoniumHexachlororuthenateSolution = new Material.Builder(13133, SuSyUtility.susyId('ammonium_hexachlororuthenate_solution')) + .liquid(new FluidBuilder()) + .components(Nitrogen * 2, Hydrogen * 8, Ruthenium * 1, Chlorine * 6, Water * 1) .colorAverage() - .build() - .setFormula("(Ar)(NH3)(H)", true) + .build(); + + AmmoniumHexachlororuthenateSolution.setFormula('([NH4]2RuCl6)2(H2O)35', true) + } } diff --git a/groovy/material/SuSyMaterials.groovy b/groovy/material/SuSyMaterials.groovy index 0a8aea276..76c44670d 100644 --- a/groovy/material/SuSyMaterials.groovy +++ b/groovy/material/SuSyMaterials.groovy @@ -522,10 +522,48 @@ class SuSyMaterials { public static Material SourWater; public static Material TypeYZeoliteSolution; public static Material TypeYZeolite; + public static Material GreenMatte; + public static Material WhiteMatte; + public static Material AcidicNickelCopperSulfateSolution; + public static Material OxidizedPGMLeach; + public static Material ImpureNickelSulfate; + public static Material CopperRichPGMSolids; + public static Material PGMCopperLeachSlurry; + public static Material PGMFreeCopperLeach; + public static Material PGMConcentrate; + public static Material SulfidicCopperLeach; + public static Material SeleniumFreeCopperLeach; + public static Material CopperSelenidePrecipitate; + public static Material SeleniumFreeCalcine; + public static Material NickelExtractionMixture; + public static Material NickelCobaltSulfate; + public static Material IronSulfateMotherLiquor; + public static Material NickelCobaltSulfateSolution; + public static Material CobaltExtractionMixture; + public static Material CobaltExtract; + public static Material CrudeTrimethylpentylphosphinicAcid; + public static Material AlkalineTrimethylpentylphosphinicAcid; + public static Material AcidifiedTrimethylpentylphosphinicAcid; + public static Material DehydratedTrimethylpentylphosphinicAcid; + public static Material OsmiumRutheniumFreePGMSolution; + public static Material SilverFreePGMSolution; + public static Material GoldFreePGMSolution; + public static Material GoldExtract; + public static Material PlatinumFreePGMSolution; + public static Material ChlorinatedPGMSolution; + public static Material ChlorateTreatedPGMSolution; + public static Material ScrubbedGoldExtract; + public static Material ChlorinatedPGMConcentrate; + public static Material PalladiumExtract; + public static Material RhodiumIridiumSolution; + public static Material RhodiumIridiumExtractionMixture; public static Material CobaltMatte; public static Material OrthoCresylicAcidMixture; public static Material CresolNovolacsOligomer; public static Material EpoxyCresolNovolacs; + public static Material OsmiumRutheniumTetroxideMixture; + public static Material OsmiumRutheniumSolution; + // Petrochem Materials @@ -1090,7 +1128,7 @@ class SuSyMaterials { public static Material CementedAlluvialPGMSolution; public static Material AlluvialPGM; public static Material AmmoniumMetatungstate; - public static Material Diamminedichloropalladium; + public static Material Diaminedichloropalladium; public static Material NickelIINitrateSolution; public static Material FerroniobiumTantalum; public static Material TantalumPentachloride; @@ -1170,6 +1208,8 @@ class SuSyMaterials { public static Material PotassiumPermanganate; public static Material LeadFreeSolder; public static Material CryogenicSolder; + public static Material SeleniumDioxide; + public static Material CobaltSulfateSolution; public static Material Kovar; public static Material ImpureLithiumCarbonate; public static Material WashedGraphene; @@ -1383,6 +1423,13 @@ class SuSyMaterials { public static Material LithiumCarbonateSolution; public static Material AcidicArgonHydrogenMixture; public static Material AmmoniacalArgonHydrogenMixture; + public static Material PotassiumPersulfateSolution; + public static Material PotassiumOsmateSolution; + public static Material TetraamminepalladiumDichloride; + public static Material HexachloroiridicAcidSolution; + public static Material HexachlororhodicAcidSolution; + public static Material HexachlororuthenicAcidSolution; + public static Material AmmoniumHexachlororuthenateSolution; // Organic Chemistry Materials @@ -1795,6 +1842,14 @@ class SuSyMaterials { public static Material CompoundedStyreneButadieneRubber; public static Material TwoSixXylenol; public static Material TwoFourFiveXylenolMixture; + public static Material TrimethylpentylphosphinicAcid; + public static Material DiIsobutylene; + public static Material TriIsobutylene; + public static Material DiIsobutyleneMixture; + public static Material SodiumHypophosphiteSolution; + public static Material OneHexanethiol; + public static Material OneBromohexane; + public static Material DiNHexylsulfide; // Third Degree Materials diff --git a/groovy/material/UnknownCompositionMaterials.groovy b/groovy/material/UnknownCompositionMaterials.groovy index 24f4580a8..9aa26e4eb 100644 --- a/groovy/material/UnknownCompositionMaterials.groovy +++ b/groovy/material/UnknownCompositionMaterials.groovy @@ -1985,5 +1985,202 @@ public class UnknownCompositionMaterials { .liquid() .color(0xc8cca1) .build(); + + + AcidicNickelCopperSulfateSolution = new Material.Builder(4427, SuSyUtility.susyId("acidic_nickel_copper_sulfate_solution")) + .fluid() + .color(0x502d0a) + .build(); + + OxidizedPGMLeach = new Material.Builder(4428, SuSyUtility.susyId("oxidized_pgm_leach")) + .fluid() + .color(0xe60e0e) + .build(); + + ImpureNickelSulfate = new Material.Builder(4429, SuSyUtility.susyId("impure_nickel_sulfate")) + .fluid() + .color(0xe60e0e) + .build(); + + CopperRichPGMSolids = new Material.Builder(4430, SuSyUtility.susyId("copper_rich_pgm_solids")) + .dust() + .color(0xe60e0e) + .build(); + + PGMCopperLeachSlurry = new Material.Builder(4431, SuSyUtility.susyId("pgm_copper_leach_slurry")) + .fluid() + .color(0xe60e0e) + .build(); + + PGMFreeCopperLeach = new Material.Builder(4432, SuSyUtility.susyId("pgm_free_copper_leach")) + .fluid() + .color(0xe60e0e) + .build(); + + PGMConcentrate = new Material.Builder(4433, SuSyUtility.susyId("pgm_concentrate")) + .dust() + .color(0xe60e0e) + .build(); + + SulfidicCopperLeach = new Material.Builder(4434, SuSyUtility.susyId("sulfidic_copper_leach")) + .fluid() + .color(0xe60e0e) + .build(); + + CopperSelenidePrecipitate = new Material.Builder(4435, SuSyUtility.susyId("copper_selenide_precipitate")) + .dust() + .color(0xe60e0e) + .build(); + + SeleniumFreeCopperLeach = new Material.Builder(4436, SuSyUtility.susyId("selenium_free_copper_leach")) + .fluid() + .color(0xe60e0e) + .build(); + + SeleniumFreeCalcine = new Material.Builder(4437, SuSyUtility.susyId("selenium_free_calcine")) + .dust() + .color(0xe60e0e) + .build(); + + NickelCobaltSulfate = new Material.Builder(4438, SuSyUtility.susyId("nickel_cobalt_sulfate")) + .dust() + .color(0xe60e0e) + //.components(Nickel * 1, Cobalt * 1, Sulfur, Oxygen * 4) + .build(); + + NickelCobaltSulfateSolution = new Material.Builder(4439, SuSyUtility.susyId("nickel_cobalt_sulfate_solution")) + .fluid() + .color(0xe60e0e) + .build(); + + IronSulfateMotherLiquor = new Material.Builder(4440, SuSyUtility.susyId("iron_sulfate_mother_liquor")) + .fluid() + .color(0xe60e0e) + .build(); + + CobaltExtractionMixture = new Material.Builder(4441, SuSyUtility.susyId("cobalt_extraction_mixture")) + .fluid() + .color(0xe60e0e) + .build(); + + CobaltExtract = new Material.Builder(4442, SuSyUtility.susyId("cobalt_extract")) + .fluid() + .color(0xe60e0e) + .build(); + + CrudeTrimethylpentylphosphinicAcid = new Material.Builder(4443, SuSyUtility.susyId("crude_trimethylpentylphosphinic_acid")) + .fluid() + .color(0xc4a335) + .build(); + + AlkalineTrimethylpentylphosphinicAcid = new Material.Builder(4444, SuSyUtility.susyId("alkaline_trimethylpentylphosphinic_acid")) + .fluid() + .color(0xe60e0e) + .build(); + + AcidifiedTrimethylpentylphosphinicAcid = new Material.Builder(4445, SuSyUtility.susyId("acidified_trimethylpentylphosphinic_acid")) + .fluid() + .color(0xe60e0e) + .build(); + + DehydratedTrimethylpentylphosphinicAcid = new Material.Builder(4446, SuSyUtility.susyId("dehydrated_trimethylpentylphosphinic_acid")) + .fluid() + .color(0xe60e0e) + .build(); + + OsmiumRutheniumFreePGMSolution = new Material.Builder(4447, SuSyUtility.susyId("os_ru_free_pgm_solution")) + .fluid() + .color(0xe0dcb6) + .build(); + + SilverFreePGMSolution = new Material.Builder(4448, SuSyUtility.susyId("silver_free_pgm_solution")) + .fluid() + .color(0xa3a18b) + .build(); + + GoldFreePGMSolution = new Material.Builder(4449, SuSyUtility.susyId("gold_free_pgm_solution")) + .fluid() + .color(0x82806b) + .build(); + + GoldExtract = new Material.Builder(4450, SuSyUtility.susyId("gold_extract")) + .fluid() + .color(0xe3d76b) + .build(); + + ScrubbedGoldExtract = new Material.Builder(4451, SuSyUtility.susyId("scrubbed_gold_extract")) + .fluid() + .color(0xf5e65f) + .build(); + + PlatinumFreePGMSolution = new Material.Builder(4452, SuSyUtility.susyId("platinum_free_pgm_solution")) + .fluid() + .color(0xbfb984) + .build(); + + ChlorinatedPGMSolution = new Material.Builder(4453, SuSyUtility.susyId("chlorinated_pgm_solution")) + .fluid() + .color(0xdbe0ad) + .build(); + + ChlorateTreatedPGMSolution = new Material.Builder(4454, SuSyUtility.susyId("chlorate_treated_pgm_solution")) + .fluid() + .color(0xccc9a9) + .build(); + + ChlorinatedPGMConcentrate = new Material.Builder(4455, SuSyUtility.susyId("chlorinated_pgm_concentrate")) + .fluid() + .color(0xaba07e) + .build(); + + PalladiumFreePGMSolution = new Material.Builder(4456, SuSyUtility.susyId("palladium_free_pgm_solution")) + .fluid() + .color(0xaba07e) + .build(); + + PalladiumExtract = new Material.Builder(4457, SuSyUtility.susyId("palladium_extract")) + .fluid() + .color(0xaba07e) + .build(); + + DiIsobutyleneMixture = new Material.Builder(4458, SuSyUtility.susyId('diisobutylene_mixture')) + .fluid() + .color(0x5d503e) + .build(); + + GreenMatte = new Material.Builder(4459, SuSyUtility.susyId("green_matte")) + .dust() + .color(0xa18922) + .iconSet(DULL) + .build(); + + WhiteMatte = new Material.Builder(4460, SuSyUtility.susyId("white_matte")) + .dust() + .color(0xd1bf71) + .iconSet(DULL) + .build(); + + // FREE IDs: 4461-4469 + + RhodiumIridiumSolution = new Material.Builder(4470, SuSyUtility.susyId("rh_ir_solution")) + .fluid() + .color(0x9177a1) + .build(); + + RhodiumIridiumExtractionMixture = new Material.Builder(4471, SuSyUtility.susyId("rh_ir_extraction_mixture")) + .fluid() + .color(0xb3abb8) + .build(); + + OsmiumRutheniumTetroxideMixture = new Material.Builder(4472, SuSyUtility.susyId("os_ru_tetroxide_mixture")) + .fluid() + .color(0x8e8e8e) + .build(); + + OsmiumRutheniumSolution = new Material.Builder(4473, SuSyUtility.susyId("os_ru_solution")) + .fluid() + .color(0x8e8e8e) + .build(); + } } diff --git a/groovy/postInit/chemistry/inorganic_chemistry/elements/d_block/group10/PlatinumGroupChain.groovy b/groovy/postInit/chemistry/inorganic_chemistry/elements/d_block/group10/PlatinumGroupChain.groovy index 8e5ebe6f0..73be2b49c 100644 --- a/groovy/postInit/chemistry/inorganic_chemistry/elements/d_block/group10/PlatinumGroupChain.groovy +++ b/groovy/postInit/chemistry/inorganic_chemistry/elements/d_block/group10/PlatinumGroupChain.groovy @@ -1,4 +1,4 @@ -import globals.Globals +import globals.Globals; BR = recipemap('batch_reactor') CSTR = recipemap('continuous_stirred_tank_reactor') @@ -9,117 +9,847 @@ MACERATOR = recipemap('macerator') SIFTER = recipemap('sifter') CRYSTALLIZER = recipemap('crystallizer') REACTION_FURNACE = recipemap('reaction_furnace') +GRAVITY_SEPARATOR = recipemap('gravity_separator') +FF = recipemap('froth_flotation') +CLARIFIER = recipemap('clarifier') +MIXER = recipemap('mixer') +EBF = recipemap('electric_blast_furnace') +ELECTROMAGNETIC_SEPARATOR = recipemap('electromagnetic_separator') +AUTOCLAVE = recipemap('autoclave') +ELECTROLYTIC_CELL = recipemap('electrolytic_cell') +SIFTER = recipemap('sifter') +DRYER = recipemap('dryer') +VACUUM_DT = recipemap('vacuum_distillation') +BCR = recipemap('bubble_column_reactor') +SIEVE_DT = recipemap('sieve_distillation') //LOW YIELD CHAIN FROM SECONDARY ORES MACERATOR.recipeBuilder() - .inputs(item('susy:resource_block', 10)) - .outputs(metaitem('dustAlluvialPgmSand') * 9) - .duration(160) - .EUt(30) - .buildAndRegister() + .inputs(item('susy:resource_block', 10)) + .outputs(metaitem('dustAlluvialPgmSand') * 9) + .duration(160) + .EUt(30) + .buildAndRegister() SIFTER.recipeBuilder() - .inputs(ore('dustAlluvialPgmSand')) - .outputs(metaitem('nuggetAlluvialPgm') * 4) - .outputs(metaitem('dustNetherQuartz') * 3) - .duration(160) - .EUt(30) - .buildAndRegister() + .inputs(ore('dustAlluvialPgmSand')) + .outputs(metaitem('nuggetAlluvialPgm') * 4) + .outputs(metaitem('dustNetherQuartz') * 3) + .duration(160) + .EUt(30) + .buildAndRegister() BR.recipeBuilder() - .inputs(ore('dustAlluvialPgm') * 2) - .fluidInputs(fluid('aqua_regia') * 12000) - .fluidInputs(fluid('nitric_acid') * 1000) - .fluidOutputs(fluid('alluvial_pgm_solution') * 5000) - .fluidOutputs(fluid('hydrogen') * 1000) - .fluidOutputs(fluid('nitrogen_dioxide') * 5000) - .duration(120) - .EUt(Globals.voltAmps[2]) - .buildAndRegister() + .inputs(ore('dustAlluvialPgm') * 2) + .fluidInputs(fluid('aqua_regia') * 12000) + .fluidInputs(fluid('nitric_acid') * 1000) + .fluidOutputs(fluid('alluvial_pgm_solution') * 5000) + .fluidOutputs(fluid('hydrogen') * 1000) + .fluidOutputs(fluid('nitrogen_dioxide') * 5000) + .duration(120) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() BR.recipeBuilder() - .inputs(ore('dustAnyPurityZinc')) - .fluidInputs(fluid('alluvial_pgm_solution') * 10000) - .outputs(metaitem('dustIronIiChloride') * 3) - .fluidOutputs(fluid('cemented_alluvial_pgm_solution') * 10000) - .duration(240) - .EUt(Globals.voltAmps[2]) - .buildAndRegister() + .inputs(ore('dustAnyPurityZinc')) + .fluidInputs(fluid('alluvial_pgm_solution') * 10000) + .outputs(metaitem('dustIronIiChloride') * 3) + .fluidOutputs(fluid('cemented_alluvial_pgm_solution') * 10000) + .duration(240) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() CRYSTALLIZER.recipeBuilder() // 2 H2PtCl6 + 4 NH4Cl --> 2 (NH4)2PtCl6 + 4 HCl - .circuitMeta(1) - .fluidInputs(fluid('cemented_alluvial_pgm_solution') * 10000) // 67% (NH4)2Pt, 33% H2PdCl4 - .fluidInputs(fluid('ammonium_chloride_solution') * 4000) - .chancedOutput(metaitem('dustAmmoniumHexachloroplatinate') * 34, 7500, 0) - .fluidOutputs(fluid('alluvial_platinum_mother_liquor') * 14000) - .duration(240) - .EUt(Globals.voltAmps[2]) - .buildAndRegister() + .circuitMeta(1) + .fluidInputs(fluid('cemented_alluvial_pgm_solution') * 10000) // 67% (NH4)2Pt, 33% H2PdCl4 + .fluidInputs(fluid('ammonium_chloride_solution') * 4000) + .chancedOutput(metaitem('dustAmmoniumHexachloroplatinate') * 34, 7500, 0) + .fluidOutputs(fluid('alluvial_platinum_mother_liquor') * 14000) + .duration(240) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() DISTILLATION_TOWER.recipeBuilder() - .fluidInputs(fluid('alluvial_platinum_mother_liquor') * 14000) - .chancedOutput(metaitem('dustZincChloride') * 3, 9000, 0) - .fluidOutputs(fluid('ammonium_chloride_solution') * 1000) - .fluidOutputs(fluid('water') * 13000) - .fluidOutputs(fluid('hydrogen_chloride') * 4000) - .duration(240) - .EUt(Globals.voltAmps[2]) - .buildAndRegister() + .fluidInputs(fluid('alluvial_platinum_mother_liquor') * 14000) + .chancedOutput(metaitem('dustZincChloride') * 3, 9000, 0) + .fluidOutputs(fluid('ammonium_chloride_solution') * 1000) + .fluidOutputs(fluid('water') * 13000) + .fluidOutputs(fluid('hydrogen_chloride') * 4000) + .duration(240) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() REACTION_FURNACE.recipeBuilder() - .inputs(ore('dustAmmoniumHexachloroplatinate') * 17) - .fluidInputs(fluid('hydrogen') * 4000) - .outputs(metaitem('sponge.platinum')) - .fluidOutputs(fluid('ammonia') * 2000) - .fluidOutputs(fluid('hydrogen_chloride') * 6000) - .duration(240) - .EUt(Globals.voltAmps[2]) - .buildAndRegister() + .inputs(ore('dustAmmoniumHexachloroplatinate') * 17) + .fluidInputs(fluid('hydrogen') * 4000) + .outputs(metaitem('sponge.platinum')) + .fluidOutputs(fluid('ammonia') * 2000) + .fluidOutputs(fluid('hydrogen_chloride') * 6000) + .duration(240) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() MACERATOR.recipeBuilder() - .inputs(metaitem('sponge.platinum')) - .outputs(metaitem('dustPlatinum')) - .duration(240) - .EUt(Globals.voltAmps[2]) - .buildAndRegister() + .inputs(metaitem('sponge.platinum')) + .outputs(metaitem('dustPlatinum')) + .duration(240) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() BR.recipeBuilder() - .notConsumable(ore('springCupronickel')) - .fluidInputs(fluid('alluvial_platinum_mother_liquor') * 14000) - .fluidOutputs(fluid('alluvial_divalent_palladium_solution') * 14000) - .fluidOutputs(fluid('chlorine') * 50) - .duration(120) - .EUt(Globals.voltAmps[2]) - .buildAndRegister() + .notConsumable(ore('springCupronickel')) + .fluidInputs(fluid('alluvial_platinum_mother_liquor') * 14000) + .fluidOutputs(fluid('alluvial_divalent_palladium_solution') * 14000) + .fluidOutputs(fluid('chlorine') * 50) + .duration(120) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() CRYSTALLIZER.recipeBuilder() - .fluidInputs(fluid('ammonia_solution') * 1000) - .fluidInputs(fluid('alluvial_divalent_palladium_solution') * 7000) //(H2PdCl4)(ZnCl2)(HCl)4(H2O)14 - .chancedOutput(metaitem('dustDiamminedichloropalladium') * 11, 3750, 0) - .fluidOutputs(fluid('alluvial_palladium_mother_liquor') * 8000) //(NH4Cl)2(ZnCl2)(HCl)4(H2O)16 - .duration(60) - .EUt(Globals.voltAmps[2]) - .buildAndRegister() + .fluidInputs(fluid('ammonia_solution') * 2000) + .fluidInputs(fluid('alluvial_divalent_palladium_solution') * 14000) //(H2PdCl4)(ZnCl2)(HCl)4(H2O)14 + .chancedOutput(metaitem('dustDiamminedichloropalladium') * 11, 7500, 0) + .fluidOutputs(fluid('alluvial_palladium_mother_liquor') * 16000) //(NH4Cl)2(ZnCl2)(HCl)4(H2O)16 + .duration(120) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() REACTION_FURNACE.recipeBuilder() - .inputs(ore('dustDiamminedichloropalladium') * 11) - .fluidInputs(fluid('hydrogen') * 4000) - .outputs(metaitem('dustPalladium')) - .fluidOutputs(fluid('ammonia') * 2000) - .fluidOutputs(fluid('hydrogen_chloride') * 2000) - .duration(240) - .EUt(Globals.voltAmps[2]) - .buildAndRegister() + .inputs(ore('dustDiamminedichloropalladium') * 11) + .fluidInputs(fluid('hydrogen') * 4000) + .outputs(metaitem('dustPalladium')) + .fluidOutputs(fluid('ammonia') * 2000) + .fluidOutputs(fluid('hydrogen_chloride') * 2000) + .duration(240) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() DISTILLATION_TOWER.recipeBuilder() - .fluidInputs(fluid('alluvial_palladium_mother_liquor') * 16000) - .chancedOutput(metaitem('dustZincChloride') * 3, 9500, 0) - .fluidOutputs(fluid('ammonium_chloride_solution') * 2000) - .fluidOutputs(fluid('water') * 14000) - .fluidOutputs(fluid('hydrogen_chloride') * 4000) - .duration(240) - .EUt(Globals.voltAmps[2]) - .buildAndRegister() + .fluidInputs(fluid('alluvial_palladium_mother_liquor') * 16000) + .chancedOutput(metaitem('dustZincChloride') * 3, 9500, 0) + .fluidOutputs(fluid('ammonium_chloride_solution') * 2000) + .fluidOutputs(fluid('water') * 14000) + .fluidOutputs(fluid('hydrogen_chloride') * 4000) + .duration(240) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() //MODERN SEPARATION PROCESSES +GRAVITY_SEPARATOR.recipeBuilder() + .inputs(ore('dustPentlandite')) + .outputs(metaitem('dustSiftedPentlandite')) + .chancedOutput(metaitem('dustUltramaficTailings'), 2500, 0) + .EUt(Globals.voltAmps[1]) + .duration(40) + .buildAndRegister() + +MIXER.recipeBuilder() + .inputs(ore('dustSiftedPentlandite') * 8) + .fluidInputs(fluid('distilled_water') * 2000) + .fluidOutputs(fluid('impure_pentlandite_slurry') * 2000) + .EUt(Globals.voltAmps[3]) + .duration(80) + .buildAndRegister() + +FF.recipeBuilder() + .fluidInputs(fluid('impure_pentlandite_slurry') * 2000) + .notConsumable(ore('dustAluminiumNitride')) + .notConsumable(ore('dustPotassiumOctylHydroxamate')) + .notConsumable(fluid('tnt_slurry') * 100) + .fluidOutputs(fluid('pentlandite_slurry') * 1000) + .fluidOutputs(fluid('ultramafic_tailing_slurry') * 1000) + .EUt(Globals.voltAmps[3]) + .duration(80) + .buildAndRegister() + +CLARIFIER.recipeBuilder() + .fluidInputs(fluid('pentlandite_slurry') * 1000) + .outputs(metaitem('dustFlotatedPentlandite') * 16) + .fluidOutputs(fluid('wastewater') * 1000) + .duration(20) + .EUt(Globals.voltAmps[1]) + .buildAndRegister() + +//The pelletized material is smelted in a shaft furnace to form a +//copper – nickel matte. Oxygen is then blown into the converter +//to oxidize the iron sulfide selectively to iron oxide, +//which forms a slag. +EBF.recipeBuilder() + .inputs(ore('dustFlotatedPentlandite') * 8) + .outputs(metaitem('dustGreenMatte') * 8) + .duration(20) + .blastFurnaceTemp(2700) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +ROASTER.recipeBuilder() + .inputs(ore('dustGreenMatte') * 8) + .fluidInputs(fluid('oxygen') * 4000) + .outputs(metaitem('white_matte') * 8) + .outputs(metaitem('dustIronIiiOxide') * 2) + .fluidOutputs(fluid('sulfur_dioxide') * 2000) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +MACERATOR.recipeBuilder() + .inputs(metaitem('white_matte')) + .outputs(metaitem('dustWhiteMatte')) + .duration(100) + .EUt(2) + .buildAndRegister() + +//method described in https://patentimages.storage.googleapis.com/2b/70/5a/cbb5549831857c/US4571262.pdf + +//atmospheric leach +BR.recipeBuilder() + .inputs(ore('dustWhiteMatte')) + .fluidInputs(fluid('air') * 9750) + .fluidInputs(fluid('acidic_nickel_copper_sulfate_solution')) + .fluidOutputs(fluid('oxidized_pgm_leach')) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +SIFTER.recipeBuilder() + .fluidInputs(fluid('oxidized_pgm_leach')) + .notConsumable(metaitem('item_filter')) + .fluidOutputs(fluid('impure_nickel_sulfate')) + .outputs(metaitem('dustCopperRichPgmSolids')) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +//pressure leach +AUTOCLAVE.recipeBuilder() + .fluidInputs(fluid('sulfuric_acid')) + .fluidInputs(fluid('acidic_nickel_copper_sulfate_solution')) + .inputs(ore('dustCopperRichPgmSolids')) + .fluidOutputs(fluid('pgm_copper_leach_slurry')) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +SIFTER.recipeBuilder() + .fluidInputs(fluid('pgm_copper_leach_slurry')) + .notConsumable(metaitem('item_filter')) + .fluidOutputs(fluid('pgm_free_copper_leach')) + .outputs(metaitem('dustPgmConcentrate')) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +//selenium extraction +CSTR.recipeBuilder() + .fluidInputs(fluid('pgm_free_copper_leach')) + .fluidInputs(fluid('sulfur_dioxide')) + .fluidOutputs(fluid('sulfidic_copper_leach')) + .duration(50) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +SIFTER.recipeBuilder() + .fluidInputs(fluid('sulfidic_copper_leach')) + .notConsumable(metaitem('item_filter')) + .fluidOutputs(fluid('selenium_free_copper_leach')) + .outputs(metaitem('dustCopperSelenidePrecipitate')) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +ROASTER.recipeBuilder() + .inputs(ore('dustCopperSelenidePrecipitate')) + .fluidInputs(fluid('air')) + .outputs(metaitem('dustSeleniumDioxide')) + .outputs(metaitem('dustSeleniumFreeCalcine')) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +//copper electrowinning +ELECTROLYTIC_CELL.recipeBuilder() + .fluidInputs(fluid('selenium_free_copper_leach')) + .inputs(ore('plateCopper')) + .notConsumable(ore('plateStainlessSteel')) + .fluidInputs(fluid('sulfuric_acid')) + .fluidOutputs(fluid('acidic_nickel_copper_sulfate_solution')) + .outputs(metaitem('dustCopper')) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +//cyanex production + +BR.recipeBuilder() + .inputs(ore('dustSodiumHypophosphite') * 3) + .fluidInputs(fluid('acetic_acid') * 1000) + .fluidOutputs(fluid('sodium_hypophosphite_solution') * 1000) //material + .duration(20) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +//diisobutylene production +// https://patents.google.com/patent/US7414164B2/en +// mostly from this patent: https://patents.google.com/patent/US5877372A/en +BR.recipeBuilder() + //.notConsumable(ore('dustAluminiumSilicate')) + .notConsumable(metaitem('beads.ag_fifty_w_x_eight')) + //dry sulfonic acid ion exchange resin like Amberlyst 15 or zeolite-based catalysts + .notConsumable(fluid('tert_butyl_alcohol') * 1) //1 to 30 wt % + .notConsumable(fluid('isooctane') * 1) //diluent, 90% isooctane and 10% isododecane/2,2,4,4,6 pentamethyl heptane + .fluidInputs(fluid('isobutylene') * 1000) + .fluidOutputs(fluid('diisobutylene_mixture') * 1000) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +DISTILLATION_TOWER.recipeBuilder() //90% yield converted to diisobutytlene? + .fluidInputs(fluid('diisobutylene_mixture') * 1000) + .fluidOutputs(fluid('isobutylene') * 90) + .fluidOutputs(fluid('diisobutylene') * 400) + .fluidOutputs(fluid('triisobutylene') * 20) +// ↓ this is not doable currently due to DT input restrictions +// .notConsumable(fluid('tert_butyl_alcohol') * 50) //not all tBuOH and isobutent reacts in the dimerization process + .duration(800) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +//source for trimethylpentylphosphinic acid WO2013083047A1 +BR.recipeBuilder() + .notConsumable(metaitem('emitter.lv')) + .fluidInputs(fluid('sodium_hypophosphite_solution') * 1000) + .fluidInputs(fluid('acetone') * 100) + .fluidInputs(fluid('diisobutylene') * 500) //material + .fluidOutputs(fluid('crude_trimethylpentylphosphinic_acid') * 1000) //material + .duration(100) + .EUt(Globals.voltAmps[2]) + .buildAndRegister(); + + +CENTRIFUGE.recipeBuilder() + .fluidInputs(fluid('crude_trimethylpentylphosphinic_acid') * 1000) + .fluidInputs(fluid('sodium_hydroxide_solution') * 1000) + .fluidOutputs(fluid('alkaline_trimethylpentylphosphinic_acid') * 1000) //material + .fluidOutputs(fluid('diluted_sodium_hydroxide_solution') * 1000) + .duration(100) + .EUt(Globals.voltAmps[2]) + .buildAndRegister(); + +MIXER.recipeBuilder() + .fluidInputs(fluid('alkaline_trimethylpentylphosphinic_acid') * 1000) + .fluidInputs(fluid('sulfuric_acid') * 1000) + .fluidOutputs(fluid('acidified_trimethylpentylphosphinic_acid') * 1000) //material + .fluidOutputs(fluid('diluted_sulfuric_acid') * 1000) + .duration(100) + .EUt(Globals.voltAmps[2]) + .buildAndRegister(); + +DRYER.recipeBuilder() + .fluidInputs(fluid('acidified_trimethylpentylphosphinic_acid') * 1000) + .fluidOutputs(fluid('dehydrated_trimethylpentylphosphinic_acid') * 1000) //material + .EUt(Globals.voltAmps[2]) + .duration(600) + .buildAndRegister() + +VACUUM_DT.recipeBuilder() + .fluidInputs(fluid('dehydrated_trimethylpentylphosphinic_acid') * 1000) + .fluidOutputs(fluid('trimethylpentylphosphinic_acid') * 1000) //new material + .duration(120) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +MIXER.recipeBuilder() + .fluidInputs(fluid('trimethylpentylphosphinic_acid') * 1000) + .fluidInputs(fluid('ortho_xylene') * 1000) + .fluidOutputs(fluid('cobalt_extraction_mixture') * 1000) + .duration(120) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() +//end cyanex chain + + +//input the impure nickel sulfate solution into a crystallizer +//it should make a mixture of cobalt and nickel sulfate dusts and a mother liquor of iron ii sulfate solution +//then redissolve and extract with cyanex + +// crystallisation step makes a nickel-cobalt solution and leaves behind an iron sulfate mother liquor +CRYSTALLIZER.recipeBuilder() + .fluidInputs(fluid('impure_nickel_sulfate')) + .fluidOutputs(fluid('iron_sulfate_mother_liquor')) + .outputs(metaitem('dustNickelCobaltSulfate')) + .duration(100) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +MIXER.recipeBuilder() + .inputs(ore('dustNickelCobaltSulfate')) + .fluidInputs(fluid('water')) + .fluidOutputs(fluid('nickel_cobalt_sulfate_solution')) + .duration(20) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +// cyanex-272 extractant makes cobalt sulfate leaving behind nickel sulfate solution +CENTRIFUGE.recipeBuilder() + .fluidInputs(fluid('cobalt_extraction_mixture')) + .fluidInputs(fluid('nickel_cobalt_sulfate_solution')) + .fluidOutputs(fluid('cobalt_extract')) + .fluidOutputs(fluid('nickel_sulfate_solution')) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +CENTRIFUGE.recipeBuilder() + .fluidInputs(fluid('cobalt_extract')) + .fluidInputs(fluid('diluted_sulfuric_acid')) + .fluidOutputs(fluid('cobalt_extraction_mixture')) + .fluidOutputs(fluid('cobalt_sulfate_solution')) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +//TODO For Pre-PGM Proc: +//-IronSulfateMotherLiquor Proc (me personally, I would precipitate it as a hydroxide or pressure autoclave in oxygen atmosphere to produce an iron oxide hydroxide is simpler to implement though) +//-Cobalt sulfate (is it a solution (probably, so I should update the formula for it)) +//-Maybe add a formula to cobalt extraction mixture, it's made from C8H10 + C16H35O2P + +//method described in original paper (renner 2001) + +// ELECTROMAGNETIC_SEPARATOR.recipeBuilder() +// .inputs(ore('dustWhiteMatte')) +// .outputs(metaitem('pgm_RichMatte')) +// .outputs(metaitem('pgm_FreeMatte')) +// .duration(20) +// .EUt(Globals.voltAmps[2]) +// .buildAndRegister() + +// AUTOCLAVE.recipeBuilder() +// .inputs(ore('pgm_RichMatte')) +// .fluidInputs(fluid('oxygen')) +// .fluidInputs(fluid('sulfuric_acid')) +// .outputs(fluid('dustPgm_concentrate')) +// .fluidOutputs(fluid('')) +// .duration(200) +// .EUt(Globals.voltAmps[2]) + + + +// PGM PROCESSING Tier 2 + +//Hydrochloric Acid solution +//Output: Solution Pt,Rh,Ir,Au,Ag +MIXER.recipeBuilder() + .fluidInputs(fluid('chlorine') * 1000) + .inputs(ore('dustPgmConcentrate')) + .fluidOutputs(fluid('chlorinated_pgm_concentrate') * 1000) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +MIXER.recipeBuilder() + .fluidInputs(fluid('hydrochloric_acid') * 1000) + .fluidInputs(fluid('chlorinated_pgm_concentrate') * 1000) + .fluidOutputs(fluid('pgm_solution') * 1000) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +//OSMIUM + +//a. contacting the mixture with an oxidizing solution (NaClO3) to form a volatile RuO4/OsO4 vapor; +//In acidic media, osmium is oxidized by peroxodisulfate to form OsO4 +//b. bubbling the OsO4 vapor through a KOH trapping solution to form an amount of K2[OsO4(OH)2] +//dissolved in the KOH trapping solution; +//c. contacting the dissolved K2[OsO4(OH)2] with a reducing agent (ethanol) to form an Os precipitate +//d. separating the Os precipitate from the KOH trapping solution +//adsorb oso4 distillate into koh solution (buble column) +//precipitate with ethanol + +// 2% ruthenium and 1% osmium +CSTR.recipeBuilder() + .fluidInputs(fluid('pgm_solution') * 100) + .fluidInputs(fluid('sodium_chlorate_solution') * 3) + .fluidOutputs(fluid('chlorate_treated_pgm_solution') * 100) + .duration(20) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +DISTILLATION_TOWER.recipeBuilder() + .fluidInputs(fluid('chlorate_treated_pgm_solution') * 1000) + .fluidOutputs(fluid('os_ru_tetroxide_mixture') * 90) + .fluidOutputs(fluid('os_ru_free_pgm_solution') * 910) + .duration(20) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +// OsO4 + 8RuO4 + 98HCl(H2O) -> H2OsCl6 + 8H3RuCl6 + 134H2O + 22Cl2 +// All of the fun byproducts are pretended to just stay in the Ru solution +// Also technically we should have hexachlororuthenic(III, IV) acid, but that's too complicated, so it's just Ru(IV) +BCR.recipeBuilder() + .fluidInputs(fluid('os_ru_tetroxide_mixture') * 90) + .fluidInputs(fluid('hydrochloric_acid') * 980) + .fluidOutputs(fluid('os_ru_solution') * 1430) + .fluidOutputs(fluid('chlorine') * 220) + .duration(60) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +// Distill out with hydrogen peroxide +// Base: H2OsCl6 + 5H2O2 -> OsO4 + 3Cl2 + 6H2O +// H2OsCl6 + 8H3RuCl6 + 134H2O + 5H2O2 -> OsO4 + 8H3RuCl6 + 140H2O + 3Cl2 +SIEVE_DT.recipeBuilder() + .fluidInputs(fluid('os_ru_solution') * 1430) + .fluidInputs(fluid('hydrogen_peroxide_solution') * 50) + .fluidOutputs(fluid('hexachlororuthenic_acid_solution') * 1480) + .fluidOutputs(fluid('osmium_tetroxide') * 10) + .fluidOutputs(fluid('chlorine') * 30) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +// 8H2RuCl6 + 140H2O + 16NH3 -> 8(NH4)2RuCl6 + 140H2O +// (Planet, is this correct?) +BCR.recipeBuilder() + .fluidInputs(fluid('hexachlororuthenic_acid_solution') * 1480) + .fluidInputs(fluid('ammonia') * 160) + .fluidOutputs(fluid('ammonium_hexachlororuthenate_solution') * 1480) + .duration(60) + .EUt(Globals.voltAmps[1]) + .buildAndRegister() + +// 8(NH4)2RuCl6 + 140H2O + 32H -> 16NH4Cl + 8Ru + 140H2O + 32HCl +// 2(NH4)2RuCl6 + 35H2O + 8H -> 4NH4Cl + 2Ru + 35H2O + 8HCl +// The input is 370 +REACTION_FURNACE.recipeBuilder() + .fluidInputs(fluid('ammonium_hexachlororuthenate_solution') * 370) + .fluidInputs(fluid('hydrogen') * 80) + .chancedOutput(metaitem('sponge.ruthenium') * 2, 100, 0) + .chancedOutput(ore('dustAmmoniumChloride') * 24, 100, 0) + .fluidOutputs(fluid('dense_steam') * 350) + .fluidOutputs(fluid('hydrogen_chloride') * 80) + .duration(500) + .EUt(Globals.voltAmps[3]) + +MACERATOR.recipeBuilder() + .inputs(metaitem('sponge.ruthenium')) + .outputs(metaitem('dustRuthenium')) + .duration(240) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +//OsO4 + C2H5OH + 2KOH → K2[OsO2(OH)4] + CH3CHO +BCR.recipeBuilder() + .fluidInputs(fluid('osmium_tetroxide') * 50) + .fluidInputs(fluid('potassium_hydroxide_solution') * 50) + .fluidInputs(fluid('ethanol') * 100) + .fluidOutputs(fluid('potassium_osmate_solution') * 50) //material + .fluidOutputs(fluid('gtfo_acetaldehyde') * 50) + .duration(20) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +//K2[OsO2(OH)4] + 3H2 → Os + 2KOH + 4H2O +ROASTER.recipeBuilder() + .fluidInputs(fluid('potassium_osmate_solution') * 1000) + .fluidInputs(fluid('hydrogen') * 3000) + .outputs(metaitem('sponge.osmium')) + .fluidOutputs(fluid('potassium_hydroxide_solution') * 2000) + .fluidOutputs(fluid('water') * 4000) + .duration(20) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +MACERATOR.recipeBuilder() + .inputs(metaitem('sponge.osmium')) + .outputs(metaitem('dustOsmium')) + .duration(240) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +//SILVER + +//Distillative removal of HCl +//Dilution with water +//Output: AgCl precipitate +//Output: Solution Pt,Pd,Rh,Ir,Au + +DISTILLATION_TOWER.recipeBuilder() + .fluidInputs(fluid('os_ru_free_pgm_solution') * 910) + .outputs(metaitem('dustSilverChloride') * 2) + .fluidOutputs(fluid('silver_free_pgm_solution') * 890) + .fluidOutputs(fluid('hydrogen_chloride')) + .duration(100) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +//GOLD + +//Liquid-liquid extraction +//stripping +//Output: H(AuCl4) extract +//Output: Raffinate Pt,Pd,Rh,Ir,Ru + +//extraction with dibutyl carbitol +CENTRIFUGE.recipeBuilder() + .fluidInputs(fluid('silver_free_pgm_solution') * 890) + .fluidInputs(fluid('dibutyl_carbitol') * 10) + .fluidOutputs(fluid('gold_extract') * 10) + .fluidOutputs(fluid('gold_free_pgm_solution') * 880) + .duration(100) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +//scrubbing gold extract +CENTRIFUGE.recipeBuilder() + .fluidInputs(fluid('gold_extract') * 1000) + .notConsumable(fluid('diluted_hydrochloric_acid')) + .fluidOutputs(fluid('scrubbed_gold_extract') * 1000) + .EUt(240) + .duration(120) + .buildAndRegister() + +//stripping with oxalic acid +//2HAuCl4 + 3C2H2O4 -> 2Au + 8HCl + 6CO2 +CENTRIFUGE.recipeBuilder() + .fluidInputs(fluid('scrubbed_gold_extract') * 2000) + .fluidInputs(fluid('oxalic_acid_solution') * 3000) + .fluidOutputs(fluid('dibutyl_carbitol') * 1000) + .fluidOutputs(fluid('hydrogen_chloride') * 8000) + .fluidOutputs(fluid('carbon_dioxide') * 6000) + .outputs(metaitem('dustGold') * 2) //needs to be calcinated + .EUt(240) + .duration(120) + .buildAndRegister() + + +//PLATINUM + +//Oxidation with Cl2 +//Reduction of Ir(IV) to Ir(III) +//Precipitation with NH4Cl +//Output: (NH4)2(PtCl6) precipitate +//Output: Solution Pd,Rh,Ir + +//solution + cl2 + h2c2o4*h2o -> solution with shit + co2 +//solution with shit + nh4cl*h2o -> (nh4)2[ptcl6] + platinum-free pgm solution +//(NH4)2[PtCl6] + 2H2 --350*c-> Pt + 2NH4Cl + 4HCl + +BR.recipeBuilder() + .fluidInputs(fluid('gold_free_pgm_solution') * 880) + .fluidInputs(fluid('oxalic_acid_solution') * 10) + .fluidOutputs(fluid('reduced_pgm_solution') * 880) + .fluidOutputs(fluid('carbon_dioxide') * 20) + .duration(20) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +BR.recipeBuilder() + .fluidInputs(fluid('reduced_pgm_solution') * 880) + .fluidInputs(fluid('ammonium_chloride_solution') * 1140) + .fluidOutputs(fluid('platinum_free_pgm_solution') * 310) + .chancedOutput(metaitem('dustAmmoniumHexachloroplatinate') * 17, 6064, 0) // The chance is 57 / 94 + .duration(20) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +//DNHS SYNTHESIS +//C6H12 + H2S --UV-> C6H14S +//C6H12 + HBr --UV, H2O2-> C6H13BRr +//C6H14S + C6H13Br -> C12H26S + HBr + +BR.recipeBuilder() + .notConsumable(metaitem('carbon_arc_lamp')) + .fluidInputs(fluid('one_hexene') * 50) + .fluidInputs(fluid('hydrogen_sulfide') * 50) + .fluidOutputs(fluid('one_hexanethiol') * 50) + .duration(20) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +BR.recipeBuilder() + .notConsumable(metaitem('carbon_arc_lamp')) + .fluidInputs(fluid('one_hexene') * 50) + .fluidInputs(fluid('hydrobromic_acid') * 50) + .fluidOutputs(fluid('one_bromohexane') * 50) + .duration(20) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +CSTR.recipeBuilder() + .fluidInputs(fluid('one_hexanethiol') * 50) + .fluidInputs(fluid('one_bromohexane') * 50) + .fluidOutputs(fluid('hydrobromic_acid') * 50) + .fluidOutputs(fluid('di_n_hexyl_sulfide') * 50) + .duration(20) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + + +//PALLADIUM + +//Solvent extraction with DNHS +//Stripping with NH3(aq) +//Output: (Pd(NH3)4)Cl2 extract +//Output: Solution Ir,Rh + +//Solution + di-n-hexyl-sulfide -> palladium extract + palladium-free pgm solution +//Extractant + (NH3)(H2O) -> (Pd(NH3)4)Cl2) +//(Pd(NH3)4)Cl2) + 2HCl -> (Pd(NH3)2)Cl2) + 2NH4Cl +//3[(Pd(NH3)2)Cl2)] -(inert atmosphere)-> 3Pd + 4NH4Cl + 2HCl + N2 + +CENTRIFUGE.recipeBuilder() + .fluidInputs(fluid('platinum_free_pgm_solution') * 310) + .fluidInputs(fluid('di_n_hexyl_sulfide') * 250) + .fluidOutputs(fluid('palladium_extract') * 250) + .fluidOutputs(fluid('rh_ir_solution') * 60) + .duration(100) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +CENTRIFUGE.recipeBuilder() + .fluidInputs(fluid('palladium_extract') * 1000) + .fluidInputs(fluid('ammonia_solution') * 1000) + .fluidOutputs(fluid('di_n_hexyl_sulfide') * 1000) + .fluidOutputs(fluid('tetraamminepalladium_dichloride') * 1000) + .duration(100) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +// Pd(NH3)4Cl2(H2O) + 2HCl + H2O -> 2NH4Cl(H2O) + Pd(NH3)2Cl2 +BR.recipeBuilder() + .fluidInputs(fluid('tetraamminepalladium_dichloride') * 1000) + .fluidInputs(fluid('hydrogen_chloride') * 2000) + .fluidInputs(fluid('water') * 1000) + .fluidOutputs(fluid('ammonium_chloride_solution') * 2000) + .outputs(metaitem('dustDiamminedichloropalladium') * 11) + .duration(20) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +//IRIDIUM + +//Oxidation with Cl2 +//Solvent extraction with TBP +//Stripping with H2O +//Output: H2(IrCl6) extract +//Output: Solution Rh + +// 2H3(IrCl6) + Cl2 + 2H2O + 2TBP -> 2H2(IrCl6)(TBP) + 2HCl(H2O) (Iridium solution) +// + +MIXER.recipeBuilder() + .fluidInputs(fluid('tributyl_phosphate') * 60) + .fluidInputs(fluid('rh_ir_solution') * 60) + .fluidOutputs(fluid('rh_ir_extraction_mixture') * 60) + .duration(20) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +CENTRIFUGE.recipeBuilder() + .fluidInputs(fluid('chlorine') * 5) + .fluidInputs(fluid('rh_ir_extraction_mixture') * 60) + .fluidOutputs(fluid('hexachlororhodic_acid_solution') * 50) + .fluidOutputs(fluid('hexachloroiridic_acid_solution') * 10) + .fluidOutputs(fluid('tributyl_phosphate') * 60) + .duration(80) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + + +CRYSTALLIZER.recipeBuilder + .fluidInputs(fluid('hexachloroiridic_acid_solution') * 1000) + .fluidInputs(fluid('ammonium') * 4000) + .output(metaitem('dustAmmoniumHexachloroIridate') * 21) + .fluidOutputs(fluid('water') * 1000) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +REACTION_FURNACE.recipeBuilder() + .inputs(ore('dustAmmoniumHexachloroIridate') * 21) + .fluidInputs(fluid('hydrogen') * 4000) + .outputs(metaitem('sponge.iridium')) + .outputs(metaitem('dustAmmoniumChloride') * 24) + .fluidOutputs(fluid('hydrogen_chloride') * 2000) + .duration(240) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +MACERATOR.recipeBuilder() + .inputs(metaitem('sponge.iridium')) + .outputs(metaitem('dustIridium')) + .duration(240) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + + + +//RHODIUM + +//Crystallization +//Output: (NH4)3(RhCl6) crystals + +CRYSTALLIZER.recipeBuilder + .fluidInputs(fluid('hexachlororhodic_acid_solution') * 1000) + .fluidInputs(fluid('ammonium') * 3000) + .output(metaitem('dustAmmoniumHexachlororhodate') * 21) + .fluidOutputs(fluid('water') * 1000) + .duration(200) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +REACTION_FURNACE.recipeBuilder() + .inputs(ore('dustAmmoniumHexachlororhodate') * 21) + .fluidInputs(fluid('hydrogen') * 3000) + .outputs(metaitem('sponge.rhodium')) + .outputs(metaitem('dustAmmoniumChloride') * 18) + .fluidOutputs(fluid('hydrogen_chloride') * 3000) + .duration(240) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +MACERATOR.recipeBuilder() + .inputs(metaitem('sponge.rhodium')) + .outputs(metaitem('dustRhodium')) + .duration(240) + .EUt(Globals.voltAmps[2]) + .buildAndRegister() + +// PGM PROCESSING Tier 3 + +//Begin with HCl solution of Pt,Pd,Rh,Ir,Au,Ag,Ru + +//Distillative removal of HCl +//Dilution with water +//Output: AgCl precipitate +//Output: Solution Pt,Pd,Rh,Ir,Au,Ru + +//Solvent Extraction with MIBK +//Reduction +//Output: Au precipitate +//Output: Solution Pt,Pd,Rh,Ir,Ru + +//Solvent Extraction with oxime +//Stripping +//Output: H2(PdCl4) Solution +//Output: Solution Pt,Rh,Ir,Ru + +//Solvent Extraction with amine +//Stripping +//Output: H2(PtCl6) Solution +//Output: Solution Ir,Rh,RU + +//Removal of NH4+ +//Oxidative Distillation +//Output: RuO4 distillate +//Output: Solution Ru,Ir + +//Amine Extraction +//Stripping +//Output: H2(IrCl6) Solution +//Output: Solution Rh + +//Ion Exchange +//Elution +//Output: H3(RhCl6) Solution diff --git a/groovy/postInit/chemistry/organic_chemistry/Extractants.groovy b/groovy/postInit/chemistry/organic_chemistry/Extractants.groovy index c6893e6a5..f9248e3b4 100755 --- a/groovy/postInit/chemistry/organic_chemistry/Extractants.groovy +++ b/groovy/postInit/chemistry/organic_chemistry/Extractants.groovy @@ -488,6 +488,8 @@ BR.recipeBuilder() .EUt(120) .buildAndRegister() + + //D2EHPA CENTRIFUGE.recipeBuilder() .fluidInputs(fluid('sodium_hydroxide_solution') * 1000) @@ -835,4 +837,12 @@ CHEMICAL_BATH.recipeBuilder() .outputs(metaitem('beads.rhenium_ion_exchange')) .EUt(120) .duration(200) - .buildAndRegister() \ No newline at end of file + .buildAndRegister() + +MIXER.recipeBuilder() + .fluidInputs(fluid('water') * 1000) + .fluidInputs(fluid('hydrogen_peroxide') * 1000) + .fluidOutputs(fluid('hydrogen_peroxide_solution') * 1000) + .EUt(7) + .duration(40) + .buildAndRegister() diff --git a/groovy/preInit/RegisterMetaItems.groovy b/groovy/preInit/RegisterMetaItems.groovy index 332c9342d..c1bbee328 100644 --- a/groovy/preInit/RegisterMetaItems.groovy +++ b/groovy/preInit/RegisterMetaItems.groovy @@ -100,7 +100,9 @@ eventManager.listen { customMetaItems.addItem(201, "vti_rich_pig_iron"); customMetaItems.addItem(202, "vt_slag"); - customMetaItems.addItem(210, "bound_leather") + customMetaItems.addItem(203, "white_matte") + + customMetaItems.addItem(210, "bound_leather") customMetaItems.addItem(212, "drone.lv").setMaxStackSize(1).addComponents(ElectricStats.createRechargeableBattery(10000, GTValues.LV)).setModelAmount(8).setCreativeTabs(GregTechAPI.TAB_GREGTECH_TOOLS); customMetaItems.addItem(213, "glass_fibers") @@ -290,6 +292,10 @@ eventManager.listen { customMetaItems.addItem(6206, "sponge.platinum") customMetaItems.addItem(6207, "sponge.cadmium") customMetaItems.addItem(6208, "sponge.indium") + customMetaItems.addItem(6209, "sponge.osmium") + customMetaItems.addItem(6210, "sponge.ruthenium") + customMetaItems.addItem(6211, "sponge.rhodium") + customMetaItems.addItem(6212, "sponge.iridium") // Anode slimes 6300-6400 customMetaItems.addItem(6300, "anode_slime.gold") diff --git a/groovy/prePostInit/ModifyRecipeMaps.groovy b/groovy/prePostInit/ModifyRecipeMaps.groovy index 56d394f82..4c7c000e2 100755 --- a/groovy/prePostInit/ModifyRecipeMaps.groovy +++ b/groovy/prePostInit/ModifyRecipeMaps.groovy @@ -29,6 +29,22 @@ GTRecipeHandler.removeAllRecipes(GTFORecipeMaps.GREENHOUSE_RECIPES); GTRecipeHandler.removeAllRecipes(RecipeMaps.VACUUM_RECIPES); GTRecipeHandler.removeAllRecipes(RecipeMaps.ELECTROLYZER_RECIPES); +//Add mixer recipes to blender + +/*RecipeMaps.MIXER_RECIPES.onRecipeBuild(recipeBuilder -> { + recipeBuilder.invalidateOnBuildAction(); + SuSyRecipeMaps.BLENDER_RECIPES.recipeBuilder() + .inputs(recipeBuilder.getInputs().toArray(new GTRecipeInput[0])) + .fluidInputs(recipeBuilder.getFluidInputs()) + .outputs(recipeBuilder.getOutputs()) + .chancedOutputs(recipeBuilder.getChancedOutputs()) + .fluidOutputs(recipeBuilder.getFluidOutputs()) + .cleanroom(recipeBuilder.getCleanroom()) + .duration((int) (recipeBuilder.duration / 4)) + .EUt(recipeBuilder.EUt) + .buildAndRegister(); +});*/ + GregTechAPI.materialManager.getRegisteredMaterials().forEach(material -> { if (material.hasProperty(PropertyKey.FLUID) && material.getProperty(PropertyKey.FLUID).getPrimaryKey() == SusyFluidStorageKeys.SLURRY) { Recipe recipe = RecipeMaps.EXTRACTOR_RECIPES.findRecipe(Integer.MAX_VALUE, Collections.singletonList(OreDictUnifier.get(OrePrefix.dust, material)), Collections.emptyList(), false); diff --git a/resources/gregtech/models/item/metaitems/sponge.iridium.json b/resources/gregtech/models/item/metaitems/sponge.iridium.json new file mode 100644 index 000000000..d6516cb15 --- /dev/null +++ b/resources/gregtech/models/item/metaitems/sponge.iridium.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "gregtech:items/metaitems/sponge.iridium" + } +} diff --git a/resources/gregtech/models/item/metaitems/sponge.osmium.json b/resources/gregtech/models/item/metaitems/sponge.osmium.json new file mode 100644 index 000000000..7ec13f4dd --- /dev/null +++ b/resources/gregtech/models/item/metaitems/sponge.osmium.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "gregtech:items/metaitems/sponge.osmium" + } +} \ No newline at end of file diff --git a/resources/gregtech/models/item/metaitems/sponge.rhodium.json b/resources/gregtech/models/item/metaitems/sponge.rhodium.json new file mode 100644 index 000000000..befd77364 --- /dev/null +++ b/resources/gregtech/models/item/metaitems/sponge.rhodium.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "gregtech:items/metaitems/sponge.rhodium" + } +} diff --git a/resources/gregtech/models/item/metaitems/sponge.ruthenium.json b/resources/gregtech/models/item/metaitems/sponge.ruthenium.json new file mode 100644 index 000000000..f158de697 --- /dev/null +++ b/resources/gregtech/models/item/metaitems/sponge.ruthenium.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "gregtech:items/metaitems/sponge.ruthenium" + } +} diff --git a/resources/gregtech/models/item/metaitems/white_matte.json b/resources/gregtech/models/item/metaitems/white_matte.json new file mode 100644 index 000000000..39ca31cd9 --- /dev/null +++ b/resources/gregtech/models/item/metaitems/white_matte.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/metaitems/white_matte" + } + } \ No newline at end of file diff --git a/resources/gregtech/textures/items/metaitems/sponge.iridium.png b/resources/gregtech/textures/items/metaitems/sponge.iridium.png new file mode 100644 index 000000000..095ededa2 Binary files /dev/null and b/resources/gregtech/textures/items/metaitems/sponge.iridium.png differ diff --git a/resources/gregtech/textures/items/metaitems/sponge.osmium.png b/resources/gregtech/textures/items/metaitems/sponge.osmium.png new file mode 100644 index 000000000..f9224b945 Binary files /dev/null and b/resources/gregtech/textures/items/metaitems/sponge.osmium.png differ diff --git a/resources/gregtech/textures/items/metaitems/sponge.rhodium.png b/resources/gregtech/textures/items/metaitems/sponge.rhodium.png new file mode 100644 index 000000000..87018bbce Binary files /dev/null and b/resources/gregtech/textures/items/metaitems/sponge.rhodium.png differ diff --git a/resources/gregtech/textures/items/metaitems/sponge.ruthenium.png b/resources/gregtech/textures/items/metaitems/sponge.ruthenium.png new file mode 100644 index 000000000..2ddbb7065 Binary files /dev/null and b/resources/gregtech/textures/items/metaitems/sponge.ruthenium.png differ diff --git a/resources/gregtech/textures/items/metaitems/white_matte.png b/resources/gregtech/textures/items/metaitems/white_matte.png new file mode 100644 index 000000000..dd679d707 Binary files /dev/null and b/resources/gregtech/textures/items/metaitems/white_matte.png differ