From 64391f3abce4ae09f040b2de6c2f935b8f05a760 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 7 Jan 2021 10:33:23 -0700 Subject: [PATCH] remove unused random parameter from populators --- .../terra/api/platform/generator/ChunkGenerator.java | 4 +--- .../api/world/generation/TerraBlockPopulator.java | 4 +--- .../generation/population/PopulationManager.java | 8 ++++---- .../com/dfsek/terra/population/CavePopulator.java | 2 +- .../com/dfsek/terra/population/FloraPopulator.java | 6 +++++- .../com/dfsek/terra/population/OrePopulator.java | 2 +- .../dfsek/terra/population/StructurePopulator.java | 2 +- .../com/dfsek/terra/population/TreePopulator.java | 4 +++- .../bukkit/generator/BukkitPopulatorWrapper.java | 2 +- .../fabric/world/features/PopulatorFeature.java | 10 +++++----- .../main/java/com/dfsek/terra/region/Generator.java | 12 +++++------- 11 files changed, 28 insertions(+), 28 deletions(-) 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 { FabricChunkGeneratorWrapper gen = (FabricChunkGeneratorWrapper) chunkGenerator; FabricChunkWorldAccess chunk = new FabricChunkWorldAccess(world, pos.getX() >> 4, pos.getZ() >> 4); FabricWorld world1 = new FabricWorld(world.toServerWorld(), new FabricChunkGenerator(chunkGenerator)); - gen.getCavePopulator().populate(world1, random, chunk); - gen.getStructurePopulator().populate(new FabricSeededWorldAccess(world, world.getSeed(), chunkGenerator), random, chunk); - gen.getOrePopulator().populate(world1, random, chunk); - gen.getTreePopulator().populate(world1, random, chunk); - gen.getFloraPopulator().populate(world1, random, chunk); + gen.getCavePopulator().populate(world1, chunk); + gen.getStructurePopulator().populate(new FabricSeededWorldAccess(world, world.getSeed(), chunkGenerator), chunk); + gen.getOrePopulator().populate(world1, chunk); + gen.getTreePopulator().populate(world1, chunk); + gen.getFloraPopulator().populate(world1, chunk); return true; } } diff --git a/platforms/region/src/main/java/com/dfsek/terra/region/Generator.java b/platforms/region/src/main/java/com/dfsek/terra/region/Generator.java index 0ce54bbf3..1fc48fe3f 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/region/Generator.java +++ b/platforms/region/src/main/java/com/dfsek/terra/region/Generator.java @@ -1,8 +1,6 @@ package com.dfsek.terra.region; import com.dfsek.terra.StandalonePlugin; -import com.dfsek.terra.api.math.MathUtil; -import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.generation.MasterChunkGenerator; import com.dfsek.terra.generation.math.SamplerCache; import com.dfsek.terra.platform.DirectChunkData; @@ -57,11 +55,11 @@ public class Generator { DirectChunkData chunkData = (DirectChunkData) world.getChunkAt(cx, cz); generator.generateChunkData(world, null, cx, cz, chunkData); - cavePopulator.populate(world, new FastRandom(MathUtil.getCarverChunkSeed(cx, cz, world.getSeed())), chunkData); - structurePopulator.populate(world, new FastRandom(MathUtil.getCarverChunkSeed(cx, cz, world.getSeed())), chunkData); - orePopulator.populate(world, new FastRandom(MathUtil.getCarverChunkSeed(cx, cz, world.getSeed())), chunkData); - floraPopulator.populate(world, new FastRandom(MathUtil.getCarverChunkSeed(cx, cz, world.getSeed())), chunkData); - treePopulator.populate(world, new FastRandom(MathUtil.getCarverChunkSeed(cx, cz, world.getSeed())), chunkData); + cavePopulator.populate(world, chunkData); + structurePopulator.populate(world, chunkData); + orePopulator.populate(world, chunkData); + floraPopulator.populate(world, chunkData); + treePopulator.populate(world, chunkData); count++; if(count % 200 == 0) {