Patina patches!
This commit is contained in:
97
patches/server/0019-Remove-TickTask.patch
Normal file
97
patches/server/0019-Remove-TickTask.patch
Normal file
@@ -0,0 +1,97 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Etil <81570777+etil2jz@users.noreply.github.com>
|
||||
Date: Thu, 9 Dec 2021 16:40:59 +0100
|
||||
Subject: [PATCH] Remove TickTask
|
||||
|
||||
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 c691ee6208521b1570f0f25c8bbfd05146bd155c..1fe78da9a07bb2cadcd18ad4d30f9b101c696c36 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -186,7 +186,7 @@ import org.bukkit.event.server.ServerLoadEvent;
|
||||
import co.aikar.timings.MinecraftTimings; // Paper
|
||||
import org.spigotmc.SlackActivityAccountant; // Spigot
|
||||
|
||||
-public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTask> implements CommandSource, AutoCloseable {
|
||||
+public abstract class MinecraftServer extends ReentrantBlockableEventLoop<Runnable> implements CommandSource, AutoCloseable { // Patina
|
||||
|
||||
private static MinecraftServer SERVER; // Paper
|
||||
public static final Logger LOGGER = LogManager.getLogger();
|
||||
@@ -1368,19 +1368,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
}
|
||||
|
||||
@Override
|
||||
- public TickTask wrapRunnable(Runnable runnable) {
|
||||
+ public Runnable wrapRunnable(Runnable runnable) { // Patina
|
||||
// Paper start - anything that does try to post to main during watchdog crash, run on watchdog
|
||||
if (this.hasStopped && Thread.currentThread().equals(shutdownThread)) {
|
||||
runnable.run();
|
||||
runnable = () -> {};
|
||||
}
|
||||
// Paper end
|
||||
- return new TickTask(this.tickCount, runnable);
|
||||
+ return runnable; // Patina
|
||||
}
|
||||
|
||||
+ /* // Patina
|
||||
protected boolean shouldRun(TickTask ticktask) {
|
||||
return ticktask.getTick() + 3 < this.tickCount || this.haveTime();
|
||||
}
|
||||
+ */
|
||||
|
||||
@Override
|
||||
public boolean pollTask() {
|
||||
@@ -1411,10 +1413,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
}
|
||||
}
|
||||
|
||||
+ /* // Patina
|
||||
public void doRunTask(TickTask ticktask) { // CraftBukkit - decompile error
|
||||
this.getProfiler().incrementCounter("runTask");
|
||||
super.doRunTask(ticktask);
|
||||
}
|
||||
+ */
|
||||
|
||||
private void updateStatusIcon(ServerStatus metadata) {
|
||||
Optional<File> optional = Optional.of(this.getFile("server-icon.png")).filter(File::isFile);
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
||||
index 406bfe20a7b8786bbc6bee46151be91dadec6180..369eb8e05d13cc4c9af096af22f670c29a6fe6e4 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
||||
@@ -1262,10 +1262,12 @@ public class ServerChunkCache extends ChunkSource {
|
||||
return runnable;
|
||||
}
|
||||
|
||||
+ /* // Patina
|
||||
@Override
|
||||
protected boolean shouldRun(Runnable task) {
|
||||
return true;
|
||||
}
|
||||
+ */
|
||||
|
||||
@Override
|
||||
protected boolean scheduleExecutables() {
|
||||
diff --git a/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java b/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java
|
||||
index dcce05d2f4ab16424db4ab103a12188e207a457b..540aa5e12bb6b44d510c701f2867f541b07ebcc4 100644
|
||||
--- a/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java
|
||||
+++ b/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java
|
||||
@@ -29,7 +29,7 @@ public abstract class BlockableEventLoop<R extends Runnable> implements Profiler
|
||||
|
||||
protected abstract R wrapRunnable(Runnable runnable);
|
||||
|
||||
- protected abstract boolean shouldRun(R task);
|
||||
+ //protected abstract boolean shouldRun(R task); // Patina
|
||||
|
||||
public boolean isSameThread() {
|
||||
return Thread.currentThread() == this.getRunningThread();
|
||||
@@ -116,7 +116,7 @@ public abstract class BlockableEventLoop<R extends Runnable> implements Profiler
|
||||
R runnable = this.pendingRunnables.peek();
|
||||
if (runnable == null) {
|
||||
return false;
|
||||
- } else if (this.blockingCount == 0 && !this.shouldRun(runnable)) {
|
||||
+ } else if (this.blockingCount == 0 && !true/*this.shouldRun(runnable)*/) { // Patina
|
||||
return false;
|
||||
} else {
|
||||
this.doRunTask(this.pendingRunnables.remove());
|
||||
1375
patches/server/0020-Completely-remove-Metrics.patch
Normal file
1375
patches/server/0020-Completely-remove-Metrics.patch
Normal file
File diff suppressed because it is too large
Load Diff
180
patches/server/0021-Remove-VersionFetcher.patch
Normal file
180
patches/server/0021-Remove-VersionFetcher.patch
Normal file
@@ -0,0 +1,180 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Etil <81570777+etil2jz@users.noreply.github.com>
|
||||
Date: Thu, 9 Dec 2021 16:53:47 +0100
|
||||
Subject: [PATCH] Remove VersionFetcher
|
||||
|
||||
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/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
||||
deleted file mode 100644
|
||||
index ece77f5ea4b14bbed7c070131b3251ea86764538..0000000000000000000000000000000000000000
|
||||
--- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
||||
+++ /dev/null
|
||||
@@ -1,149 +0,0 @@
|
||||
-package com.destroystokyo.paper;
|
||||
-
|
||||
-import com.destroystokyo.paper.util.VersionFetcher;
|
||||
-import com.google.common.base.Charsets;
|
||||
-import com.google.common.io.Resources;
|
||||
-import com.google.gson.*;
|
||||
-import net.kyori.adventure.text.Component;
|
||||
-import net.kyori.adventure.text.event.ClickEvent;
|
||||
-import net.kyori.adventure.text.format.NamedTextColor;
|
||||
-import net.kyori.adventure.text.format.TextDecoration;
|
||||
-import net.kyori.adventure.text.TextComponent;
|
||||
-
|
||||
-import javax.annotation.Nonnull;
|
||||
-import javax.annotation.Nullable;
|
||||
-import java.io.*;
|
||||
-import java.net.HttpURLConnection;
|
||||
-import java.net.URL;
|
||||
-import java.util.stream.StreamSupport;
|
||||
-
|
||||
-public class PaperVersionFetcher implements VersionFetcher {
|
||||
- private static final java.util.regex.Pattern VER_PATTERN = java.util.regex.Pattern.compile("^([0-9\\.]*)\\-.*R"); // R is an anchor, will always give '-R' at end
|
||||
- private static final String GITHUB_BRANCH_NAME = "master";
|
||||
- private static final String DOWNLOAD_PAGE = "https://papermc.io/downloads";
|
||||
- private static @Nullable String mcVer;
|
||||
-
|
||||
- @Override
|
||||
- public long getCacheTime() {
|
||||
- return 720000;
|
||||
- }
|
||||
-
|
||||
- @Nonnull
|
||||
- @Override
|
||||
- public Component getVersionMessage(@Nonnull String serverVersion) {
|
||||
- String[] parts = serverVersion.substring("git-Paper-".length()).split("[-\\s]");
|
||||
- final Component updateMessage = getUpdateStatusMessage("PaperMC/Paper", GITHUB_BRANCH_NAME, parts[0]);
|
||||
- final Component history = getHistory();
|
||||
-
|
||||
- return history != null ? TextComponent.ofChildren(updateMessage, Component.newline(), history) : updateMessage;
|
||||
- }
|
||||
-
|
||||
- private static @Nullable String getMinecraftVersion() {
|
||||
- if (mcVer == null) {
|
||||
- java.util.regex.Matcher matcher = VER_PATTERN.matcher(org.bukkit.Bukkit.getBukkitVersion());
|
||||
- if (matcher.find()) {
|
||||
- String result = matcher.group();
|
||||
- mcVer = result.substring(0, result.length() - 2); // strip 'R' anchor and trailing '-'
|
||||
- } else {
|
||||
- org.bukkit.Bukkit.getLogger().warning("Unable to match version to pattern! Report to PaperMC!");
|
||||
- org.bukkit.Bukkit.getLogger().warning("Pattern: " + VER_PATTERN.toString());
|
||||
- org.bukkit.Bukkit.getLogger().warning("Version: " + org.bukkit.Bukkit.getBukkitVersion());
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- return mcVer;
|
||||
- }
|
||||
-
|
||||
- private static Component getUpdateStatusMessage(@Nonnull String repo, @Nonnull String branch, @Nonnull String versionInfo) {
|
||||
- int distance;
|
||||
- try {
|
||||
- int jenkinsBuild = Integer.parseInt(versionInfo);
|
||||
- distance = fetchDistanceFromSiteApi(jenkinsBuild, getMinecraftVersion());
|
||||
- } catch (NumberFormatException ignored) {
|
||||
- versionInfo = versionInfo.replace("\"", "");
|
||||
- distance = fetchDistanceFromGitHub(repo, branch, versionInfo);
|
||||
- }
|
||||
-
|
||||
- switch (distance) {
|
||||
- case -1:
|
||||
- return Component.text("Error obtaining version information", NamedTextColor.YELLOW);
|
||||
- case 0:
|
||||
- return Component.text("You are running the latest version", NamedTextColor.GREEN);
|
||||
- case -2:
|
||||
- return Component.text("Unknown version", NamedTextColor.YELLOW);
|
||||
- default:
|
||||
- return Component.text("You are " + distance + " version(s) behind", NamedTextColor.YELLOW)
|
||||
- .append(Component.newline())
|
||||
- .append(Component.text("Download the new version at: ")
|
||||
- .append(Component.text(DOWNLOAD_PAGE, NamedTextColor.GOLD)
|
||||
- .hoverEvent(Component.text("Click to open", NamedTextColor.WHITE))
|
||||
- .clickEvent(ClickEvent.openUrl(DOWNLOAD_PAGE))));
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- private static int fetchDistanceFromSiteApi(int jenkinsBuild, @Nullable String siteApiVersion) {
|
||||
- if (siteApiVersion == null) { return -1; }
|
||||
- try {
|
||||
- try (BufferedReader reader = Resources.asCharSource(
|
||||
- new URL("https://papermc.io/api/v2/projects/paper/versions/" + siteApiVersion),
|
||||
- Charsets.UTF_8
|
||||
- ).openBufferedStream()) {
|
||||
- JsonObject json = new Gson().fromJson(reader, JsonObject.class);
|
||||
- JsonArray builds = json.getAsJsonArray("builds");
|
||||
- int latest = StreamSupport.stream(builds.spliterator(), false)
|
||||
- .mapToInt(e -> e.getAsInt())
|
||||
- .max()
|
||||
- .getAsInt();
|
||||
- return latest - jenkinsBuild;
|
||||
- } catch (JsonSyntaxException ex) {
|
||||
- ex.printStackTrace();
|
||||
- return -1;
|
||||
- }
|
||||
- } catch (IOException e) {
|
||||
- e.printStackTrace();
|
||||
- return -1;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- // Contributed by Techcable <Techcable@outlook.com> in GH-65
|
||||
- private static int fetchDistanceFromGitHub(@Nonnull String repo, @Nonnull String branch, @Nonnull String hash) {
|
||||
- try {
|
||||
- HttpURLConnection connection = (HttpURLConnection) new URL("https://api.github.com/repos/" + repo + "/compare/" + branch + "..." + hash).openConnection();
|
||||
- connection.connect();
|
||||
- if (connection.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) return -2; // Unknown commit
|
||||
- try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charsets.UTF_8))) {
|
||||
- JsonObject obj = new Gson().fromJson(reader, JsonObject.class);
|
||||
- String status = obj.get("status").getAsString();
|
||||
- switch (status) {
|
||||
- case "identical":
|
||||
- return 0;
|
||||
- case "behind":
|
||||
- return obj.get("behind_by").getAsInt();
|
||||
- default:
|
||||
- return -1;
|
||||
- }
|
||||
- } catch (JsonSyntaxException | NumberFormatException e) {
|
||||
- e.printStackTrace();
|
||||
- return -1;
|
||||
- }
|
||||
- } catch (IOException e) {
|
||||
- e.printStackTrace();
|
||||
- return -1;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- @Nullable
|
||||
- private Component getHistory() {
|
||||
- final VersionHistoryManager.VersionData data = VersionHistoryManager.INSTANCE.getVersionData();
|
||||
- if (data == null) {
|
||||
- return null;
|
||||
- }
|
||||
-
|
||||
- final String oldVersion = data.getOldVersion();
|
||||
- if (oldVersion == null) {
|
||||
- return null;
|
||||
- }
|
||||
-
|
||||
- return Component.text("Previous version: " + oldVersion, NamedTextColor.GRAY, TextDecoration.ITALIC);
|
||||
- }
|
||||
-}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
index 489932059dae0970e63d223a1c84b64688f09eee..ec38dcd9de5712cf0ef04eb30d471d5b57a3eb0c 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
@@ -392,10 +392,12 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
||||
return com.destroystokyo.paper.PaperConfig.timingsServerName;
|
||||
}
|
||||
|
||||
+ /* // Patina
|
||||
@Override
|
||||
public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {
|
||||
return new com.destroystokyo.paper.PaperVersionFetcher(); // Mirai
|
||||
}
|
||||
+ */
|
||||
|
||||
@Override
|
||||
public boolean isSupportedApiVersion(String apiVersion) {
|
||||
@@ -0,0 +1,30 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Etil <81570777+etil2jz@users.noreply.github.com>
|
||||
Date: Thu, 9 Dec 2021 16:56:03 +0100
|
||||
Subject: [PATCH] Remove unnecessary `LogManager.getLogger()`
|
||||
|
||||
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/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index 762927080ac2201fd74519d24989092902d4c78d..16def3cbbb048033d62e241603b1a3ffdceece19 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -163,7 +163,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i
|
||||
@Override
|
||||
public synchronized void setSeed(long seed) {
|
||||
if (locked) {
|
||||
- LogManager.getLogger().error("Ignoring setSeed on Entity.SHARED_RANDOM", new Throwable());
|
||||
+ LOGGER.error("Ignoring setSeed on Entity.SHARED_RANDOM", new Throwable()); // Patina - LOGGER
|
||||
} else {
|
||||
super.setSeed(seed);
|
||||
locked = true;
|
||||
@@ -2322,7 +2322,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i
|
||||
try {
|
||||
spawnReason = org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.valueOf(spawnReasonName);
|
||||
} catch (Exception ignored) {
|
||||
- LogManager.getLogger().error("Unknown SpawnReason " + spawnReasonName + " for " + this);
|
||||
+ LOGGER.error("Unknown SpawnReason " + spawnReasonName + " for " + this); // Patina - LOGGER
|
||||
}
|
||||
}
|
||||
if (spawnReason == null) {
|
||||
21
patches/server/0023-Make-a-field-final.patch
Normal file
21
patches/server/0023-Make-a-field-final.patch
Normal file
@@ -0,0 +1,21 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Etil <81570777+etil2jz@users.noreply.github.com>
|
||||
Date: Thu, 9 Dec 2021 16:58:51 +0100
|
||||
Subject: [PATCH] Make a field final
|
||||
|
||||
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/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java
|
||||
index cb0045fc4ddd738c45dee89d57b213a633b9a136..325ca5b716702c151b3075f9cb062ce0793cb694 100644
|
||||
--- a/src/main/java/net/minecraft/commands/CommandSourceStack.java
|
||||
+++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java
|
||||
@@ -56,7 +56,7 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy
|
||||
private final ResultConsumer<CommandSourceStack> consumer;
|
||||
private final EntityAnchorArgument.Anchor anchor;
|
||||
private final Vec2 rotation;
|
||||
- public java.util.Map<Thread, CommandNode> currentCommand = new java.util.concurrent.ConcurrentHashMap<>(); // CraftBukkit // Paper
|
||||
+ public final java.util.Map<Thread, CommandNode> currentCommand = new java.util.concurrent.ConcurrentHashMap<>(); // CraftBukkit // Paper // Patina - make a field final
|
||||
|
||||
public CommandSourceStack(CommandSource output, Vec3 pos, Vec2 rot, ServerLevel world, int level, String name, Component displayName, MinecraftServer server, @Nullable Entity entity) {
|
||||
this(output, pos, rot, world, level, name, displayName, server, entity, false, (commandcontext, flag, j) -> {
|
||||
111
patches/server/0024-Don-t-create-new-random-instance.patch
Normal file
111
patches/server/0024-Don-t-create-new-random-instance.patch
Normal file
@@ -0,0 +1,111 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Etil <81570777+etil2jz@users.noreply.github.com>
|
||||
Date: Thu, 9 Dec 2021 17:06:40 +0100
|
||||
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 1fe78da9a07bb2cadcd18ad4d30f9b101c696c36..a16c569cf0c8dba0b2bc61dedf5394a941696d56 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());
|
||||
+ chunkgenerator = WorldGenSettings.makeDefaultOverworld(this.registryHolder, java.util.concurrent.ThreadLocalRandom.current().nextLong()); // 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 ab06dd398bdf52656123eecdfe4daebe2a3b07e6..0011192cdba6dcb7ca125ae4a49ca89a93cc40f2 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);
|
||||
+ int k1 = worldserver.random.nextInt(i1); // 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);
|
||||
+ int k1 = world.random.nextInt(i1); // 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 b0cbe7d42eef1865e84211844b351027a26a5956..711d5dc2a8b3a5f2a2a35cab59b5ecfdeb152141 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);
|
||||
+ this.challenge = java.util.concurrent.ThreadLocalRandom.current().nextInt(16777216); // 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 21e478f81401649a170bfd20505f8094aa97b591..30ed4649ba827b27784cdc6278e6760e2b5acef3 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
||||
@@ -124,13 +124,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();
|
||||
+ //protected int randValue = (new org.yatopiamc.yatopia.server.util.FastRandom()).nextInt(); // 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();
|
||||
+ 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 e3a2919e214c63aa8cc2334d30dade3daf39b92d..a580c191a0450c1088c32344b30a3f452913ac5e 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();
|
||||
+ long i = java.util.concurrent.ThreadLocalRandom.current().nextLong(); // 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();
|
||||
+ long i = java.util.concurrent.ThreadLocalRandom.current().nextLong(); // 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 5ac260b44c97e82f4cd0436750fb5ff19d32a128..0291d6fca982c967e2d3ff31ea042d22b7e234d1 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -1216,7 +1216,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()); // Patina - don't create new random instance
|
||||
} else {
|
||||
dimensionmanager = worlddimension.type();
|
||||
chunkgenerator = worlddimension.generator();
|
||||
@@ -0,0 +1,56 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Etil <81570777+etil2jz@users.noreply.github.com>
|
||||
Date: Thu, 9 Dec 2021 17:10:22 +0100
|
||||
Subject: [PATCH] Completely remove bootstrapExecutor
|
||||
|
||||
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/Util.java b/src/main/java/net/minecraft/Util.java
|
||||
index 32a4b7554677609691e23f833a5ec76d1d437ff0..13085533dba61cf526cf77bac44e32358b592c7e 100644
|
||||
--- a/src/main/java/net/minecraft/Util.java
|
||||
+++ b/src/main/java/net/minecraft/Util.java
|
||||
@@ -67,7 +67,7 @@ public class Util {
|
||||
private static final int DEFAULT_MAX_THREADS = 255;
|
||||
private static final String MAX_THREADS_SYSTEM_PROPERTY = "max.bg.threads";
|
||||
private static final AtomicInteger WORKER_COUNT = new AtomicInteger(1);
|
||||
- private static final ExecutorService BOOTSTRAP_EXECUTOR = makeExecutor("Bootstrap", -2); // Paper - add -2 priority
|
||||
+ //private static final ExecutorService BOOTSTRAP_EXECUTOR = makeExecutor("Bootstrap", -2); // Paper - add -2 priority // Patina
|
||||
private static final ExecutorService BACKGROUND_EXECUTOR = makeExecutor("Main", -1); // Paper - add -1 priority
|
||||
// Paper start - don't submit BLOCKING PROFILE LOOKUPS to the world gen thread
|
||||
public static final ExecutorService PROFILE_EXECUTOR = Executors.newFixedThreadPool(2, new java.util.concurrent.ThreadFactory() {
|
||||
@@ -183,9 +183,11 @@ public class Util {
|
||||
return 255;
|
||||
}
|
||||
|
||||
+ /* // Patina
|
||||
public static ExecutorService bootstrapExecutor() {
|
||||
return BOOTSTRAP_EXECUTOR;
|
||||
}
|
||||
+ */
|
||||
|
||||
public static ExecutorService backgroundExecutor() {
|
||||
return BACKGROUND_EXECUTOR;
|
||||
diff --git a/src/main/java/net/minecraft/util/datafix/DataFixers.java b/src/main/java/net/minecraft/util/datafix/DataFixers.java
|
||||
index b08d32bc80b4a65ebb980366a3e717c3b0e1bdab..9e31e12203dcfa0836e38ee32bad33bf34caa688 100644
|
||||
--- a/src/main/java/net/minecraft/util/datafix/DataFixers.java
|
||||
+++ b/src/main/java/net/minecraft/util/datafix/DataFixers.java
|
||||
@@ -78,15 +78,15 @@ public class DataFixers {
|
||||
|
||||
private static final BiFunction<Integer, Schema, Schema> SAME = Schema::new;
|
||||
private static final BiFunction<Integer, Schema, Schema> SAME_NAMESPACED = NamespacedSchema::new;
|
||||
- private static final DataFixer DATA_FIXER = DataFixers.createFixerUpper();
|
||||
+ private static final DataFixer DATA_FIXER; // Patina
|
||||
|
||||
public DataFixers() {}
|
||||
|
||||
- private static DataFixer createFixerUpper() {
|
||||
+ static { // Patina
|
||||
DataFixerBuilder datafixerbuilder = new DataFixerBuilder(SharedConstants.getCurrentVersion().getWorldVersion());
|
||||
|
||||
DataFixers.addFixers(datafixerbuilder);
|
||||
- return datafixerbuilder.build(Util.bootstrapExecutor());
|
||||
+ DATA_FIXER = datafixerbuilder.build(Util.bootstrapExecutor()); // Patina
|
||||
}
|
||||
|
||||
public static DataFixer getDataFixer() {
|
||||
Reference in New Issue
Block a user