mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-21 07:59:26 +00:00
73 lines
4.1 KiB
Diff
73 lines
4.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
|
|
Date: Thu, 21 Sep 2023 02:56:22 -0400
|
|
Subject: [PATCH] Faster Natural Spawning
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/util/RandomSource.java b/src/main/java/net/minecraft/util/RandomSource.java
|
|
index 9c6f5b55b1f1376fa75e216cd366ee47c79fafc4..67d94b649148b3165f09d75d8c9db10db4cc7874 100644
|
|
--- a/src/main/java/net/minecraft/util/RandomSource.java
|
|
+++ b/src/main/java/net/minecraft/util/RandomSource.java
|
|
@@ -15,6 +15,12 @@ public interface RandomSource {
|
|
return create(RandomSupport.generateUniqueSeed());
|
|
}
|
|
|
|
+ // Leaf start - Generate random seed faster
|
|
+ static RandomSource createFaster() {
|
|
+ return create(RandomSupport.generateFasterSeed());
|
|
+ }
|
|
+ // Leaf end - Generate random seed faster
|
|
+
|
|
@Deprecated
|
|
static RandomSource createThreadSafe() {
|
|
return new ThreadSafeLegacyRandomSource(RandomSupport.generateUniqueSeed());
|
|
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
|
|
index 83fcdd4d090bfc8801a640b2a5645313aa946343..41dd7129fcb1b4aa06f3d51b3fb809d6ff0eb370 100644
|
|
--- a/src/main/java/net/minecraft/world/level/Level.java
|
|
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
|
@@ -128,6 +128,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
|
protected float oThunderLevel;
|
|
public float thunderLevel;
|
|
public final RandomSource random = RandomSource.create();
|
|
+ public final RandomSource randomFaster = RandomSource.createFaster(); // Leaf - Generate random seed faster
|
|
/** @deprecated */
|
|
@Deprecated
|
|
private final RandomSource threadSafeRandom = RandomSource.createThreadSafe();
|
|
diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
|
|
index e33b39d369386d677cc15247846790b498e37a82..cf715114f0ebba449d7bd663445baec699d97537 100644
|
|
--- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java
|
|
+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
|
|
@@ -405,10 +405,12 @@ public final class NaturalSpawner {
|
|
|
|
private static BlockPos getRandomPosWithin(Level world, LevelChunk chunk) {
|
|
ChunkPos chunkcoordintpair = chunk.getPos();
|
|
- int i = chunkcoordintpair.getMinBlockX() + world.random.nextInt(16);
|
|
- int j = chunkcoordintpair.getMinBlockZ() + world.random.nextInt(16);
|
|
+ // Leaf start - Generate random seed faster
|
|
+ int i = chunkcoordintpair.getMinBlockX() + world.randomFaster.nextInt(16);
|
|
+ int j = chunkcoordintpair.getMinBlockZ() + world.randomFaster.nextInt(16);
|
|
int k = chunk.getHeight(Heightmap.Types.WORLD_SURFACE, i, j) + 1;
|
|
- int l = Mth.randomBetweenInclusive(world.random, world.getMinBuildHeight(), k);
|
|
+ int l = Mth.randomBetweenInclusive(world.randomFaster, world.getMinBuildHeight(), k);
|
|
+ // Leaf end - Generate random seed faster
|
|
|
|
return new BlockPos(i, l, j);
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/world/level/levelgen/RandomSupport.java b/src/main/java/net/minecraft/world/level/levelgen/RandomSupport.java
|
|
index 4327bee689e986561d126d6018d3fee7d2623176..82ee2aaabf6563cf3d6ae1e5b63242240a8e5521 100644
|
|
--- a/src/main/java/net/minecraft/world/level/levelgen/RandomSupport.java
|
|
+++ b/src/main/java/net/minecraft/world/level/levelgen/RandomSupport.java
|
|
@@ -41,6 +41,12 @@ public final class RandomSupport {
|
|
return SEED_UNIQUIFIER.updateAndGet(seedUniquifier -> seedUniquifier * 1181783497276652981L) ^ System.nanoTime();
|
|
}
|
|
|
|
+ // Leaf start - Generate random seed faster
|
|
+ public static long generateFasterSeed() {
|
|
+ return SEED_UNIQUIFIER.updateAndGet((seedUniquifier) -> seedUniquifier * 1181783497276652981L)^ java.util.concurrent.ThreadLocalRandom.current().nextLong();
|
|
+ }
|
|
+ // Leaf end - Generate random seed faster
|
|
+
|
|
public static record Seed128bit(long seedLo, long seedHi) {
|
|
public RandomSupport.Seed128bit xor(long seedLo, long seedHi) {
|
|
return new RandomSupport.Seed128bit(this.seedLo ^ seedLo, this.seedHi ^ seedHi);
|