aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/core/util')
-rw-r--r--src/Java/gtPlusPlus/core/util/Utils.java42
-rw-r--r--src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java200
-rw-r--r--src/Java/gtPlusPlus/core/util/item/UtilsItems.java43
-rw-r--r--src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java34
4 files changed, 283 insertions, 36 deletions
diff --git a/src/Java/gtPlusPlus/core/util/Utils.java b/src/Java/gtPlusPlus/core/util/Utils.java
index 72c4632df2..42d6dc4ad4 100644
--- a/src/Java/gtPlusPlus/core/util/Utils.java
+++ b/src/Java/gtPlusPlus/core/util/Utils.java
@@ -213,10 +213,10 @@ public class Utils {
/**
*
- * @param colorStr e.g. "#FFFFFF"
+ * @param colourStr e.g. "#FFFFFF"
* @return String - formatted "rgb(0,0,0)"
*/
- public static String hex2Rgb(String hexString) {
+ public static String hex2RgbFormatted(String hexString) {
Color c = new Color(
Integer.valueOf(hexString.substring(1, 3), 16),
Integer.valueOf(hexString.substring(3, 5), 16),
@@ -232,6 +232,38 @@ public class Utils {
sb.append(")");
return sb.toString();
}
+
+ /**
+ *
+ * @param colourStr e.g. "#FFFFFF"
+ * @return
+ */
+ public static Color hex2Rgb(String colorStr) {
+ return new Color(
+ Integer.valueOf( colorStr.substring( 1, 3 ), 16 ),
+ Integer.valueOf( colorStr.substring( 3, 5 ), 16 ),
+ Integer.valueOf( colorStr.substring( 5, 7 ), 16 ) );
+ }
+
+ /**
+ *
+ * @param colourInt e.g. 0XFFFFFF
+ * @return Colour
+ */
+ public static Color hex2Rgb(int colourInt) {
+ return Color.decode(String.valueOf(colourInt));
+ }
+
+ /**
+ *
+ * @param colourInt e.g. 0XFFFFFF
+ * @return short[]
+ */
+ public static short[] hex2RgbShort(int colourInt) {
+ Color rgb = Color.decode(String.valueOf(colourInt));
+ short[] rgba = {(short) rgb.getRed(), (short) rgb.getGreen(), (short) rgb.getBlue(), (short) rgb.getAlpha()};
+ return rgba;
+ }
public static Timer ShortTimer(int seconds) {
Timer timer;
@@ -259,6 +291,11 @@ public class Utils {
List<Object> targetList = new ArrayList<Object>(Arrays.asList(sourceArray));
return targetList;
}
+
+ public static List<Object> convertArrayListToList(ArrayList sourceArray) {
+ List<Object> targetList = new ArrayList<Object>(Arrays.asList(sourceArray));
+ return targetList;
+ }
public static EntityPlayer getPlayerOnServerFromUUID(UUID parUUID){
if (parUUID == null)
@@ -524,6 +561,7 @@ public class Utils {
temp = temp.replace("}", "");
temp = temp.replace("[", "");
temp = temp.replace("]", "");
+ temp = temp.replace(" ", "");
output = temp;
return output;
diff --git a/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java b/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java
index 53873c6e4e..fff0cbad71 100644
--- a/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java
+++ b/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java
@@ -1,8 +1,19 @@
package gtPlusPlus.core.util.fluid;
+import gregtech.api.enums.Dyes;
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.ItemList;
+import gregtech.api.util.GT_LanguageManager;
+import gtPlusPlus.core.fluids.GenericFluid;
import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.IFluidContainerItem;
public class FluidUtils {
@@ -16,7 +27,7 @@ public class FluidUtils {
}
}
-
+
public static FluidStack[] getFluidStackArray(String fluidName, int amount){
Utils.LOG_WARNING("Trying to get a fluid stack of "+fluidName);
try {
@@ -28,7 +39,7 @@ public class FluidUtils {
}
}
-
+
public static FluidStack[] getFluidStackArray(FluidStack fluidName, int amount){
Utils.LOG_WARNING("Trying to get a fluid stack of "+fluidName);
try {
@@ -41,4 +52,189 @@ public class FluidUtils {
}
+ public static Fluid generateFluid(String fluidName, int tempK, short[] rgba ,byte aState){
+ Fluid generatedFluid = null;
+ switch (aState) {
+ case 0: {
+ generatedFluid = new GenericFluid(fluidName, 0, 100, tempK, 10000, false, rgba);
+ break;
+ }
+ default:
+ case 1:
+ case 4: {
+ generatedFluid = new GenericFluid(fluidName, 0, 100, tempK, 1000, false, rgba);
+ break;
+ }
+ case 2: {
+ generatedFluid = new GenericFluid(fluidName, 0, -100, tempK, 200, true, rgba);
+ break;
+ }
+ case 3: {
+ generatedFluid = new GenericFluid(fluidName, 15, -10000, tempK, 10, true, rgba);
+ break;
+ }
+ }
+ return generatedFluid;
+ }
+
+
+ public static Fluid addAutogeneratedMoltenFluid(String materialNameFormatted, short[] rgba, int MeltingPoint) {
+ return addFluid("molten." + materialNameFormatted.toLowerCase(), "molten.autogenerated", "Molten " + materialNameFormatted, null, rgba, 1, (MeltingPoint <= 0L) ? 1000L : MeltingPoint, null, null, 0);
+ }
+
+ public static Fluid addAutogeneratedMoltenFluid(final GT_Materials aMaterial) {
+ return addFluid("molten." + aMaterial.name().toLowerCase(), "molten.autogenerated", "Molten " + aMaterial.name(), aMaterial, aMaterial.mMoltenRGBa, 1, (aMaterial.mMeltingPoint <= 0L) ? 1000L : aMaterial.mMeltingPoint, null, null, 0);
+ }
+
+ public static Fluid addFluid(final String aName, final String aLocalized, final GT_Materials aMaterial, final int aState, final long aTemperatureK) {
+ return addFluid(aName, aLocalized, aMaterial, aState, aTemperatureK, null, null, 0);
+ }
+
+ public static Fluid addFluid(final String aName, final String aLocalized, final GT_Materials aMaterial, final int aState, final long aTemperatureK, final ItemStack aFullContainer, final ItemStack aEmptyContainer, final int aFluidAmount) {
+ return addFluid(aName, aName.toLowerCase(), aLocalized, aMaterial, null, aState, aTemperatureK, aFullContainer, aEmptyContainer, aFluidAmount);
+ }
+
+ public static Fluid addFluid(String aName, final String aTexture, final String aLocalized, final GT_Materials aMaterial, final short[] aRGBa, final int aState, final long aTemperatureK, final ItemStack aFullContainer, final ItemStack aEmptyContainer, final int aFluidAmount) {
+ aName = Utils.sanitizeString(aName.toLowerCase());
+ Fluid rFluid = new FluidGT6(aName, aTexture, (aRGBa != null) ? aRGBa : Dyes._NULL.getRGBA());
+ GT_LanguageManager.addStringLocalization(rFluid.getUnlocalizedName(), (aLocalized == null) ? aName : aLocalized);
+ if (FluidRegistry.registerFluid(rFluid)) {
+ switch (aState) {
+ case 0: {
+ rFluid.setGaseous(false);
+ rFluid.setViscosity(10000);
+ break;
+ }
+ case 1:
+ case 4: {
+ rFluid.setGaseous(false);
+ rFluid.setViscosity(1000);
+ break;
+ }
+ case 2: {
+ rFluid.setGaseous(true);
+ rFluid.setDensity(-100);
+ rFluid.setViscosity(200);
+ break;
+ }
+ case 3: {
+ rFluid.setGaseous(true);
+ rFluid.setDensity(-10000);
+ rFluid.setViscosity(10);
+ rFluid.setLuminosity(15);
+ break;
+ }
+ }
+ }
+ else {
+ rFluid = FluidRegistry.getFluid(aName);
+ }
+ if (rFluid.getTemperature() == new Fluid("test").getTemperature() || rFluid.getTemperature() <= 0) {
+ rFluid.setTemperature((int) (aTemperatureK));
+ }
+ if (aMaterial != null) {
+ switch (aState) {
+ case 1: {
+ aMaterial.mFluid = (rFluid);
+ break;
+ }
+ case 2: {
+ aMaterial.mGas = (rFluid);
+ break;
+ }
+ case 3: {
+ aMaterial.mPlasma = (rFluid);
+ break;
+ }
+ }
+ }
+ if (aFullContainer != null && aEmptyContainer != null && !FluidContainerRegistry.registerFluidContainer(new FluidStack(rFluid, aFluidAmount), aFullContainer, aEmptyContainer)) {
+ GT_Values.RA.addFluidCannerRecipe(aFullContainer, container(aFullContainer, false), null, new FluidStack(rFluid, aFluidAmount));
+ }
+ return rFluid;
+ }
+
+ public static boolean valid(final Object aStack) {
+ return aStack != null && aStack instanceof ItemStack && ((ItemStack)aStack).getItem() != null && ((ItemStack)aStack).stackSize >= 0;
+ }
+
+ public static boolean invalid(final Object aStack) {
+ return aStack == null || !(aStack instanceof ItemStack) || ((ItemStack)aStack).getItem() == null || ((ItemStack)aStack).stackSize < 0;
+ }
+
+ public static boolean equal(final ItemStack aStack1, final ItemStack aStack2) {
+ return equal(aStack1, aStack2, false);
+ }
+
+ public static boolean equal(final ItemStack aStack1, final ItemStack aStack2, final boolean aIgnoreNBT) {
+ return aStack1 != null && aStack2 != null && equal_(aStack1, aStack2, aIgnoreNBT);
+ }
+
+ public static boolean equal_(final ItemStack aStack1, final ItemStack aStack2, final boolean aIgnoreNBT) {
+ return aStack1.getItem() == aStack2.getItem() && (aIgnoreNBT || (aStack1.getTagCompound() == null == (aStack2.getTagCompound() == null) && (aStack1.getTagCompound() == null || aStack1.getTagCompound().equals((Object)aStack2.getTagCompound())))) && (meta(aStack1) == meta(aStack2) || meta(aStack1) == 32767 || meta(aStack2) == 32767);
+ }
+
+ public static ItemStack copy(final Object... aStacks) {
+ for (final Object tStack : aStacks) {
+ if (valid(tStack)) {
+ return ((ItemStack)tStack).copy();
+ }
+ }
+ return null;
+ }
+
+ public static ItemStack copyMeta(final long aMetaData, final Object... aStacks) {
+ final ItemStack rStack = copy(aStacks);
+ if (invalid(rStack)) {
+ return null;
+ }
+ return meta(rStack, aMetaData);
+ }
+
+ public static short meta(final ItemStack aStack) {
+ return (short)Items.feather.getDamage(aStack);
+ }
+
+ public static ItemStack meta(final ItemStack aStack, final long aMeta) {
+ Items.feather.setDamage(aStack, (int)(short)aMeta);
+ return aStack;
+ }
+
+ public static ItemStack amount(final long aAmount, final Object... aStacks) {
+ final ItemStack rStack = copy(aStacks);
+ if (invalid(rStack)) {
+ return null;
+ }
+ rStack.stackSize = (int)aAmount;
+ return rStack;
+ }
+
+ public static ItemStack container(final ItemStack aStack, final boolean aCheckIFluidContainerItems) {
+ if (invalid(aStack)) {
+ return null;
+ }
+ if (aStack.getItem().hasContainerItem(aStack)) {
+ return aStack.getItem().getContainerItem(aStack);
+ }
+ if (equal(aStack, ItemList.Cell_Empty.get(1), true)) {
+ return null;
+ }
+ if (aCheckIFluidContainerItems && aStack.getItem() instanceof IFluidContainerItem && ((IFluidContainerItem)aStack.getItem()).getCapacity(aStack) > 0) {
+ final ItemStack tStack = amount(1L, aStack);
+ ((IFluidContainerItem)aStack.getItem()).drain(tStack, Integer.MAX_VALUE, true);
+ if (!equal(aStack, tStack)) {
+ return tStack;
+ }
+ return null;
+ }
+ if (equal(aStack, ItemList.IC2_ForgeHammer.get(1)) || equal(aStack, ItemList.IC2_WireCutter.get(1))) {
+ return copyMeta(meta(aStack) + 1, aStack);
+ }
+ return null;
+ }
+
+ public static ItemStack container(final ItemStack aStack, final boolean aCheckIFluidContainerItems, final int aStacksize) {
+ return amount(aStacksize, container(aStack, aCheckIFluidContainerItems));
+ }
+
}
diff --git a/src/Java/gtPlusPlus/core/util/item/UtilsItems.java b/src/Java/gtPlusPlus/core/util/item/UtilsItems.java
index d68174f7bb..ab8829b7af 100644
--- a/src/Java/gtPlusPlus/core/util/item/UtilsItems.java
+++ b/src/Java/gtPlusPlus/core/util/item/UtilsItems.java
@@ -24,9 +24,12 @@ import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.lib.MaterialInfo;
import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.fluid.FluidUtils;
+import gtPlusPlus.core.util.materials.MaterialUtils;
import gtPlusPlus.core.util.wrapper.var;
import java.util.ArrayList;
+import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
@@ -39,34 +42,9 @@ import cpw.mods.fml.common.registry.GameRegistry;
public class UtilsItems {
- public static ItemStack getItemStackOfItem(Boolean modToCheck, String mod_itemname_meta){
- if (modToCheck){
- try{
- Item em = null;
-
- Item em1 = getItem(mod_itemname_meta);
- Utils.LOG_WARNING("Found: "+em1.toString());
- if (em1 != null){
- em = em1;
- }
- if (em != null ){
- ItemStack returnStack = new ItemStack(em,1);
- return returnStack;
- }
- Utils.LOG_WARNING(mod_itemname_meta+" not found.");
- return null;
- } catch (NullPointerException e) {
- Utils.LOG_ERROR(mod_itemname_meta+" not found. [NULL]");
- return null;
- }
- }
- return null;
- }
-
public static ItemStack getSimpleStack(Item x){
return getSimpleStack(x, 1);
}
-
public static ItemStack getSimpleStack(Item x, int i){
try {
ItemStack r = new ItemStack(x, i);
@@ -75,7 +53,6 @@ public class UtilsItems {
return null;
}
}
-
public static ItemStack getSimpleStack(ItemStack x, int i){
try {
ItemStack r = x.copy();
@@ -252,6 +229,16 @@ public class UtilsItems {
Item itemSpawnEgg = new BasicSpawnEgg(entityModID, parSpawnName, colourEgg, colourOverlay).setUnlocalizedName("spawn_egg_"+parSpawnName.toLowerCase()).setTextureName(CORE.MODID+":spawn_egg");
GameRegistry.registerItem(itemSpawnEgg, "spawnEgg"+parSpawnName);
}
+
+
+ public static ItemStack[] validItemsForOreDict(String oredictName){
+ List<?> validNames = MaterialUtils.oreDictValuesForEntry(oredictName);
+ ItemStack[] inputs = null;
+ for (int i=0; i<validNames.size();i++){
+ inputs[i] = (ItemStack) validNames.get(i);
+ }
+ return inputs;
+ }
public static ItemStack getItemStackOfAmountFromOreDict(String oredictName, int amount){
ArrayList<ItemStack> oreDictList = OreDictionary.getOres(oredictName);
@@ -326,7 +313,9 @@ public class UtilsItems {
temp = new BaseItemScrew("itemScrew"+unlocalizedName, materialName, Colour, materialTier);
temp = new BaseItemRotor("itemRotor"+unlocalizedName, materialName, Colour);
temp = new BaseItemGear("itemGear"+unlocalizedName, materialName, Colour, materialTier);
- }
+ }
+
+ FluidUtils.addAutogeneratedMoltenFluid(materialName, Utils.hex2RgbShort(Colour), 512);
}
diff --git a/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java b/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java
index 69548eb49a..0eae02d827 100644
--- a/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java
+++ b/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java
@@ -5,12 +5,15 @@ import gregtech.api.enums.Materials;
import gregtech.api.enums.TC_Aspects.TC_AspectStack;
import gregtech.api.enums.TextureSet;
import gregtech.api.objects.MaterialStack;
-import gtPlusPlus.core.lib.MaterialInfo;
+import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.util.Utils;
+import java.util.ArrayList;
import java.util.List;
+import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.EnumHelper;
+import net.minecraftforge.oredict.OreDictionary;
public class MaterialUtils {
@@ -31,6 +34,27 @@ public class MaterialUtils {
aColor, aExtraData, aMaterialList, aAspects);
}
+ public static List<?> oreDictValuesForEntry(String oredictName){
+ List<?> oredictItemNames;
+ if(OreDictionary.doesOreNameExist(oredictName)){
+ ArrayList<ItemStack> oredictItems = OreDictionary.getOres(oredictName);
+ oredictItemNames = Utils.convertArrayListToList(oredictItems);
+ return oredictItemNames;
+ }
+ return null;
+ }
+
+ public static Material generateMaterialFromGtENUM(Materials material){
+ String name = material.name();
+ short[] rgba = material.mRGBa;
+ int melting = material.mMeltingPoint;
+ 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);
+ }
+
/*
* That's shown, many times, in the EnumHelper code, all the add functions just wrap the addEnum function.
@@ -50,7 +74,7 @@ public class MaterialUtils {
- public static Materials GenerateGtMaterialForSingleUse(MaterialInfo s){
+ /*public static Materials GenerateGtMaterialForSingleUse(MaterialInfo s){
Materials yourName = EnumHelper.addEnum(
@@ -66,10 +90,10 @@ public class MaterialUtils {
- /*Class<? extends ItemCell> clz = item.getClass();
+ Class<? extends ItemCell> clz = item.getClass();
Method methode = clz.getDeclaredMethod("addCell", int.class, InternalName.class, Block[].class);
methode.setAccessible(true);
- ItemStack temp = (ItemStack) methode.invoke(item, cellID++, yourName, new Block[0]);*/
+ ItemStack temp = (ItemStack) methode.invoke(item, cellID++, yourName, new Block[0]);
@@ -82,6 +106,6 @@ public class MaterialUtils {
e.printStackTrace();
}
return null;
- }
+ }*/
}