mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-19 02:36:59 +00:00
Fix paper gen & spigot gen & shutdown issue
This commit is contained in:
parent
78eebc255e
commit
3073d3aa9d
@ -1,5 +1,6 @@
|
|||||||
package com.volmit.iris.pregen;
|
package com.volmit.iris.pregen;
|
||||||
|
|
||||||
|
import com.sun.javafx.scene.control.skin.TableHeaderRow;
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.IrisSettings;
|
import com.volmit.iris.IrisSettings;
|
||||||
import com.volmit.iris.scaffold.IrisWorlds;
|
import com.volmit.iris.scaffold.IrisWorlds;
|
||||||
@ -66,6 +67,7 @@ public class Pregenerator implements Listener
|
|||||||
private final AtomicInteger vcax;
|
private final AtomicInteger vcax;
|
||||||
private final AtomicInteger vcaz;
|
private final AtomicInteger vcaz;
|
||||||
private final long elapsed;
|
private final long elapsed;
|
||||||
|
private final ChronoLatch latch;
|
||||||
|
|
||||||
public Pregenerator(World world, int blockSize, Runnable onComplete)
|
public Pregenerator(World world, int blockSize, Runnable onComplete)
|
||||||
{
|
{
|
||||||
@ -77,6 +79,7 @@ public class Pregenerator implements Listener
|
|||||||
{
|
{
|
||||||
instance();
|
instance();
|
||||||
elapsed = M.ms();
|
elapsed = M.ms();
|
||||||
|
latch = new ChronoLatch(5000);
|
||||||
memoryMetric = new AtomicReference<>("...");
|
memoryMetric = new AtomicReference<>("...");
|
||||||
method = new AtomicReference<>("STARTUP");
|
method = new AtomicReference<>("STARTUP");
|
||||||
memory = new AtomicLong(0);
|
memory = new AtomicLong(0);
|
||||||
@ -161,7 +164,8 @@ public class Pregenerator implements Listener
|
|||||||
directWriter.flush();
|
directWriter.flush();
|
||||||
flushWorld();
|
flushWorld();
|
||||||
onComplete.forEach(Runnable::run);
|
onComplete.forEach(Runnable::run);
|
||||||
|
running.set(false);
|
||||||
|
active.set(false);
|
||||||
if(gui != null)
|
if(gui != null)
|
||||||
{
|
{
|
||||||
gui.close();
|
gui.close();
|
||||||
@ -178,6 +182,7 @@ public class Pregenerator implements Listener
|
|||||||
perSecond.put((int) (up / (dur / 1000D)));
|
perSecond.put((int) (up / (dur / 1000D)));
|
||||||
p.reset();
|
p.reset();
|
||||||
p.begin();
|
p.begin();
|
||||||
|
updateProgress();
|
||||||
generatedLast.set(m);
|
generatedLast.set(m);
|
||||||
J.sleep(100);
|
J.sleep(100);
|
||||||
long lmem = memory.get();
|
long lmem = memory.get();
|
||||||
@ -257,6 +262,17 @@ public class Pregenerator implements Listener
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateProgress()
|
||||||
|
{
|
||||||
|
if(!latch.flip())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] v = getProgress();
|
||||||
|
Iris.info("[Pregen]: " + v[0] + " " + v[1] + " " + v[2] + " " + v[3]);
|
||||||
|
}
|
||||||
|
|
||||||
private void generateDeferedMCARegion(int x, int z, MultiBurst burst, Consumer3<Integer, Integer, Consumer2<Integer, Integer>> mcaIteration) {
|
private void generateDeferedMCARegion(int x, int z, MultiBurst burst, Consumer3<Integer, Integer, Consumer2<Integer, Integer>> mcaIteration) {
|
||||||
BurstExecutor e = burst.burst(1024);
|
BurstExecutor e = burst.burst(1024);
|
||||||
int mcaox = x << 5;
|
int mcaox = x << 5;
|
||||||
@ -265,10 +281,9 @@ public class Pregenerator implements Listener
|
|||||||
{
|
{
|
||||||
method.set("PaperAsync (Slow)");
|
method.set("PaperAsync (Slow)");
|
||||||
mcaIteration.accept(mcaox, mcaoz, (ii, jj) -> {
|
mcaIteration.accept(mcaox, mcaoz, (ii, jj) -> {
|
||||||
draw(ii, jj, COLOR_MCA_GENERATE_SLOW);
|
e.queue(() -> {
|
||||||
CompletableFuture<Chunk> cc = PaperLib.getChunkAtAsync(world, ii, jj);
|
CompletableFuture<Chunk> cc = PaperLib.getChunkAtAsync(world, ii, jj);
|
||||||
draw(ii, jj, COLOR_MCA_GENERATE_SLOW_ASYNC);
|
draw(ii, jj, COLOR_MCA_GENERATE_SLOW_ASYNC);
|
||||||
e.queue(() -> {
|
|
||||||
cc.join();
|
cc.join();
|
||||||
draw(ii, jj, COLOR_MCA_GENERATED);
|
draw(ii, jj, COLOR_MCA_GENERATED);
|
||||||
generated.getAndIncrement();
|
generated.getAndIncrement();
|
||||||
@ -283,9 +298,10 @@ public class Pregenerator implements Listener
|
|||||||
{
|
{
|
||||||
AtomicInteger m = new AtomicInteger();
|
AtomicInteger m = new AtomicInteger();
|
||||||
method.set("Spigot (Very Slow)");
|
method.set("Spigot (Very Slow)");
|
||||||
|
KList<Runnable> q = new KList<>();
|
||||||
mcaIteration.accept(mcaox, mcaoz, (ii, jj) -> {
|
mcaIteration.accept(mcaox, mcaoz, (ii, jj) -> {
|
||||||
|
q.add(() -> {
|
||||||
draw(ii, jj, COLOR_MCA_GENERATE_SLOW);
|
draw(ii, jj, COLOR_MCA_GENERATE_SLOW);
|
||||||
J.s(() -> {
|
|
||||||
world.getChunkAt(ii, jj).load(true);
|
world.getChunkAt(ii, jj).load(true);
|
||||||
draw(ii, jj, COLOR_MCA_GENERATED);
|
draw(ii, jj, COLOR_MCA_GENERATED);
|
||||||
m.getAndIncrement();
|
m.getAndIncrement();
|
||||||
@ -294,6 +310,32 @@ public class Pregenerator implements Listener
|
|||||||
vcaz.set(jj);
|
vcaz.set(jj);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
ChronoLatch tick = new ChronoLatch(1000);
|
||||||
|
new SR(0) {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if(tick.flip())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(q.isEmpty())
|
||||||
|
{
|
||||||
|
cancel();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
q.pop().run();
|
||||||
|
}
|
||||||
|
|
||||||
|
catch(Throwable e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
while(m.get() < 1024)
|
while(m.get() < 1024)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user