diff --git a/src/main/java/com/volmit/iris/scaffold/engine/DirectWorldWriter.java b/src/main/java/com/volmit/iris/scaffold/engine/DirectWorldWriter.java index 7e1d16ff7..017eada65 100644 --- a/src/main/java/com/volmit/iris/scaffold/engine/DirectWorldWriter.java +++ b/src/main/java/com/volmit/iris/scaffold/engine/DirectWorldWriter.java @@ -5,7 +5,11 @@ import com.volmit.iris.nms.INMS; import com.volmit.iris.scaffold.cache.Cache; import com.volmit.iris.scaffold.parallel.BurstExecutor; import com.volmit.iris.scaffold.parallel.MultiBurst; -import com.volmit.iris.util.*; +import com.volmit.iris.util.B; +import com.volmit.iris.util.KList; +import com.volmit.iris.util.M; +import io.timeandspace.smoothie.OptimizationObjective; +import io.timeandspace.smoothie.SmoothieMap; import net.querz.mca.Chunk; import net.querz.mca.MCAFile; import net.querz.mca.MCAUtil; @@ -18,19 +22,20 @@ import org.bukkit.block.data.BlockData; import java.io.File; import java.io.IOException; +import java.util.Map; public class DirectWorldWriter { private final File worldFolder; - private final KMap writeBuffer; - private final KMap lastUse; - private static final KMap blockDataCache = new KMap<>(); - private static final KMap biomeIds = computeBiomeIDs(); + private final Map writeBuffer; + private final Map lastUse; + private static final Map blockDataCache = SmoothieMap.newBuilder().build();; + private static final Map biomeIds = computeBiomeIDs(); public DirectWorldWriter(File worldFolder) { this.worldFolder = worldFolder; - lastUse = new KMap<>(); - writeBuffer = new KMap<>(); + lastUse = SmoothieMap.newBuilder().build(); + writeBuffer = SmoothieMap.newBuilder().build(); new File(worldFolder, "region").mkdirs(); } @@ -38,9 +43,9 @@ public class DirectWorldWriter { { BurstExecutor ex2 = MultiBurst.burst.burst(writeBuffer.size()); - for(Long i : writeBuffer.k()) + for(Long i : new KList<>(writeBuffer.keySet())) { - if(M.ms() - lastUse.get(i) < 15000) + if(M.ms() - lastUse.get(i) < 5000) { continue; } @@ -69,7 +74,10 @@ public class DirectWorldWriter { lastUse.remove(i); MCAUtil.write(writeBuffer.get(i), f, true); - writeBuffer.remove(i); + synchronized (writeBuffer) + { + writeBuffer.remove(i); + } } catch (Throwable e) { e.printStackTrace(); } @@ -253,8 +261,11 @@ public class DirectWorldWriter { return writeBuffer.size(); } - private static KMap computeBiomeIDs() { - KMap biomeIds = new KMap<>(); + private static Map computeBiomeIDs() { + Map biomeIds = SmoothieMap.newBuilder() + .expectedSize(Biome.values().length) + .optimizeFor(OptimizationObjective.FOOTPRINT) + .build(); for(Biome i : Biome.values()) { diff --git a/src/main/java/com/volmit/iris/util/PregenJob.java b/src/main/java/com/volmit/iris/util/PregenJob.java index abe876c8e..438e55d6f 100644 --- a/src/main/java/com/volmit/iris/util/PregenJob.java +++ b/src/main/java/com/volmit/iris/util/PregenJob.java @@ -53,7 +53,7 @@ public class PregenJob implements Listener private double cps = 0; private int lg = 0; private long lt = M.ms(); - private int cubeSize = 32; + private int cubeSize = 9; private long nogen = M.ms(); private KList requeueMCA = new KList(); private RollingSequence acps = new RollingSequence(PaperLib.isPaper() ? 8 : 32);