create SurfaceLocator

This commit is contained in:
dfsek 2021-07-18 15:50:16 -07:00
parent ac99d89e96
commit a70641e01b

View File

@ -0,0 +1,31 @@
package com.dfsek.terra.addons.feature.locator.locators;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.structure.feature.Locator;
import com.dfsek.terra.api.util.ConstantRange;
import com.dfsek.terra.api.world.Column;
import java.util.Collections;
import java.util.List;
public class SurfaceLocator implements Locator {
private final ConstantRange search;
private final BlockState air;
public SurfaceLocator(ConstantRange search, TerraPlugin main) {
this.search = search;
this.air = main.getWorldHandle().air();
}
@Override
public List<Integer> getSuitableCoordinates(Column column) {
for(int y : search) {
if(column.getBlock(y).matches(air) && !column.getBlock(y-1).matches(air)) {
return Collections.singletonList(y);
}
}
return Collections.emptyList();
}
}