aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/util
diff options
context:
space:
mode:
authorDraknyte1 <Draknyte1@hotmail.com>2016-10-23 07:36:05 +1000
committerDraknyte1 <Draknyte1@hotmail.com>2016-10-23 07:36:05 +1000
commit3826cbb1223a25a6d476486d9369d65a22090aec (patch)
treeb176e3752ae9aeadb3bda54ab3757d4acc6f6ff9 /src/Java/gtPlusPlus/core/util
parentb123b87177c907951f695d616c31f1d229412e60 (diff)
downloadGT5-Unofficial-3826cbb1223a25a6d476486d9369d65a22090aec.tar.gz
GT5-Unofficial-3826cbb1223a25a6d476486d9369d65a22090aec.tar.bz2
GT5-Unofficial-3826cbb1223a25a6d476486d9369d65a22090aec.zip
% Massive Material Backend Changes. (Nothing noticeable to players)
+ Added Chemical Compounds to Dust stacks, so you know how to make/use them. + As an idea, added Deci and Centi dusts, each representing .10 and point .01 of a full dust. (Probably will remove these, or use them for unique crafting options) % Moved Radiation data to Material class. % Created a BaseItemComponent and made all machine components except ingots/dusts utilise it. (Saves boiler-plating 30 lines per class and also it's using OOP for it's real job)
Diffstat (limited to 'src/Java/gtPlusPlus/core/util')
-rw-r--r--src/Java/gtPlusPlus/core/util/Utils.java5
-rw-r--r--src/Java/gtPlusPlus/core/util/item/UtilsItems.java79
-rw-r--r--src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java80
3 files changed, 140 insertions, 24 deletions
diff --git a/src/Java/gtPlusPlus/core/util/Utils.java b/src/Java/gtPlusPlus/core/util/Utils.java
index bee5de98ea..cdfa556de9 100644
--- a/src/Java/gtPlusPlus/core/util/Utils.java
+++ b/src/Java/gtPlusPlus/core/util/Utils.java
@@ -426,7 +426,10 @@ public class Utils {
}
}
- public static int rgbtoHexValue(int r, int g, int b){
+ public static int rgbtoHexValue(int r, int g, int b){
+ if (r > 255 || g > 255 || b > 255 || r < 0 || g < 0 || b < 0){
+ return 0;
+ }
Color c = new Color(r,g,b);
String temp = Integer.toHexString( c.getRGB() & 0xFFFFFF ).toUpperCase();
diff --git a/src/Java/gtPlusPlus/core/util/item/UtilsItems.java b/src/Java/gtPlusPlus/core/util/item/UtilsItems.java
index 62162e596d..fbda7554df 100644
--- a/src/Java/gtPlusPlus/core/util/item/UtilsItems.java
+++ b/src/Java/gtPlusPlus/core/util/item/UtilsItems.java
@@ -1,6 +1,7 @@
package gtPlusPlus.core.util.item;
import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
import gtPlusPlus.core.block.base.BasicBlock.BlockTypes;
@@ -10,6 +11,8 @@ import gtPlusPlus.core.item.base.BasicSpawnEgg;
import gtPlusPlus.core.item.base.bolts.BaseItemBolt;
import gtPlusPlus.core.item.base.dusts.BaseItemDust;
import gtPlusPlus.core.item.base.dusts.BaseItemDustUnique;
+import gtPlusPlus.core.item.base.dusts.decimal.BaseItemCentidust;
+import gtPlusPlus.core.item.base.dusts.decimal.BaseItemDecidust;
import gtPlusPlus.core.item.base.gears.BaseItemGear;
import gtPlusPlus.core.item.base.ingots.BaseItemIngot;
import gtPlusPlus.core.item.base.ingots.BaseItemIngotHot;
@@ -244,7 +247,7 @@ public class UtilsItems {
return null;
}
-
+
public static ItemStack getItemStackInPlayersHand(){
Minecraft mc = Minecraft.getMinecraft();
ItemStack heldItem = null;
@@ -290,7 +293,7 @@ public class UtilsItems {
Utils.LOG_INFO(oredictName+" was not valid.");
return null;
}
-
+
public static ItemStack getItemStackOfAmountFromOreDictNoBrokenExcluding(String excludeModName, String oredictName, int amount){
ItemStack returnValue = getItemStackOfAmountFromOreDict(oredictName, amount);
@@ -347,9 +350,9 @@ public class UtilsItems {
temp = new BaseItemDust("itemDustTiny"+unlocalizedName, materialName, matInfo, Colour, "Tiny", materialTier, sRadiation);
temp = new BaseItemDust("itemDustSmall"+unlocalizedName, materialName, matInfo, Colour, "Small", materialTier, sRadiation);
- temp = new BaseItemPlate("itemPlate"+unlocalizedName, materialName, Colour, materialTier, sRadiation);
- temp = new BaseItemRod(matInfo, sRadiation);
- temp = new BaseItemRodLong(matInfo, sRadiation);
+ temp = new BaseItemPlate(matInfo);
+ temp = new BaseItemRod(matInfo);
+ temp = new BaseItemRodLong(matInfo);
}
else {
@@ -366,14 +369,14 @@ public class UtilsItems {
temp = new BaseItemDust("itemDustTiny"+unlocalizedName, materialName, matInfo, Colour, "Tiny", materialTier, sRadiation);
temp = new BaseItemDust("itemDustSmall"+unlocalizedName, materialName, matInfo, Colour, "Small", materialTier, sRadiation);
- temp = new BaseItemPlate("itemPlate"+unlocalizedName, materialName, Colour, materialTier, sRadiation);
- temp = new BaseItemPlateDouble("itemPlateDouble"+unlocalizedName, materialName, Colour, materialTier, sRadiation);
+ temp = new BaseItemPlate(matInfo);
+ temp = new BaseItemPlateDouble(matInfo);
temp = new BaseItemBolt(matInfo);
- temp = new BaseItemRod(matInfo, sRadiation);
- temp = new BaseItemRodLong(matInfo, sRadiation);
+ temp = new BaseItemRod(matInfo);
+ temp = new BaseItemRodLong(matInfo);
temp = new BaseItemRing(matInfo);
temp = new BaseItemScrew(matInfo);
- temp = new BaseItemRotor("itemRotor"+unlocalizedName, materialName, Colour);
+ temp = new BaseItemRotor(matInfo);
temp = new BaseItemGear(matInfo);
}
@@ -402,22 +405,22 @@ public class UtilsItems {
public static MultiPickaxeBase generateMultiPick(boolean GT_Durability, Materials material){
ToolMaterial customMaterial = Utils.generateMaterialFromGT(material);
- Utils.LOG_INFO("Generating a Multi-Pick out of "+material.name());
+ Utils.LOG_WARNING("Generating a Multi-Pick out of "+material.name());
short[] rgb;
rgb = material.getRGBA();
int dur = customMaterial.getMaxUses();
- Utils.LOG_INFO("Determined durability for "+material.name()+" is "+dur);
+ Utils.LOG_WARNING("Determined durability for "+material.name()+" is "+dur);
if (GT_Durability){
dur = material.mDurability*100;
- Utils.LOG_INFO("Using gregtech durability value, "+material.name()+" is now "+dur+".");
+ Utils.LOG_WARNING("Using gregtech durability value, "+material.name()+" is now "+dur+".");
}
else if (dur <= 0){
dur = material.mDurability;
- Utils.LOG_INFO("Determined durability too low, "+material.name()+" is now "+dur+" based on the GT material durability.");
+ Utils.LOG_WARNING("Determined durability too low, "+material.name()+" is now "+dur+" based on the GT material durability.");
}
if (dur <= 0){
- Utils.LOG_INFO("Still too low, "+material.name()+" will now go unused.");
+ Utils.LOG_WARNING("Still too low, "+material.name()+" will now go unused.");
return null;
}
@@ -437,22 +440,22 @@ public class UtilsItems {
public static MultiSpadeBase generateMultiShovel(boolean GT_Durability, Materials material){
ToolMaterial customMaterial = Utils.generateMaterialFromGT(material);
- Utils.LOG_INFO("Generating a Multi-Shovel out of "+material.name());
+ Utils.LOG_WARNING("Generating a Multi-Shovel out of "+material.name());
short[] rgb;
rgb = material.getRGBA();
int dur = customMaterial.getMaxUses();
- Utils.LOG_INFO("Determined durability for "+material.name()+" is "+dur);
+ Utils.LOG_WARNING("Determined durability for "+material.name()+" is "+dur);
if (GT_Durability){
dur = material.mDurability*100;
- Utils.LOG_INFO("Using gregtech durability value, "+material.name()+" is now "+dur+".");
+ Utils.LOG_WARNING("Using gregtech durability value, "+material.name()+" is now "+dur+".");
}
else if (dur <= 0){
dur = material.mDurability;
- Utils.LOG_INFO("Determined durability too low, "+material.name()+" is now "+dur+" based on the GT material durability.");
+ Utils.LOG_WARNING("Determined durability too low, "+material.name()+" is now "+dur+" based on the GT material durability.");
}
if (dur <= 0){
- Utils.LOG_INFO("Still too low, "+material.name()+" will now go unused.");
+ Utils.LOG_WARNING("Still too low, "+material.name()+" will now go unused.");
return null;
}
@@ -470,6 +473,40 @@ public class UtilsItems {
}
+ public static BaseItemDecidust generateDecidust(Materials material){
+ if (GT_OreDictUnificator.get(OrePrefixes.dust, material, 1L) != null){
+ Material placeholder = MaterialUtils.generateMaterialFromGtENUM(material);
+ if (placeholder != null)
+ generateDecidust(placeholder);
+ }
+ return null;
+ }
+
+ public static BaseItemDecidust generateDecidust(Material material){
+ if (material.getDust(1) != null && MaterialUtils.hasValidRGBA(material.getRGBA())){
+ BaseItemDecidust Decidust = new BaseItemDecidust(material);
+ return Decidust;
+ }
+ return null;
+ }
+
+ public static BaseItemCentidust generateCentidust(Materials material){
+ if (GT_OreDictUnificator.get(OrePrefixes.dust, material, 1L) != null){
+ Material placeholder = MaterialUtils.generateMaterialFromGtENUM(material);
+ if (placeholder != null)
+ generateCentidust(placeholder);
+ }
+ return null;
+ }
+
+ public static BaseItemCentidust generateCentidust(Material material){
+ if (material.getDust(1) != null && MaterialUtils.hasValidRGBA(material.getRGBA())){
+ BaseItemCentidust Centidust = new BaseItemCentidust(material);
+ return Centidust;
+ }
+ return null;
+ }
+
public static boolean isRadioactive(String materialName){
int sRadiation = 0;
if (materialName.toLowerCase().contains("uranium")){
@@ -504,7 +541,7 @@ public class UtilsItems {
public static String getArrayStackNames(ItemStack[] aStack){
String itemNames = "Item Array: ";
for (ItemStack alph : aStack){
-
+
if (alph != null){
String temp = itemNames;
itemNames = temp + ", " + alph.getDisplayName() + " x" + alph.stackSize;
diff --git a/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java b/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java
index 0eae02d827..61171e3688 100644
--- a/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java
+++ b/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java
@@ -1,6 +1,7 @@
package gtPlusPlus.core.util.materials;
import gregtech.api.enums.Dyes;
+import gregtech.api.enums.Element;
import gregtech.api.enums.Materials;
import gregtech.api.enums.TC_Aspects.TC_AspectStack;
import gregtech.api.enums.TextureSet;
@@ -51,8 +52,83 @@ public class MaterialUtils {
int boiling = material.mBlastFurnaceTemp;
long protons = material.getProtons();
long neutrons = material.getNeutrons();
- boolean blastFurnace = material.mBlastFurnaceRequired;
- return new Material(name, rgba, melting, boiling, protons, neutrons, blastFurnace, null);
+ boolean blastFurnace = material.mBlastFurnaceRequired;
+ String chemicalFormula = material.mChemicalFormula;
+ Element element = material.mElement;
+ int radioactivity = 0;
+ if (material.isRadioactive()){
+ radioactivity = 1;
+ }
+ if (hasValidRGBA(rgba)){
+ return new Material(name, rgba, melting, boiling, protons, neutrons, blastFurnace, null, chemicalFormula, radioactivity);
+ }
+ return null;
+
+ }
+
+ public static Material generateQuickMaterial(String materialName, short[] colour, int sRadioactivity) {
+ Material temp = new Material(
+ materialName,
+ colour,
+ 1000, //melting
+ 3000, //boiling
+ 50, //Protons
+ 50, //Neutrons
+ false,
+ null,
+ sRadioactivity);
+ return temp;
+ }
+
+ public static boolean hasValidRGBA(short[] rgba){
+ boolean test1 = false;
+ boolean test2 = false;
+ boolean test3 = false;
+ for (int r=0;r<rgba.length;r++){
+ if (rgba[r] == 0){
+ if (r == 0){
+ test1 = true;
+ }
+ else if (r == 1){
+ test2 = true;
+ }
+ else if (r == 2){
+ test3 = true;
+ }
+ }
+ }
+ if ((test1 && test2) || (test1 && test3) || (test3 && test2)){
+ return false;
+ }
+ return true;
+ }
+
+ public static String superscript(String str) {
+ str = str.replaceAll("0", "⁰");
+ str = str.replaceAll("1", "¹");
+ str = str.replaceAll("2", "²");
+ str = str.replaceAll("3", "³");
+ str = str.replaceAll("4", "⁴");
+ str = str.replaceAll("5", "⁵");
+ str = str.replaceAll("6", "⁶");
+ str = str.replaceAll("7", "⁷");
+ str = str.replaceAll("8", "⁸");
+ str = str.replaceAll("9", "⁹");
+ return str;
+ }
+
+ public static String subscript(String str) {
+ str = str.replaceAll("0", "₀");
+ str = str.replaceAll("1", "₁");
+ str = str.replaceAll("2", "₂");
+ str = str.replaceAll("3", "₃");
+ str = str.replaceAll("4", "₄");
+ str = str.replaceAll("5", "₅");
+ str = str.replaceAll("6", "₆");
+ str = str.replaceAll("7", "₇");
+ str = str.replaceAll("8", "₈");
+ str = str.replaceAll("9", "₉");
+ return str;
}