diff --git a/src/main/java/gregtech/api/capability/impl/PropertyFluidFilter.java b/src/main/java/gregtech/api/capability/impl/PropertyFluidFilter.java index deb8e12d8d3..e1146bb8e33 100644 --- a/src/main/java/gregtech/api/capability/impl/PropertyFluidFilter.java +++ b/src/main/java/gregtech/api/capability/impl/PropertyFluidFilter.java @@ -25,10 +25,14 @@ public PropertyFluidFilter(int maxFluidTemperature, boolean gasProof, boolean acidProof, boolean cryoProof, - boolean plasmaProof) { + boolean plasmaProof, + boolean baseProof, + boolean fluorideProof) { this.maxFluidTemperature = maxFluidTemperature; this.gasProof = gasProof; if (acidProof) setCanContain(FluidAttributes.ACID, true); + if (baseProof) setCanContain(FluidAttributes.BASE, true); + if (fluorideProof) setCanContain(FluidAttributes.FLUORIDE, true); this.cryoProof = cryoProof; this.plasmaProof = plasmaProof; } diff --git a/src/main/java/gregtech/api/fluids/attribute/FluidAttributes.java b/src/main/java/gregtech/api/fluids/attribute/FluidAttributes.java index b683d21c4fc..d895aa391cb 100644 --- a/src/main/java/gregtech/api/fluids/attribute/FluidAttributes.java +++ b/src/main/java/gregtech/api/fluids/attribute/FluidAttributes.java @@ -13,5 +13,30 @@ public final class FluidAttributes { list -> list.add(I18n.format("gregtech.fluid.type_acid.tooltip")), list -> list.add(I18n.format("gregtech.fluid_pipe.acid_proof"))); + /** + * Attribute for basic fluids. + */ + public static final FluidAttribute BASE = new FluidAttribute(gregtechId("base"), + list -> list.add(I18n.format("gregtech.fluid.type_base.tooltip")), + list -> list.add(I18n.format("gregtech.fluid_pipe.base_proof"))); + /** + * Attribute for strong fluoride anion containing fluids. + */ + public static final FluidAttribute FLUORIDE = new FluidAttribute(gregtechId("fluoride"), + list -> list.add(I18n.format("gregtech.fluid.type_fluoride.tooltip")), + list -> list.add(I18n.format("gregtech.fluid_pipe.fluoride_proof"))); + /** + * Attribute for oxidizing fluids. + */ + public static final FluidAttribute OXIDANT = new FluidAttribute(gregtechId("oxidant"), + list -> list.add(I18n.format("gregtech.fluid.type_oxidant.tooltip")), + list -> list.add(I18n.format("gregtech.fluid_pipe.oxidant_proof"))); + /** + * Attribute for reducing fluids. + */ + public static final FluidAttribute REDUCTANT = new FluidAttribute(gregtechId("reductant"), + list -> list.add(I18n.format("gregtech.fluid.type_reductant.tooltip")), + list -> list.add(I18n.format("gregtech.fluid_pipe.reductant_proof"))); + private FluidAttributes() {} } diff --git a/src/main/java/gregtech/api/fluids/store/FluidStorageKeys.java b/src/main/java/gregtech/api/fluids/store/FluidStorageKeys.java index 088035e57c2..589b183ba86 100644 --- a/src/main/java/gregtech/api/fluids/store/FluidStorageKeys.java +++ b/src/main/java/gregtech/api/fluids/store/FluidStorageKeys.java @@ -18,6 +18,12 @@ public final class FluidStorageKeys { m -> m.hasProperty(PropertyKey.DUST) ? "gregtech.fluid.liquid_generic" : "gregtech.fluid.generic", FluidState.LIQUID); + public static final FluidStorageKey DISTILLED_LIQUID = new FluidStorageKey(gregtechId("distilled_liquid"), + MaterialIconType.distilledLiquid, + m -> "distilled." + m.getName(), + m -> "gregtech.fluid.distilled_liquid", + FluidState.LIQUID, -1); + public static final FluidStorageKey GAS = new FluidStorageKey(gregtechId("gas"), MaterialIconType.gas, m -> prefixedRegistryName("gas.", FluidStorageKeys.GAS, m), diff --git a/src/main/java/gregtech/api/items/metaitem/FilteredFluidStats.java b/src/main/java/gregtech/api/items/metaitem/FilteredFluidStats.java index 75bfaae996b..d76b54c613b 100644 --- a/src/main/java/gregtech/api/items/metaitem/FilteredFluidStats.java +++ b/src/main/java/gregtech/api/items/metaitem/FilteredFluidStats.java @@ -29,7 +29,16 @@ public FilteredFluidStats(int capacity, boolean allowPartialFill, @Nullable IFil public FilteredFluidStats(int capacity, int maxFluidTemperature, boolean gasProof, boolean acidProof, boolean cryoProof, boolean plasmaProof, boolean allowPartialFill) { this(capacity, allowPartialFill, - new PropertyFluidFilter(maxFluidTemperature, gasProof, acidProof, cryoProof, plasmaProof)); + new PropertyFluidFilter(maxFluidTemperature, gasProof, acidProof, cryoProof, plasmaProof, false, + false)); + } + + public FilteredFluidStats(int capacity, int maxFluidTemperature, boolean gasProof, boolean acidProof, + boolean cryoProof, boolean plasmaProof, boolean allowPartialFill, boolean baseProof, + boolean fluorideProof) { + this(capacity, allowPartialFill, + new PropertyFluidFilter(maxFluidTemperature, gasProof, acidProof, cryoProof, plasmaProof, baseProof, + fluorideProof)); } @Override diff --git a/src/main/java/gregtech/api/unification/material/Material.java b/src/main/java/gregtech/api/unification/material/Material.java index 18770e5325c..b4147c1e5c0 100644 --- a/src/main/java/gregtech/api/unification/material/Material.java +++ b/src/main/java/gregtech/api/unification/material/Material.java @@ -435,6 +435,10 @@ public boolean hasFluid() { return hasProperty(PropertyKey.FLUID); } + public PhysicalProperties getPhysicalProperties() { + return this.getProperties().getProperty(PropertyKey.PHYSICAL_PROPERTIES); + } + public void verifyMaterial() { properties.verify(); flags.verify(this); @@ -594,6 +598,24 @@ public Builder gas(@NotNull FluidBuilder builder) { return fluid(FluidStorageKeys.GAS, builder.state(FluidState.GAS)); } + /** + * Add a distilled fluid for this material. + * + * @see #fluid(FluidStorageKey, FluidState) + */ + public Builder distilledFluid() { + return fluid(FluidStorageKeys.DISTILLED_LIQUID, FluidState.LIQUID); + } + + /** + * Add a distilled fluid for this material. + * + * @see #fluid(FluidStorageKey, FluidState) + */ + public Builder distilledFluid(@NotNull FluidBuilder builder) { + return fluid(FluidStorageKeys.DISTILLED_LIQUID, builder.state(FluidState.LIQUID)); + } + /** * Add a {@link DustProperty} to this Material.
* Will be created with a Harvest Level of 2 and no Burn Time (Furnace Fuel). @@ -1059,11 +1081,30 @@ public Builder fluidPipeProperties(int maxTemp, int throughput, boolean gasProof return this; } + public Builder fluidPipeProperties(int maxTemp, int throughput, boolean gasProof, boolean acidProof, + boolean cryoProof, boolean plasmaProof, boolean baseProof, + boolean fluorideProof) { + properties.setProperty(PropertyKey.FLUID_PIPE, + new FluidPipeProperties(maxTemp, throughput, gasProof, acidProof, cryoProof, plasmaProof, baseProof, + fluorideProof)); + return this; + } + public Builder itemPipeProperties(int priority, float stacksPerSec) { properties.setProperty(PropertyKey.ITEM_PIPE, new ItemPipeProperties(priority, stacksPerSec)); return this; } + public Builder physicalProperties(PhysicalProperties physicalProperties) { + properties.setProperty(PropertyKey.PHYSICAL_PROPERTIES, physicalProperties); + return this; + } + + public Builder physicalProperties(PhysicalProperties.Builder builder) { + properties.setProperty(PropertyKey.PHYSICAL_PROPERTIES, builder.build()); + return this; + } + // TODO Clean this up post 2.5 release @Deprecated public Builder addDefaultEnchant(Enchantment enchant, int level) { diff --git a/src/main/java/gregtech/api/unification/material/info/MaterialIconType.java b/src/main/java/gregtech/api/unification/material/info/MaterialIconType.java index 23d4589d3b5..fe3f6c81b41 100644 --- a/src/main/java/gregtech/api/unification/material/info/MaterialIconType.java +++ b/src/main/java/gregtech/api/unification/material/info/MaterialIconType.java @@ -87,6 +87,7 @@ public class MaterialIconType { // BLOCK TEXTURES public static final MaterialIconType liquid = new MaterialIconType("liquid"); + public static final MaterialIconType distilledLiquid = new MaterialIconType("distilled_liquid"); public static final MaterialIconType gas = new MaterialIconType("gas"); public static final MaterialIconType plasma = new MaterialIconType("plasma"); public static final MaterialIconType ore = new MaterialIconType("ore"); diff --git a/src/main/java/gregtech/api/unification/material/materials/ElementMaterials.java b/src/main/java/gregtech/api/unification/material/materials/ElementMaterials.java index 3687efcf6d7..d05671c0495 100644 --- a/src/main/java/gregtech/api/unification/material/materials/ElementMaterials.java +++ b/src/main/java/gregtech/api/unification/material/materials/ElementMaterials.java @@ -6,6 +6,7 @@ import gregtech.api.unification.Elements; import gregtech.api.unification.material.Material; import gregtech.api.unification.material.properties.BlastProperty.GasTier; +import gregtech.api.unification.material.properties.PhysicalProperties; import gregtech.api.unification.material.properties.PropertyKey; import gregtech.api.unification.material.properties.ToolProperty; @@ -26,6 +27,7 @@ public static void register() { Aluminium = new Material.Builder(2, gregtechId("aluminium")) .ingot() .liquid(new FluidBuilder().temperature(933)) + .physicalProperties(new PhysicalProperties.Builder().oxidizes().thermalConductivity(237)) .ore() .color(0x80C8F0) .flags(EXT2_METAL, GENERATE_GEAR, GENERATE_SMALL_GEAR, GENERATE_RING, GENERATE_FRAME, GENERATE_SPRING, @@ -59,12 +61,16 @@ public static void register() { Argon = new Material.Builder(5, gregtechId("argon")) .gas().plasma() + .physicalProperties(new PhysicalProperties.Builder() + .mp(84) + .bp(81)) .color(0x00FF00) .element(Elements.Ar) .build(); Arsenic = new Material.Builder(6, gregtechId("arsenic")) .dust() + .physicalProperties(new PhysicalProperties.Builder().oxidizes()) .gas(new FluidBuilder().temperature(887)) .color(0x676756) .element(Elements.As) @@ -77,6 +83,7 @@ public static void register() { Barium = new Material.Builder(8, gregtechId("barium")) .dust() + .physicalProperties(new PhysicalProperties.Builder().oxidizes()) .color(0x83824C).iconSet(METALLIC) .element(Elements.Ba) .build(); @@ -90,6 +97,11 @@ public static void register() { .ingot() .liquid(new FluidBuilder().temperature(1560)) .ore() + .physicalProperties(new PhysicalProperties.Builder() + .thermalConductivity(216) + .oxidizes() + .mp(1560) + .bp(2742)) .color(0x64B464).iconSet(METALLIC) .flags(STD_METAL, GENERATE_DOUBLE_PLATE) .element(Elements.Be) @@ -97,6 +109,7 @@ public static void register() { Bismuth = new Material.Builder(11, gregtechId("bismuth")) .ingot(1) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(8).mp(545).bp(1837)) .liquid(new FluidBuilder().temperature(545)) .color(0x64A0A0).iconSet(METALLIC) .element(Elements.Bi) @@ -109,23 +122,30 @@ public static void register() { Boron = new Material.Builder(13, gregtechId("boron")) .dust() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(27).mp(2349).bp(4200).oxidizes()) .color(0xD2FAD2) .element(Elements.B) .build(); Bromine = new Material.Builder(14, gregtechId("bromine")) + .fluid() .color(0x500A0A).iconSet(SHINY) .element(Elements.Br) .build(); Caesium = new Material.Builder(15, gregtechId("caesium")) - .dust() + .fluid() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(36).mp(302).bp(944).pyrophoric()) .color(0x80620B).iconSet(METALLIC) .element(Elements.Cs) .build(); Calcium = new Material.Builder(16, gregtechId("calcium")) .dust() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(201).mp(1115).bp(1757).pyrophoric()) .color(0xFFF5DE).iconSet(METALLIC) .element(Elements.Ca) .build(); @@ -143,13 +163,17 @@ public static void register() { .build(); Cadmium = new Material.Builder(19, gregtechId("cadmium")) - .dust() + .dust().fluid() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(97).mp(594).bp(1040).pyrophoric()) .color(0x32323C).iconSet(SHINY) .element(Elements.Cd) .build(); Cerium = new Material.Builder(20, gregtechId("cerium")) .dust() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(11).mp(1068).bp(3716).oxidizes()) .liquid(new FluidBuilder().temperature(1068)) .color(0x87917D).iconSet(METALLIC) .element(Elements.Ce) @@ -163,6 +187,8 @@ public static void register() { Chrome = new Material.Builder(22, gregtechId("chrome")) .ingot(3) + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(94).mp(2180).bp(2944).oxidizes()) .liquid(new FluidBuilder().temperature(2180)) .color(0xEAC4D8).iconSet(SHINY) .flags(EXT_METAL, GENERATE_ROTOR, GENERATE_DOUBLE_PLATE) @@ -174,6 +200,7 @@ public static void register() { Cobalt = new Material.Builder(23, gregtechId("cobalt")) .ingot() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(100).mp(1768).bp(3200)) .liquid(new FluidBuilder().temperature(1768)) .ore() // leave for TiCon ore processing .color(0x5050FA).iconSet(METALLIC) @@ -190,6 +217,8 @@ public static void register() { Copper = new Material.Builder(25, gregtechId("copper")) .ingot(1) + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(401).mp(1358).bp(2835).oxidizes()) .liquid(new FluidBuilder().temperature(1358)) .ore() .color(0xFF6400).iconSet(SHINY) @@ -224,6 +253,9 @@ public static void register() { .build(); Dysprosium = new Material.Builder(30, gregtechId("dysprosium")) + .ingot().fluid() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(11).mp(1680).bp(2840).pyrophoric()) .iconSet(METALLIC) .element(Elements.Dy) .build(); @@ -234,12 +266,16 @@ public static void register() { .build(); Erbium = new Material.Builder(32, gregtechId("erbium")) + .ingot().fluid() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(14).mp(1802).bp(3141)) .iconSet(METALLIC) .element(Elements.Er) .build(); Europium = new Material.Builder(33, gregtechId("europium")) .ingot() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(14).mp(1099).bp(1802).oxidizes()) .liquid(new FluidBuilder().temperature(1099)) .color(0x20FFFF).iconSet(METALLIC) .flags(STD_METAL, GENERATE_LONG_ROD, GENERATE_FINE_WIRE, GENERATE_SPRING, GENERATE_FOIL, GENERATE_FRAME, @@ -265,6 +301,7 @@ public static void register() { Fluorine = new Material.Builder(36, gregtechId("fluorine")) .gas(new FluidBuilder().customStill()) + .physicalProperties(new PhysicalProperties.Builder().mp(53).bp(85)) .color(0x6EA7DC) .element(Elements.F) .build(); @@ -275,25 +312,32 @@ public static void register() { .build(); Gadolinium = new Material.Builder(38, gregtechId("gadolinium")) + .ingot().fluid() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(11).mp(1545).bp(3546).oxidizes()) .color(0xDDDDFF).iconSet(METALLIC) .element(Elements.Gd) .build(); Gallium = new Material.Builder(39, gregtechId("gallium")) - .ingot() - .liquid(new FluidBuilder().temperature(303)) + .ingot().fluid() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(41).mp(303).bp(2676).oxidizes()) .color(0xDCDCFF).iconSet(SHINY) .flags(STD_METAL, GENERATE_FOIL) .element(Elements.Ga) .build(); Germanium = new Material.Builder(40, gregtechId("germanium")) + .ingot().fluid() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(60).mp(1211).bp(3106)) .color(0x434343).iconSet(SHINY) .element(Elements.Ge) .build(); Gold = new Material.Builder(41, gregtechId("gold")) .ingot() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(318).mp(1337).bp(3243)) .liquid(new FluidBuilder().temperature(1337)) .ore() .color(0xFFE650).iconSet(SHINY) @@ -306,7 +350,9 @@ public static void register() { .build(); Hafnium = new Material.Builder(42, gregtechId("hafnium")) - .ingot() + .ingot().fluid() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(23).mp(2506).bp(4876).oxidizes()) .color(0x99999A).iconSet(SHINY) .element(Elements.Hf) .blast(b -> b.temp(2227, GasTier.HIGH) @@ -352,18 +398,22 @@ public static void register() { Indium = new Material.Builder(48, gregtechId("indium")) .ingot() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(82).mp(430).bp(2345).oxidizes()) .liquid(new FluidBuilder().temperature(430)) .color(0x400080).iconSet(SHINY) .element(Elements.In) .build(); Iodine = new Material.Builder(49, gregtechId("iodine")) + .dust() .color(0x2C344F).iconSet(SHINY) .element(Elements.I) .build(); Iridium = new Material.Builder(50, gregtechId("iridium")) .ingot(3) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(147).mp(2719).bp(4403)) .liquid(new FluidBuilder().temperature(2719)) .color(0xA1E4E4).iconSet(METALLIC) .flags(EXT2_METAL, GENERATE_DOUBLE_PLATE, GENERATE_FINE_WIRE, GENERATE_GEAR, GENERATE_FRAME) @@ -378,6 +428,8 @@ public static void register() { Iron = new Material.Builder(51, gregtechId("iron")) .ingot() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(80).mp(1811).bp(3134).oxidizes()) .liquid(new FluidBuilder().temperature(1811)) .plasma() .ore() @@ -395,12 +447,15 @@ public static void register() { Krypton = new Material.Builder(52, gregtechId("krypton")) .gas(new FluidBuilder() .customStill()) + .physicalProperties(new PhysicalProperties.Builder().mp(116).bp(120)) .color(0x80FF80) .element(Elements.Kr) .build(); Lanthanum = new Material.Builder(53, gregtechId("lanthanum")) .dust() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(13).mp(1193).bp(3737).oxidizes()) .liquid(new FluidBuilder().temperature(1193)) .color(0x5D7575).iconSet(METALLIC) .element(Elements.La) @@ -413,6 +468,8 @@ public static void register() { Lead = new Material.Builder(55, gregtechId("lead")) .ingot(1) + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(35).mp(600).bp(2022).oxidizes()) .liquid(new FluidBuilder().temperature(600)) .ore() .color(0x8C648C) @@ -425,6 +482,8 @@ public static void register() { Lithium = new Material.Builder(56, gregtechId("lithium")) .dust() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(85).mp(454).bp(1603).oxidizes()) .liquid(new FluidBuilder().temperature(454)) .ore() .color(0xBDC7DB) @@ -438,6 +497,8 @@ public static void register() { Lutetium = new Material.Builder(58, gregtechId("lutetium")) .dust() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(16).mp(1925).bp(3675).oxidizes()) .liquid(new FluidBuilder().temperature(1925)) .color(0x00AAFF).iconSet(METALLIC) .element(Elements.Lu) @@ -445,6 +506,8 @@ public static void register() { Magnesium = new Material.Builder(59, gregtechId("magnesium")) .dust() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(156).mp(923).bp(1363).hygroscopic()) .liquid(new FluidBuilder().temperature(923)) .color(0xFFC8C8).iconSet(METALLIC) .element(Elements.Mg) @@ -457,6 +520,8 @@ public static void register() { Manganese = new Material.Builder(61, gregtechId("manganese")) .ingot() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(8).mp(1519).bp(2334).oxidizes()) .liquid(new FluidBuilder().temperature(1519)) .color(0xCDE1B9) .flags(STD_METAL, GENERATE_FOIL, GENERATE_BOLT_SCREW) @@ -477,6 +542,7 @@ public static void register() { Molybdenum = new Material.Builder(64, gregtechId("molybdenum")) .ingot() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(138).mp(2896).bp(4912)) .liquid(new FluidBuilder().temperature(2896)) .ore() .color(0xB4B4DC).iconSet(SHINY) @@ -492,6 +558,8 @@ public static void register() { Neodymium = new Material.Builder(66, gregtechId("neodymium")) .ingot().fluid().ore() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(17).mp(1295).bp(3347).oxidizes()) .color(0x646464).iconSet(METALLIC) .flags(STD_METAL, GENERATE_ROD, GENERATE_BOLT_SCREW) .element(Elements.Nd) @@ -501,6 +569,7 @@ public static void register() { Neon = new Material.Builder(67, gregtechId("neon")) .gas() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(18).mp(25).bp(27)) .color(0xFAB4B4) .element(Elements.Ne) .build(); @@ -512,6 +581,8 @@ public static void register() { Nickel = new Material.Builder(69, gregtechId("nickel")) .ingot() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(91).mp(1728).bp(3003).oxidizes()) .liquid(new FluidBuilder().temperature(1728)) .plasma() .ore() @@ -529,6 +600,8 @@ public static void register() { Niobium = new Material.Builder(71, gregtechId("niobium")) .ingot().fluid() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(54).mp(2750).bp(5017).oxidizes()) .color(0xBEB4C8).iconSet(METALLIC) .element(Elements.Nb) .blast(b -> b @@ -554,6 +627,8 @@ public static void register() { Osmium = new Material.Builder(75, gregtechId("osmium")) .ingot(4) + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(88).mp(3306).bp(5281).oxidizes()) .liquid(new FluidBuilder().temperature(3306)) .color(0x3232FF).iconSet(METALLIC) .flags(EXT2_METAL, GENERATE_FOIL, GENERATE_DOUBLE_PLATE) @@ -583,6 +658,7 @@ public static void register() { Palladium = new Material.Builder(77, gregtechId("palladium")) .ingot().fluid().ore() .color(0x808080).iconSet(SHINY) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(72).mp(1828).bp(3236)) .flags(EXT_METAL, GENERATE_FOIL, GENERATE_FINE_WIRE) .element(Elements.Pd) .blast(b -> b @@ -593,6 +669,7 @@ public static void register() { Phosphorus = new Material.Builder(78, gregtechId("phosphorus")) .dust() + .physicalProperties(new PhysicalProperties.Builder().pyrophoric()) .color(0xFFFF00) .element(Elements.P) .build(); @@ -604,6 +681,7 @@ public static void register() { Platinum = new Material.Builder(80, gregtechId("platinum")) .ingot() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(72).mp(2041).bp(4098)) .liquid(new FluidBuilder().temperature(2041)) .ore() .color(0xFFFFC8).iconSet(SHINY) @@ -630,23 +708,33 @@ public static void register() { Potassium = new Material.Builder(83, gregtechId("potassium")) .dust(1) - .liquid(new FluidBuilder().temperature(337)) + .fluid() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(103).mp(337).bp(1031).pyrophoric()) .color(0xBEDCFF).iconSet(METALLIC) .element(Elements.K) .build(); Praseodymium = new Material.Builder(84, gregtechId("praseodymium")) + .dust() .color(0xCECECE).iconSet(METALLIC) + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(13).mp(1204).bp(3403).oxidizes()) .element(Elements.Pr) .build(); Promethium = new Material.Builder(85, gregtechId("promethium")) + .dust() .iconSet(METALLIC) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(18).mp(1315).bp(3273)) .element(Elements.Pm) .build(); Protactinium = new Material.Builder(86, gregtechId("protactinium")) + .ingot() .color(0xA78B6D).iconSet(METALLIC) + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(47).oxidizes().mp(1841).bp(4300)) .element(Elements.Pa) .build(); @@ -662,12 +750,15 @@ public static void register() { .build(); Rhenium = new Material.Builder(89, gregtechId("rhenium")) + .ingot().fluid() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(48).mp(3459).bp(5903)) .color(0xB6BAC3).iconSet(SHINY) .element(Elements.Re) .build(); Rhodium = new Material.Builder(90, gregtechId("rhodium")) .ingot().fluid() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(150).mp(2237).bp(3698)) .color(0xDC0C58).iconSet(BRIGHT) .flags(EXT2_METAL, GENERATE_GEAR, GENERATE_FINE_WIRE) .element(Elements.Rh) @@ -684,11 +775,15 @@ public static void register() { Rubidium = new Material.Builder(92, gregtechId("rubidium")) .color(0xF01E1E).iconSet(SHINY) + .liquid(new FluidBuilder().temperature(312)) + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(58).pyrophoric().mp(312).bp(691)) .element(Elements.Rb) .build(); Ruthenium = new Material.Builder(93, gregtechId("ruthenium")) .ingot().fluid() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(117)) .color(0x50ACCD).iconSet(SHINY) .flags(GENERATE_FOIL, GENERATE_GEAR) .element(Elements.Ru) @@ -705,6 +800,7 @@ public static void register() { Samarium = new Material.Builder(95, gregtechId("samarium")) .ingot() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(13).oxidizes()) .liquid(new FluidBuilder().temperature(1345)) .color(0xFFFFCC).iconSet(METALLIC) .flags(GENERATE_LONG_ROD) @@ -716,6 +812,9 @@ public static void register() { .build(); Scandium = new Material.Builder(96, gregtechId("scandium")) + .ingot() + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(16).oxidizes().mp(1814).bp(3109)) .iconSet(METALLIC) .element(Elements.Sc) .build(); @@ -726,6 +825,8 @@ public static void register() { .build(); Selenium = new Material.Builder(98, gregtechId("selenium")) + .ingot() + .physicalProperties(new PhysicalProperties.Builder().mp(494).bp(958)) .color(0xB6BA6B).iconSet(SHINY) .element(Elements.Se) .build(); @@ -733,6 +834,7 @@ public static void register() { Silicon = new Material.Builder(99, gregtechId("silicon")) .ingot().fluid() .color(0x3C3C50).iconSet(METALLIC) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(149)) .flags(GENERATE_FOIL) .element(Elements.Si) .blast(2273) // no gas tier for silicon @@ -741,6 +843,7 @@ public static void register() { Silver = new Material.Builder(100, gregtechId("silver")) .ingot() .liquid(new FluidBuilder().temperature(1235)) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(429)) .ore() .color(0xDCDCFF).iconSet(SHINY) .flags(EXT2_METAL, GENERATE_DOUBLE_PLATE, MORTAR_GRINDABLE, GENERATE_FINE_WIRE, GENERATE_RING) @@ -750,12 +853,17 @@ public static void register() { Sodium = new Material.Builder(101, gregtechId("sodium")) .dust() + .liquid(new FluidBuilder().temperature(371)) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(142).pyrophoric()) .color(0x000096).iconSet(METALLIC) .element(Elements.Na) .build(); Strontium = new Material.Builder(102, gregtechId("strontium")) + .ingot() .color(0xC8C8C8).iconSet(METALLIC) + .physicalProperties( + new PhysicalProperties.Builder().thermalConductivity(35).oxidizes().mp(1050).bp(1650)) .element(Elements.Sr) .build(); @@ -768,6 +876,7 @@ public static void register() { Tantalum = new Material.Builder(104, gregtechId("tantalum")) .ingot() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(57).mp(3290).bp(5731)) .liquid(new FluidBuilder().temperature(3290)) .color(0x69B7FF).iconSet(METALLIC) .flags(STD_METAL, GENERATE_FOIL, GENERATE_FINE_WIRE) @@ -780,6 +889,8 @@ public static void register() { .build(); Tellurium = new Material.Builder(106, gregtechId("tellurium")) + .ingot() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(3).mp(723).bp(1261)) .iconSet(METALLIC) .element(Elements.Te) .build(); @@ -790,12 +901,17 @@ public static void register() { .build(); Terbium = new Material.Builder(108, gregtechId("terbium")) + .ingot() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(11) + .mp(1629) + .bp(3396)) .iconSet(METALLIC) .element(Elements.Tb) .build(); Thorium = new Material.Builder(109, gregtechId("thorium")) .ingot() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(54).oxidizes().hygroscopic()) .liquid(new FluidBuilder().temperature(2023)) .ore() .color(0x001E00).iconSet(SHINY) @@ -804,17 +920,22 @@ public static void register() { .build(); Thallium = new Material.Builder(110, gregtechId("thallium")) + .ingot() .color(0xC1C1DE).iconSet(SHINY) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(46).oxidizes()) .element(Elements.Tl) .build(); Thulium = new Material.Builder(111, gregtechId("thulium")) + .ingot() .iconSet(METALLIC) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(17).oxidizes()) .element(Elements.Tm) .build(); Tin = new Material.Builder(112, gregtechId("tin")) .ingot(1) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(67).mp(505).bp(2875)) .liquid(new FluidBuilder().temperature(505)) .plasma() .ore() @@ -830,6 +951,7 @@ public static void register() { // ores .ingot(3).fluid() .color(0xDCA0F0).iconSet(METALLIC) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(22).oxidizes()) .flags(EXT2_METAL, GENERATE_DOUBLE_PLATE, GENERATE_ROTOR, GENERATE_SMALL_GEAR, GENERATE_GEAR, GENERATE_FRAME) .element(Elements.Ti) @@ -853,6 +975,7 @@ public static void register() { Tungsten = new Material.Builder(115, gregtechId("tungsten")) .ingot(3) .liquid(new FluidBuilder().temperature(3695)) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(173)) .color(0x323232).iconSet(METALLIC) .flags(EXT2_METAL, GENERATE_SPRING, GENERATE_SPRING_SMALL, GENERATE_FOIL, GENERATE_GEAR, GENERATE_DOUBLE_PLATE) @@ -869,12 +992,14 @@ public static void register() { Uranium = new Material.Builder(116, gregtechId("uranium")) .dust(3) .liquid(new FluidBuilder().temperature(1405)) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(27).oxidizes()) .color(0x32F032).iconSet(METALLIC) .element(Elements.U) .build(); Uranium235 = new Material.Builder(117, gregtechId("uranium_235")) .dust(3) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(27).oxidizes()) .liquid(new FluidBuilder().temperature(1405)) .color(0x46FA46).iconSet(SHINY) .element(Elements.U235) @@ -882,6 +1007,7 @@ public static void register() { Vanadium = new Material.Builder(118, gregtechId("vanadium")) .ingot().fluid() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(31).oxidizes()) .color(0x323232).iconSet(METALLIC) .element(Elements.V) .blast(2183, GasTier.MID) @@ -894,12 +1020,15 @@ public static void register() { .build(); Ytterbium = new Material.Builder(120, gregtechId("ytterbium")) + .ingot().fluid() .color(0xA7A7A7).iconSet(METALLIC) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(38).oxidizes()) .element(Elements.Yb) .build(); Yttrium = new Material.Builder(121, gregtechId("yttrium")) .ingot().fluid() + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(17).oxidizes()) .color(0x76524C).iconSet(METALLIC) .element(Elements.Y) .blast(1799) @@ -908,6 +1037,7 @@ public static void register() { Zinc = new Material.Builder(122, gregtechId("zinc")) .ingot(1) .liquid(new FluidBuilder().temperature(693)) + .physicalProperties(new PhysicalProperties.Builder().thermalConductivity(116).pyrophoric()) .color(0xEBEBFA).iconSet(METALLIC) .flags(STD_METAL, MORTAR_GRINDABLE, GENERATE_FOIL, GENERATE_RING, GENERATE_FINE_WIRE) .element(Elements.Zn) @@ -915,6 +1045,8 @@ public static void register() { Zirconium = new Material.Builder(123, gregtechId("zirconium")) .ingot() + .physicalProperties(new PhysicalProperties.Builder() + .thermalConductivity(22)) .color(0xC8FFFF).iconSet(METALLIC) .element(Elements.Zr) .blast(b -> b.temp(2125, GasTier.MID) diff --git a/src/main/java/gregtech/api/unification/material/materials/FirstDegreeMaterials.java b/src/main/java/gregtech/api/unification/material/materials/FirstDegreeMaterials.java index ff2806d31d5..5380dcbea28 100644 --- a/src/main/java/gregtech/api/unification/material/materials/FirstDegreeMaterials.java +++ b/src/main/java/gregtech/api/unification/material/materials/FirstDegreeMaterials.java @@ -7,6 +7,7 @@ import gregtech.api.fluids.store.FluidStorageKeys; import gregtech.api.unification.material.Material; import gregtech.api.unification.material.properties.BlastProperty.GasTier; +import gregtech.api.unification.material.properties.PhysicalProperties; import gregtech.api.unification.material.properties.PropertyKey; import gregtech.api.unification.material.properties.ToolProperty; @@ -1216,19 +1217,26 @@ public static void register() { .build(); Ammonia = new Material.Builder(408, gregtechId("ammonia")) - .gas() + .liquid(new FluidBuilder().attributes(FluidAttributes.BASE).state(FluidState.GAS)) + .physicalProperties(new PhysicalProperties.Builder() + .mp(195) + .bp(240) + .hygroscopic()) .color(0x3F3480) .components(Nitrogen, 1, Hydrogen, 3) .build(); HydrofluoricAcid = new Material.Builder(409, gregtechId("hydrofluoric_acid")) - .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) + .liquid(new FluidBuilder().attributes(FluidAttributes.ACID, FluidAttributes.FLUORIDE)) .color(0x0088AA) .components(Hydrogen, 1, Fluorine, 1) .build(); NitricOxide = new Material.Builder(410, gregtechId("nitric_oxide")) .gas() + .physicalProperties(new PhysicalProperties.Builder() + .mp(109) + .bp(121)) .color(0x7DC8F0) .components(Nitrogen, 1, Oxygen, 1) .build(); @@ -1319,6 +1327,10 @@ public static void register() { SodiumPotassium = new Material.Builder(422, gregtechId("sodium_potassium")) .fluid() + .physicalProperties(new PhysicalProperties.Builder() + .mp(261) + .pyrophoric() + .thermalConductivity(22)) .color(0x64FCB4) .flags(DECOMPOSITION_BY_CENTRIFUGING) .components(Sodium, 1, Potassium, 1) @@ -1488,7 +1500,7 @@ public static void register() { FluoroantimonicAcid = new Material.Builder(438, gregtechId("fluoroantimonic_acid")) .liquid(new FluidBuilder() - .attribute(FluidAttributes.ACID) + .attributes(FluidAttributes.ACID, FluidAttributes.FLUORIDE) .customStill()) .color(0x8CA4C4) .components(Hydrogen, 2, Antimony, 1, Fluorine, 7) @@ -1496,6 +1508,11 @@ public static void register() { TitaniumTrifluoride = new Material.Builder(439, gregtechId("titanium_trifluoride")) .dust() + .liquid(new FluidBuilder().attributes(FluidAttributes.ACID, FluidAttributes.FLUORIDE).temperature(1470)) + .physicalProperties(new PhysicalProperties.Builder() + .hygroscopic() + .mp(1470) + .bp(1670)) .color(0x8F00FF).iconSet(SHINY) .flags(DISABLE_DECOMPOSITION) .components(Titanium, 1, Fluorine, 3) @@ -1541,6 +1558,11 @@ public static void register() { AntimonyTrifluoride = new Material.Builder(446, gregtechId("antimony_trifluoride")) .dust() + .liquid(new FluidBuilder().attributes(FluidAttributes.FLUORIDE)) + .physicalProperties(new PhysicalProperties.Builder() + .mp(565) + .bp(649) + .hygroscopic()) .color(0xF7EABC).iconSet(METALLIC) .flags(DISABLE_DECOMPOSITION) .components(Antimony, 1, Fluorine, 3) diff --git a/src/main/java/gregtech/api/unification/material/materials/OrganicChemistryMaterials.java b/src/main/java/gregtech/api/unification/material/materials/OrganicChemistryMaterials.java index 7bc82ca2805..1f03d2ce304 100644 --- a/src/main/java/gregtech/api/unification/material/materials/OrganicChemistryMaterials.java +++ b/src/main/java/gregtech/api/unification/material/materials/OrganicChemistryMaterials.java @@ -3,6 +3,7 @@ import gregtech.api.fluids.FluidBuilder; import gregtech.api.fluids.attribute.FluidAttributes; import gregtech.api.unification.material.Material; +import gregtech.api.unification.material.properties.PhysicalProperties; import static gregtech.api.unification.material.Materials.*; import static gregtech.api.unification.material.info.MaterialFlags.*; @@ -25,7 +26,9 @@ public static void register() { .setFormula("Si(CH3)2O", true); Nitrobenzene = new Material.Builder(1001, gregtechId("nitrobenzene")) - .gas() + .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().bp(484).mp(279)) .color(0x704936) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 6, Hydrogen, 5, Nitrogen, 1, Oxygen, 2) @@ -143,7 +146,7 @@ public static void register() { .color(0x646464) .flags(STD_METAL, GENERATE_FRAME, GENERATE_FOIL) .components(Carbon, 2, Fluorine, 4) - .fluidPipeProperties(600, 100, true, true, false, false) + .fluidPipeProperties(600, 100, true, true, false, false, true, true) .build(); Sugar = new Material.Builder(1017, gregtechId("sugar")) @@ -155,30 +158,39 @@ public static void register() { Methane = new Material.Builder(1018, gregtechId("methane")) .gas(new FluidBuilder().translation("gregtech.fluid.gas_generic")) + .physicalProperties(new PhysicalProperties.Builder().mp(91).bp(112).flameTemperature(2173) + .autoIgnitionTemperature(810)) .color(0xFF0078) .components(Carbon, 1, Hydrogen, 4) .build(); Epichlorohydrin = new Material.Builder(1019, gregtechId("epichlorohydrin")) .liquid(new FluidBuilder().customStill()) + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().mp(247).bp(391)) .color(0x640C04) .components(Carbon, 3, Hydrogen, 5, Chlorine, 1, Oxygen, 1) .build(); Monochloramine = new Material.Builder(1020, gregtechId("monochloramine")) - .gas() + .fluid() + .physicalProperties(new PhysicalProperties.Builder().mp(207)) .color(0x3F9F80) .components(Nitrogen, 1, Hydrogen, 2, Chlorine, 1) .build(); Chloroform = new Material.Builder(1021, gregtechId("chloroform")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().mp(210).bp(334)) .color(0x892CA0) .components(Carbon, 1, Hydrogen, 1, Chlorine, 3) .build(); Cumene = new Material.Builder(1022, gregtechId("cumene")) - .gas() + .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().mp(177).bp(425).autoIgnitionTemperature(697)) .color(0x552200) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 9, Hydrogen, 12) @@ -186,6 +198,7 @@ public static void register() { Tetrafluoroethylene = new Material.Builder(1023, gregtechId("tetrafluoroethylene")) .gas() + .physicalProperties(new PhysicalProperties.Builder().bp(197).mp(131)) .color(0x7D7D7D) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 2, Fluorine, 4) @@ -193,12 +206,15 @@ public static void register() { Chloromethane = new Material.Builder(1024, gregtechId("chloromethane")) .gas() + .physicalProperties(new PhysicalProperties.Builder().autoIgnitionTemperature(898).mp(176).bp(249)) .color(0xC82CA0) .components(Carbon, 1, Hydrogen, 3, Chlorine, 1) .build(); AllylChloride = new Material.Builder(1025, gregtechId("allyl_chloride")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().mp(138).bp(318).autoIgnitionTemperature(663)) .color(0x87DEAA) .components(Carbon, 2, Methane, 1, HydrochloricAcid, 1) .build() @@ -206,12 +222,16 @@ public static void register() { Isoprene = new Material.Builder(1026, gregtechId("isoprene")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().bp(307).mp(129)) .color(0x141414) .components(Carbon, 5, Hydrogen, 8) .build(); Propane = new Material.Builder(1027, gregtechId("propane")) .gas() + .physicalProperties(new PhysicalProperties.Builder().mp(86).bp(231).autoIgnitionTemperature(743) + .flameTemperature(2243)) .color(0xFAE250) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 3, Hydrogen, 8) @@ -219,6 +239,8 @@ public static void register() { Propene = new Material.Builder(1028, gregtechId("propene")) .gas() + .physicalProperties(new PhysicalProperties.Builder().bp(223).mp(88).flameTemperature(2223) + .autoIgnitionTemperature(728)) .color(0xFFDD55) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 3, Hydrogen, 6) @@ -226,6 +248,8 @@ public static void register() { Ethane = new Material.Builder(1029, gregtechId("ethane")) .gas() + .physicalProperties(new PhysicalProperties.Builder().mp(90).bp(185).autoIgnitionTemperature(745) + .flameTemperature(2235)) .color(0xC8C8FF) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 2, Hydrogen, 6) @@ -233,6 +257,8 @@ public static void register() { Butene = new Material.Builder(1030, gregtechId("butene")) .gas() + .physicalProperties(new PhysicalProperties.Builder().flameTemperature(2200).autoIgnitionTemperature(658) + .bp(267).mp(88)) .color(0xCF5005) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 4, Hydrogen, 8) @@ -240,6 +266,8 @@ public static void register() { Butane = new Material.Builder(1031, gregtechId("butane")) .gas() + .physicalProperties(new PhysicalProperties.Builder().mp(136).bp(273).autoIgnitionTemperature(678) + .flameTemperature(2200)) .color(0xB6371E) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 4, Hydrogen, 10) @@ -254,6 +282,9 @@ public static void register() { VinylAcetate = new Material.Builder(1033, gregtechId("vinyl_acetate")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().bp(346).mp(180).autoIgnitionTemperature(700) + .flameTemperature(2200)) .color(0xE1B380) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 4, Hydrogen, 6, Oxygen, 2) @@ -261,19 +292,25 @@ public static void register() { MethylAcetate = new Material.Builder(1034, gregtechId("methyl_acetate")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().bp(330).mp(175)) .color(0xEEC6AF) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 3, Hydrogen, 6, Oxygen, 2) .build(); Ethenone = new Material.Builder(1035, gregtechId("ethenone")) - .fluid() + .gas() + .physicalProperties(new PhysicalProperties.Builder().mp(123).bp(217)) .color(0x141446) .components(Carbon, 2, Hydrogen, 2, Oxygen, 1) .build(); Tetranitromethane = new Material.Builder(1036, gregtechId("tetranitromethane")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().bp(399).mp(287).flameTemperature(3780) + .autoIgnitionTemperature(533)) .color(0x0F2828) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 1, Nitrogen, 4, Oxygen, 8) @@ -281,6 +318,8 @@ public static void register() { Dimethylamine = new Material.Builder(1037, gregtechId("dimethylamine")) .gas() + .physicalProperties(new PhysicalProperties.Builder().autoIgnitionTemperature(674).mp(180).bp(282) + .flameTemperature(2500)) .color(0x554469) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 2, Hydrogen, 7, Nitrogen, 1) @@ -288,19 +327,26 @@ public static void register() { Dimethylhydrazine = new Material.Builder(1038, gregtechId("dimethylhydrazine")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().bp(337).mp(216).autoIgnitionTemperature(521) + .flameTemperature(2700)) .color(0x000055) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 2, Hydrogen, 8, Nitrogen, 2) .build(); DinitrogenTetroxide = new Material.Builder(1039, gregtechId("dinitrogen_tetroxide")) - .gas() + .liquid(new FluidBuilder().attributes(FluidAttributes.OXIDANT)) + .physicalProperties(new PhysicalProperties.Builder().mp(262).bp(295)) .color(0x570C02) .components(Nitrogen, 2, Oxygen, 4) .build(); Dimethyldichlorosilane = new Material.Builder(1040, gregtechId("dimethyldichlorosilane")) - .gas() + .liquid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().mp(197).bp(343).autoIgnitionTemperature(690) + .flameTemperature(2280)) .color(0x441650) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 2, Hydrogen, 6, Chlorine, 2, Silicon, 1) @@ -309,6 +355,8 @@ public static void register() { Styrene = new Material.Builder(1041, gregtechId("styrene")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().bp(418).mp(243)) .color(0xD2C8BE) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 8, Hydrogen, 8) @@ -316,6 +364,8 @@ public static void register() { Butadiene = new Material.Builder(1042, gregtechId("butadiene")) .gas() + .physicalProperties(new PhysicalProperties.Builder().mp(164).bp(269).autoIgnitionTemperature(687) + .flameTemperature(2223)) .color(0xB55A10) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 4, Hydrogen, 6) @@ -330,12 +380,16 @@ public static void register() { AceticAcid = new Material.Builder(1044, gregtechId("acetic_acid")) .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) + .physicalProperties(new PhysicalProperties.Builder().mp(290).bp(391).autoIgnitionTemperature(700) + .flameTemperature(2123)) .color(0xC8B4A0) .components(Carbon, 2, Hydrogen, 4, Oxygen, 2) .build(); Phenol = new Material.Builder(1045, gregtechId("phenol")) + .dust() .fluid() + .physicalProperties(new PhysicalProperties.Builder().bp(455).mp(314).hygroscopic()) .color(0x784421) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 6, Hydrogen, 6, Oxygen, 1) @@ -343,6 +397,7 @@ public static void register() { BisphenolA = new Material.Builder(1046, gregtechId("bisphenol_a")) .fluid() + .physicalProperties(new PhysicalProperties.Builder().mp(428).bp(525, 1722)) .color(0xD4AA00) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 15, Hydrogen, 16, Oxygen, 2) @@ -350,6 +405,8 @@ public static void register() { VinylChloride = new Material.Builder(1047, gregtechId("vinyl_chloride")) .gas() + .physicalProperties(new PhysicalProperties.Builder().bp(260).mp(119).autoIgnitionTemperature(745) + .flameTemperature(2180)) .color(0xE1F0F0) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 2, Hydrogen, 3, Chlorine, 1) @@ -357,6 +414,8 @@ public static void register() { Ethylene = new Material.Builder(1048, gregtechId("ethylene")) .gas() + .physicalProperties(new PhysicalProperties.Builder().mp(104).bp(170).autoIgnitionTemperature(816) + .flameTemperature(2250)) .color(0xE1E1E1) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 2, Hydrogen, 4) @@ -364,6 +423,9 @@ public static void register() { Benzene = new Material.Builder(1049, gregtechId("benzene")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().autoIgnitionTemperature(771).bp(353).mp(279) + .flameTemperature(2250)) .color(0x1A1A1A) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 6, Hydrogen, 6) @@ -371,18 +433,25 @@ public static void register() { Acetone = new Material.Builder(1050, gregtechId("acetone")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().autoIgnitionTemperature(738).bp(329).mp(178) + .flameTemperature(2250)) .color(0xAFAFAF) .components(Carbon, 3, Hydrogen, 6, Oxygen, 1) .build(); Glycerol = new Material.Builder(1051, gregtechId("glycerol")) .fluid() + .physicalProperties(new PhysicalProperties.Builder().bp(563).mp(291)) .color(0x87DE87) .components(Carbon, 3, Hydrogen, 8, Oxygen, 3) .build(); Methanol = new Material.Builder(1052, gregtechId("methanol")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().autoIgnitionTemperature(658).bp(338).mp(176) + .flameTemperature(2150)) .color(0xAA8800) .components(Carbon, 1, Hydrogen, 4, Oxygen, 1) .build(); @@ -391,6 +460,9 @@ public static void register() { Ethanol = new Material.Builder(1054, gregtechId("ethanol")) .liquid(new FluidBuilder().customStill().alternativeName("bio.ethanol")) + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().bp(351).mp(159).autoIgnitionTemperature(642) + .flameTemperature(2250)) .color(0xFC4C04) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 2, Hydrogen, 6, Oxygen, 1) @@ -398,20 +470,26 @@ public static void register() { Toluene = new Material.Builder(1055, gregtechId("toluene")) .liquid(new FluidBuilder().customStill()) + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().autoIgnitionTemperature(753).bp(384).mp(178) + .flameTemperature(2300)) .color(0x712400) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 7, Hydrogen, 8) .build(); DiphenylIsophtalate = new Material.Builder(1056, gregtechId("diphenyl_isophthalate")) - .fluid() + .liquid(new FluidBuilder().temperature(410)) + .dust() .color(0x246E57) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 20, Hydrogen, 14, Oxygen, 4) .build(); PhthalicAcid = new Material.Builder(1057, gregtechId("phthalic_acid")) - .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) + .dust() + .liquid(new FluidBuilder().attribute(FluidAttributes.ACID).temperature(480)) + .physicalProperties(new PhysicalProperties.Builder().mp(480)) .color(0xD1D1D1) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 8, Hydrogen, 6, Oxygen, 4) @@ -427,7 +505,7 @@ public static void register() { .setFormula("C6H4(CH3)2", true); Diaminobenzidine = new Material.Builder(1059, gregtechId("diaminobenzidine")) - .fluid() + .dust() .color(0x337D59) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 12, Hydrogen, 14, Nitrogen, 4) @@ -435,7 +513,7 @@ public static void register() { .setFormula("(C6H3(NH2)2)2", true); Dichlorobenzidine = new Material.Builder(1060, gregtechId("dichlorobenzidine")) - .fluid() + .dust() .color(0xA1DEA6) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 12, Hydrogen, 10, Chlorine, 2, Nitrogen, 2) @@ -451,6 +529,9 @@ public static void register() { Chlorobenzene = new Material.Builder(1062, gregtechId("chlorobenzene")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().mp(228).bp(405).autoIgnitionTemperature(813) + .flameTemperature(2220)) .color(0x326A3E) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 6, Hydrogen, 5, Chlorine, 1) @@ -458,6 +539,9 @@ public static void register() { Octane = new Material.Builder(1063, gregtechId("octane")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().flameTemperature(2420).autoIgnitionTemperature(493) + .bp(398).mp(216)) .flags(DISABLE_DECOMPOSITION) .color(0x8A0A09) .components(Carbon, 8, Hydrogen, 18) @@ -465,6 +549,9 @@ public static void register() { EthylTertButylEther = new Material.Builder(1064, gregtechId("ethyl_tertbutyl_ether")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().mp(179).bp(344).autoIgnitionTemperature(648) + .flameTemperature(2220)) .flags(DISABLE_DECOMPOSITION) .color(0xB15C06) .components(Carbon, 6, Hydrogen, 14, Oxygen, 1) @@ -472,12 +559,18 @@ public static void register() { Ethylbenzene = new Material.Builder(1066, gregtechId("ethylbenzene")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().autoIgnitionTemperature(703).bp(409).mp(178) + .flameTemperature(2220)) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 8, Hydrogen, 10) .build(); Naphthalene = new Material.Builder(1067, gregtechId("naphthalene")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().autoIgnitionTemperature(798).mp(351).bp(491) + .flameTemperature(2220)) .flags(DISABLE_DECOMPOSITION) .color(0xF4F4D7) .components(Carbon, 10, Hydrogen, 8) @@ -493,12 +586,16 @@ public static void register() { Cyclohexane = new Material.Builder(1069, gregtechId("cyclohexane")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().autoIgnitionTemperature(518).bp(354).mp(280) + .flameTemperature(2220)) .color(0xF2F2F2E7) .components(Carbon, 6, Hydrogen, 12) .build(); NitrosylChloride = new Material.Builder(1070, gregtechId("nitrosyl_chloride")) .gas() + .physicalProperties(new PhysicalProperties.Builder().bp(268).mp(214)) .flags(FLAMMABLE) .color(0xF3F100) .components(Nitrogen, 1, Oxygen, 1, Chlorine, 1) @@ -522,6 +619,9 @@ public static void register() { Butyraldehyde = new Material.Builder(1073, gregtechId("butyraldehyde")) .fluid() + .distilledFluid() + .physicalProperties(new PhysicalProperties.Builder().autoIgnitionTemperature(503).bp(348).mp(176) + .flameTemperature(2120)) .color(0x554A3F) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 4, Hydrogen, 8, Oxygen, 1) diff --git a/src/main/java/gregtech/api/unification/material/properties/FluidPipeProperties.java b/src/main/java/gregtech/api/unification/material/properties/FluidPipeProperties.java index 5bd1ce7e1ec..7758fb7e1ee 100644 --- a/src/main/java/gregtech/api/unification/material/properties/FluidPipeProperties.java +++ b/src/main/java/gregtech/api/unification/material/properties/FluidPipeProperties.java @@ -27,7 +27,12 @@ public class FluidPipeProperties implements IMaterialProperty, IPropertyFluidFil public FluidPipeProperties(int maxFluidTemperature, int throughput, boolean gasProof, boolean acidProof, boolean cryoProof, boolean plasmaProof) { - this(maxFluidTemperature, throughput, gasProof, acidProof, cryoProof, plasmaProof, 1); + this(maxFluidTemperature, throughput, gasProof, acidProof, cryoProof, plasmaProof, false, false, 1); + } + + public FluidPipeProperties(int maxFluidTemperature, int throughput, boolean gasProof, boolean acidProof, + boolean cryoProof, boolean plasmaProof, boolean baseProof, boolean fluorideProof) { + this(maxFluidTemperature, throughput, gasProof, acidProof, cryoProof, plasmaProof, baseProof, fluorideProof, 1); } /** @@ -35,7 +40,8 @@ public FluidPipeProperties(int maxFluidTemperature, int throughput, boolean gasP * {@link gregtech.common.pipelike.fluidpipe.FluidPipeType#modifyProperties(FluidPipeProperties)} */ public FluidPipeProperties(int maxFluidTemperature, int throughput, boolean gasProof, boolean acidProof, - boolean cryoProof, boolean plasmaProof, int tanks) { + boolean cryoProof, boolean plasmaProof, boolean baseProof, boolean fluorideProof, + int tanks) { this.maxFluidTemperature = maxFluidTemperature; this.throughput = throughput; this.gasProof = gasProof; @@ -43,6 +49,8 @@ public FluidPipeProperties(int maxFluidTemperature, int throughput, boolean gasP this.cryoProof = cryoProof; this.plasmaProof = plasmaProof; this.tanks = tanks; + if (baseProof) setCanContain(FluidAttributes.BASE, true); + if (fluorideProof) setCanContain(FluidAttributes.FLUORIDE, true); } /** @@ -122,6 +130,14 @@ public boolean isAcidProof() { return canContain(FluidAttributes.ACID); } + public boolean isBaseProof() { + return canContain(FluidAttributes.BASE); + } + + public boolean isFluorideProof() { + return canContain(FluidAttributes.FLUORIDE); + } + public boolean isCryoProof() { return cryoProof; } diff --git a/src/main/java/gregtech/api/unification/material/properties/PhysicalProperties.java b/src/main/java/gregtech/api/unification/material/properties/PhysicalProperties.java new file mode 100644 index 00000000000..bd9ab9cc5c7 --- /dev/null +++ b/src/main/java/gregtech/api/unification/material/properties/PhysicalProperties.java @@ -0,0 +1,134 @@ +package gregtech.api.unification.material.properties; + +import gregtech.api.unification.material.Material; + +import net.minecraft.client.resources.I18n; + +import com.github.bsideup.jabel.Desugar; +import com.google.common.base.Preconditions; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +@Desugar +public record PhysicalProperties(int bp, int bpPressure, int mp, int flameTemperature, int thermalConductivity, + int autoIgnitionTemperature, boolean isPyrophoric, boolean isHygroscopic, + boolean oxidizes) + implements IMaterialProperty { + + public static List createPhysicalPropertiesTooltip(@NotNull Material material) { + List tooltips = new ArrayList<>(); + + if (material.hasProperty(PropertyKey.PHYSICAL_PROPERTIES)) { + PhysicalProperties physicalProperties = material.getPhysicalProperties(); + + if (physicalProperties.isHygroscopic()) { + tooltips.add(I18n.format("gregtech.physical_properties.oxidizes")); + } + if (physicalProperties.isHygroscopic()) { + tooltips.add(I18n.format("gregtech.physical_properties.hygroscopic")); + } + if (physicalProperties.isPyrophoric()) { + tooltips.add(I18n.format("gregtech.physical_properties.pyrophoric")); + } + if (physicalProperties.mp() > 0) { + tooltips.add(I18n.format("gregtech.physical_properties.mp", physicalProperties.mp())); + } + if (physicalProperties.bp() > 0) { + if (physicalProperties.bpPressure() > 0) { + tooltips.add(I18n.format("gregtech.physical_properties.bp_pressure", physicalProperties.bp(), + physicalProperties.bpPressure())); + } else tooltips.add(I18n.format("gregtech.physical_properties.bp", physicalProperties.bp())); + } + if (physicalProperties.flameTemperature() > 0) { + tooltips.add(I18n.format("gregtech.physical_properties.flame_temperature", + physicalProperties.flameTemperature())); + } + if (physicalProperties.autoIgnitionTemperature() > 0) { + tooltips.add(I18n.format("gregtech.physical_properties.auto_ignition_temperature", + physicalProperties.autoIgnitionTemperature())); + } + if (physicalProperties.thermalConductivity() > 0) { + tooltips.add(I18n.format("gregtech.physical_properties.thermal_conductivity", + physicalProperties.thermalConductivity())); + } + } + return tooltips; + } + + public static class Builder { + + private int thermalConductivity = 0; + private int bp = 0; + private int mp = 0; + private int bpPressure = 0; + private int flameTemperature = 0; + private int autoIgnitionTemperature = 0; + private boolean isPyrophoric = false; + private boolean isHygroscopic = false; + private boolean oxidizes = false; + + public Builder thermalConductivity(int thermalConductivity) { + this.thermalConductivity = thermalConductivity; + return this; + } + + public Builder bp(int boilingPoint) { + Preconditions.checkArgument(boilingPoint > 0, "Boiling point must be > 0"); + this.bp = boilingPoint; + return this; + } + + public Builder bp(int boilingPoint, int boilingPressure) { + Preconditions.checkArgument(boilingPoint > 0, "Boiling point must be > 0"); + Preconditions.checkArgument(boilingPressure > 0, "Boiling pressure must be > 0"); + this.bp = boilingPoint; + this.bpPressure = boilingPressure; + return this; + } + + public Builder mp(int meltingPoint) { + Preconditions.checkArgument(meltingPoint > 0, "Melting point must be > 0"); + this.mp = meltingPoint; + return this; + } + + public Builder flameTemperature(int flameTemperature) { + Preconditions.checkArgument(flameTemperature > 0, "flameTemperature must be > 0"); + this.flameTemperature = flameTemperature; + return this; + } + + public Builder autoIgnitionTemperature(int autoIgnitionTemperature) { + Preconditions.checkArgument(autoIgnitionTemperature > 0, "autoIgnitionTemperature must be > 0"); + this.autoIgnitionTemperature = autoIgnitionTemperature; + return this; + } + + public Builder pyrophoric() { + this.isPyrophoric = true; + return this; + } + + public Builder hygroscopic() { + this.isHygroscopic = true; + return this; + } + + public Builder oxidizes() { + this.oxidizes = true; + return this; + } + + public PhysicalProperties build() { + return new PhysicalProperties(bp, bpPressure, mp, flameTemperature, thermalConductivity, + autoIgnitionTemperature, isPyrophoric, isHygroscopic, oxidizes); + } + } + + @Override + public void verifyProperty(MaterialProperties properties) { + properties.ensureSet(PropertyKey.PHYSICAL_PROPERTIES, true); + } +} diff --git a/src/main/java/gregtech/api/unification/material/properties/PropertyKey.java b/src/main/java/gregtech/api/unification/material/properties/PropertyKey.java index 5dc2234a40e..4c955611ebf 100644 --- a/src/main/java/gregtech/api/unification/material/properties/PropertyKey.java +++ b/src/main/java/gregtech/api/unification/material/properties/PropertyKey.java @@ -17,6 +17,8 @@ public class PropertyKey { public static final PropertyKey ROTOR = new PropertyKey<>("rotor", RotorProperty.class); public static final PropertyKey WIRE = new PropertyKey<>("wire", WireProperties.class); public static final PropertyKey WOOD = new PropertyKey<>("wood", WoodProperty.class); + public static final PropertyKey PHYSICAL_PROPERTIES = new PropertyKey<>( + "physical_properties", PhysicalProperties.class); // Empty property used to allow property-less Materials without removing base type enforcement public static final PropertyKey EMPTY = new PropertyKey<>("empty", EmptyProperty.class); diff --git a/src/main/java/gregtech/api/util/FluidTooltipUtil.java b/src/main/java/gregtech/api/util/FluidTooltipUtil.java index 5f2ccad8ed9..e06a76ea056 100644 --- a/src/main/java/gregtech/api/util/FluidTooltipUtil.java +++ b/src/main/java/gregtech/api/util/FluidTooltipUtil.java @@ -3,6 +3,7 @@ import gregtech.api.fluids.FluidState; import gregtech.api.fluids.GTFluid; import gregtech.api.unification.material.Material; +import gregtech.api.unification.material.properties.PhysicalProperties; import net.minecraft.client.resources.I18n; import net.minecraft.util.text.TextFormatting; @@ -97,7 +98,12 @@ public static Supplier> createFluidTooltip(@Nullable Material mater tooltip.add(TextFormatting.YELLOW + material.getChemicalFormula()); } + if (material != null) { + tooltip.addAll(PhysicalProperties.createPhysicalPropertiesTooltip(material)); + } + tooltip.add(I18n.format("gregtech.fluid.temperature", fluid.getTemperature())); + tooltip.add(I18n.format(fluidState.getTranslationKey())); if (fluid instanceof GTFluid gtFluid) { gtFluid.getAttributes().forEach(a -> a.appendFluidTooltips(tooltip)); diff --git a/src/main/java/gregtech/client/ClientProxy.java b/src/main/java/gregtech/client/ClientProxy.java index 7fb4773d478..6a0af22ac79 100644 --- a/src/main/java/gregtech/client/ClientProxy.java +++ b/src/main/java/gregtech/client/ClientProxy.java @@ -7,6 +7,7 @@ import gregtech.api.terminal.TerminalRegistry; import gregtech.api.unification.OreDictUnifier; import gregtech.api.unification.material.Materials; +import gregtech.api.unification.material.properties.PhysicalProperties; import gregtech.api.unification.stack.UnificationEntry; import gregtech.api.util.FluidTooltipUtil; import gregtech.api.util.IBlockOre; @@ -157,6 +158,9 @@ public static void addMaterialFormulaHandler(@NotNull ItemTooltipEvent event) { if (unificationEntry.material.getChemicalFormula() != null && !unificationEntry.material.getChemicalFormula().isEmpty()) tooltips.add(TextFormatting.YELLOW + unificationEntry.material.getChemicalFormula()); + + tooltips.addAll(PhysicalProperties.createPhysicalPropertiesTooltip(unificationEntry.material)); + } else if (itemStack.hasTagCompound()) { // Test for Fluids // Vanilla bucket // noinspection ConstantConditions diff --git a/src/main/java/gregtech/common/metatileentities/multi/MetaTileEntityMultiblockTank.java b/src/main/java/gregtech/common/metatileentities/multi/MetaTileEntityMultiblockTank.java index eeabc2cd762..0c3658f0e9d 100644 --- a/src/main/java/gregtech/common/metatileentities/multi/MetaTileEntityMultiblockTank.java +++ b/src/main/java/gregtech/common/metatileentities/multi/MetaTileEntityMultiblockTank.java @@ -60,7 +60,7 @@ protected void initializeInventory() { FilteredFluidHandler tank = new FilteredFluidHandler(capacity); if (!isMetal) { - tank.setFilter(new PropertyFluidFilter(340, false, false, false, false)); + tank.setFilter(new PropertyFluidFilter(340, false, false, false, false, false, false)); } this.exportFluids = this.importFluids = new FluidTankList(true, tank); diff --git a/src/main/java/gregtech/common/pipelike/fluidpipe/FluidPipeType.java b/src/main/java/gregtech/common/pipelike/fluidpipe/FluidPipeType.java index 2a99c200680..22732088030 100644 --- a/src/main/java/gregtech/common/pipelike/fluidpipe/FluidPipeType.java +++ b/src/main/java/gregtech/common/pipelike/fluidpipe/FluidPipeType.java @@ -65,6 +65,8 @@ public FluidPipeProperties modifyProperties(FluidPipeProperties baseProperties) baseProperties.isAcidProof(), baseProperties.isCryoProof(), baseProperties.isPlasmaProof(), + baseProperties.isBaseProof(), + baseProperties.isFluorideProof(), channels); } diff --git a/src/main/java/gregtech/common/pipelike/fluidpipe/net/FluidPipeNet.java b/src/main/java/gregtech/common/pipelike/fluidpipe/net/FluidPipeNet.java index e073fc74cce..807bc023ae7 100644 --- a/src/main/java/gregtech/common/pipelike/fluidpipe/net/FluidPipeNet.java +++ b/src/main/java/gregtech/common/pipelike/fluidpipe/net/FluidPipeNet.java @@ -21,6 +21,8 @@ protected void writeNodeData(FluidPipeProperties nodeData, NBTTagCompound tagCom tagCompound.setBoolean("cryo_proof", nodeData.isCryoProof()); tagCompound.setBoolean("plasma_proof", nodeData.isPlasmaProof()); tagCompound.setInteger("channels", nodeData.getTanks()); + tagCompound.setBoolean("base_proof", nodeData.isBaseProof()); + tagCompound.setBoolean("fluoride_proof", nodeData.isBaseProof()); } @Override @@ -32,7 +34,10 @@ protected FluidPipeProperties readNodeData(NBTTagCompound tagCompound) { boolean cryoProof = tagCompound.getBoolean("cryo_proof"); boolean plasmaProof = tagCompound.getBoolean("plasma_proof"); int channels = tagCompound.getInteger("channels"); + boolean baseProof = tagCompound.getBoolean("base_proof"); + boolean fluorideProof = tagCompound.getBoolean("fluoride_proof"); return new FluidPipeProperties(maxTemperature, throughput, gasProof, acidProof, cryoProof, plasmaProof, + baseProof, fluorideProof, channels); } } diff --git a/src/main/java/gregtech/loaders/recipe/chemistry/PolymerRecipes.java b/src/main/java/gregtech/loaders/recipe/chemistry/PolymerRecipes.java index 7a1531eeb7c..db9bfb4a311 100644 --- a/src/main/java/gregtech/loaders/recipe/chemistry/PolymerRecipes.java +++ b/src/main/java/gregtech/loaders/recipe/chemistry/PolymerRecipes.java @@ -359,18 +359,18 @@ private static void styreneButadieneProcess() { private static void polybenzimidazoleProcess() { CHEMICAL_RECIPES.recipeBuilder().EUt(VA[IV]).duration(100) - .fluidInputs(Diaminobenzidine.getFluid(1000)) - .fluidInputs(DiphenylIsophtalate.getFluid(1000)) + .input(dust, Diaminobenzidine) + .input(dust, DiphenylIsophtalate) .fluidOutputs(Phenol.getFluid(1000)) .fluidOutputs(Polybenzimidazole.getFluid(1008)) .buildAndRegister(); // 3,3-Diaminobenzidine LARGE_CHEMICAL_RECIPES.recipeBuilder().EUt(VA[IV]).duration(100) - .fluidInputs(Dichlorobenzidine.getFluid(1000)) + .input(dust, Dichlorobenzidine) .fluidInputs(Ammonia.getFluid(2000)) .notConsumable(dust, Zinc) - .fluidOutputs(Diaminobenzidine.getFluid(1000)) + .output(dust, Diaminobenzidine) .fluidOutputs(HydrochloricAcid.getFluid(2000)) .buildAndRegister(); @@ -378,14 +378,14 @@ private static void polybenzimidazoleProcess() { .input(dustTiny, Copper) .fluidInputs(Nitrochlorobenzene.getFluid(2000)) .fluidInputs(Hydrogen.getFluid(2000)) - .fluidOutputs(Dichlorobenzidine.getFluid(1000)) + .output(dust, Dichlorobenzidine) .buildAndRegister(); LARGE_CHEMICAL_RECIPES.recipeBuilder().EUt(VA[EV]).duration(1800) .input(dust, Copper) .fluidInputs(Nitrochlorobenzene.getFluid(18000)) .fluidInputs(Hydrogen.getFluid(18000)) - .fluidOutputs(Dichlorobenzidine.getFluid(9000)) + .output(dust, Dichlorobenzidine, 9) .buildAndRegister(); CHEMICAL_RECIPES.recipeBuilder().EUt(VA[HV]).duration(100) @@ -407,8 +407,8 @@ private static void polybenzimidazoleProcess() { LARGE_CHEMICAL_RECIPES.recipeBuilder().EUt(VA[IV]).duration(100) .fluidInputs(Phenol.getFluid(2000)) .fluidInputs(SulfuricAcid.getFluid(1000)) - .fluidInputs(PhthalicAcid.getFluid(1000)) - .fluidOutputs(DiphenylIsophtalate.getFluid(1000)) + .input(dust, PhthalicAcid) + .output(dust, DiphenylIsophtalate) .fluidOutputs(DilutedSulfuricAcid.getFluid(1000)) .buildAndRegister(); @@ -416,7 +416,7 @@ private static void polybenzimidazoleProcess() { .input(dustTiny, PotassiumDichromate) .fluidInputs(Dimethylbenzene.getFluid(1000)) .fluidInputs(Oxygen.getFluid(2000)) - .fluidOutputs(PhthalicAcid.getFluid(1000)) + .output(dust, PhthalicAcid) .fluidOutputs(Water.getFluid(2000)) .buildAndRegister(); @@ -424,24 +424,24 @@ private static void polybenzimidazoleProcess() { .input(dust, PotassiumDichromate) .fluidInputs(Dimethylbenzene.getFluid(9000)) .fluidInputs(Oxygen.getFluid(18000)) - .fluidOutputs(PhthalicAcid.getFluid(9000)) + .output(dust, PhthalicAcid, 9) .fluidOutputs(Water.getFluid(18000)) .buildAndRegister(); - LARGE_CHEMICAL_RECIPES.recipeBuilder().EUt(VA[LV]).duration(125) - .fluidInputs(Naphthalene.getFluid(2000)) - .fluidInputs(SulfuricAcid.getFluid(1000)) + LARGE_CHEMICAL_RECIPES.recipeBuilder().EUt(VA[LV]).duration(250) + .fluidInputs(Naphthalene.getFluid(4000)) + .fluidInputs(SulfuricAcid.getFluid(2000)) .input(dustTiny, Potassium) - .fluidOutputs(PhthalicAcid.getFluid(2500)) - .fluidOutputs(HydrogenSulfide.getFluid(1000)) + .output(dust, PhthalicAcid, 5) + .fluidOutputs(HydrogenSulfide.getFluid(2000)) .buildAndRegister(); - LARGE_CHEMICAL_RECIPES.recipeBuilder().EUt(VA[LV]).duration(1125) - .fluidInputs(Naphthalene.getFluid(18000)) - .fluidInputs(SulfuricAcid.getFluid(9000)) + LARGE_CHEMICAL_RECIPES.recipeBuilder().EUt(VA[LV]).duration(2250) + .fluidInputs(Naphthalene.getFluid(36000)) + .fluidInputs(SulfuricAcid.getFluid(18000)) .input(dust, Potassium) - .fluidOutputs(PhthalicAcid.getFluid(22500)) - .fluidOutputs(HydrogenSulfide.getFluid(9000)) + .output(dust, PhthalicAcid, 45) + .fluidOutputs(HydrogenSulfide.getFluid(18000)) .buildAndRegister(); LARGE_CHEMICAL_RECIPES.recipeBuilder().EUt(VA[MV]).duration(4000) diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index 5c78797a406..ebf6ad40d3e 100644 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -1874,9 +1874,9 @@ gregtech.material.chloromethane=Chloromethane gregtech.material.allyl_chloride=Allyl Chloride gregtech.material.isoprene=Isoprene gregtech.material.propane=Propane -gregtech.material.propene=Propene +gregtech.material.propene=Propylene gregtech.material.ethane=Ethane -gregtech.material.butene=Butene +gregtech.material.butene=Butylene gregtech.material.butane=Butane gregtech.material.dissolved_calcium_acetate=Dissolved Calcium Acetate gregtech.material.vinyl_acetate=Vinyl Acetate @@ -5440,6 +5440,7 @@ gregtech.fluid.liquid_generic=Liquid %s gregtech.fluid.gas_generic=%s Gas gregtech.fluid.gas_vapor=%s Vapor gregtech.fluid.plasma=%s Plasma +gregtech.fluid.distilled_liquid=Distilled %s gregtech.fluid.empty=Empty gregtech.fluid.amount=§9Amount: %,d/%,d L gregtech.fluid.temperature=§cTemperature: %,d K @@ -5448,6 +5449,21 @@ gregtech.fluid.state_gas=§aState: Gaseous gregtech.fluid.state_liquid=§aState: Liquid gregtech.fluid.state_plasma=§aState: Plasma gregtech.fluid.type_acid.tooltip=§6Acidic! Handle with care! +gregtech.fluid.type_base.tooltip=§6Basic! Handle with care! +gregtech.fluid.type_fluoride.tooltip=§6Fluoride! Handle with care! +gregtech.fluid.type_oxidant.tooltip=§6Oxidizing! Handle with care! +gregtech.fluid.type_reductant.tooltip=§6Reducting! Handle with care! + +gregtech.physical_properties.hygroscopic=§5Hygroscopic, absorbs air moisture! +gregtech.physical_properties.oxidizes=§6Oxidizes in air! +gregtech.physical_properties.pyrophoric=§cPyrophoric! Ignites spontaneously on exposure to air! +gregtech.physical_properties.thermal_conductivity=§dThermal Conductivity: §f%d W/Km +gregtech.physical_properties.mp=§emp: §f%d K +gregtech.physical_properties.bp=§ebp: §f%d K +gregtech.physical_properties.bp_pressure=§ebp: §f%d K §7at §f%d Pa +gregtech.physical_properties.flame_temperature=§6Flame Temperature: %d K +gregtech.physical_properties.auto_ignition_temperature=§6Autoignition Temperature: %d K + gregtech.gui.fuel_amount=Fuel Amount: gregtech.gui.fluid_amount=Fluid Amount: gregtech.gui.amount_raw=Amount: @@ -5599,7 +5615,11 @@ gregtech.fluid_pipe.max_temperature=§cTemperature Limit: §f%,d K gregtech.fluid_pipe.channels=§eChannels: §f%d gregtech.fluid_pipe.gas_proof=§6Can handle Gases gregtech.fluid_pipe.acid_proof=§6Can handle Acids +gregtech.fluid_pipe.base_proof=§6Can handle Bases +gregtech.fluid_pipe.oxidant_proof=§6Can handle Oxidants +gregtech.fluid_pipe.reductant_proof=§6Can handle Reductants gregtech.fluid_pipe.cryo_proof=§6Can handle Cryogenics +gregtech.fluid_pipe.fluoride_proof=§6Can handle Fluorides gregtech.fluid_pipe.plasma_proof=§6Can handle all Plasmas gregtech.fluid_pipe.not_gas_proof=§4Gases may leak! diff --git a/src/main/resources/assets/gregtech/textures/blocks/material_sets/dull/distilled_liquid.png b/src/main/resources/assets/gregtech/textures/blocks/material_sets/dull/distilled_liquid.png new file mode 100644 index 00000000000..0679323d4d2 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/material_sets/dull/distilled_liquid.png differ