9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-30 12:29:20 +00:00

Writer fixes

This commit is contained in:
Daniel Mills
2020-12-29 06:14:18 -05:00
parent ee557d8191
commit f4eb0cfbcb
9 changed files with 417 additions and 16 deletions

View File

@@ -6,6 +6,7 @@ import com.volmit.iris.generator.IrisEngineCompound;
import com.volmit.iris.manager.IrisDataManager;
import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.object.IrisDimension;
import com.volmit.iris.pregen.DirectWorldWriter;
import com.volmit.iris.scaffold.IrisWorlds;
import com.volmit.iris.scaffold.cache.Cache;
import com.volmit.iris.scaffold.hunk.Hunk;
@@ -312,11 +313,6 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
public void directWriteMCA(World w, int x, int z, DirectWorldWriter writer, MultiBurst burst)
{
if(writer.getMCAFile(x, z).exists())
{
return;
}
BurstExecutor e = burst.burst(1024);
int mcaox = x << 5;
int mcaoz = z << 5;
@@ -327,7 +323,9 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
for(int j = 0; j < 32; j++)
{
int jj = j;
e.queue(() -> directWriteChunk(w, ii + mcaox, jj + mcaoz, writer));
e.queue(() -> {
directWriteChunk(w, ii + mcaox, jj + mcaoz, writer);
});
}
}

View File

@@ -2,6 +2,7 @@ package com.volmit.iris.scaffold.engine;
import com.volmit.iris.manager.IrisDataManager;
import com.volmit.iris.object.*;
import com.volmit.iris.pregen.DirectWorldWriter;
import com.volmit.iris.scaffold.data.DataProvider;
import com.volmit.iris.scaffold.parallel.MultiBurst;
import com.volmit.iris.util.*;

View File

@@ -80,7 +80,7 @@ public class HunkRegionSlice<T>
public void save()
{
BurstExecutor e = MultiBurst.burst.burst(save.size());
BurstExecutor e = MultiBurst.burst.burst();
for(ChunkPosition i : save.copy())
{
if(i == null)
@@ -89,7 +89,16 @@ public class HunkRegionSlice<T>
}
e.queue(() -> save(i.getX(), i.getZ()));
save.remove(i);
try
{
save.remove(i);
}
catch(Throwable ef)
{
}
}
e.complete();

View File

@@ -83,4 +83,12 @@ public class MultiBurst
service.execute(o);
}
}
public void shutdownNow() {
service.shutdownNow().forEach(Runnable::run);
}
public void shutdown() {
service.shutdown();
}
}