- tidy up block tags
- fix biome tag reload causing hang - remove neighbour evaluation in Erosion
This commit is contained in:
parent
4c4165400d
commit
1bb4954867
@ -32,7 +32,7 @@ public class Cache {
|
|||||||
this.renderer = RegionGenerator.builder()
|
this.renderer = RegionGenerator.builder()
|
||||||
.factory(new WorldGeneratorFactory(context))
|
.factory(new WorldGeneratorFactory(context))
|
||||||
.pool(ThreadPool.getCommon())
|
.pool(ThreadPool.getCommon())
|
||||||
.size(3, 0)
|
.size(3, 2)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,11 +43,11 @@ public class Erosion implements Filter {
|
|||||||
|
|
||||||
applyMain(map, seedX, seedZ, iterations, random);
|
applyMain(map, seedX, seedZ, iterations, random);
|
||||||
|
|
||||||
applyNeighbours(map, seedX, seedZ, iterations, random);
|
// applyNeighbours(map, seedX, seedZ, iterations, random);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int nextCoord(Size size, Random random) {
|
private int nextCoord(Size size, Random random) {
|
||||||
return size.border + random.nextInt(size.size - 1);
|
return random.nextInt(size.total - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyMain(Filterable<?> map, int seedX, int seedZ, int iterations, Random random) {
|
private void applyMain(Filterable<?> map, int seedX, int seedZ, int iterations, Random random) {
|
||||||
@ -59,44 +59,6 @@ public class Erosion implements Filter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyNeighbours(Filterable<?> map, int centerX, int centerZ, int iterations, Random random) {
|
|
||||||
PosIterator regions = PosIterator.area(-1, -1, 3, 3);
|
|
||||||
while (regions.next()) {
|
|
||||||
int dx = regions.x();
|
|
||||||
int dz = regions.z();
|
|
||||||
if (dx == 0 && dz == 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
int rx = centerX + dx;
|
|
||||||
int rz = centerZ + dz;
|
|
||||||
random.setSeed(NoiseUtil.seed(rx, rz));
|
|
||||||
applyNeighbour(map, dx, dz, iterations, random);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void applyNeighbour(Filterable<?> map, int deltaX, int deltaZ, int iterations, Random random) {
|
|
||||||
int min = -map.getSize().border;
|
|
||||||
int max = map.getSize().size + map.getSize().border - 1;
|
|
||||||
int neighbourOffsetX = deltaX * map.getSize().size;
|
|
||||||
int neighbourOffsetZ = deltaZ * map.getSize().size;
|
|
||||||
while (iterations-- > 0) {
|
|
||||||
int posX = nextCoord(map.getSize(), random);
|
|
||||||
int posZ = nextCoord(map.getSize(), random);
|
|
||||||
int relX = posX + neighbourOffsetX;
|
|
||||||
int relZ = posZ + neighbourOffsetZ;
|
|
||||||
|
|
||||||
// is inside the border box
|
|
||||||
if (relX > min && relZ > min && relX < max && relZ < max) {
|
|
||||||
// shouldn't happen
|
|
||||||
if (relX > 0 && relZ > 0 && relX < map.getSize().size && relZ < map.getSize().size) {
|
|
||||||
System.out.println("err?");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
apply(map.getBacking(), relX, relZ, map.getSize().total);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void apply(Cell<?>[] cells, float posX, float posY, int size) {
|
private void apply(Cell<?>[] cells, float posX, float posY, int size) {
|
||||||
float dirX = 0;
|
float dirX = 0;
|
||||||
float dirY = 0;
|
float dirY = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user