diff --git a/common/src/main/java/com/dfsek/terra/api/platform/generator/ChunkGenerator.java b/common/src/main/java/com/dfsek/terra/api/platform/generator/ChunkGenerator.java index 7f85e9c15..266ce760b 100644 --- a/common/src/main/java/com/dfsek/terra/api/platform/generator/ChunkGenerator.java +++ b/common/src/main/java/com/dfsek/terra/api/platform/generator/ChunkGenerator.java @@ -30,9 +30,7 @@ public interface ChunkGenerator extends Handle { @Nullable TerraChunkGenerator getTerraGenerator(); - interface ChunkData { - Object getHandle(); - + interface ChunkData extends Handle { /** * Get the maximum height for the chunk. *
diff --git a/common/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java b/common/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java
index 8797c924e..1d0e47577 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/generation/TerraBlockPopulator.java
@@ -3,8 +3,6 @@ package com.dfsek.terra.api.world.generation;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.platform.world.World;
-import java.util.Random;
-
public interface TerraBlockPopulator {
- void populate(World world, Random random, Chunk chunk);
+ void populate(World world, Chunk chunk);
}
diff --git a/common/src/main/java/com/dfsek/terra/api/world/generation/population/PopulationManager.java b/common/src/main/java/com/dfsek/terra/api/world/generation/population/PopulationManager.java
index dba3643a2..6c7bab57c 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/generation/population/PopulationManager.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/generation/population/PopulationManager.java
@@ -34,14 +34,14 @@ public class PopulationManager implements TerraBlockPopulator {
@Override
@SuppressWarnings("try")
- public void populate(@NotNull World world, @NotNull Random random, @NotNull Chunk chunk) {
+ public void populate(@NotNull World world, @NotNull Chunk chunk) {
try(ProfileFuture ignored = measure()) {
needsPop.add(new ChunkCoordinate(chunk));
int x = chunk.getX();
int z = chunk.getZ();
if(main.isEnabled()) {
- for(int xi = - 1; xi <= 1; xi++) {
- for(int zi = - 1; zi <= 1; zi++) {
+ for(int xi = -1; xi <= 1; xi++) {
+ for(int zi = -1; zi <= 1; zi++) {
if(xi == 0 && zi == 0) continue;
if(world.isChunkGenerated(xi + x, zi + z)) checkNeighbors(xi + x, zi + z, world);
}
@@ -86,7 +86,7 @@ public class PopulationManager implements TerraBlockPopulator {
random.setSeed((long) x * xRand + (long) z * zRand ^ w.getSeed());
Chunk currentChunk = w.getChunkAt(x, z);
for(TerraBlockPopulator r : attachedPopulators) {
- r.populate(w, random, currentChunk);
+ r.populate(w, currentChunk);
}
needsPop.remove(c);
}
diff --git a/common/src/main/java/com/dfsek/terra/population/CavePopulator.java b/common/src/main/java/com/dfsek/terra/population/CavePopulator.java
index 208211b07..b256a37f0 100644
--- a/common/src/main/java/com/dfsek/terra/population/CavePopulator.java
+++ b/common/src/main/java/com/dfsek/terra/population/CavePopulator.java
@@ -33,7 +33,7 @@ public class CavePopulator implements TerraBlockPopulator {
@SuppressWarnings("try")
@Override
- public void populate(@NotNull World world, @NotNull Random r, @NotNull Chunk chunk) {
+ public void populate(@NotNull World world, @NotNull Chunk chunk) {
TerraWorld tw = main.getWorld(world);
WorldHandle handle = main.getWorldHandle();
BlockData AIR = handle.createBlockData("minecraft:air");
diff --git a/common/src/main/java/com/dfsek/terra/population/FloraPopulator.java b/common/src/main/java/com/dfsek/terra/population/FloraPopulator.java
index 58e033428..09aeca00e 100644
--- a/common/src/main/java/com/dfsek/terra/population/FloraPopulator.java
+++ b/common/src/main/java/com/dfsek/terra/population/FloraPopulator.java
@@ -11,6 +11,7 @@ import com.dfsek.terra.api.world.generation.TerraBlockPopulator;
import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
import com.dfsek.terra.population.items.flora.FloraLayer;
+import com.dfsek.terra.util.PopulationUtil;
import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
@@ -30,7 +31,7 @@ public class FloraPopulator implements TerraBlockPopulator {
@SuppressWarnings("try")
@Override
- public void populate(@NotNull World world, @NotNull Random random, @NotNull Chunk chunk) {
+ public void populate(@NotNull World world, @NotNull Chunk chunk) {
TerraWorld tw = main.getWorld(world);
try(ProfileFuture ignored = tw.getProfiler().measure("FloraTime")) {
if(!tw.isSafe()) return;
@@ -43,6 +44,9 @@ public class FloraPopulator implements TerraBlockPopulator {
layers.put(l, biome.getConfig().getFlora());
}
}
+
+ Random random = PopulationUtil.getRandom(chunk);
+
int iter = 0;
boolean finished = false;
while(!finished) {
diff --git a/common/src/main/java/com/dfsek/terra/population/OrePopulator.java b/common/src/main/java/com/dfsek/terra/population/OrePopulator.java
index 6a766f534..6f22eeb64 100644
--- a/common/src/main/java/com/dfsek/terra/population/OrePopulator.java
+++ b/common/src/main/java/com/dfsek/terra/population/OrePopulator.java
@@ -26,7 +26,7 @@ public class OrePopulator implements TerraBlockPopulator {
@SuppressWarnings("try")
@Override
- public void populate(@NotNull World world, @NotNull Random r, @NotNull Chunk chunk) {
+ public void populate(@NotNull World world, @NotNull Chunk chunk) {
TerraWorld tw = main.getWorld(world);
try(ProfileFuture ignored = tw.getProfiler().measure("OreTime")) {
if(!tw.isSafe()) return;
diff --git a/common/src/main/java/com/dfsek/terra/population/StructurePopulator.java b/common/src/main/java/com/dfsek/terra/population/StructurePopulator.java
index f504878bc..9bf55e86d 100644
--- a/common/src/main/java/com/dfsek/terra/population/StructurePopulator.java
+++ b/common/src/main/java/com/dfsek/terra/population/StructurePopulator.java
@@ -28,7 +28,7 @@ public class StructurePopulator implements TerraBlockPopulator {
@SuppressWarnings("try")
@Override
- public void populate(@NotNull World world, @NotNull Random r, @NotNull Chunk chunk) {
+ public void populate(@NotNull World world, @NotNull Chunk chunk) {
TerraWorld tw = main.getWorld(world);
try(ProfileFuture ignored = tw.getProfiler().measure("StructureTime")) {
int cx = (chunk.getX() << 4);
diff --git a/common/src/main/java/com/dfsek/terra/population/TreePopulator.java b/common/src/main/java/com/dfsek/terra/population/TreePopulator.java
index 6d32250ec..2d3c4d212 100644
--- a/common/src/main/java/com/dfsek/terra/population/TreePopulator.java
+++ b/common/src/main/java/com/dfsek/terra/population/TreePopulator.java
@@ -11,6 +11,7 @@ import com.dfsek.terra.api.world.generation.TerraBlockPopulator;
import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
import com.dfsek.terra.population.items.tree.TreeLayer;
+import com.dfsek.terra.util.PopulationUtil;
import net.jafama.FastMath;
import org.jetbrains.annotations.NotNull;
@@ -30,11 +31,12 @@ public class TreePopulator implements TerraBlockPopulator {
@Override
@SuppressWarnings("try")
- public void populate(@NotNull World world, @NotNull Random random, @NotNull Chunk chunk) {
+ public void populate(@NotNull World world, @NotNull Chunk chunk) {
TerraWorld tw = main.getWorld(world);
try(ProfileFuture ignored = tw.getProfiler().measure("TreeTime")) {
if(!tw.isSafe()) return;
TerraBiomeGrid grid = tw.getGrid();
+ Random random = PopulationUtil.getRandom(chunk);
for(int x = 0; x < 16; x += 2) {
for(int z = 0; z < 16; z += 2) {
UserDefinedBiome biome = (UserDefinedBiome) grid.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z, GenerationPhase.POPULATE);
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java
index 83d9fb891..22b1a2a53 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java
@@ -18,6 +18,6 @@ public class BukkitPopulatorWrapper extends BlockPopulator {
@Override
public void populate(@NotNull World world, @NotNull Random random, @NotNull Chunk source) {
- delegate.populate(BukkitAdapter.adapt(world), random, BukkitAdapter.adapt(source));
+ delegate.populate(BukkitAdapter.adapt(world), BukkitAdapter.adapt(source));
}
}
diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/features/PopulatorFeature.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/features/PopulatorFeature.java
index ca16ccd1f..0e2d741a7 100644
--- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/features/PopulatorFeature.java
+++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/features/PopulatorFeature.java
@@ -27,11 +27,11 @@ public class PopulatorFeature extends Feature