fix deposits spawning in columns

This commit is contained in:
Julian Krings 2025-07-06 19:40:14 +02:00
parent 54402faea8
commit 86d986dfbc
No known key found for this signature in database
GPG Key ID: 208C6E08C3B718D2
2 changed files with 11 additions and 6 deletions

View File

@ -52,16 +52,20 @@ public class IrisDepositModifier extends EngineAssignedModifier<BlockData> {
BurstExecutor burst = burst().burst(multicore); BurstExecutor burst = burst().burst(multicore);
long seed = x * 341873128712L + z * 132897987541L; long seed = x * 341873128712L + z * 132897987541L;
long mask = 0;
for (IrisDepositGenerator k : getDimension().getDeposits()) { for (IrisDepositGenerator k : getDimension().getDeposits()) {
burst.queue(() -> generate(k, terrain, rng.nextParallelRNG(seed), x, z, false, context)); long finalSeed = seed * ++mask;
burst.queue(() -> generate(k, terrain, rng.nextParallelRNG(finalSeed), x, z, false, context));
} }
for (IrisDepositGenerator k : region.getDeposits()) { for (IrisDepositGenerator k : region.getDeposits()) {
burst.queue(() -> generate(k, terrain, rng.nextParallelRNG(seed), x, z, false, context)); long finalSeed = seed * ++mask;
burst.queue(() -> generate(k, terrain, rng.nextParallelRNG(finalSeed), x, z, false, context));
} }
for (IrisDepositGenerator k : biome.getDeposits()) { for (IrisDepositGenerator k : biome.getDeposits()) {
burst.queue(() -> generate(k, terrain, rng.nextParallelRNG(seed), x, z, false, context)); long finalSeed = seed * ++mask;
burst.queue(() -> generate(k, terrain, rng.nextParallelRNG(finalSeed), x, z, false, context));
} }
burst.complete(); burst.complete();
} }
@ -78,7 +82,7 @@ public class IrisDepositModifier extends EngineAssignedModifier<BlockData> {
if (k.getPerClumpSpawnChance() < rng.d()) if (k.getPerClumpSpawnChance() < rng.d())
continue; continue;
IrisObject clump = k.getClump(rng, getData()); IrisObject clump = k.getClump(getEngine(), rng, getData());
int dim = clump.getW(); int dim = clump.getW();
int min = dim / 2; int min = dim / 2;

View File

@ -20,6 +20,7 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.core.loader.IrisData; import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.engine.data.cache.AtomicCache; import com.volmit.iris.engine.data.cache.AtomicCache;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.annotations.*; import com.volmit.iris.engine.object.annotations.*;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KSet; import com.volmit.iris.util.collection.KSet;
@ -87,10 +88,10 @@ public class IrisDepositGenerator {
@Desc("Ore varience is how many different objects clumps iris will create") @Desc("Ore varience is how many different objects clumps iris will create")
private int varience = 3; private int varience = 3;
public IrisObject getClump(RNG rng, IrisData rdata) { public IrisObject getClump(Engine engine, RNG rng, IrisData rdata) {
KList<IrisObject> objects = this.objects.aquire(() -> KList<IrisObject> objects = this.objects.aquire(() ->
{ {
RNG rngv = rng.nextParallelRNG(3957778); RNG rngv = new RNG(engine.getSeedManager().getDeposit() + hashCode());
KList<IrisObject> objectsf = new KList<>(); KList<IrisObject> objectsf = new KList<>();
for (int i = 0; i < varience; i++) { for (int i = 0; i < varience; i++) {