aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java')
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java147
1 files changed, 142 insertions, 5 deletions
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java
index 9c94bf0029..073147696c 100644
--- a/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java
+++ b/src/main/java/pers/gwyog/gtneioreplugin/util/GT5OreLayerHelper.java
@@ -1,18 +1,35 @@
package pers.gwyog.gtneioreplugin.util;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.IOException;
import java.lang.reflect.Field;
+import java.nio.file.Files;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.function.BiConsumer;
+
+import com.opencsv.CSVReader;
+import com.opencsv.CSVWriter;
+import com.opencsv.bean.ColumnPositionMappingStrategy;
+import com.opencsv.bean.CsvToBean;
+import com.opencsv.bean.StatefulBeanToCsv;
+import com.opencsv.bean.StatefulBeanToCsvBuilder;
import cpw.mods.fml.common.Loader;
import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
+import gregtech.api.enums.Materials;
import gregtech.common.GT_Worldgen_GT_Ore_Layer;
import net.minecraft.client.resources.I18n;
import net.minecraft.item.ItemStack;
import pers.gwyog.gtneioreplugin.GTNEIOrePlugin;
+import pers.gwyog.gtneioreplugin.plugin.gregtech5.PluginGT5VeinStat;
public class GT5OreLayerHelper {
@@ -27,14 +44,108 @@ public class GT5OreLayerHelper {
DimIDs[i]=0;
for (GT_Worldgen_GT_Ore_Layer tWorldGen: GT_Worldgen_GT_Ore_Layer.sList)
mapOreLayerWrapper.put(tWorldGen.mWorldGenName, new OreLayerWrapper(tWorldGen));
+
+ if (GTNEIOrePlugin.csv) {
+ Iterator it = mapOreLayerWrapper.entrySet().iterator();
+ while (it.hasNext()) {
+ Oremix oremix = new Oremix();
+
+ Map.Entry pair = (Map.Entry)it.next();
+ String Dims = PluginGT5VeinStat.getDims((OreLayerWrapper)pair.getValue());
+ OreLayerWrapper oreLayer = (OreLayerWrapper) pair.getValue();
+ if (PluginGT5VeinStat.getLocalizedVeinName(oreLayer).length>2)
+ oremix.setOreName(PluginGT5VeinStat.getLocalizedVeinName(oreLayer)[0]+PluginGT5VeinStat.getLocalizedVeinName(oreLayer)[1]+PluginGT5VeinStat.getLocalizedVeinName(oreLayer)[2]);
+ else if (PluginGT5VeinStat.getLocalizedVeinName(oreLayer).length>1)
+ oremix.setOreName(PluginGT5VeinStat.getLocalizedVeinName(oreLayer)[0]+PluginGT5VeinStat.getLocalizedVeinName(oreLayer)[1]);
+ else
+ oremix.setOreName(PluginGT5VeinStat.getLocalizedVeinName(oreLayer)[0]);
+
+ oremix.setPrimary(PluginGT5VeinStat.getGTOreLocalizedName(oreLayer.Meta[0]));
+ oremix.setSecondary(PluginGT5VeinStat.getGTOreLocalizedName(oreLayer.Meta[1]));
+ oremix.setInbetween(PluginGT5VeinStat.getGTOreLocalizedName(oreLayer.Meta[2]));
+ oremix.setAround(PluginGT5VeinStat.getGTOreLocalizedName(oreLayer.Meta[3]));
+ oremix.setSize(oreLayer.size);
+ oremix.setHeight(oreLayer.worldGenHeightRange);
+ oremix.setDensity(oreLayer.density);
+ oremix.setWeight(oreLayer.randomWeight);
+ oremix.setMix("\'"+Integer.toString(oreLayer.Meta[0])+"|"+Integer.toString(oreLayer.Meta[1])+"|"+Integer.toString(oreLayer.Meta[2])+"|"+Integer.toString(oreLayer.Meta[3])+"\'");
+ oremix.as=Dims.contains("As");
+ oremix.bc=Dims.contains("BC");
+ oremix.be=Dims.contains("BE");
+ oremix.bf=Dims.contains("BF");
+ oremix.ca=Dims.contains("Ca");
+ oremix.cb=Dims.contains("CA");
+ oremix.ce=Dims.contains("Ce");
+ oremix.dd=Dims.contains("DD");
+ oremix.de=Dims.contains("De");
+ oremix.ea=Dims.contains("EA");
+ oremix.en=Dims.contains("En");
+ oremix.eu=Dims.contains("Eu");
+ oremix.ga=Dims.contains("Ga");
+ oremix.ha=Dims.contains("Ha");
+ oremix.io=Dims.contains("Io");
+ oremix.kb=Dims.contains("KB");
+ oremix.make=Dims.contains("MM");
+ oremix.ma=Dims.contains("Ma");
+ oremix.me=Dims.contains("Me");
+ oremix.mi=Dims.contains("Mi");
+ oremix.mo=Dims.contains("Mo");
+ oremix.ob=Dims.contains("Ob");
+ oremix.ph=Dims.contains("Ph");
+ oremix.pl=Dims.contains("Pl");
+ oremix.pr=Dims.contains("Pr");
+ oremix.tcetie=Dims.contains("TE");
+ oremix.tf=Dims.contains("TF");
+ oremix.ti=Dims.contains("Ti");
+ oremix.tr=Dims.contains("Tr");
+ oremix.vb=Dims.contains("VB");
+ oremix.ve=Dims.contains("Ve");
+ oremix.setOverworld(Dims.contains("Ow"));
+ oremix.setNether(Dims.contains("Ne"));
+ oremix.setEnd(Dims.contains("EN"));
+ GTNEIOrePlugin.OreVeins.add(oremix);
+
+
+ System.out.println(pair.getKey() + " = " + pair.getValue());
+ it.remove(); // avoids a ConcurrentModificationException
+ }
+ BufferedWriter one = null;
+ try {
+ one = Files.newBufferedWriter(Paths.get(GTNEIOrePlugin.CSVname));
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+
+ ColumnPositionMappingStrategy strat = new ColumnPositionMappingStrategy();
+ strat.setType(Oremix.class);
+ String[] columns = "ORENAME,PRIMARY,SECONDARY,INBETWEEN,AROUND,mix,TIER,HEIGHT,DENSITY,SIZE,WEIGHT,overworld,nether,end,ea,tf,mo,ma,ph,de,as,ce,eu,ga,ca,io,ve,me,en,ti,mi,ob,pr,tr,pl,kb,ha,make,dd,cb,vb,bc,be,bf,tcetie".split("\\,");
+ strat.setColumnMapping(columns);
+ StatefulBeanToCsv<Oremix> beanToCsv = new StatefulBeanToCsvBuilder(one)
+ .withQuotechar(CSVWriter.NO_QUOTE_CHARACTER)
+ .withMappingStrategy(strat)
+ .build();
+ List towrite = Combsort(GTNEIOrePlugin.OreVeins);
+ try {
+ one.write("Ore Name,Primary,Secondary,Inbetween,Around,ID,Tier,Height,Density,Size,Weight,Overworld,Nether,End,End Asteroids,Twilight Forest,Moon,Mars,Phobos,Deimos,Asteroids,Ceres,Europa,Ganymede,Callisto,Io,Venus,Mercury,Enceladus,Titan,Miranda,Oberon,Proteus,Triton,Pluto,Kuiper Belt,Haumea,Makemake,Deep Dark,Centauri Bb,Vega B,Barnard C,Barnard E,Barnard F,T Ceti E");
+ one.newLine();
+ beanToCsv.write(towrite);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ try {
+ one.flush();
+ one.close();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
}
public class OreLayerWrapper {
- public String veinName;
+ public String veinName,worldGenHeightRange, weightedIEChance;
public short[] Meta = new short[4];
- public String worldGenHeightRange;
- public String weightedIEChance;
- public int randomWeight;
+ public short randomWeight, size, density;
public List<Integer> Weight = new ArrayList<Integer>();
public OreLayerWrapper(GT_Worldgen_GT_Ore_Layer worldGen) {
@@ -43,10 +154,36 @@ public class GT5OreLayerHelper {
this.Meta[1] = worldGen.mSecondaryMeta;
this.Meta[2] = worldGen.mBetweenMeta;
this.Meta[3] = worldGen.mSporadicMeta;
+ this.size = worldGen.mSize;
+ this.density = worldGen.mDensity;
this.worldGenHeightRange = worldGen.mMinY + "-" + worldGen.mMaxY;
this.randomWeight = worldGen.mWeight;
}
}
-
+
+ public static <T> List<Oremix> Combsort(List<Oremix> liste) {
+ List<Oremix> liste2 = new ArrayList<Oremix>(liste.size());
+ for (Oremix element : liste) {
+ liste2.add(element);
+ }
+
+ int schritt = liste2.size();
+ boolean vertauscht = false;
+ do {
+ vertauscht = false;
+ if (schritt > 1) {
+ schritt = (int) (schritt / 1.3);
+ }
+ for (int i = 0; i < liste2.size() - schritt; i++) {
+ if (liste2.get(i).getOreName().substring(0, 3).compareTo((liste2.get(i + schritt).getOreName().substring(0, 3))) > 0) {
+ T tmp = (T) liste2.get(i);
+ liste2.set(i, liste2.get(i + schritt));
+ liste2.set(i + schritt, (Oremix) tmp);
+ vertauscht = true;
+ }
+ }
+ } while (vertauscht || schritt > 1);
+ return liste2;
+ }
}
\ No newline at end of file