aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0894-Optimize-nearest-structure-border-iteration.patch
diff options
context:
space:
mode:
authorRiley Park <[email protected]>2024-05-15 17:06:59 -0700
committerGitHub <[email protected]>2024-05-15 17:06:59 -0700
commitf17519338bc589c045e0b32bfc37e048b23544d5 (patch)
treee50182ec698b4a9de8f366f485ee089b1901bbd9 /patches/server/0894-Optimize-nearest-structure-border-iteration.patch
parent3fc93581bb876e8149b2ca423375a98f5ca12d27 (diff)
downloadPaper-f17519338bc589c045e0b32bfc37e048b23544d5.tar.gz
Paper-f17519338bc589c045e0b32bfc37e048b23544d5.zip
Expose server build information (#10729)
* Expose server build information * squash patches * final tweaks --------- Co-authored-by: Jake Potrebic <[email protected]> Co-authored-by: masmc05 <[email protected]>
Diffstat (limited to 'patches/server/0894-Optimize-nearest-structure-border-iteration.patch')
-rw-r--r--patches/server/0894-Optimize-nearest-structure-border-iteration.patch39
1 files changed, 39 insertions, 0 deletions
diff --git a/patches/server/0894-Optimize-nearest-structure-border-iteration.patch b/patches/server/0894-Optimize-nearest-structure-border-iteration.patch
new file mode 100644
index 0000000000..805af0f26c
--- /dev/null
+++ b/patches/server/0894-Optimize-nearest-structure-border-iteration.patch
@@ -0,0 +1,39 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Martijn Muijsers <[email protected]>
+Date: Mon, 21 Aug 2023 21:05:09 +0200
+Subject: [PATCH] Optimize nearest structure border iteration
+
+Getting the nearest generated structure contains a nested set of loops that
+iterates over all chunks at a specific chessboard distance. It does this by
+iterating over the entire square of chunks within that distance, and checking
+if the coordinates are at exactly the right distance to be on the border.
+
+This patch optimizes the iteration by only iterating over the border chunks.
+This evaluated chunks are the same, and in the same order, as before, to
+ensure that the returned found structure (which may for example be a buried
+treasure that will be marked on a treasure map) is the same as in vanilla.
+
+diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
+index c4972e5767488878f7929226258c41c1cc30a47f..c9cd18ce79a6ee7297a8fd14f4dbe712570b3ced 100644
+--- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
++++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
+@@ -266,12 +266,15 @@ public abstract class ChunkGenerator {
+ int i1 = placement.spacing();
+
+ for (int j1 = -radius; j1 <= radius; ++j1) {
+- boolean flag1 = j1 == -radius || j1 == radius;
++ // Paper start - Perf: iterate over border chunks instead of entire square chunk area
++ boolean flag1 = j1 == -radius || j1 == radius; final boolean onBorderAlongZAxis = flag1; // Paper - OBFHELPER
+
+- for (int k1 = -radius; k1 <= radius; ++k1) {
+- boolean flag2 = k1 == -radius || k1 == radius;
++ for (int k1 = -radius; k1 <= radius; k1 += onBorderAlongZAxis ? 1 : radius * 2) {
++ // boolean flag2 = k1 == -radius || k1 == radius;
+
+- if (flag1 || flag2) {
++ // if (flag1 || flag2) {
++ if (true) {
++ // Paper end - Perf: iterate over border chunks instead of entire square chunk area
+ int l1 = centerChunkX + i1 * j1;
+ int i2 = centerChunkZ + i1 * k1;
+ ChunkPos chunkcoordintpair = placement.getPotentialStructureChunk(seed, l1, i2);