diff options
author | Richard Hendricks <richardhendricks@pobox.com> | 2017-10-17 03:03:25 -0500 |
---|---|---|
committer | Richard Hendricks <richardhendricks@pobox.com> | 2017-10-17 03:03:25 -0500 |
commit | df14479aacd21fd5c8029be15082ea19d3c18c9c (patch) | |
tree | 7c5a88f6a68d6fa1e0436a5024945a3414236d37 /src | |
parent | 29d2846c40e9f69374f2b0c2701c11073ec7e287 (diff) | |
download | GT5-Unofficial-df14479aacd21fd5c8029be15082ea19d3c18c9c.tar.gz GT5-Unofficial-df14479aacd21fd5c8029be15082ea19d3c18c9c.tar.bz2 GT5-Unofficial-df14479aacd21fd5c8029be15082ea19d3c18c9c.zip |
Revert threadsafe code back to lossy code. Chunks will get skipped with this, but at least the worldgen won't lag.
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/gregtech/common/GT_Worldgenerator.java | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/src/main/java/gregtech/common/GT_Worldgenerator.java b/src/main/java/gregtech/common/GT_Worldgenerator.java index 8ccce145ed..f42bc4ef1b 100644 --- a/src/main/java/gregtech/common/GT_Worldgenerator.java +++ b/src/main/java/gregtech/common/GT_Worldgenerator.java @@ -63,34 +63,27 @@ public class GT_Worldgenerator }
}
+
public void generate(Random aRandom, int aX, int aZ, World aWorld, IChunkProvider aChunkGenerator, IChunkProvider aChunkProvider) {
- synchronized (listLock)
- {
- 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() ); }
- }
- }
+ 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 (!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() + " i: " + i );}
- this.ProcChunks.remove( ((long)(toRun.mX/16) << 32) | ((long)(toRun.mZ/16) & 0x00000000ffffffffL));
- synchronized (listLock)
- {
- this.mList.remove(0);
- }
- toRun.run();
+ ((Runnable) this.mList.get(i)).run();
}
+ if (debugWorldGen) {
+ GT_Log.out.println(
+ "Tossing " + (this.mList.size() - mList_sS) +
+ " chunks!"
+ );
+ }
+ this.mList.clear();
this.mIsGenerating = false;
}
}
+
//public synchronized void generate(Random aRandom, int aX, int aZ, World aWorld, IChunkProvider aChunkGenerator, IChunkProvider aChunkProvider) {//TODO CHECK???
// int tempDimensionId = aWorld.provider.dimensionId;
// if (tempDimensionId != -1 && tempDimensionId != 1 && !aChunkGenerator.getClass().getName().contains("galacticraft")) {
|