aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Java/gtPlusPlus/core/material/Material.java113
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java38
2 files changed, 80 insertions, 71 deletions
diff --git a/src/Java/gtPlusPlus/core/material/Material.java b/src/Java/gtPlusPlus/core/material/Material.java
index e5abd9bbc3..1b2ef19b53 100644
--- a/src/Java/gtPlusPlus/core/material/Material.java
+++ b/src/Java/gtPlusPlus/core/material/Material.java
@@ -76,7 +76,7 @@ public class Material {
public Material(String materialName, MaterialState defaultState, short[] rgba, int radiationLevel, MaterialStack[] materialStacks) {
this(materialName, defaultState, null, 0, rgba, -1, -1, -1, -1, false, "", radiationLevel, false, materialStacks);
- }
+ }
public Material(String materialName, MaterialState defaultState, short[] rgba, int j, int k, int l, int m, int radiationLevel, MaterialStack[] materialStacks){
this(materialName, defaultState, null, 0, rgba, j, k, l, m, false, "", radiationLevel, false, materialStacks);
@@ -91,7 +91,7 @@ public class Material {
}
public Material(final String materialName, final MaterialState defaultState, final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons, final long neutrons, final boolean blastFurnace, boolean generateCells, final MaterialStack... inputs){
- this(materialName, defaultState, null, 0, rgba, meltingPoint, boilingPoint, protons, neutrons, blastFurnace, "", 0, generateCells, inputs);
+ this(materialName, defaultState, null, 0, rgba, meltingPoint, boilingPoint, protons, neutrons, blastFurnace, "", 0, generateCells, true, inputs);
}
public Material(final String materialName, final MaterialState defaultState,final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons, final long neutrons, final boolean blastFurnace, final int radiationLevel, final MaterialStack... inputs){
@@ -104,17 +104,21 @@ public class Material {
public Material(final String materialName, final MaterialState defaultState,final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons, final long neutrons, final boolean blastFurnace, final String chemicalSymbol, final int radiationLevel, final MaterialStack... inputs){
this(materialName, defaultState, 0, rgba, meltingPoint, boilingPoint, protons, neutrons, blastFurnace, chemicalSymbol, radiationLevel, inputs);
- }
+ }
public Material(final String materialName, final MaterialState defaultState,final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons, final long neutrons, final boolean blastFurnace, final String chemicalSymbol, final int radiationLevel, boolean addCells,final MaterialStack... inputs) {
- this (materialName, defaultState, null, 0, rgba, meltingPoint, boilingPoint, protons, neutrons, blastFurnace, chemicalSymbol, radiationLevel, addCells, inputs);
+ this (materialName, defaultState, null, 0, rgba, meltingPoint, boilingPoint, protons, neutrons, blastFurnace, chemicalSymbol, radiationLevel, addCells, true, inputs);
}
public Material(final String materialName, final MaterialState defaultState, final long durability, final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons, final long neutrons, final boolean blastFurnace, final String chemicalSymbol, final int radiationLevel, final MaterialStack... inputs){
- this (materialName, defaultState, null, durability, rgba, meltingPoint, boilingPoint, protons, neutrons, blastFurnace, chemicalSymbol, radiationLevel, true, inputs);
+ this (materialName, defaultState, null, durability, rgba, meltingPoint, boilingPoint, protons, neutrons, blastFurnace, chemicalSymbol, radiationLevel, true, true, inputs);
}
public Material(final String materialName, final MaterialState defaultState, final TextureSet set, final long durability, final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons, final long neutrons, final boolean blastFurnace, final String chemicalSymbol, final int radiationLevel, boolean generateCells, final MaterialStack... inputs){
+ this (materialName, defaultState, null, durability, rgba, meltingPoint, boilingPoint, protons, neutrons, blastFurnace, chemicalSymbol, radiationLevel, true, true, inputs);
+ }
+
+ public Material(final String materialName, final MaterialState defaultState, final TextureSet set, final long durability, final short[] rgba, final int meltingPoint, final int boilingPoint, final long protons, final long neutrons, final boolean blastFurnace, final String chemicalSymbol, final int radiationLevel, boolean generateCells, boolean generateFluid, final MaterialStack... inputs){
try {
this.unlocalizedName = Utils.sanitizeString(materialName);
this.localizedName = materialName;
@@ -285,27 +289,32 @@ public class Material {
this.vChemicalFormula = "??";
}
-
- final Materials isValid = Materials.get(this.getLocalizedName());
- if (FluidUtils.getFluidStack(localizedName, 1) != null){
- this.vMoltenFluid = FluidUtils.getFluidStack(localizedName, 1).getFluid();
- }
- else if (isValid == null || isValid == Materials._NULL){
- this.vMoltenFluid = this.generateFluid();
- }
- else {
- if (isValid.mFluid != null){
- this.vMoltenFluid = isValid.mFluid;
+ if (generateFluid){
+ final Materials isValid = Materials.get(this.getLocalizedName());
+ if (FluidUtils.getFluidStack(localizedName, 1) != null){
+ this.vMoltenFluid = FluidUtils.getFluidStack(localizedName, 1).getFluid();
}
- else if (isValid.mGas != null){
- this.vMoltenFluid = isValid.mGas;
+ else if (isValid == null || isValid == Materials._NULL){
+ this.vMoltenFluid = this.generateFluid();
}
else {
- this.vMoltenFluid = this.generateFluid();
+ if (isValid.mFluid != null){
+ this.vMoltenFluid = isValid.mFluid;
+ }
+ else if (isValid.mGas != null){
+ this.vMoltenFluid = isValid.mGas;
+ }
+ else {
+ this.vMoltenFluid = this.generateFluid();
+ }
}
- }
- this.vPlasma = this.generatePlasma();
+ this.vPlasma = this.generatePlasma();
+ }
+ else {
+ this.vMoltenFluid = null;
+ this.vPlasma = null;
+ }
String ratio = "";
if (this.vSmallestRatio != null) {
@@ -335,17 +344,17 @@ public class Material {
public final TextureSet getTextureSet() {
synchronized(this) {
return textureSet;
- }
+ }
}
public TextureSet setTextureSet(TextureSet set) {
if (set != null) {
- return set;
+ return set;
}
else {
// build hash table with count
AutoMap<Material> sets = new AutoMap<Material>();
- if (this.vMaterialInput != null) {
+ if (this.vMaterialInput != null) {
for (MaterialStack r : this.vMaterialInput) {
if (r.getStackMaterial().getTextureSet().mSetName.toLowerCase().contains("fluid")) {
sets.put(ELEMENT.getInstance().GOLD);
@@ -353,16 +362,16 @@ public class Material {
else {
sets.put(r.getStackMaterial());
}
- }
- TextureSet mostUsedTypeTextureSet = (TextureSet) MaterialUtils.getMostCommonTextureSet(new ArrayList<Material>(sets.values()));
+ }
+ TextureSet mostUsedTypeTextureSet = (TextureSet) MaterialUtils.getMostCommonTextureSet(new ArrayList<Material>(sets.values()));
if (mostUsedTypeTextureSet != null && mostUsedTypeTextureSet instanceof TextureSet) {
Logger.MATERIALS("Set textureset for "+this.localizedName+" to be "+mostUsedTypeTextureSet.mSetName+".");
return mostUsedTypeTextureSet;
- }
+ }
}
}
Logger.MATERIALS("Set textureset for "+this.localizedName+" to be "+Materials.Iron.mIconSet.mSetName+". [Fallback]");
- return Materials.Iron.mIconSet;
+ return Materials.Iron.mIconSet;
}
public final String getLocalizedName(){
@@ -393,7 +402,7 @@ public class Material {
final public short[] getRGBA(){
if (this.RGBA != null) {
if (this.RGBA.length == 4){
- return this.RGBA;
+ return this.RGBA;
}
else {
return new short[]{this.RGBA[0], this.RGBA[1], this.RGBA[2], 0};
@@ -561,17 +570,17 @@ public class Material {
}
public final ItemStack getCrushedCentrifuged(final int stacksize){
return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("crushedCentrifuged"+this.unlocalizedName, stacksize);
- }
+ }
public final ItemStack getDustPurified(final int stacksize){
return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dustPure"+this.unlocalizedName, stacksize);
}
public final ItemStack getDustImpure(final int stacksize){
return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dustImpure"+this.unlocalizedName, stacksize);
- }
+ }
public final boolean hasSolidForm() {
if (this.getDust(1) != null || this.getBlock(1) != null || this.getSmallDust(1) != null || this.getTinyDust(1) != null) {
return true;
- }
+ }
return false;
}
@@ -596,7 +605,7 @@ public class Material {
Logger.INFO("Failed setting slot "+i+", using "+this.localizedName);
}
}
- return temp;
+ return temp;
}
return new ItemStack[]{};
}
@@ -772,8 +781,8 @@ public class Material {
if (a5 != null){
Logger.INFO("Using a pre-defined Fluid from GT. Plasma.");
return a5.getFluid();
- }
- Logger.INFO("Using null.");
+ }
+ Logger.INFO("Using null.");
return null;
}
}
@@ -782,37 +791,37 @@ public class Material {
if (this.materialState == MaterialState.SOLID){
if (isValid.mFluid != null){
Logger.INFO("Using a pre-defined Fluid from GT. mFluid.");
- return isValid.mFluid;
- }
+ return isValid.mFluid;
+ }
else if (isValid.mStandardMoltenFluid != null){
Logger.INFO("Using a pre-defined Fluid from GT. mStandardMoltenFluid.");
- return isValid.mStandardMoltenFluid;
+ return isValid.mStandardMoltenFluid;
}
}
else if (this.materialState == MaterialState.GAS){
if (isValid.mGas != null){
Logger.INFO("Using a pre-defined Fluid from GT. mGas.");
- return isValid.mGas;
- }
+ return isValid.mGas;
+ }
}
else if (this.materialState == MaterialState.LIQUID || this.materialState == MaterialState.PURE_LIQUID){
if (isValid.mFluid != null){
Logger.INFO("Using a pre-defined Fluid from GT. mFluid.");
- return isValid.mFluid;
- }
+ return isValid.mFluid;
+ }
else if (isValid.mGas != null){
Logger.INFO("Using a pre-defined Fluid from GT. mGas.");
- return isValid.mGas;
+ return isValid.mGas;
}
else if (isValid.mStandardMoltenFluid != null){
Logger.INFO("Using a pre-defined Fluid from GT. mStandardMoltenFluid.");
- return isValid.mStandardMoltenFluid;
+ return isValid.mStandardMoltenFluid;
}
- }
+ }
Logger.INFO("Generating our own fluid.");
//Generate a Cell if we need to
- if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cell"+this.getUnlocalizedName(), 1) == null){
+ if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cell"+this.getUnlocalizedName(), 1) == null){
if (this.vGenerateCells){
new BaseItemCell(this);
Logger.INFO("Generated a cell for "+this.getUnlocalizedName());
@@ -864,7 +873,7 @@ public class Material {
if (this.materialState == MaterialState.ORE){
return null;
}
- final Materials isValid = Materials.get(this.getLocalizedName());
+ final Materials isValid = Materials.get(this.getLocalizedName());
if (!this.vGenerateCells){
return null;
@@ -876,8 +885,8 @@ public class Material {
}
if (isValid.mPlasma != null){
Logger.INFO("Using a pre-defined Plasma from GT.");
- return isValid.mPlasma;
- }
+ return isValid.mPlasma;
+ }
Logger.INFO("Generating our own Plasma.");
return FluidUtils.addGTPlasma(this);
@@ -885,10 +894,10 @@ public class Material {
- final public FluidStack getFluid(final int fluidAmount) {
+ final public FluidStack getFluid(final int fluidAmount) {
if (this.vMoltenFluid == null){
return null;
- }
+ }
final FluidStack moltenFluid = new FluidStack(this.vMoltenFluid, fluidAmount);
return moltenFluid;
}
@@ -978,4 +987,4 @@ public class Material {
}
}
-}
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java
index f8e777dd35..98b02078c6 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java
@@ -27,11 +27,11 @@ public class MaterialUtils {
@SuppressWarnings({ "rawtypes", "unused" })
private static Class[][] commonTypes =
-{{Materials.class, int.class, TextureSet.class, float.class, int.class,
- int.class, int.class, int.class, int.class, int.class, int.class,
- String.class, int.class, int.class, int.class, int.class, boolean.class,
- boolean.class, int.class, int.class, int.class, Dyes.class, int.class,
- List.class , List.class}};
+ {{Materials.class, int.class, TextureSet.class, float.class, int.class,
+ int.class, int.class, int.class, int.class, int.class, int.class,
+ String.class, int.class, int.class, int.class, int.class, boolean.class,
+ boolean.class, int.class, int.class, int.class, Dyes.class, int.class,
+ List.class , List.class}};
public static List<?> oreDictValuesForEntry(final String oredictName){
List<?> oredictItemNames;
@@ -47,7 +47,7 @@ public class MaterialUtils {
public static Material generateMaterialFromGtENUM(final Materials material){
return generateMaterialFromGtENUM(material, null);
}
-
+
public static Material generateMaterialFromGtENUM(final Materials material, short[] customRGB){
@SuppressWarnings("deprecation")
String name = material.name();
@@ -60,6 +60,7 @@ public class MaterialUtils {
final TextureSet iconSet = material.mIconSet;
final int durability = material.mDurability;
boolean mGenerateCell = false;
+ boolean mGenerateFluid = true;
MaterialState materialState;
String chemicalFormula = StringUtils.subscript(Utils.sanitizeString(material.mChemicalFormula));
final Element element = material.mElement;
@@ -67,12 +68,12 @@ public class MaterialUtils {
if (material.isRadioactive()){
radioactivity = 1;
}
-
+
//Weird Blacklist of Bad Chemical Strings
if (material.mElement == Element.Pb || material.mElement == Element.Na || material.mElement == Element.Ar){
chemicalFormula = StringUtils.subscript(Utils.sanitizeString(material.mElement.name()));
}
-
+
//Determine default state
Logger.MATERIALS("[Debug] Setting State of GT generated material. "+material.mDefaultLocalName);
if (material.getMolten(1) != null || material.getSolid(1) != null){
@@ -101,8 +102,9 @@ public class MaterialUtils {
materialState = MaterialState.PLASMA;
}*/
else {
- Logger.MATERIALS("[Debug] State set as solid.");
+ Logger.MATERIALS("[Debug] State set as solid. This material has no alternative states, so for safety we wont generate anything.");
materialState = MaterialState.SOLID;
+ mGenerateFluid = false;
}
@@ -113,7 +115,7 @@ public class MaterialUtils {
if (hasValidRGBA(rgba) || (element == Element.H) || ((material == Materials.InfusedAir) || (material == Materials.InfusedFire) || (material == Materials.InfusedEarth) || (material == Materials.InfusedWater))){
//ModItems.itemBaseDecidust = UtilsItems.generateDecidust(material);
//ModItems.itemBaseCentidust = UtilsItems.generateCentidust(material);
- return new Material(name, materialState,iconSet, durability, rgba, melting, boiling, protons, neutrons, blastFurnace, chemicalFormula, radioactivity, mGenerateCell);
+ return new Material(name, materialState,iconSet, durability, rgba, melting, boiling, protons, neutrons, blastFurnace, chemicalFormula, radioactivity, mGenerateCell, mGenerateFluid);
}
else {
Logger.DEBUG_MATERIALS("Failed to generate GT++ material instance for "+material.name() +" | Valid RGB? "+(hasValidRGBA(rgba)));
@@ -138,10 +140,10 @@ public class MaterialUtils {
return temp;
}
- public static boolean hasValidRGBA(final short[] rgba){
+ public static boolean hasValidRGBA(final short[] rgba){
if (rgba == null || rgba.length < 3 || rgba.length > 4){
return false;
- }
+ }
return true;
}
@@ -182,9 +184,9 @@ public class MaterialUtils {
}
public static Materials getMaterialByName(String materialName) {
-
+
if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) {
- return (Materials) EnumUtils.getValue(gregtech.api.enums.Materials.class, materialName, false);
+ return (Materials) EnumUtils.getValue(gregtech.api.enums.Materials.class, materialName, false);
}
else {
for (Materials m : Materials.values()) {
@@ -195,7 +197,7 @@ public class MaterialUtils {
return null;
}
}
-
+
@SuppressWarnings("deprecation")
public static String getMaterialName(Materials mat){
String mName;
@@ -210,14 +212,12 @@ public class MaterialUtils {
}
return mName;
}
-
+
public static TextureSet getMostCommonTextureSet(List<Material> list) {
Optional<TextureSet> r = list.stream().map(Material::getTextureSet).collect(Collectors.groupingBy(Function.identity(), Collectors.counting())).entrySet().stream().max(Map.Entry.comparingByValue()).map(Map.Entry::getKey);
TextureSet o = (r != null && r.isPresent() && r.get() != null) ? r.get() : null;
return o;
- }
-
-
}
+} \ No newline at end of file