Biome edge in blocks

This commit is contained in:
paulevsGitch 2021-12-16 10:43:57 +03:00
parent 538003b0c7
commit 704112d832
4 changed files with 14 additions and 15 deletions

View file

@ -11,7 +11,7 @@ loader_version= 0.12.11
fabric_version = 0.44.0+1.18 fabric_version = 0.44.0+1.18
# Mod Properties # Mod Properties
mod_version = 1.1.1 mod_version = 1.1.2
maven_group = ru.bclib maven_group = ru.bclib
archives_base_name = bclib archives_base_name = bclib

View file

@ -35,7 +35,7 @@ public class BCLBiome {
private float terrainHeight = 0.1F; private float terrainHeight = 0.1F;
private float fogDensity = 1.0F; private float fogDensity = 1.0F;
private float genChance = 1.0F; private float genChance = 1.0F;
private float edgeSize = 0.0F; private int edgeSize = 0;
private boolean vertical; private boolean vertical;
/** /**
@ -90,18 +90,18 @@ public class BCLBiome {
/** /**
* Getter for biome edge size. * Getter for biome edge size.
* @return edge size. * @return edge size in blocks.
*/ */
public float getEdgeSize() { public int getEdgeSize() {
return edgeSize; return edgeSize;
} }
/** /**
* Set edges size for this biome. Size is in relative units to work fine with biome scale. * Set edges size for this biome. Size is in blocks.
* @param size as a float value. * @param size as a float value.
* @return same {@link BCLBiome}. * @return same {@link BCLBiome}.
*/ */
public BCLBiome setEdgeSize(float size) { public BCLBiome setEdgeSize(int size) {
edgeSize = size; edgeSize = size;
return this; return this;
} }

View file

@ -53,20 +53,19 @@ public class HexBiomeMap implements BiomeMap {
public BCLBiome getBiome(double x, double y, double z) { public BCLBiome getBiome(double x, double y, double z) {
BCLBiome biome = getRawBiome(x, z); BCLBiome biome = getRawBiome(x, z);
BCLBiome edge = biome.getEdge(); BCLBiome edge = biome.getEdge();
float offset = biome.getEdgeSize(); int size = biome.getEdgeSize();
if (edge == null && biome.getParentBiome() != null) { if (edge == null && biome.getParentBiome() != null) {
edge = biome.getParentBiome().getEdge(); edge = biome.getParentBiome().getEdge();
offset = biome.getParentBiome().getEdgeSize(); size = biome.getParentBiome().getEdgeSize();
} }
if (edge == null) { if (edge == null) {
return biome; return biome;
} }
offset *= scale;
for (byte i = 0; i < 8; i++) { for (byte i = 0; i < 8; i++) {
if (!getRawBiome(x + offset * EDGE_CIRCLE_X[i], z + offset * EDGE_CIRCLE_Z[i]).isSame(biome)) { if (!getRawBiome(x + size * EDGE_CIRCLE_X[i], z + size * EDGE_CIRCLE_Z[i]).isSame(biome)) {
return edge; return edge;
} }
} }

View file

@ -54,12 +54,12 @@ public class SquareBiomeMap implements BiomeMap {
if (biome.getParentBiome() != null) { if (biome.getParentBiome() != null) {
search = biome.getParentBiome(); search = biome.getParentBiome();
} }
int d = (int) Math.ceil(search.getEdgeSize() / 4F) << 2;
boolean edge = !search.isSame(getRawBiome(x + d, z)); int size = search.getEdgeSize();
edge = edge || !search.isSame(getRawBiome(x - d, z)); boolean edge = !search.isSame(getRawBiome(x + size, z));
edge = edge || !search.isSame(getRawBiome(x, z + d)); edge = edge || !search.isSame(getRawBiome(x - size, z));
edge = edge || !search.isSame(getRawBiome(x, z - d)); edge = edge || !search.isSame(getRawBiome(x, z + size));
edge = edge || !search.isSame(getRawBiome(x, z - size));
edge = edge || !search.isSame(getRawBiome(x - 1, z - 1)); edge = edge || !search.isSame(getRawBiome(x - 1, z - 1));
edge = edge || !search.isSame(getRawBiome(x - 1, z + 1)); edge = edge || !search.isSame(getRawBiome(x - 1, z + 1));
edge = edge || !search.isSame(getRawBiome(x + 1, z - 1)); edge = edge || !search.isSame(getRawBiome(x + 1, z - 1));