aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/objects
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api/objects')
-rw-r--r--src/main/java/gregtech/api/objects/GT_FluidStack.java5
-rw-r--r--src/main/java/gregtech/api/objects/GT_UO_Dimension.java42
-rw-r--r--src/main/java/gregtech/api/objects/GT_UO_DimensionList.java82
-rw-r--r--src/main/java/gregtech/api/objects/GT_UO_Fluid.java61
-rw-r--r--src/main/java/gregtech/api/objects/ItemData.java2
-rw-r--r--src/main/java/gregtech/api/objects/MaterialStack.java2
6 files changed, 192 insertions, 2 deletions
diff --git a/src/main/java/gregtech/api/objects/GT_FluidStack.java b/src/main/java/gregtech/api/objects/GT_FluidStack.java
index 6ff1627ab7..96f8fc6849 100644
--- a/src/main/java/gregtech/api/objects/GT_FluidStack.java
+++ b/src/main/java/gregtech/api/objects/GT_FluidStack.java
@@ -68,4 +68,9 @@ public class GT_FluidStack extends FluidStack {
}
return new GT_FluidStack(this);
}
+
+ @Override
+ public String toString() {
+ return String.format("GT_FluidStack: %s x %s, ID:%s", this.amount, this.getFluid().getName(), this.getFluidID());
+ }
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/objects/GT_UO_Dimension.java b/src/main/java/gregtech/api/objects/GT_UO_Dimension.java
new file mode 100644
index 0000000000..cca5e22bf7
--- /dev/null
+++ b/src/main/java/gregtech/api/objects/GT_UO_Dimension.java
@@ -0,0 +1,42 @@
+package gregtech.api.objects;
+
+import com.google.common.collect.BiMap;
+import com.google.common.collect.HashBiMap;
+import net.minecraftforge.common.config.ConfigCategory;
+
+import java.util.Random;
+
+public class GT_UO_Dimension {
+
+ private BiMap<String, GT_UO_Fluid> fFluids;
+ private int maxChance;
+ public String Dimension = "null";
+
+ public GT_UO_Dimension(ConfigCategory aConfigCategory) {//TODO CONFIGURE
+ fFluids = HashBiMap.create();
+ if (aConfigCategory.containsKey("Dimension"))
+ {
+ aConfigCategory.get("Dimension").comment = "Dimension ID or Class Name";
+ Dimension = aConfigCategory.get("Dimension").getString();
+ }
+ maxChance = 0;
+ //System.out.println("GT UO "+aConfigCategory.getName()+" Dimension:"+Dimension);
+ for (int i = 0 ; i < aConfigCategory.getChildren().size(); i++) {
+ GT_UO_Fluid fluid = new GT_UO_Fluid((ConfigCategory)aConfigCategory.getChildren().toArray()[i]);
+ fFluids.put(fluid.Registry, fluid);
+ maxChance += fluid.Chance;
+ }
+ }
+
+ public GT_UO_Fluid getRandomFluid (Random aRandom) {
+ int random = aRandom.nextInt(1000);
+ for (BiMap.Entry<String, GT_UO_Fluid> fl : fFluids.entrySet()) {
+ int chance = fl.getValue().Chance*1000/maxChance;
+ if (random<=chance) return fl.getValue();
+ //System.out.println("GT UO "+fl.getValue().Registry+" Chance:"+chance+" Random:"+random);
+ random-=chance;
+ }
+ return null;
+ }
+
+}
diff --git a/src/main/java/gregtech/api/objects/GT_UO_DimensionList.java b/src/main/java/gregtech/api/objects/GT_UO_DimensionList.java
new file mode 100644
index 0000000000..36aad9a557
--- /dev/null
+++ b/src/main/java/gregtech/api/objects/GT_UO_DimensionList.java
@@ -0,0 +1,82 @@
+package gregtech.api.objects;
+
+import com.google.common.collect.BiMap;
+import com.google.common.collect.HashBiMap;
+import gregtech.api.util.GT_Log;
+import net.minecraftforge.common.DimensionManager;
+import net.minecraftforge.common.config.ConfigCategory;
+import net.minecraftforge.common.config.Configuration;
+
+public class GT_UO_DimensionList {
+
+ private Configuration fConfig;
+ private String fCategory;
+ private BiMap<String, GT_UO_Dimension> fDimensionList;
+
+ public int[] BlackList;
+
+ public GT_UO_DimensionList() {
+ fDimensionList = HashBiMap.create();
+ }
+
+ public GT_UO_Dimension GetDimension(int aDimension) {
+ if (fDimensionList.containsKey(Integer.toString(aDimension)))
+ return fDimensionList.get(Integer.toString(aDimension));
+ for (BiMap.Entry <String, GT_UO_Dimension> dl : fDimensionList.entrySet())
+ if (DimensionManager.getProvider(aDimension).getClass().getName().contains(dl.getValue().Dimension))
+ return dl.getValue();
+ return fDimensionList.get("Default");
+ }
+
+ public boolean CheckBlackList(int aDimensionId){
+ try {
+ if (java.util.Arrays.binarySearch(BlackList, aDimensionId) >= 0) return true;
+ else return false;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ public void SetConfigValues(String aDimensionName, String aDimension, String aName, String aRegistry, int aMinAmount, int aMaxAmount, int aChance, int aDecreasePerOperationAmount) {
+ String Category = fCategory+"."+aDimensionName;
+ fConfig.get(Category, "Dimension", aDimension).getString();
+ Category+="."+aName;
+ fConfig.get(Category, "Registry", aRegistry).getString();
+ fConfig.get(Category, "MinAmount", aMinAmount).getInt(aMinAmount);
+ fConfig.get(Category, "MaxAmount", aMaxAmount).getInt(aMaxAmount);
+ fConfig.get(Category, "Chance", aChance).getInt(aChance);
+ fConfig.get(Category, "DecreasePerOperationAmount", aDecreasePerOperationAmount).getInt(aDecreasePerOperationAmount);
+ //IT IS IN BUCKETS!!!
+ }
+
+ public void SetDafultValues() {
+ SetConfigValues("Overworld", "0", "gas_natural_gas", "gas_natural_gas", 0, 700, 20, 7);
+ SetConfigValues("Overworld", "0", "liquid_light_oil", "liquid_light_oil", 0, 650, 20, 6);
+ SetConfigValues("Overworld", "0", "liquid_medium_oil", "liquid_medium_oil", 0, 600, 20, 5);
+ SetConfigValues("Overworld", "0", "liquid_heavy_oil", "liquid_heavy_oil", 0, 550, 20, 4);
+ SetConfigValues("Overworld", "0", "oil", "oil", 0, 600, 20, 5);
+ SetConfigValues("Moon", "Moon", "helium-3", "helium-3", 25, 150, 100, 1);
+ }
+
+ public void getConfig(Configuration aConfig, String aCategory) {
+ fCategory=aCategory;
+ fConfig = aConfig;
+ if (!fConfig.hasCategory(fCategory))
+ SetDafultValues();
+
+ fConfig.setCategoryComment(fCategory, "Config Underground Fluids (Delete this Category for regenerate)");
+ fConfig.setCategoryComment(fCategory+".Default", "Set Default Generating (Use this Category for Default settings)");
+ fConfig.setCategoryComment(fCategory+".Overworld", "Set Overworld Generating");
+ fConfig.setCategoryComment(fCategory+".Moon", "Set Moon Generating");
+
+ int[] BlackList = {-1,1};
+ BlackList = aConfig.get(fCategory, "DimBlackList", BlackList, "Dimension IDs Black List").getIntList();
+ java.util.Arrays.sort(BlackList);
+
+ for (int i = 0 ; i < fConfig.getCategory(fCategory).getChildren().size(); i++) {
+ GT_UO_Dimension Dimension = new GT_UO_Dimension((ConfigCategory)fConfig.getCategory(fCategory).getChildren().toArray()[i]);
+ fDimensionList.put(Dimension.Dimension, Dimension);
+ }
+ }
+
+}
diff --git a/src/main/java/gregtech/api/objects/GT_UO_Fluid.java b/src/main/java/gregtech/api/objects/GT_UO_Fluid.java
new file mode 100644
index 0000000000..5675f73b45
--- /dev/null
+++ b/src/main/java/gregtech/api/objects/GT_UO_Fluid.java
@@ -0,0 +1,61 @@
+package gregtech.api.objects;
+
+import net.minecraftforge.common.config.ConfigCategory;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
+
+import java.util.Random;
+
+import static gregtech.common.GT_UndergroundOil.DIVIDER;
+
+public class GT_UO_Fluid {
+ public String Registry = "null";
+ public int MaxAmount = 0;
+ public int MinAmount = 0;
+ public int Chance = 0;
+ public int DecreasePerOperationAmount = 5;
+
+ public GT_UO_Fluid(ConfigCategory aConfigCategory) {//TODO CONFIGURE
+ if (aConfigCategory.containsKey("Registry"))
+ {
+ aConfigCategory.get("Registry").comment = "Fluid registry name";
+ Registry = aConfigCategory.get("Registry").getString();
+ }
+ if (aConfigCategory.containsKey("MaxAmount"))
+ {
+ aConfigCategory.get("MaxAmount").comment = "Max amount generation (per operation, sets the VeinData) 80000 MAX";
+ MaxAmount = aConfigCategory.get("MaxAmount").getInt(0);
+ }
+ if (aConfigCategory.containsKey("MinAmount"))
+ {
+ aConfigCategory.get("MinAmount").comment = "Min amount generation (per operation, sets the VeinData) 0 MIN";
+ MinAmount = aConfigCategory.get("MinAmount").getInt(0);
+ }
+ if (aConfigCategory.containsKey("Chance"))
+ {
+ aConfigCategory.get("Chance").comment = "Chance generating (weighted chance!, there will be a fluid in chunk always!)";
+ Chance = aConfigCategory.get("Chance").getInt(0);
+ }
+ if (aConfigCategory.containsKey("DecreasePerOperationAmount"))
+ {
+ aConfigCategory.get("DecreasePerOperationAmount").comment = "Decrease per operation (actual fluid gained works like (Litre)VeinData/5000)";
+ DecreasePerOperationAmount = aConfigCategory.get("DecreasePerOperationAmount").getInt(5);
+ }
+ //System.out.println("GT UO "+aConfigCategory.getName()+" Fluid:"+Registry+" Max:"+MaxAmount+" Min:"+MinAmount+" Chance:"+Chance);
+ }
+
+ public Fluid getFluid(){
+ try {
+ return FluidRegistry.getFluid(this.Registry);
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public int getRandomAmount(Random aRandom){//generates some random ass number that correlates to extraction speeds
+ int div = (int)Math.floor(Math.pow((MaxAmount-MinAmount)*100.d*DIVIDER, 0.2d));
+ int min = (int)Math.floor(Math.pow(MinAmount*100.d*DIVIDER, 0.2d));
+ double amount = min+aRandom.nextInt(div)+aRandom.nextDouble();
+ return (int) (Math.pow(amount, 5) / 100);//reverses the computation above
+ }
+} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/objects/ItemData.java b/src/main/java/gregtech/api/objects/ItemData.java
index 4609e8e613..3ca1fad5d8 100644
--- a/src/main/java/gregtech/api/objects/ItemData.java
+++ b/src/main/java/gregtech/api/objects/ItemData.java
@@ -119,6 +119,6 @@ public class ItemData {
@Override
public String toString() {
if (mPrefix == null || mMaterial == null || mMaterial.mMaterial == null) return "";
- return String.valueOf(new StringBuilder().append(mPrefix.name()).append(mMaterial.mMaterial.name()));
+ return String.valueOf(new StringBuilder().append(mPrefix.name()).append(mMaterial.mMaterial.mName));
}
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/objects/MaterialStack.java b/src/main/java/gregtech/api/objects/MaterialStack.java
index 6066d3cf23..62adefa35b 100644
--- a/src/main/java/gregtech/api/objects/MaterialStack.java
+++ b/src/main/java/gregtech/api/objects/MaterialStack.java
@@ -35,7 +35,7 @@ public class MaterialStack implements Cloneable {
String temp1 = "", temp2 = mMaterial.getToolTip(true), temp3 = "", temp4 = "";
if (mAmount > 1) {
temp4 = String.valueOf(mAmount);
- if (mMaterial.mMaterialList.size() > 1) {
+ if (mMaterial.mMaterialList.size() > 1 || (mMaterial.mMaterialList.size() == 1 && mMaterial.mElement == null)) {
temp1 = "(";
temp3 = ")";
}