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