diff options
author | Richard Hendricks <richardhendricks@pobox.com> | 2017-10-17 02:23:08 -0500 |
---|---|---|
committer | Richard Hendricks <richardhendricks@pobox.com> | 2017-10-17 02:23:08 -0500 |
commit | 29d2846c40e9f69374f2b0c2701c11073ec7e287 (patch) | |
tree | 9ea48487005895d76aced09b7775c7dc3e7b2c1c /src/main | |
parent | 94b24d92e0b533e0631c70748c32a0b5719bfb68 (diff) | |
download | GT5-Unofficial-29d2846c40e9f69374f2b0c2701c11073ec7e287.tar.gz GT5-Unofficial-29d2846c40e9f69374f2b0c2701c11073ec7e287.tar.bz2 GT5-Unofficial-29d2846c40e9f69374f2b0c2701c11073ec7e287.zip |
Preserve debug messages and bugfix for deep dark doing multiple worldgens on a single chunk.
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java | 12 | ||||
-rw-r--r-- | src/main/java/gregtech/common/GT_Worldgenerator.java | 26 |
2 files changed, 33 insertions, 5 deletions
diff --git a/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java b/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java index 7c89ea443f..dcc256498b 100644 --- a/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java +++ b/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java @@ -16,6 +16,7 @@ import java.util.ArrayList; import java.util.Random;
import static gregtech.api.enums.GT_Values.debugOrevein;
+import static gregtech.api.enums.GT_Values.debugWorldGen;
public class GT_Worldgen_GT_Ore_Layer
extends GT_Worldgen {
@@ -51,7 +52,15 @@ public class GT_Worldgen_GT_Ore_Layer //this.mMars = GregTech_API.sWorldgenFile.get(aTextWorldgen + this.mWorldGenName, "Mars", aMars);
//this.mAsteroid = GregTech_API.sWorldgenFile.get(aTextWorldgen + this.mWorldGenName, "Asteroid", aAsteroid);
this.mMinY = ((short) GregTech_API.sWorldgenFile.get(aTextWorldgen + this.mWorldGenName, "MinHeight", aMinY));
- this.mMaxY = ((short) Math.max(this.mMinY + 5, GregTech_API.sWorldgenFile.get(aTextWorldgen + this.mWorldGenName, "MaxHeight", aMaxY)));
+ short mMaxY = ((short) GregTech_API.sWorldgenFile.get(aTextWorldgen + this.mWorldGenName, "MaxHeight", aMaxY));
+ if (mMaxY < (this.mMinY + 7)) {
+ GT_Log.out.println(
+ "Oremix " + this.mWorldGenName +
+ " has invalid Min/Max heights!"
+ );
+ mMaxY = (short) (this.mMinY + 7);
+ }
+ this.mMaxY = mMaxY;
this.mWeight = ((short) GregTech_API.sWorldgenFile.get(aTextWorldgen + this.mWorldGenName, "RandomWeight", aWeight));
this.mDensity = ((short) GregTech_API.sWorldgenFile.get(aTextWorldgen + this.mWorldGenName, "Density", aDensity));
this.mSize = ((short) Math.max(1, GregTech_API.sWorldgenFile.get(aTextWorldgen + this.mWorldGenName, "Size", aSize)));
@@ -130,6 +139,7 @@ public class GT_Worldgen_GT_Ore_Layer " chunkX="+aChunkX+
" chunkZ="+aChunkZ+
" chunkY="+tMinY+
+ " Density=" + this.mDensity +
" Secondary="+placeCount[1]+" "+new ItemStack(GregTech_API.sBlockOres1,1,mSecondaryMeta).getDisplayName()+
" Between="+placeCount[2]+" "+new ItemStack(GregTech_API.sBlockOres1,1,mBetweenMeta).getDisplayName()+
" Primary="+placeCount[0]+" "+new ItemStack(GregTech_API.sBlockOres1,1,mPrimaryMeta).getDisplayName()+
diff --git a/src/main/java/gregtech/common/GT_Worldgenerator.java b/src/main/java/gregtech/common/GT_Worldgenerator.java index 47990cae64..8ccce145ed 100644 --- a/src/main/java/gregtech/common/GT_Worldgenerator.java +++ b/src/main/java/gregtech/common/GT_Worldgenerator.java @@ -24,6 +24,7 @@ import static gregtech.api.enums.GT_Values.oreveinAttempts; import java.util.ArrayList;
import java.util.List;
import java.util.Random;
+import java.util.HashSet;
import static gregtech.api.enums.GT_Values.D1;
@@ -39,6 +40,7 @@ public class GT_Worldgenerator //private static int gcMaxSize = 400;
private static boolean endAsteroids = true;
public List<Runnable> mList = new ArrayList();
+ public HashSet<Long> ProcChunks = new HashSet<Long>();
public boolean mIsGenerating = false;
public static final Object listLock = new Object();
//private static boolean gcAsteroids = true;
@@ -64,15 +66,21 @@ public class GT_Worldgenerator public void generate(Random aRandom, int aX, int aZ, World aWorld, IChunkProvider aChunkGenerator, IChunkProvider aChunkProvider) {
synchronized (listLock)
{
- this.mList.add(new WorldGenContainer(new XSTR(aRandom.nextInt()), aX * 16, aZ * 16, ((aChunkGenerator instanceof ChunkProviderEnd)) || (aWorld.getBiomeGenForCoords(aX * 16 + 8, aZ * 16 + 8) == BiomeGenBase.sky) ? 1 : ((aChunkGenerator instanceof ChunkProviderHell)) || (aWorld.getBiomeGenForCoords(aX * 16 + 8, aZ * 16 + 8) == BiomeGenBase.hell) ? -1 : 0, aWorld, aChunkGenerator, aChunkProvider, aWorld.getBiomeGenForCoords(aX * 16 + 8, aZ * 16 + 8).biomeName));
- if (debugWorldGen) {GT_Log.out.println("ADD WorldGen chunk x:" + aX + " z:" + aZ + " SIZE: " + this.mList.size());}
+ if (!this.ProcChunks.contains( ((long)aX << 32) | ((long)(aZ) & 0x00000000ffffffffL)) ) {
+ this.ProcChunks.add( ((long)aX << 32) | ((long)(aZ) & 0x00000000ffffffffL));
+ this.mList.add(new WorldGenContainer(new XSTR(aRandom.nextInt()), aX * 16, aZ * 16, ((aChunkGenerator instanceof ChunkProviderEnd)) || (aWorld.getBiomeGenForCoords(aX * 16 + 8, aZ * 16 + 8) == BiomeGenBase.sky) ? 1 : ((aChunkGenerator instanceof ChunkProviderHell)) || (aWorld.getBiomeGenForCoords(aX * 16 + 8, aZ * 16 + 8) == BiomeGenBase.hell) ? -1 : 0, aWorld, aChunkGenerator, aChunkProvider, aWorld.getBiomeGenForCoords(aX * 16 + 8, aZ * 16 + 8).biomeName));
+ if (debugWorldGen) {GT_Log.out.println("ADD WorldGen chunk x:" + aX + " z:" + aZ + " SIZE: " + this.mList.size());}
+ } else {
+ if (debugWorldGen) {GT_Log.out.println("DUP WorldGen chunk x:" + aX + " z:" + aZ + " SIZE: " + this.mList.size() + " ProcChunks.size(): " + ProcChunks.size() ); }
+ }
}
if (!this.mIsGenerating) {
this.mIsGenerating = true;
int mList_sS=this.mList.size();
for (int i = 0; i < mList_sS; i++) {
WorldGenContainer toRun = (WorldGenContainer) this.mList.get(0);
- if (debugWorldGen) {GT_Log.out.println("RUN WorldGen chunk x:" + toRun.mX/16 + " z:" + toRun.mZ/16 + " SIZE: " + this.mList.size());}
+ if (debugWorldGen) {GT_Log.out.println("RUN WorldGen chunk x:" + toRun.mX/16 + " z:" + toRun.mZ/16 + " SIZE: " + this.mList.size() + " i: " + i );}
+ this.ProcChunks.remove( ((long)(toRun.mX/16) << 32) | ((long)(toRun.mZ/16) & 0x00000000ffffffffL));
synchronized (listLock)
{
this.mList.remove(0);
@@ -114,7 +122,9 @@ public class GT_Worldgenerator }
public void run() {
- String tDimensionName = this.mWorld.provider.getDimensionName();
+ String tDimensionName = "";
+ if (debugOrevein) { tDimensionName = this.mWorld.provider.getDimensionName(); }
+ long startTime = System.nanoTime();
if ((Math.abs(this.mX / 16) % 3 == 1) && (Math.abs(this.mZ / 16) % 3 == 1)) {
int oreveinRNG = this.mRandom.nextInt(100);
if (( oreveinRNG < oreveinPercentage) && (GT_Worldgen_GT_Ore_Layer.sWeight > 0) && (GT_Worldgen_GT_Ore_Layer.sList.size() > 0)) {
@@ -313,6 +323,14 @@ public class GT_Worldgenerator if (tChunk != null) {
tChunk.isModified = true;
}
+ long endTime = System.nanoTime();
+ long duration = (endTime - startTime);
+ if (debugWorldGen) {
+ GT_Log.out.println(
+ "Oregen took " + duration +
+ " nanoseconds"
+ );
+ }
}
}
}
|