mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-18 06:40:55 +00:00
implement BaseBiomeColumn
This commit is contained in:
+51
@@ -0,0 +1,51 @@
|
|||||||
|
package com.dfsek.terra.addons.biome.extrusion;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.util.Column;
|
||||||
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
|
|
||||||
|
class BaseBiomeColumn implements Column<Biome> {
|
||||||
|
private final BiomeExtrusionProvider biomeProvider;
|
||||||
|
private final Biome base;
|
||||||
|
private final int min;
|
||||||
|
private final int max;
|
||||||
|
|
||||||
|
private final int x;
|
||||||
|
private final int z;
|
||||||
|
private final long seed;
|
||||||
|
|
||||||
|
protected BaseBiomeColumn(BiomeExtrusionProvider biomeProvider, Biome base, int min, int max, int x, int z, long seed) {
|
||||||
|
this.biomeProvider = biomeProvider;
|
||||||
|
this.base = base;
|
||||||
|
this.min = min;
|
||||||
|
this.max = max;
|
||||||
|
this.x = x;
|
||||||
|
this.z = z;
|
||||||
|
this.seed = seed;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMinY() {
|
||||||
|
return min;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxY() {
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getZ() {
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Biome get(int y) {
|
||||||
|
return biomeProvider.extrude(base, x, y, z, seed);
|
||||||
|
}
|
||||||
|
}
|
||||||
+16
-3
@@ -6,9 +6,12 @@ import java.util.Set;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
||||||
|
import com.dfsek.terra.api.util.Column;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||||
|
|
||||||
|
import com.github.benmanes.caffeine.cache.LoadingCache;
|
||||||
|
|
||||||
|
|
||||||
public class BiomeExtrusionProvider implements BiomeProvider {
|
public class BiomeExtrusionProvider implements BiomeProvider {
|
||||||
private final BiomeProvider delegate;
|
private final BiomeProvider delegate;
|
||||||
@@ -27,12 +30,22 @@ public class BiomeExtrusionProvider implements BiomeProvider {
|
|||||||
@Override
|
@Override
|
||||||
public Biome getBiome(int x, int y, int z, long seed) {
|
public Biome getBiome(int x, int y, int z, long seed) {
|
||||||
Biome delegated = delegate.getBiome(x, y, z, seed);
|
Biome delegated = delegate.getBiome(x, y, z, seed);
|
||||||
|
|
||||||
|
return extrude(delegated, x, y, z, seed);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Biome extrude(Biome original, int x, int y, int z, long seed) {
|
||||||
for(Extrusion extrusion : extrusions) {
|
for(Extrusion extrusion : extrusions) {
|
||||||
delegated = extrusion.extrude(delegated, x, y, z, seed);
|
original = extrusion.extrude(original, x, y, z, seed);
|
||||||
}
|
}
|
||||||
|
return original;
|
||||||
return delegated;
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Column<Biome> getColumn(int x, int z, long seed, int min, int max) {
|
||||||
|
return delegate.getBaseBiome(x, z, seed)
|
||||||
|
.map(base -> (Column<Biome>) new BaseBiomeColumn(this, base, min, max, x, z, seed))
|
||||||
|
.orElseGet(() -> BiomeProvider.super.getColumn(x, z, seed, min, max));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user