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_UO_Dimension.java48
-rw-r--r--src/main/java/gregtech/api/objects/GT_UO_DimensionList.java92
-rw-r--r--src/main/java/gregtech/api/objects/GT_UO_Fluid.java41
3 files changed, 181 insertions, 0 deletions
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..9d10284f22
--- /dev/null
+++ b/src/main/java/gregtech/api/objects/GT_UO_Dimension.java
@@ -0,0 +1,48 @@
+package gregtech.api.objects;
+
+import java.util.ArrayList;
+import java.util.Random;
+import java.util.Set;
+
+import com.google.common.collect.BiMap;
+import com.google.common.collect.HashBiMap;
+
+import gregtech.api.enums.GT_Values;
+import net.minecraftforge.common.config.ConfigCategory;
+import net.minecraftforge.common.config.Configuration;
+import net.minecraftforge.fluids.Fluid;
+
+public class GT_UO_Dimension {
+
+ private BiMap<String, GT_UO_Fluid> fFluids;
+ private int maxChance;
+ public String Dimension;
+
+ public GT_UO_Dimension(ConfigCategory aConfigCategory) {
+ fFluids = HashBiMap.create();
+ 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(3);
+ random = aRandom.nextInt(1000);
+ int step = 0;
+ 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..b380392249
--- /dev/null
+++ b/src/main/java/gregtech/api/objects/GT_UO_DimensionList.java
@@ -0,0 +1,92 @@
+package gregtech.api.objects;
+
+import com.google.common.collect.BiMap;
+import com.google.common.collect.HashBiMap;
+
+import gregtech.GT_Mod;
+import gregtech.api.enums.GT_Values;
+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) {
+ String Category = fCategory+"."+aDimensionName;
+ fConfig.get(Category, "Dimension", aDimension, "Dimension ID or Class Name").getString();
+ Category+="."+aName;
+ fConfig.get(Category, "Registry", aRegistry, "Fluid registry").getString();
+ fConfig.get(Category, "MinAmount", aMinAmount, "Min amount (Amount in step)").getInt(aMinAmount);
+ fConfig.get(Category, "MaxAmount", aMaxAmount, "Max amount (Amount in step)").getInt(aMaxAmount);
+ fConfig.get(Category, "Chance", aChance, "Chance generating").getInt(aChance);
+ }
+
+ public void SetDafultValues() {
+ fConfig.setCategoryComment(fCategory+".Default", "Set Default Generating");
+ SetConfigValues("Default", "Default", "gas_natural_gas", "gas_natural_gas", 0, 625, 20);
+ SetConfigValues("Default", "Default", "liquid_light_oil", "liquid_light_oil", 0, 625, 20);
+ SetConfigValues("Default", "Default", "liquid_medium_oil", "liquid_medium_oil", 0, 625, 20);
+ SetConfigValues("Default", "Default", "liquid_heavy_oil", "liquid_heavy_oil", 0, 625, 20);
+ SetConfigValues("Default", "Default", "oil", "oil", 0, 625, 20);
+
+ fConfig.setCategoryComment(fCategory+".Overworld", "Set Overworld Generating");
+ SetConfigValues("Overworld", "0", "gas_natural_gas", "gas_natural_gas", 0, 625, 20);
+ SetConfigValues("Overworld", "0", "liquid_light_oil", "liquid_light_oil", 0, 625, 20);
+ SetConfigValues("Overworld", "0", "liquid_medium_oil", "liquid_medium_oil", 0, 625, 20);
+ SetConfigValues("Overworld", "0", "liquid_heavy_oil", "liquid_heavy_oil", 0, 625, 20);
+ SetConfigValues("Overworld", "0", "oil", "oil", 0, 625, 20);
+
+ fConfig.setCategoryComment(fCategory+".Nether", "Set Nether Generating");
+ SetConfigValues("Nether", "-1", "ic2pahoehoelava", "ic2pahoehoelava", 0, 250, 100);
+
+ fConfig.setCategoryComment(fCategory+".Moon", "Set Moon Generating");
+ SetConfigValues("Moon", "Moon", "molten-cheese", "molten.cheese", 0, 125, 5);
+ SetConfigValues("Moon", "Moon", "helium-3", "helium-3", 0, 375, 95);
+ }
+
+ public void getConfig(Configuration aConfig, String aCategory) {
+ fCategory=aCategory;
+ fConfig = aConfig;
+ if (!fConfig.hasCategory(fCategory))
+ SetDafultValues();
+
+ fConfig.setCategoryComment(fCategory, "Config Undeground Fluids (Delete this Category for regenerate)");
+ int[] BlackList = {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..e326fac46c
--- /dev/null
+++ b/src/main/java/gregtech/api/objects/GT_UO_Fluid.java
@@ -0,0 +1,41 @@
+package gregtech.api.objects;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Random;
+
+import gregtech.api.enums.GT_Values;
+import net.minecraftforge.common.config.ConfigCategory;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
+
+public class GT_UO_Fluid {
+ public String Registry;
+ public int MaxAmount;
+ public int MinAmount;
+ public int Chance;
+
+ public GT_UO_Fluid(ConfigCategory aConfigCategory) {
+ Registry = aConfigCategory.get("Registry").getString();;
+ MaxAmount = aConfigCategory.get("MaxAmount").getInt();
+ MinAmount = aConfigCategory.get("MinAmount").getInt();
+ Chance = aConfigCategory.get("Chance").getInt();
+ //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){
+ int r1 = (int)Math.round(Math.pow((MaxAmount-MinAmount)*500000.d, 0.2));
+ int r2 = (int)Math.floor(Math.pow(MinAmount*500000.d, 0.2));
+ double amount = aRandom.nextInt(r1)+r2+aRandom.nextDouble();
+ return (int) (Math.pow(amount, 5) / 100);
+ }
+
+} \ No newline at end of file