add resolution parameter to Column#forRanges

This commit is contained in:
dfsek 2022-06-14 18:34:58 -07:00
parent 5799b81414
commit eac8d3b4e8
4 changed files with 9 additions and 11 deletions

View File

@ -51,7 +51,7 @@ class BiomePipelineColumn implements Column<Biome> {
} }
@Override @Override
public void forRanges(IntIntObjConsumer<Biome> consumer) { public void forRanges(int resolution, IntIntObjConsumer<Biome> consumer) {
consumer.accept(min, max, biome); consumer.accept(min, max, biome);
} }

View File

@ -50,7 +50,7 @@ public class FeatureGenerationStage implements GenerationStage, StringIdentifiab
int tz = cz + chunkZ; int tz = cz + chunkZ;
world.getBiomeProvider() world.getBiomeProvider()
.getColumn(tx, tz, world) .getColumn(tx, tz, world)
.forRanges((min, max, biome) -> { .forRanges(resolution, (min, max, biome) -> {
for(int subChunkX = 0; subChunkX < resolution; subChunkX++) { for(int subChunkX = 0; subChunkX < resolution; subChunkX++) {
for(int subChunkZ = 0; subChunkZ < resolution; subChunkZ++) { for(int subChunkZ = 0; subChunkZ < resolution; subChunkZ++) {
int x = subChunkX + tx; int x = subChunkX + tx;

View File

@ -3,10 +3,6 @@ package com.dfsek.terra.api.util;
import com.dfsek.terra.api.util.function.IntIntObjConsumer; import com.dfsek.terra.api.util.function.IntIntObjConsumer;
import com.dfsek.terra.api.util.function.IntObjConsumer; import com.dfsek.terra.api.util.function.IntObjConsumer;
import com.google.common.collect.ImmutableList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.function.Consumer; import java.util.function.Consumer;
@ -18,6 +14,7 @@ public interface Column<T> {
int getMaxY(); int getMaxY();
int getX(); int getX();
int getZ(); int getZ();
T get(int y); T get(int y);
@ -33,7 +30,8 @@ public interface Column<T> {
consumer.accept(y, get(y)); consumer.accept(y, get(y));
} }
} }
default void forRanges(IntIntObjConsumer<T> consumer) {
default void forRanges(int resolution, IntIntObjConsumer<T> consumer) {
int min = getMinY(); int min = getMinY();
int y = min; int y = min;
@ -45,7 +43,7 @@ public interface Column<T> {
int max = getMaxY() - 1; int max = getMaxY() - 1;
while(y < max) { while(y < max) {
y++; y += resolution;
T current = get(y); T current = get(y);
if(!current.equals(runningObj)) { if(!current.equals(runningObj)) {

View File

@ -38,7 +38,7 @@ public class ColumnTest {
public void testForRanges() { public void testForRanges() {
List<Pair<Pair<Integer, Integer>, Boolean>> list = new ArrayList<>(); List<Pair<Pair<Integer, Integer>, Boolean>> list = new ArrayList<>();
returnPositive.forRanges((min, max, p) -> list.add(Pair.of(Pair.of(min, max), p))); returnPositive.forRanges(1, (min, max, p) -> list.add(Pair.of(Pair.of(min, max), p)));
assertEquals(List.of( assertEquals(List.of(
Pair.of(Pair.of(-10, 0), false), Pair.of(Pair.of(-10, 0), false),
@ -51,7 +51,7 @@ public class ColumnTest {
public void testForRangesIndividual() { public void testForRangesIndividual() {
List<Pair<Pair<Integer, Integer>, Integer>> list = new ArrayList<>(); List<Pair<Pair<Integer, Integer>, Integer>> list = new ArrayList<>();
returnY.forRanges((min, max, p) -> list.add(Pair.of(Pair.of(min, max), p))); returnY.forRanges(1, (min, max, p) -> list.add(Pair.of(Pair.of(min, max), p)));
assertEquals(IntStream.range(-10, 10).mapToObj(i -> Pair.of(Pair.of(i, i + 1), i)).collect(Collectors.toList()), assertEquals(IntStream.range(-10, 10).mapToObj(i -> Pair.of(Pair.of(i, i + 1), i)).collect(Collectors.toList()),
list); list);
@ -61,7 +61,7 @@ public class ColumnTest {
public void testForRangesContiguous() { public void testForRangesContiguous() {
List<Pair<Pair<Integer, Integer>, Boolean>> list = new ArrayList<>(); List<Pair<Pair<Integer, Integer>, Boolean>> list = new ArrayList<>();
returnTrue.forRanges((min, max, p) -> list.add(Pair.of(Pair.of(min, max), p))); returnTrue.forRanges(1, (min, max, p) -> list.add(Pair.of(Pair.of(min, max), p)));
assertEquals(List.of(Pair.of(Pair.of(-10, 10), true)), assertEquals(List.of(Pair.of(Pair.of(-10, 10), true)),
list); list);