aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/material/Material.java
diff options
context:
space:
mode:
authordraknyte1 <draknyte1@hotmail.com>2016-11-02 15:49:00 +1000
committerdraknyte1 <draknyte1@hotmail.com>2016-11-02 15:49:00 +1000
commitd594987b2cfdefa447ee585a68d4a4bef4ece3a5 (patch)
tree814813fc14ce5dcd8dfa7aeaecd939ac42d12877 /src/Java/gtPlusPlus/core/material/Material.java
parent26292158575a0f0acb51ae50715887f871d2b5a0 (diff)
parent49a520da5da01594b5c42652d9db5c7c04e49ad8 (diff)
downloadGT5-Unofficial-d594987b2cfdefa447ee585a68d4a4bef4ece3a5.tar.gz
GT5-Unofficial-d594987b2cfdefa447ee585a68d4a4bef4ece3a5.tar.bz2
GT5-Unofficial-d594987b2cfdefa447ee585a68d4a4bef4ece3a5.zip
Merge branch 'master' of https://github.com/draknyte1/GTplusplus
Diffstat (limited to 'src/Java/gtPlusPlus/core/material/Material.java')
-rw-r--r--src/Java/gtPlusPlus/core/material/Material.java477
1 files changed, 382 insertions, 95 deletions
diff --git a/src/Java/gtPlusPlus/core/material/Material.java b/src/Java/gtPlusPlus/core/material/Material.java
index 0902bf62f9..893b310ba4 100644
--- a/src/Java/gtPlusPlus/core/material/Material.java
+++ b/src/Java/gtPlusPlus/core/material/Material.java
@@ -1,97 +1,171 @@
package gtPlusPlus.core.material;
+import static gregtech.api.enums.GT_Values.M;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gtPlusPlus.core.item.base.cell.BaseItemCell;
import gtPlusPlus.core.util.Utils;
-import gtPlusPlus.core.util.item.UtilsItems;
+import gtPlusPlus.core.util.fluid.FluidUtils;
+import gtPlusPlus.core.util.item.ItemUtils;
+import gtPlusPlus.core.util.materials.MaterialUtils;
import gtPlusPlus.core.util.math.MathUtils;
+
+import java.util.ArrayList;
+
+import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
public class Material {
- final String unlocalizedName;
- final String localizedName;
+ private final String unlocalizedName;
+ private final String localizedName;
+
+ private final Fluid vMoltenFluid;
+
+ protected Object dataVar;
- private MaterialStack[] materialInput = new MaterialStack[4];
+ private ArrayList<MaterialStack> vMaterialInput = new ArrayList<MaterialStack>();
+ public final long[] vSmallestRatio;
- final short[] RGBA;
+ private final short[] RGBA;
- final boolean usesBlastFurnace;
+ private final boolean usesBlastFurnace;
+ public final boolean isRadioactive;
+ public final byte vRadioationLevel;
- final int meltingPointK;
- final int boilingPointK;
- final int meltingPointC;
- final int boilingPointC;
- final long vProtons;
- final long vNeutrons;
- final long vMass;
+ private final int meltingPointK;
+ private final int boilingPointK;
+ private final int meltingPointC;
+ private final int boilingPointC;
+ private final long vProtons;
+ private final long vNeutrons;
+ private final long vMass;
+ public final int smallestStackSizeWhenProcessing; //Add a check for <=0 || > 64
public final int vTier;
public final int vVoltageMultiplier;
+ public final String vChemicalFormula;
+ public final String vChemicalSymbol;
+
+ public Material(final String materialName, final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons, final long neutrons, final boolean blastFurnace, final MaterialStack... inputs){
+ this(materialName, rgba, meltingPoint, boilingPoint, protons, neutrons, blastFurnace, "", 0, inputs);
+ }
+
+ public Material(final String materialName, final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons, final long neutrons, final boolean blastFurnace, final int radiationLevel, MaterialStack... inputs){
+ this(materialName, rgba, meltingPoint, boilingPoint, protons, neutrons, blastFurnace, "", radiationLevel, inputs);
+ }
- public Material(String materialName, short[] rgba, int meltingPoint, int boilingPoint, long protons, long neutrons, boolean blastFurnace, MaterialStack[] inputs){
+ public Material(final String materialName, final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons, final long neutrons, final boolean blastFurnace, final String chemicalSymbol, final int radiationLevel, final MaterialStack... inputs){
this.unlocalizedName = Utils.sanitizeString(materialName);
this.localizedName = materialName;
this.RGBA = rgba;
this.meltingPointC = meltingPoint;
- if (boilingPoint == 0){
- boilingPoint = meltingPoint*4;
+ if (boilingPoint != 0){
+ this.boilingPointC = boilingPoint;
+ }
+ else {
+ this.boilingPointC = meltingPoint*4;
}
- this.boilingPointC = boilingPoint;
this.meltingPointK = (int) MathUtils.celsiusToKelvin(meltingPointC);
this.boilingPointK = (int) MathUtils.celsiusToKelvin(boilingPointC);
this.vProtons = protons;
this.vNeutrons = neutrons;
this.vMass = getMass();
- if (getMeltingPoint_K() >= 0 && getMeltingPoint_K() <= 750){
- this.vTier = 1;
- }
- else if(getMeltingPoint_K() >= 751 && getMeltingPoint_K() <= 1250){
- this.vTier = 2;
- }
- else if(getMeltingPoint_K() >= 1251 && getMeltingPoint_K() <= 1750){
- this.vTier = 3;
- }
- else if(getMeltingPoint_K() >= 1751 && getMeltingPoint_K() <= 2250){
- this.vTier = 4;
- }
- else if(getMeltingPoint_K() >= 2251 && getMeltingPoint_K() <= 2750){
- this.vTier = 5;
- }
- else if(getMeltingPoint_K() >= 2751 && getMeltingPoint_K() <= 3250){
- this.vTier = 6;
- }
- else if(getMeltingPoint_K() >= 3251 && getMeltingPoint_K() <= 3750){
- this.vTier = 7;
- }
- else if(getMeltingPoint_K() >= 3751 && getMeltingPoint_K() <= 4250){
- this.vTier = 8;
- }
- else if(getMeltingPoint_K() >= 4251 && getMeltingPoint_K() <= 4750){
- this.vTier = 9;
- }
- else if(getMeltingPoint_K() >= 4751 && getMeltingPoint_K() <= 9999){
- this.vTier = 10;
+ //Sets the Rad level
+ if (radiationLevel != 0){
+ this.isRadioactive = true;
+ this.vRadioationLevel = (byte) radiationLevel;
}
else {
- this.vTier = 0;
+ this.isRadioactive = false;
+ this.vRadioationLevel = (byte) radiationLevel;
}
+ //Sets the materials 'tier'. Will probably replace this logic.
+ this.vTier = MaterialUtils.getTierOfMaterial((int) MathUtils.celsiusToKelvin(meltingPoint));
+
this.usesBlastFurnace = blastFurnace;
- this.vVoltageMultiplier = this.getMeltingPoint_K() >= 2800 ? 64 : 16;
+ this.vVoltageMultiplier = this.getMeltingPointK() >= 2800 ? 64 : 16;
if (inputs == null){
- this.materialInput = null;
+ this.vMaterialInput = null;
}
else {
if (inputs.length != 0){
for (int i=0; i < inputs.length; i++){
if (inputs[i] != null){
- this.materialInput[i] = inputs[i];
+ this.vMaterialInput.add(i, inputs[i]);
}
}
}
}
+
+ this.vSmallestRatio = getSmallestRatio(vMaterialInput);
+ int tempSmallestSize = 0;
+
+ if (vSmallestRatio != null){
+ for (int v=0;v<this.vSmallestRatio.length;v++){
+ tempSmallestSize=(int) (tempSmallestSize+vSmallestRatio[v]);
+ }
+ this.smallestStackSizeWhenProcessing = tempSmallestSize; //Valid stacksizes
+ }
+ else {
+ this.smallestStackSizeWhenProcessing = 1; //Valid stacksizes
+ }
+
+
+ //Makes a Fancy Chemical Tooltip
+ this.vChemicalSymbol = chemicalSymbol;
+ if (vMaterialInput != null){
+ this.vChemicalFormula = getToolTip(chemicalSymbol, OrePrefixes.dust.mMaterialAmount / M, true);
+ }
+ else if (!this.vChemicalSymbol.equals("")){
+ Utils.LOG_WARNING("materialInput is null, using a valid chemical symbol.");
+ this.vChemicalFormula = this.vChemicalSymbol;
+ }
+ else{
+ Utils.LOG_WARNING("MaterialInput == null && chemicalSymbol probably equals nothing");
+ this.vChemicalFormula = "??";
+ }
+
+ Materials isValid = Materials.get(getLocalizedName());
+ if (isValid == Materials._NULL){
+ this.vMoltenFluid = generateFluid();
+ }
+ else {
+ if (isValid.mFluid != null){
+ this.vMoltenFluid = isValid.mFluid;
+ }
+ else if (isValid.mGas != null){
+ this.vMoltenFluid = isValid.mGas;
+ }
+ else if (isValid.mPlasma != null){
+ this.vMoltenFluid = isValid.mPlasma;
+ }
+ else {
+ this.vMoltenFluid = generateFluid();
+ }
+ }
+
+ //dataVar = MathUtils.generateSingularRandomHexValue();
+
+ String ratio = "";
+ if (vSmallestRatio != null)
+ for (int hu=0;hu<vSmallestRatio.length;hu++){
+ if (ratio.equals("")){
+ ratio = String.valueOf(vSmallestRatio[hu]);
+ }
+ else {
+ ratio = ratio + ":" +vSmallestRatio[hu];
+ }
+ }
+
Utils.LOG_INFO("Creating a Material instance for "+materialName);
+ Utils.LOG_INFO("Formula: "+vChemicalFormula + " Smallest Stack: "+smallestStackSizeWhenProcessing+" Smallest Ratio:"+ratio);
Utils.LOG_INFO("Protons: "+vProtons);
Utils.LOG_INFO("Neutrons: "+vNeutrons);
Utils.LOG_INFO("Mass: "+vMass+"/units");
@@ -99,118 +173,331 @@ public class Material {
Utils.LOG_INFO("Boiling Point: "+boilingPointC+"C.");
}
- public String getLocalizedName(){
+ final public String getLocalizedName(){
return localizedName;
}
- public String getUnlocalizedName(){
+ final public String getUnlocalizedName(){
return unlocalizedName;
}
- public short[] getRGBA(){
- return RGBA;
+ final public short[] getRGBA(){
+ return this.RGBA;
}
-
- public int getRgbAsHex(){
+
+ final public int getRgbAsHex(){
+
+ int returnValue = Utils.rgbtoHexValue(RGBA[0], RGBA[1], RGBA[2]);
+ if (returnValue == 0){
+ return (int) dataVar;
+ }
return Utils.rgbtoHexValue(RGBA[0], RGBA[1], RGBA[2]);
}
- public long getProtons() {
+ final public long getProtons() {
return vProtons;
}
- public long getNeutrons() {
+ final public long getNeutrons() {
return vNeutrons;
}
- public long getMass() {
+ final public long getMass() {
return vProtons + vNeutrons;
}
- public int getMeltingPoint_C() {
+ final public int getMeltingPointC() {
return meltingPointC;
}
- public int getBoilingPoint_C() {
+ final public int getBoilingPointC() {
return boilingPointC;
}
- public int getMeltingPoint_K() {
+ final public int getMeltingPointK() {
return meltingPointK;
}
- public int getBoilingPoint_K() {
+ final public int getBoilingPointK() {
return boilingPointK;
}
- public boolean requiresBlastFurnace(){
+ final public boolean requiresBlastFurnace(){
return usesBlastFurnace;
}
- public ItemStack getDust(int stacksize){
- return UtilsItems.getItemStackOfAmountFromOreDictNoBroken("dust"+unlocalizedName, stacksize);
+ final public ItemStack getDust(int stacksize){
+ return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dust"+unlocalizedName, stacksize);
+ }
+
+ final public ItemStack getSmallDust(int stacksize){
+ return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dustSmall"+unlocalizedName, stacksize);
}
- public ItemStack getSmallDust(int stacksize){
- return UtilsItems.getItemStackOfAmountFromOreDictNoBroken("dustSmall"+unlocalizedName, stacksize);
+ final public ItemStack getTinyDust(int stacksize){
+ return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dustTiny"+unlocalizedName, stacksize);
}
- public ItemStack getTinyDust(int stacksize){
- return UtilsItems.getItemStackOfAmountFromOreDictNoBroken("dustTiny"+unlocalizedName, stacksize);
+ final public ItemStack[] getValidInputStacks(){
+ return ItemUtils.validItemsForOreDict(unlocalizedName);
}
- public ItemStack[] getValidInputStacks(){
- return UtilsItems.validItemsForOreDict(unlocalizedName);
+ final public ItemStack getIngot(int stacksize){
+ return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("ingot"+unlocalizedName, stacksize);
}
- public ItemStack getIngot(int stacksize){
- return UtilsItems.getItemStackOfAmountFromOreDictNoBroken("ingot"+unlocalizedName, stacksize);
+ final public ItemStack getPlate(int stacksize){
+ return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("plate"+unlocalizedName, stacksize);
}
- public ItemStack getPlate(int stacksize){
- return UtilsItems.getItemStackOfAmountFromOreDictNoBroken("plate"+unlocalizedName, stacksize);
+ final public ItemStack getPlateDouble(int stacksize){
+ return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("plateDouble"+unlocalizedName, stacksize);
}
- public ItemStack getPlateDouble(int stacksize){
- return UtilsItems.getItemStackOfAmountFromOreDictNoBroken("plateDouble"+unlocalizedName, stacksize);
+ final public ItemStack getGear(int stacksize){
+ return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("gear"+unlocalizedName, stacksize);
}
- public ItemStack[] getMaterialComposites(){
- //Utils.LOG_INFO("Something requested the materials needed for "+localizedName);
- if (materialInput != null && materialInput.length >= 1){
- ItemStack[] temp = new ItemStack[materialInput.length];
- for (int i=0;i<materialInput.length;i++){
- //Utils.LOG_INFO("i:"+i);
+ final public ItemStack getRod(int stacksize){
+ return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("stick"+unlocalizedName, stacksize);
+ }
+
+ final public ItemStack getLongRod(int stacksize){
+ return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("stickLong"+unlocalizedName, stacksize);
+ }
+
+ final public ItemStack getBolt(int stacksize){
+ return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("bolt"+unlocalizedName, stacksize);
+ }
+
+ final public ItemStack getScrew(int stacksize){
+ return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("screw"+unlocalizedName, stacksize);
+ }
+
+ final public ItemStack getRing(int stacksize){
+ return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("ring"+unlocalizedName, stacksize);
+ }
+
+ final public ItemStack getRotor(int stacksize){
+ return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("rotor"+unlocalizedName, stacksize);
+ }
+
+ final public ItemStack getFrameBox(int stacksize){
+ return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("frameGt"+unlocalizedName, stacksize);
+ }
+
+ final public ItemStack[] getMaterialComposites(){
+ //Utils.LOG_WARNING("Something requested the materials needed for "+localizedName);
+ if (vMaterialInput != null){
+ if (!vMaterialInput.isEmpty()){
+ ItemStack[] temp = new ItemStack[vMaterialInput.size()];
+ for (int i=0;i<vMaterialInput.size();i++){
+ //Utils.LOG_WARNING("i:"+i);
ItemStack testNull = null;
try {
- testNull = materialInput[i].getDustStack();
+ testNull = vMaterialInput.get(i).getDustStack();
} catch (Throwable r){
- Utils.LOG_INFO("Failed gathering material stack for "+localizedName+".");
- Utils.LOG_INFO("What Failed: Length:"+materialInput.length+" current:"+i);
+ Utils.LOG_WARNING("Failed gathering material stack for "+localizedName+".");
+ Utils.LOG_WARNING("What Failed: Length:"+vMaterialInput.size()+" current:"+i);
}
try {
if (testNull != null){
- //Utils.LOG_INFO("not null");
- temp[i] = materialInput[i].getDustStack();
+ //Utils.LOG_WARNING("not null");
+ temp[i] = vMaterialInput.get(i).getDustStack();
}
} catch (Throwable r){
- Utils.LOG_INFO("Failed setting slot "+i+", using "+localizedName);
+ Utils.LOG_WARNING("Failed setting slot "+i+", using "+localizedName);
}
}
return temp;
}
+ }
return new ItemStack[]{};
}
- public int[] getMaterialCompositeStackSizes(){
- if (materialInput != null && materialInput.length >= 1){
- int[] temp = new int[materialInput.length];
- for (int i=0;i<materialInput.length;i++){
- temp[i] = materialInput[i].getDustStack().stackSize;
+ final public ArrayList<MaterialStack> getComposites(){
+ return this.vMaterialInput;
+ }
+
+ final public int[] getMaterialCompositeStackSizes(){
+ if (!vMaterialInput.isEmpty()){
+ int[] temp = new int[vMaterialInput.size()];
+ for (int i=0;i<vMaterialInput.size();i++){
+ if (vMaterialInput.get(i) != null)
+ temp[i] = vMaterialInput.get(i).getDustStack().stackSize;
+ else
+ temp[i]=0;
}
return temp;
}
return new int[]{};
}
+
+ @SuppressWarnings("static-method")
+ final public long[] getSmallestRatio(ArrayList<MaterialStack> tempInput){
+ if (tempInput != null){
+ if (!tempInput.isEmpty()){
+ Utils.LOG_WARNING("length: "+tempInput.size());
+ Utils.LOG_WARNING("(inputs != null): "+(tempInput != null));
+ //Utils.LOG_WARNING("length: "+inputs.length);
+ long[] tempRatio = new long[tempInput.size()];
+ for (int x=0;x<tempInput.size();x++){
+ //tempPercentage = tempPercentage+inputs[x].percentageToUse;
+ //this.mMaterialList.add(inputs[x]);
+ if (tempInput.get(x) != null){
+ tempRatio[x] = tempInput.get(x).getPartsPerOneHundred();
+ }
+ }
+
+ long[] smallestRatio = MathUtils.simplifyNumbersToSmallestForm(tempRatio);
+
+ if (smallestRatio.length > 0){
+ String tempRatioStringThing1 = "";
+ for (int r=0;r<tempRatio.length;r++){
+ tempRatioStringThing1 = tempRatioStringThing1 + tempRatio[r] +" : ";
+ }
+ Utils.LOG_WARNING("Default Ratio: "+tempRatioStringThing1);
+
+ String tempRatioStringThing = "";
+ int tempSmallestCraftingUseSize = 0;
+ for (int r=0;r<smallestRatio.length;r++){
+ tempRatioStringThing = tempRatioStringThing + smallestRatio[r] +" : ";
+ tempSmallestCraftingUseSize = (int) (tempSmallestCraftingUseSize + smallestRatio[r]);
+ }
+ //this.smallestStackSizeWhenProcessing = tempSmallestCraftingUseSize;
+ Utils.LOG_WARNING("Smallest Ratio: "+tempRatioStringThing);
+ return smallestRatio;
+ }
+ }
+ }
+ return null;
+ }
+
+ @SuppressWarnings("unused")
+ final String getToolTip(String chemSymbol, long aMultiplier, boolean aShowQuestionMarks) {
+ if (!aShowQuestionMarks && (vChemicalFormula.equals("?")||vChemicalFormula.equals("??"))) return "";
+ Utils.LOG_WARNING("===============| Calculating Atomic Formula for "+this.localizedName+" |===============");
+ if (!chemSymbol.equals(""))
+ return chemSymbol;
+ ArrayList<MaterialStack> tempInput = vMaterialInput;
+ if (tempInput != null){
+ if (!tempInput.isEmpty()){
+ String dummyFormula = "";
+ long[] dummyFormulaArray = getSmallestRatio(tempInput);
+ if (dummyFormulaArray != null){
+ if (dummyFormulaArray.length >= 1){
+ for (int e=0;e<tempInput.size();e++){
+ if (tempInput.get(e) != null){
+ if (tempInput.get(e).getStackMaterial() != null){
+ if (!tempInput.get(e).getStackMaterial().vChemicalSymbol.equals("??")){
+ if (dummyFormulaArray[e] > 1){
+
+ if (tempInput.get(e).getStackMaterial().vChemicalFormula.length() > 3){
+ dummyFormula = dummyFormula + "(" + tempInput.get(e).getStackMaterial().vChemicalFormula + ")" + dummyFormulaArray[e];
+ }
+ else {
+ dummyFormula = dummyFormula + tempInput.get(e).getStackMaterial().vChemicalFormula + dummyFormulaArray[e];
+ }
+ }
+ else if (dummyFormulaArray[e] == 1){
+ if (tempInput.get(e).getStackMaterial().vChemicalFormula.length() > 3){
+ dummyFormula = dummyFormula + "(" +tempInput.get(e).getStackMaterial().vChemicalFormula + ")";
+ }
+ else {
+ dummyFormula = dummyFormula +tempInput.get(e).getStackMaterial().vChemicalFormula;
+ }
+ }
+ }
+ else
+ dummyFormula = dummyFormula + "??";
+ }
+ else
+ dummyFormula = dummyFormula + "▓▓";
+ }
+ }
+ return MaterialUtils.subscript(dummyFormula);
+ //return dummyFormula;
+ }
+ Utils.LOG_WARNING("dummyFormulaArray <= 0");
+ }
+ Utils.LOG_WARNING("dummyFormulaArray == null");
+ }
+ Utils.LOG_WARNING("tempInput.length <= 0");
+ }
+ Utils.LOG_WARNING("tempInput == null");
+ return "??";
+
+ }
+
+ final Fluid generateFluid(){
+ if (Materials.get(localizedName).mFluid == null){
+ Utils.LOG_WARNING("Generating our own fluid.");
+
+ //Generate a Cell if we need to
+ if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cell"+getUnlocalizedName(), 1) == null){
+ @SuppressWarnings("unused")
+ Item temp = new BaseItemCell(this);
+ }
+ return FluidUtils.addGTFluid(
+ this.getUnlocalizedName(),
+ "Molten "+this.getLocalizedName(),
+ this.RGBA,
+ 4,
+ this.getMeltingPointK(),
+ ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cell"+getUnlocalizedName(), 1),
+ ItemList.Cell_Empty.get(1L, new Object[0]),
+ 1000);
+ }
+ Utils.LOG_WARNING("Getting the fluid from a GT material instead.");
+ return Materials.get(localizedName).mFluid;
+ }
+
+ final public FluidStack getFluid(int fluidAmount) {
+ Utils.LOG_WARNING("Attempting to get "+fluidAmount+"L of "+this.vMoltenFluid.getName());
+
+ FluidStack moltenFluid = new FluidStack(this.vMoltenFluid, fluidAmount);
+
+ Utils.LOG_WARNING("Info: "+moltenFluid.getFluid().getName()+" Info: "+moltenFluid.amount+" Info: "+moltenFluid.getFluidID());
+
+ //FluidStack moltenFluid = FluidUtils.getFluidStack(this.vMoltenFluid.getName(), fluidAmount);
+ /*boolean isNull = (moltenFluid == null);
+ if (isNull) Utils.LOG_WARNING("Did not obtain fluid.");
+ else Utils.LOG_WARNING("Found fluid.");
+ if (isNull){
+ return null;
+ }*/
+ return moltenFluid;
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
}