mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 18:23:06 +00:00
Fixes
This commit is contained in:
parent
6d117f824d
commit
aa51048990
@ -143,7 +143,7 @@ public class IrisPregenerator {
|
|||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
task.iterateRegion(x, z, (xx, zz) -> generator.generateChunk(xx, zz, listener));
|
PregenTask.iterateRegion(x, z, (xx, zz) -> generator.generateChunk(xx, zz, listener));
|
||||||
}
|
}
|
||||||
|
|
||||||
listener.onRegionGenerated(x, z);
|
listener.onRegionGenerated(x, z);
|
||||||
|
@ -18,12 +18,15 @@
|
|||||||
|
|
||||||
package com.volmit.iris.core.pregenerator;
|
package com.volmit.iris.core.pregenerator;
|
||||||
|
|
||||||
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.math.Position2;
|
import com.volmit.iris.util.math.Position2;
|
||||||
import com.volmit.iris.util.math.Spiraled;
|
import com.volmit.iris.util.math.Spiraled;
|
||||||
import com.volmit.iris.util.math.Spiraler;
|
import com.volmit.iris.util.math.Spiraler;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Comparator;
|
||||||
|
|
||||||
@Builder
|
@Builder
|
||||||
@Data
|
@Data
|
||||||
public class PregenTask {
|
public class PregenTask {
|
||||||
@ -33,19 +36,20 @@ public class PregenTask {
|
|||||||
@Builder.Default
|
@Builder.Default
|
||||||
private int radius = 1;
|
private int radius = 1;
|
||||||
|
|
||||||
|
private static final KList<Position2> order = computeChunkOrder();
|
||||||
|
|
||||||
public void iterateRegions(Spiraled s)
|
public void iterateRegions(Spiraled s)
|
||||||
{
|
{
|
||||||
new Spiraler(radius * 2, radius * 2, s)
|
new Spiraler(radius * 2, radius * 2, s)
|
||||||
.setOffset(center.getX(), center.getZ()).drain();
|
.setOffset(center.getX(), center.getZ()).drain();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void iterateRegion(int x, int z, Spiraled s)
|
public static void iterateRegion(int xr, int zr, Spiraled s)
|
||||||
{
|
{
|
||||||
new Spiraler(33, 33, (xx, zz) -> {
|
for(Position2 i : order)
|
||||||
if (xx < 0 || xx > 31 || zz < 0 || zz > 31) {
|
{
|
||||||
s.on(xx+(x<<5), zz+(z<<5));
|
s.on(i.getX() + (xr << 5), i.getZ() + (zr << 5));
|
||||||
}
|
}
|
||||||
}).setOffset(15, 15).drain();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void iterateAllChunks(Spiraled s)
|
public void iterateAllChunks(Spiraled s)
|
||||||
@ -53,4 +57,20 @@ public class PregenTask {
|
|||||||
new Spiraler(radius * 2, radius * 2, (x, z) -> iterateRegion(x, z, s))
|
new Spiraler(radius * 2, radius * 2, (x, z) -> iterateRegion(x, z, s))
|
||||||
.setOffset(center.getX(), center.getZ()).drain();
|
.setOffset(center.getX(), center.getZ()).drain();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static KList<Position2> computeChunkOrder() {
|
||||||
|
Position2 center = new Position2(15, 15);
|
||||||
|
KList<Position2> p = new KList<>();
|
||||||
|
new Spiraler(33, 33, (x, z) -> {
|
||||||
|
int xx = x + 15;
|
||||||
|
int zz = z + 15;
|
||||||
|
if (xx < 0 || xx > 31 || zz < 0 || zz > 31) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
p.add(new Position2(xx, zz));
|
||||||
|
}).drain();
|
||||||
|
p.sort(Comparator.comparing((i) -> i.distance(center)));
|
||||||
|
return p;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user