mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-17 06:11:24 +00:00
Change Java whitespace handling in .editorconfig (#425)
* Change whitespace handling in .editorconfig * Reformat code * fix format error * Reformat code --------- Co-authored-by: Zoë Gidiere <duplexsys@protonmail.com>
This commit is contained in:
+36
-36
@@ -43,52 +43,52 @@ import com.dfsek.terra.api.util.reflection.TypeKey;
|
||||
|
||||
|
||||
public class LocatorAddon implements AddonInitializer {
|
||||
|
||||
|
||||
public static final TypeKey<Supplier<ObjectTemplate<Locator>>> LOCATOR_TOKEN = new TypeKey<>() {
|
||||
};
|
||||
public static final TypeKey<Supplier<ObjectTemplate<Pattern>>> PATTERN_TOKEN = new TypeKey<>() {
|
||||
};
|
||||
@Inject
|
||||
private Platform platform;
|
||||
|
||||
|
||||
@Inject
|
||||
private BaseAddon addon;
|
||||
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
platform.getEventManager()
|
||||
.getHandler(FunctionalEventHandler.class)
|
||||
.register(addon, ConfigPackPreLoadEvent.class)
|
||||
.then(event -> {
|
||||
CheckedRegistry<Supplier<ObjectTemplate<Locator>>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN);
|
||||
locatorRegistry.register(addon.key("SURFACE"), SurfaceLocatorTemplate::new);
|
||||
locatorRegistry.register(addon.key("TOP"), TopLocatorTemplate::new);
|
||||
|
||||
locatorRegistry.register(addon.key("RANDOM"), RandomLocatorTemplate::new);
|
||||
locatorRegistry.register(addon.key("GAUSSIAN_RANDOM"), GaussianRandomLocatorTemplate::new);
|
||||
|
||||
locatorRegistry.register(addon.key("PATTERN"), PatternLocatorTemplate::new);
|
||||
locatorRegistry.register(addon.key("ADJACENT_PATTERN"), AdjacentPatternLocatorTemplate::new);
|
||||
|
||||
locatorRegistry.register(addon.key("SAMPLER"), SamplerLocatorTemplate::new);
|
||||
locatorRegistry.register(addon.key("SAMPLER_3D"), Sampler3DLocatorTemplate::new);
|
||||
|
||||
locatorRegistry.register(addon.key("AND"), AndLocatorTemplate::new);
|
||||
locatorRegistry.register(addon.key("OR"), OrLocatorTemplate::new);
|
||||
locatorRegistry.register(addon.key("XOR"), XorLocatorTemplate::new);
|
||||
})
|
||||
.then(event -> {
|
||||
CheckedRegistry<Supplier<ObjectTemplate<Pattern>>> patternRegistry = event.getPack().getOrCreateRegistry(PATTERN_TOKEN);
|
||||
patternRegistry.register(addon.key("MATCH_AIR"), AirMatchPatternTemplate::new);
|
||||
patternRegistry.register(addon.key("MATCH_SOLID"), SolidMatchPatternTemplate::new);
|
||||
patternRegistry.register(addon.key("MATCH"), SingleBlockMatchPatternTemplate::new);
|
||||
patternRegistry.register(addon.key("MATCH_SET"), BlockSetMatchPatternTemplate::new);
|
||||
|
||||
patternRegistry.register(addon.key("AND"), AndPatternTemplate::new);
|
||||
patternRegistry.register(addon.key("OR"), OrPatternTemplate::new);
|
||||
patternRegistry.register(addon.key("XOR"), XorPatternTemplate::new);
|
||||
patternRegistry.register(addon.key("NOT"), NotPatternTemplate::new);
|
||||
})
|
||||
.failThrough();
|
||||
.getHandler(FunctionalEventHandler.class)
|
||||
.register(addon, ConfigPackPreLoadEvent.class)
|
||||
.then(event -> {
|
||||
CheckedRegistry<Supplier<ObjectTemplate<Locator>>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN);
|
||||
locatorRegistry.register(addon.key("SURFACE"), SurfaceLocatorTemplate::new);
|
||||
locatorRegistry.register(addon.key("TOP"), TopLocatorTemplate::new);
|
||||
|
||||
locatorRegistry.register(addon.key("RANDOM"), RandomLocatorTemplate::new);
|
||||
locatorRegistry.register(addon.key("GAUSSIAN_RANDOM"), GaussianRandomLocatorTemplate::new);
|
||||
|
||||
locatorRegistry.register(addon.key("PATTERN"), PatternLocatorTemplate::new);
|
||||
locatorRegistry.register(addon.key("ADJACENT_PATTERN"), AdjacentPatternLocatorTemplate::new);
|
||||
|
||||
locatorRegistry.register(addon.key("SAMPLER"), SamplerLocatorTemplate::new);
|
||||
locatorRegistry.register(addon.key("SAMPLER_3D"), Sampler3DLocatorTemplate::new);
|
||||
|
||||
locatorRegistry.register(addon.key("AND"), AndLocatorTemplate::new);
|
||||
locatorRegistry.register(addon.key("OR"), OrLocatorTemplate::new);
|
||||
locatorRegistry.register(addon.key("XOR"), XorLocatorTemplate::new);
|
||||
})
|
||||
.then(event -> {
|
||||
CheckedRegistry<Supplier<ObjectTemplate<Pattern>>> patternRegistry = event.getPack().getOrCreateRegistry(PATTERN_TOKEN);
|
||||
patternRegistry.register(addon.key("MATCH_AIR"), AirMatchPatternTemplate::new);
|
||||
patternRegistry.register(addon.key("MATCH_SOLID"), SolidMatchPatternTemplate::new);
|
||||
patternRegistry.register(addon.key("MATCH"), SingleBlockMatchPatternTemplate::new);
|
||||
patternRegistry.register(addon.key("MATCH_SET"), BlockSetMatchPatternTemplate::new);
|
||||
|
||||
patternRegistry.register(addon.key("AND"), AndPatternTemplate::new);
|
||||
patternRegistry.register(addon.key("OR"), OrPatternTemplate::new);
|
||||
patternRegistry.register(addon.key("XOR"), XorPatternTemplate::new);
|
||||
patternRegistry.register(addon.key("NOT"), NotPatternTemplate::new);
|
||||
})
|
||||
.failThrough();
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -22,14 +22,14 @@ import com.dfsek.terra.api.util.Range;
|
||||
public class AdjacentPatternLocatorTemplate implements ObjectTemplate<Locator> {
|
||||
@Value("range")
|
||||
private @Meta Range range;
|
||||
|
||||
|
||||
@Value("pattern")
|
||||
private @Meta Pattern pattern;
|
||||
|
||||
|
||||
@Value("match-all")
|
||||
@Default
|
||||
private @Meta boolean matchAll = false;
|
||||
|
||||
|
||||
@Override
|
||||
public Locator get() {
|
||||
return new AdjacentPatternLocator(pattern, range, matchAll);
|
||||
|
||||
+2
-2
@@ -21,7 +21,7 @@ import com.dfsek.terra.api.structure.feature.Locator;
|
||||
public class AndLocatorTemplate implements ObjectTemplate<Locator>, ValidatedConfigTemplate {
|
||||
@Value("locators")
|
||||
private @Meta List<@Meta Locator> locators;
|
||||
|
||||
|
||||
@Override
|
||||
public Locator get() {
|
||||
Locator current = locators.remove(0);
|
||||
@@ -30,7 +30,7 @@ public class AndLocatorTemplate implements ObjectTemplate<Locator>, ValidatedCon
|
||||
}
|
||||
return current;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean validate() throws ValidationException {
|
||||
if(locators.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern.");
|
||||
|
||||
+4
-4
@@ -21,17 +21,17 @@ import com.dfsek.terra.api.util.Range;
|
||||
public class GaussianRandomLocatorTemplate implements ObjectTemplate<Locator> {
|
||||
@Value("height")
|
||||
private @Meta Range height;
|
||||
|
||||
|
||||
@Value("amount")
|
||||
private @Meta Range amount;
|
||||
|
||||
|
||||
@Value("standard-deviation")
|
||||
private @Meta double standardDeviation;
|
||||
|
||||
|
||||
@Value("salt")
|
||||
@Default
|
||||
private @Meta int salt = 0;
|
||||
|
||||
|
||||
@Override
|
||||
public Locator get() {
|
||||
return new GaussianRandomLocator(height, amount, standardDeviation, salt);
|
||||
|
||||
+2
-2
@@ -21,7 +21,7 @@ import com.dfsek.terra.api.structure.feature.Locator;
|
||||
public class OrLocatorTemplate implements ObjectTemplate<Locator>, ValidatedConfigTemplate {
|
||||
@Value("locators")
|
||||
private @Meta List<@Meta Locator> locators;
|
||||
|
||||
|
||||
@Override
|
||||
public Locator get() {
|
||||
Locator current = locators.remove(0);
|
||||
@@ -30,7 +30,7 @@ public class OrLocatorTemplate implements ObjectTemplate<Locator>, ValidatedConf
|
||||
}
|
||||
return current;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean validate() throws ValidationException {
|
||||
if(locators.isEmpty()) throw new ValidationException("OR Pattern must specify at least 1 pattern.");
|
||||
|
||||
+2
-2
@@ -20,10 +20,10 @@ import com.dfsek.terra.api.util.Range;
|
||||
public class PatternLocatorTemplate implements ObjectTemplate<Locator> {
|
||||
@Value("range")
|
||||
private @Meta Range range;
|
||||
|
||||
|
||||
@Value("pattern")
|
||||
private @Meta Pattern pattern;
|
||||
|
||||
|
||||
@Override
|
||||
public Locator get() {
|
||||
return new PatternLocator(pattern, range);
|
||||
|
||||
+3
-3
@@ -21,14 +21,14 @@ import com.dfsek.terra.api.util.Range;
|
||||
public class RandomLocatorTemplate implements ObjectTemplate<Locator> {
|
||||
@Value("height")
|
||||
private @Meta Range height;
|
||||
|
||||
|
||||
@Value("amount")
|
||||
private @Meta Range amount;
|
||||
|
||||
|
||||
@Value("salt")
|
||||
@Default
|
||||
private @Meta int salt = 0;
|
||||
|
||||
|
||||
@Override
|
||||
public Locator get() {
|
||||
return new RandomLocator(height, amount, salt);
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ import com.dfsek.terra.api.structure.feature.Locator;
|
||||
public class Sampler3DLocatorTemplate implements ObjectTemplate<Locator> {
|
||||
@Value("sampler")
|
||||
private @Meta NoiseSampler sampler;
|
||||
|
||||
|
||||
@Override
|
||||
public Locator get() {
|
||||
return new Sampler3DLocator(sampler);
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ import com.dfsek.terra.api.structure.feature.Locator;
|
||||
public class SamplerLocatorTemplate implements ObjectTemplate<Locator> {
|
||||
@Value("samplers")
|
||||
private @Meta List<@Meta NoiseSampler> samplers;
|
||||
|
||||
|
||||
@Override
|
||||
public Locator get() {
|
||||
return new SamplerLocator(samplers);
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ import com.dfsek.terra.api.util.Range;
|
||||
public class SurfaceLocatorTemplate implements ObjectTemplate<Locator> {
|
||||
@Value("range")
|
||||
private @Meta Range range;
|
||||
|
||||
|
||||
@Override
|
||||
public Locator get() {
|
||||
return new SurfaceLocator(range);
|
||||
|
||||
+2
-2
@@ -17,10 +17,10 @@ import com.dfsek.terra.api.util.Range;
|
||||
|
||||
|
||||
public class TopLocatorTemplate implements ObjectTemplate<Locator> {
|
||||
|
||||
|
||||
@Value("range")
|
||||
private @Meta Range range;
|
||||
|
||||
|
||||
@Override
|
||||
public Locator get() {
|
||||
return new TopLocator(range);
|
||||
|
||||
+2
-2
@@ -21,7 +21,7 @@ import com.dfsek.terra.api.structure.feature.Locator;
|
||||
public class XorLocatorTemplate implements ObjectTemplate<Locator>, ValidatedConfigTemplate {
|
||||
@Value("locators")
|
||||
private @Meta List<@Meta Locator> locators;
|
||||
|
||||
|
||||
@Override
|
||||
public Locator get() {
|
||||
Locator current = locators.remove(0);
|
||||
@@ -30,7 +30,7 @@ public class XorLocatorTemplate implements ObjectTemplate<Locator>, ValidatedCon
|
||||
}
|
||||
return current;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean validate() throws ValidationException {
|
||||
if(locators.isEmpty()) throw new ValidationException("XOR Pattern must specify at least 1 pattern.");
|
||||
|
||||
+2
-2
@@ -20,8 +20,8 @@ import com.dfsek.terra.api.util.Range;
|
||||
public class AirMatchPatternTemplate implements ObjectTemplate<Pattern> {
|
||||
@Value("offset")
|
||||
private @Meta Range offset;
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public Pattern get() {
|
||||
return new MatchPattern(offset, BlockState::isAir);
|
||||
|
||||
+2
-2
@@ -21,7 +21,7 @@ import com.dfsek.terra.api.config.meta.Meta;
|
||||
public class AndPatternTemplate implements ObjectTemplate<Pattern>, ValidatedConfigTemplate {
|
||||
@Value("patterns")
|
||||
private @Meta List<@Meta Pattern> patterns;
|
||||
|
||||
|
||||
@Override
|
||||
public Pattern get() {
|
||||
Pattern current = patterns.remove(0);
|
||||
@@ -30,7 +30,7 @@ public class AndPatternTemplate implements ObjectTemplate<Pattern>, ValidatedCon
|
||||
}
|
||||
return current;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean validate() throws ValidationException {
|
||||
if(patterns.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern.");
|
||||
|
||||
+2
-2
@@ -20,10 +20,10 @@ import com.dfsek.terra.api.util.collection.MaterialSet;
|
||||
public class BlockSetMatchPatternTemplate implements ObjectTemplate<Pattern> {
|
||||
@Value("blocks")
|
||||
private @Meta MaterialSet blocks;
|
||||
|
||||
|
||||
@Value("offset")
|
||||
private @Meta Range offset;
|
||||
|
||||
|
||||
@Override
|
||||
public Pattern get() {
|
||||
return new MatchPattern(offset, blockState -> blocks.contains(blockState.getBlockType()));
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ import com.dfsek.terra.api.config.meta.Meta;
|
||||
public class NotPatternTemplate implements ObjectTemplate<Pattern> {
|
||||
@Value("pattern")
|
||||
private @Meta Pattern pattern;
|
||||
|
||||
|
||||
@Override
|
||||
public Pattern get() {
|
||||
return pattern.not();
|
||||
|
||||
+2
-2
@@ -21,7 +21,7 @@ import com.dfsek.terra.api.config.meta.Meta;
|
||||
public class OrPatternTemplate implements ObjectTemplate<Pattern>, ValidatedConfigTemplate {
|
||||
@Value("patterns")
|
||||
private @Meta List<@Meta Pattern> patterns;
|
||||
|
||||
|
||||
@Override
|
||||
public Pattern get() {
|
||||
Pattern current = patterns.remove(0);
|
||||
@@ -30,7 +30,7 @@ public class OrPatternTemplate implements ObjectTemplate<Pattern>, ValidatedConf
|
||||
}
|
||||
return current;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean validate() throws ValidationException {
|
||||
if(patterns.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern.");
|
||||
|
||||
+3
-3
@@ -20,11 +20,11 @@ import com.dfsek.terra.api.util.Range;
|
||||
public class SingleBlockMatchPatternTemplate implements ObjectTemplate<Pattern> {
|
||||
@Value("block")
|
||||
private @Meta BlockState block;
|
||||
|
||||
|
||||
@Value("offset")
|
||||
private @Meta Range offset;
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public Pattern get() {
|
||||
return new MatchPattern(offset, block::matches);
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ import com.dfsek.terra.api.util.Range;
|
||||
public class SolidMatchPatternTemplate implements ObjectTemplate<Pattern> {
|
||||
@Value("offset")
|
||||
private Range offset;
|
||||
|
||||
|
||||
@Override
|
||||
public Pattern get() {
|
||||
return new MatchPattern(offset, blockState -> blockState.getBlockType().isSolid());
|
||||
|
||||
+2
-2
@@ -21,7 +21,7 @@ import com.dfsek.terra.api.config.meta.Meta;
|
||||
public class XorPatternTemplate implements ObjectTemplate<Pattern>, ValidatedConfigTemplate {
|
||||
@Value("patterns")
|
||||
private @Meta List<@Meta Pattern> patterns;
|
||||
|
||||
|
||||
@Override
|
||||
public Pattern get() {
|
||||
Pattern current = patterns.remove(0);
|
||||
@@ -30,7 +30,7 @@ public class XorPatternTemplate implements ObjectTemplate<Pattern>, ValidatedCon
|
||||
}
|
||||
return current;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean validate() throws ValidationException {
|
||||
if(patterns.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern.");
|
||||
|
||||
+3
-3
@@ -19,18 +19,18 @@ public class AdjacentPatternLocator implements Locator {
|
||||
private final Pattern pattern;
|
||||
private final Range search;
|
||||
private final boolean matchAll;
|
||||
|
||||
|
||||
public AdjacentPatternLocator(Pattern pattern, Range search, boolean matchAll) {
|
||||
this.pattern = pattern;
|
||||
this.search = search;
|
||||
this.matchAll = matchAll;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BinaryColumn getSuitableCoordinates(Column<?> column) {
|
||||
return new BinaryColumn(search, y -> isValid(y, column));
|
||||
}
|
||||
|
||||
|
||||
private boolean isValid(int y, Column<?> column) {
|
||||
WritableWorld world = column.getWorld();
|
||||
int x = column.getX();
|
||||
|
||||
+11
-11
@@ -18,40 +18,40 @@ import com.dfsek.terra.api.world.chunk.generation.util.Column.BinaryColumnBuilde
|
||||
|
||||
public class GaussianRandomLocator implements Locator {
|
||||
private final double mean;
|
||||
|
||||
|
||||
private final Range points;
|
||||
|
||||
|
||||
private final double standardDeviation;
|
||||
|
||||
|
||||
private final int salt;
|
||||
|
||||
|
||||
|
||||
|
||||
public GaussianRandomLocator(Range height, Range points, double standardDeviation, int salt) {
|
||||
this.mean = (height.getMax() + height.getMin()) / 2.0;
|
||||
this.points = points;
|
||||
this.standardDeviation = standardDeviation;
|
||||
this.salt = salt;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BinaryColumn getSuitableCoordinates(Column<?> column) {
|
||||
long seed = column.getWorld().getSeed();
|
||||
seed = 31 * seed + column.getX();
|
||||
seed = 31 * seed + column.getZ();
|
||||
seed += salt;
|
||||
|
||||
|
||||
Random r = new Random(seed);
|
||||
|
||||
|
||||
int size = points.get(r);
|
||||
|
||||
|
||||
|
||||
|
||||
BinaryColumnBuilder results = column.newBinaryColumn();
|
||||
for(int i = 0; i < size; i++) {
|
||||
int h = (int) r.nextGaussian(mean, standardDeviation);
|
||||
if(h >= column.getMaxY() || h < column.getMinY()) continue;
|
||||
results.set(h);
|
||||
}
|
||||
|
||||
|
||||
return results.build();
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -17,12 +17,12 @@ import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
||||
public class PatternLocator implements Locator {
|
||||
private final Pattern pattern;
|
||||
private final Range search;
|
||||
|
||||
|
||||
public PatternLocator(Pattern pattern, Range search) {
|
||||
this.pattern = pattern;
|
||||
this.search = search;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BinaryColumn getSuitableCoordinates(Column<?> column) {
|
||||
int min = Math.max(column.getMinY(), search.getMin());
|
||||
|
||||
+8
-8
@@ -18,35 +18,35 @@ import com.dfsek.terra.api.world.chunk.generation.util.Column.BinaryColumnBuilde
|
||||
|
||||
public class RandomLocator implements Locator {
|
||||
private final Range height;
|
||||
|
||||
|
||||
private final Range points;
|
||||
|
||||
|
||||
private final int salt;
|
||||
|
||||
|
||||
public RandomLocator(Range height, Range points, int salt) {
|
||||
this.height = height;
|
||||
this.points = points;
|
||||
this.salt = salt;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BinaryColumn getSuitableCoordinates(Column<?> column) {
|
||||
long seed = column.getWorld().getSeed();
|
||||
seed = 31 * seed + column.getX();
|
||||
seed = 31 * seed + column.getZ();
|
||||
seed += salt;
|
||||
|
||||
|
||||
Random r = new Random(seed);
|
||||
|
||||
|
||||
int size = points.get(r);
|
||||
|
||||
|
||||
BinaryColumnBuilder results = column.newBinaryColumn();
|
||||
for(int i = 0; i < size; i++) {
|
||||
int h = height.get(r);
|
||||
if(h >= column.getMaxY() || h < column.getMinY()) continue;
|
||||
results.set(h);
|
||||
}
|
||||
|
||||
|
||||
return results.build();
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -15,11 +15,11 @@ import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
||||
|
||||
public class Sampler3DLocator implements Locator {
|
||||
private final NoiseSampler sampler;
|
||||
|
||||
|
||||
public Sampler3DLocator(NoiseSampler sampler) {
|
||||
this.sampler = sampler;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BinaryColumn getSuitableCoordinates(Column<?> column) {
|
||||
long seed = column.getWorld().getSeed();
|
||||
|
||||
+5
-5
@@ -18,11 +18,11 @@ import com.dfsek.terra.api.world.chunk.generation.util.Column.BinaryColumnBuilde
|
||||
|
||||
public class SamplerLocator implements Locator {
|
||||
private final List<NoiseSampler> samplers;
|
||||
|
||||
|
||||
public SamplerLocator(List<NoiseSampler> samplers) {
|
||||
this.samplers = samplers;
|
||||
}
|
||||
|
||||
|
||||
private static int floorToInt(double value) {
|
||||
int valueInt = (int) value;
|
||||
if(value < 0.0) {
|
||||
@@ -35,18 +35,18 @@ public class SamplerLocator implements Locator {
|
||||
return valueInt;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BinaryColumn getSuitableCoordinates(Column<?> column) {
|
||||
BinaryColumnBuilder results = column.newBinaryColumn();
|
||||
|
||||
|
||||
long seed = column.getWorld().getSeed();
|
||||
samplers.forEach(sampler -> {
|
||||
int y = floorToInt(sampler.noise(seed, column.getX(), column.getZ()));
|
||||
if(y >= column.getMaxY() || y < column.getMinY()) return;
|
||||
results.set(y);
|
||||
});
|
||||
|
||||
|
||||
return results.build();
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -16,11 +16,11 @@ import com.dfsek.terra.api.world.chunk.generation.util.Column.BinaryColumnBuilde
|
||||
|
||||
public class SurfaceLocator implements Locator {
|
||||
private final Range search;
|
||||
|
||||
|
||||
public SurfaceLocator(Range search) {
|
||||
this.search = search;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BinaryColumn getSuitableCoordinates(Column<?> column) {
|
||||
BinaryColumnBuilder builder = column.newBinaryColumn();
|
||||
|
||||
+2
-2
@@ -15,11 +15,11 @@ import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
||||
|
||||
public class TopLocator implements Locator {
|
||||
private final Range search;
|
||||
|
||||
|
||||
public TopLocator(Range search) {
|
||||
this.search = search;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BinaryColumn getSuitableCoordinates(Column<?> column) {
|
||||
for(int y = search.getMax(); y >= search.getMin(); y--) {
|
||||
|
||||
+3
-3
@@ -18,12 +18,12 @@ import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
||||
public class MatchPattern implements Pattern {
|
||||
private final Range range;
|
||||
private final Predicate<BlockState> matches;
|
||||
|
||||
|
||||
public MatchPattern(Range range, Predicate<BlockState> matches) {
|
||||
this.range = range;
|
||||
this.matches = matches;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean matches(int y, Column<?> column) {
|
||||
int min = Math.max(column.getMinY(), range.getMin() + y);
|
||||
@@ -34,7 +34,7 @@ public class MatchPattern implements Pattern {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean matches(WritableWorld world, int x, int y, int z) {
|
||||
int min = Math.max(world.getMinHeight(), range.getMin() + y);
|
||||
|
||||
+6
-6
@@ -13,24 +13,24 @@ import com.dfsek.terra.api.world.chunk.generation.util.Column;
|
||||
|
||||
public interface Pattern {
|
||||
boolean matches(int y, Column<?> column);
|
||||
|
||||
|
||||
default boolean matches(WritableWorld world, int x, int y, int z) {
|
||||
return matches(y, world.column(x, z));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
default Pattern and(Pattern that) {
|
||||
return (y, column) -> this.matches(y, column) && that.matches(y, column);
|
||||
}
|
||||
|
||||
|
||||
default Pattern or(Pattern that) {
|
||||
return (y, column) -> this.matches(y, column) || that.matches(y, column);
|
||||
}
|
||||
|
||||
|
||||
default Pattern xor(Pattern that) {
|
||||
return (y, column) -> this.matches(y, column) ^ that.matches(y, column);
|
||||
}
|
||||
|
||||
|
||||
default Pattern not() {
|
||||
return (y, column) -> !this.matches(y, column);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user