aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/common')
-rw-r--r--src/main/java/gregtech/common/GT_UndergroundOil.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/main/java/gregtech/common/GT_UndergroundOil.java b/src/main/java/gregtech/common/GT_UndergroundOil.java
index 02a625d8a2..0010de8223 100644
--- a/src/main/java/gregtech/common/GT_UndergroundOil.java
+++ b/src/main/java/gregtech/common/GT_UndergroundOil.java
@@ -114,12 +114,16 @@ public class GT_UndergroundOil {
if (dimension == null) return null;
// prepare RNG
final XSTR tVeinRNG = new XSTR(world.getSeed() + dimensionId * 2L + (chunkX >> 3) + 8267L * (chunkZ >> 3));
- final XSTR tChunkRNG = new XSTR(world.getSeed() + dimensionId * 2L + chunkX + 8267L * chunkZ);
GT_UO_Fluid uoFluid = dimension.getRandomFluid(tVeinRNG);
// nothing here :(
if (uoFluid == null || uoFluid.getFluid() == null) return null;
// offset each chunk's fluid amount by +-25%
- int amount = (int) ((float) uoFluid.getRandomAmount(tVeinRNG) * (0.75f + (tChunkRNG.nextFloat() / 2f)));
+ // discard random values not for current chunk
+ int veinAverage = uoFluid.getRandomAmount(tVeinRNG);
+ for (int i = 0; i < (((chunkX & 0x7) << 3) | chunkZ & 0x7); i++) {
+ tVeinRNG.next(24);
+ }
+ int amount = (int) ((float) veinAverage * (0.75f + (tVeinRNG.nextFloat() / 2f)));
return Pair.of(uoFluid, amount);
}