112 lines
7.6 KiB
Diff
112 lines
7.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: foss-mc <69294560+foss-mc@users.noreply.github.com>
|
|
Date: Thu, 1 Jul 2021 12:17:44 +0000
|
|
Subject: [PATCH] Don't create new random instance
|
|
|
|
Original code by PatinaMC, licensed under GNU General Public License v3.0
|
|
You can find the original code on https://github.com/PatinaMC/Patina
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
index 66b67c42d223dab3daf98e9088f1277b17342ac5..41557a97b1bc1d4986efa9d4a5d7691ec250882f 100644
|
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
@@ -650,7 +650,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<Runnab
|
|
|
|
if (worlddimension == null) {
|
|
dimensionmanager = (DimensionType) this.registryHolder.registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY).getOrThrow(DimensionType.OVERWORLD_LOCATION);
|
|
- chunkgenerator = WorldGenSettings.makeDefaultOverworld(this.registryHolder, (new org.yatopiamc.yatopia.server.util.FastRandom()).nextLong()); // Mirai
|
|
+ chunkgenerator = WorldGenSettings.makeDefaultOverworld(this.registryHolder, java.util.concurrent.ThreadLocalRandom.current().nextLong()); // Mirai // Patina - don't create new random instance
|
|
} else {
|
|
dimensionmanager = worlddimension.type();
|
|
chunkgenerator = worlddimension.generator();
|
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
index 1615be3540b878ce3182676d235365046d636c12..8ac654cb16195bb51bbd179ea77462bbe16f525d 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
@@ -368,7 +368,7 @@ public class ServerPlayer extends Player {
|
|
long l = k * k;
|
|
int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l;
|
|
int j1 = this.getCoprime(i1);
|
|
- int k1 = (new org.yatopiamc.yatopia.server.util.FastRandom()).nextInt(i1); // Mirai
|
|
+ int k1 = worldserver.random.nextInt(i1); // Mirai // Patina - don't create new random instance
|
|
|
|
for (int l1 = 0; l1 < i1; ++l1) {
|
|
int i2 = (k1 + j1 * l1) % i1;
|
|
@@ -405,7 +405,7 @@ public class ServerPlayer extends Player {
|
|
long l = k * k;
|
|
int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l;
|
|
int j1 = this.getCoprime(i1);
|
|
- int k1 = (new org.yatopiamc.yatopia.server.util.FastRandom()).nextInt(i1); // Mirai
|
|
+ int k1 = world.random.nextInt(i1); // Mirai // Patina - don't create new random instance
|
|
|
|
for (int l1 = 0; l1 < i1; ++l1) {
|
|
int i2 = (k1 + j1 * l1) % i1;
|
|
diff --git a/src/main/java/net/minecraft/server/rcon/thread/QueryThreadGs4.java b/src/main/java/net/minecraft/server/rcon/thread/QueryThreadGs4.java
|
|
index 4c6d10d3ce7a9b5cc4cc04d57fe06ec07a2793e2..e02c1ee3c0ec3c9e32902d61ea12fa227996ad4c 100644
|
|
--- a/src/main/java/net/minecraft/server/rcon/thread/QueryThreadGs4.java
|
|
+++ b/src/main/java/net/minecraft/server/rcon/thread/QueryThreadGs4.java
|
|
@@ -348,7 +348,7 @@ public class QueryThreadGs4 extends GenericThread {
|
|
this.identBytes[2] = bs[5];
|
|
this.identBytes[3] = bs[6];
|
|
this.ident = new String(this.identBytes, StandardCharsets.UTF_8);
|
|
- this.challenge = (new org.yatopiamc.yatopia.server.util.FastRandom()).nextInt(16777216); // Mirai
|
|
+ this.challenge = java.util.concurrent.ThreadLocalRandom.current().nextInt(16777216); // Mirai // Patina - don't create new random instance
|
|
this.challengeBytes = String.format("\t%s%d\u0000", this.ident, this.challenge).getBytes(StandardCharsets.UTF_8);
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
|
|
index 519010d391853629b752ffa1bdbe70f5ef6f1b32..d4704fb641e25679367ffa92be485bc329c97e2c 100644
|
|
--- a/src/main/java/net/minecraft/world/level/Level.java
|
|
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
|
@@ -123,13 +123,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
|
public final Thread thread;
|
|
private final boolean isDebug;
|
|
private int skyDarken;
|
|
- protected int randValue = (new org.yatopiamc.yatopia.server.util.FastRandom()).nextInt(); // Mirai
|
|
+ //protected int randValue = (new org.yatopiamc.yatopia.server.util.FastRandom()).nextInt(); // Mirai // Patina - moved down
|
|
protected final int addend = 1013904223;
|
|
protected float oRainLevel;
|
|
public float rainLevel;
|
|
protected float oThunderLevel;
|
|
public float thunderLevel;
|
|
public final Random random = new org.yatopiamc.yatopia.server.util.FastRandom(); // Mirai
|
|
+ protected int randValue = random.nextInt(); // Patina - don't create new random instance
|
|
private final DimensionType dimensionType;
|
|
public final WritableLevelData levelData;
|
|
private final Supplier<ProfilerFiller> profiler;
|
|
diff --git a/src/main/java/net/minecraft/world/level/levelgen/WorldGenSettings.java b/src/main/java/net/minecraft/world/level/levelgen/WorldGenSettings.java
|
|
index 4c4c9ea4575306d08a34e19bba06a4a63f562809..e06db106202d1227e3ca061d98c1006783fe7dde 100644
|
|
--- a/src/main/java/net/minecraft/world/level/levelgen/WorldGenSettings.java
|
|
+++ b/src/main/java/net/minecraft/world/level/levelgen/WorldGenSettings.java
|
|
@@ -86,7 +86,7 @@ public class WorldGenSettings {
|
|
}
|
|
|
|
public static WorldGenSettings makeDefault(RegistryAccess registryManager) {
|
|
- long i = (new org.yatopiamc.yatopia.server.util.FastRandom()).nextLong(); // Mirai
|
|
+ long i = java.util.concurrent.ThreadLocalRandom.current().nextLong(); // Mirai // Patina - don't create new random instance
|
|
|
|
return new WorldGenSettings(i, true, false, WorldGenSettings.withOverworld(registryManager.registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY), DimensionType.defaultDimensions(registryManager, i), WorldGenSettings.makeDefaultOverworld(registryManager, i)));
|
|
}
|
|
@@ -215,7 +215,7 @@ public class WorldGenSettings {
|
|
}).orElse("default");
|
|
|
|
properties.put("level-type", s4);
|
|
- long i = (new org.yatopiamc.yatopia.server.util.FastRandom()).nextLong(); // Mirai
|
|
+ long i = java.util.concurrent.ThreadLocalRandom.current().nextLong(); // Mirai // Patina - don't create new random instance
|
|
|
|
if (!s1.isEmpty()) {
|
|
try {
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
index 0ab224b093e18f7e49c366c9e4862e0a97e7573c..8219faec47215d7ac618d54ae996d156e3a631ff 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -1237,7 +1237,7 @@ public final class CraftServer implements Server {
|
|
|
|
if (worlddimension == null) {
|
|
dimensionmanager = (DimensionType) console.registryHolder.registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY).getOrThrow(DimensionType.OVERWORLD_LOCATION);
|
|
- chunkgenerator = WorldGenSettings.makeDefaultOverworld(console.registryHolder, (new org.yatopiamc.yatopia.server.util.FastRandom()).nextLong());
|
|
+ chunkgenerator = WorldGenSettings.makeDefaultOverworld(console.registryHolder, java.util.concurrent.ThreadLocalRandom.current().nextLong()); // Mirai // Patina - don't create new random instance
|
|
} else {
|
|
dimensionmanager = worlddimension.type();
|
|
chunkgenerator = worlddimension.generator();
|