Fix regens

This commit is contained in:
cyberpwn 2021-08-26 02:02:25 -04:00
parent 4a1de4c0da
commit fe78d4f1e7

View File

@ -60,75 +60,77 @@ public class CommandIrisRegen extends MortarCommand {
if(IrisToolbelt.isIrisWorld(sender.player().getWorld())) if(IrisToolbelt.isIrisWorld(sender.player().getWorld()))
{ {
PlatformChunkGenerator plat = IrisToolbelt.access(sender.player().getWorld()); J.a(() -> {
Engine engine = plat.getEngine(); PlatformChunkGenerator plat = IrisToolbelt.access(sender.player().getWorld());
try Engine engine = plat.getEngine();
{ try
int vd = Integer.parseInt(args[0]);
int rg = 0;
Chunk cx = sender.player().getLocation().getChunk();
KList<Runnable> js = new KList<>();
BurstExecutor b = MultiBurst.burst.burst();
b.setMulticore(false);
int rad = engine.getMantle().getRealRadius();
for(int i = -(vd+rad); i <= vd+rad; i++) {
for (int j = -(vd+rad); j <= vd+rad; j++) {
engine.getMantle().getMantle().deleteChunk(i + cx.getX(), j + cx.getZ());
}
}
for(int i = -vd; i <= vd; i++)
{ {
for(int j = -vd; j <= vd; j++) int vd = Integer.parseInt(args[0]);
{ int rg = 0;
int finalJ = j; Chunk cx = sender.player().getLocation().getChunk();
int finalI = i; KList<Runnable> js = new KList<>();
b.queue(() -> plat.injectChunkReplacement(sender.player().getWorld(), finalI + cx.getX(), finalJ + cx.getZ(), (f) -> { BurstExecutor b = MultiBurst.burst.burst();
synchronized (js) b.setMulticore(false);
{ int rad = engine.getMantle().getRealRadius();
js.add(f); for(int i = -(vd+rad); i <= vd+rad; i++) {
} for (int j = -(vd+rad); j <= vd+rad; j++) {
})); engine.getMantle().getMantle().deleteChunk(i + cx.getX(), j + cx.getZ());
}
}
b.complete();
sender.sendMessage("Regenerating " + Form.f(js.size()) + " Sections");
QueueJob<Runnable> r = new QueueJob<>() {
final KList<Future<?>> futures = new KList<>();
@Override
public void execute(Runnable runnable) {
futures.add(J.sfut(runnable));
if(futures.size() > 64)
{
while(futures.isNotEmpty())
{
try {
futures.remove(0).get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
} }
} }
@Override for(int i = -vd; i <= vd; i++)
public String getName() { {
return "Regenerating"; for(int j = -vd; j <= vd; j++)
{
int finalJ = j;
int finalI = i;
b.queue(() -> plat.injectChunkReplacement(sender.player().getWorld(), finalI + cx.getX(), finalJ + cx.getZ(), (f) -> {
synchronized (js)
{
js.add(f);
}
}));
}
} }
};
r.queue(js);
r.execute(sender);
}
catch(Throwable e) b.complete();
{ sender.sendMessage("Regenerating " + Form.f(js.size()) + " Sections");
sender.sendMessage("Unable to parse view-distance"); QueueJob<Runnable> r = new QueueJob<>() {
} final KList<Future<?>> futures = new KList<>();
@Override
public void execute(Runnable runnable) {
futures.add(J.sfut(runnable));
if(futures.size() > 64)
{
while(futures.isNotEmpty())
{
try {
futures.remove(0).get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
}
@Override
public String getName() {
return "Regenerating";
}
};
r.queue(js);
r.execute(sender);
}
catch(Throwable e)
{
sender.sendMessage("Unable to parse view-distance");
}
});
} }
return true; return true;