diff --git a/build.gradle.kts b/build.gradle.kts index 50b1438..83ccc18 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,7 +18,7 @@ repositories { dependencies { remapper("net.fabricmc:tiny-remapper:0.8.6:fat") - decompiler("org.quiltmc:quiltflower:1.8.1") + decompiler("org.quiltmc:quiltflower:1.9.0") paperclip("io.papermc:paperclip:3.0.3-SNAPSHOT") } diff --git a/gradle.properties b/gradle.properties index ea20a41..2b0fe43 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = cc.keyimc.keyi version = 1.19.2-R0.1-SNAPSHOT -purpurCommit = 79accf69dcdd084d0278e3d4fa25f04a00615121 +purpurCommit = afd4044046331919443aa0ae9b53ae197a95ba3b org.gradle.caching = true org.gradle.parallel = true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 41d9927..943f0cb 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ae04661..f398c33 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 1b6c787..65dcd68 100644 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,10 +80,10 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' @@ -143,12 +143,16 @@ fi if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -205,6 +209,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/gradlew.bat b/gradlew.bat index 107acd3..93e3f59 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/patches/api/0004-Revert-purpur-Remove-Timings.patch b/patches/api/0004-Revert-purpur-Remove-Timings.patch index 1d8ec20..b08eed9 100644 --- a/patches/api/0004-Revert-purpur-Remove-Timings.patch +++ b/patches/api/0004-Revert-purpur-Remove-Timings.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Revert purpur "Remove Timings" This reverts commit 0004242a19885c29a4cf68c510411ed70cf6e439. diff --git a/src/main/java/co/aikar/timings/TimedEventExecutor.java b/src/main/java/co/aikar/timings/TimedEventExecutor.java -index 5f8aab2cb734fcea7e2b4d4b2803170a7beddb87..4e6e1b8e8aeb07e34536941d2cbfc25e5cfa6c27 100644 +index 2c15b67149d014fdce2dd74a550013d83b6e44c8..34e43e56ccc663e05b9cae36643e8df5eee5cb17 100644 --- a/src/main/java/co/aikar/timings/TimedEventExecutor.java +++ b/src/main/java/co/aikar/timings/TimedEventExecutor.java -@@ -76,8 +76,8 @@ public class TimedEventExecutor implements EventExecutor { +@@ -76,9 +76,9 @@ public class TimedEventExecutor implements EventExecutor { executor.execute(listener, event); return; } @@ -19,7 +19,8 @@ index 5f8aab2cb734fcea7e2b4d4b2803170a7beddb87..4e6e1b8e8aeb07e34536941d2cbfc25e - //} // Purpur + } } - } + + @Override diff --git a/src/main/java/co/aikar/timings/Timing.java b/src/main/java/co/aikar/timings/Timing.java index 505908e987a032a801ae03d7fb020dfb662bf81b..a21e5ead5024fd0058c5e3302d8201dd249d32bc 100644 --- a/src/main/java/co/aikar/timings/Timing.java diff --git a/patches/api/0007-Player-Skull-API.patch b/patches/api/0007-Player-Skull-API.patch index 5d9d883..348e8cb 100644 --- a/patches/api/0007-Player-Skull-API.patch +++ b/patches/api/0007-Player-Skull-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Player Skull API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 5ed16b78c39de21eff18a4824f84457a7c70fb58..fda61b6b550ab58d3a6ca0c4981ebf37885983b8 100644 +index d54ba266d4dc772d844b1fffed0092a2d92e0eb1..ba8ac0aaa321d389b2186ad5d7c7759f7956723f 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -3,6 +3,9 @@ package org.bukkit.entity; @@ -18,7 +18,7 @@ index 5ed16b78c39de21eff18a4824f84457a7c70fb58..fda61b6b550ab58d3a6ca0c4981ebf37 import com.destroystokyo.paper.ClientOption; // Paper import com.destroystokyo.paper.Title; // Paper import net.kyori.adventure.text.Component; -@@ -3020,4 +3023,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3073,4 +3076,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM */ void sendDeathScreen(@NotNull Component message, @Nullable Entity killer); // Purpur end diff --git a/patches/server/0006-Fast-speed-check.patch b/patches/server/0006-Fast-speed-check.patch index 47014b9..9172842 100644 --- a/patches/server/0006-Fast-speed-check.patch +++ b/patches/server/0006-Fast-speed-check.patch @@ -14,10 +14,10 @@ doing questionable/buggy ones, and claiming breathtaking performance improvement any of those Spigot forks! diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 193b6621d6506a04bc1f9f23571aeb2e635d562c..7ef574008f413008427d075860c9eb5debeef4f4 100644 +index dd13fc7cbf82948b1474ea33411e64b465608672..d0b001ec4265dda8d130122c2e946ea07f9aa3ac 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1195,7 +1195,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1196,7 +1196,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.tryCheckInsideBlocks(); diff --git a/patches/server/0009-Add-an-option-for-spigot-item-merging-mechanism.patch b/patches/server/0009-Add-an-option-for-spigot-item-merging-mechanism.patch index d52f836..52cf1ed 100644 --- a/patches/server/0009-Add-an-option-for-spigot-item-merging-mechanism.patch +++ b/patches/server/0009-Add-an-option-for-spigot-item-merging-mechanism.patch @@ -21,10 +21,10 @@ index 8884a2471b4b7c5cabf1c0c767710ba69c7ae4ec..4f08f2e40f5bc3bc5a87bf3a34945afd } \ No newline at end of file diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -index aa1c929d948cea8f6212330f922eb5f1d9b9bb97..bb72741300cedd1c37fc5611c6472292bdf245a1 100644 +index d7e102024b495067335fe008ec1649708f3a4016..f1aed20abb804c65b9c490e14f32f4074a32e893 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -@@ -291,7 +291,7 @@ public class ItemEntity extends Entity { +@@ -296,7 +296,7 @@ public class ItemEntity extends Entity { ItemStack itemstack1 = other.getItem(); if (Objects.equals(this.getOwner(), other.getOwner()) && ItemEntity.areMergable(itemstack, itemstack1)) { diff --git a/patches/server/0014-Skip-entity-move-if-no-movement.patch b/patches/server/0014-Skip-entity-move-if-no-movement.patch index 06cc997..ccd33bc 100644 --- a/patches/server/0014-Skip-entity-move-if-no-movement.patch +++ b/patches/server/0014-Skip-entity-move-if-no-movement.patch @@ -9,7 +9,7 @@ Original code by RelativityMC, licensed under MIT You can find the original code on https://github.com/RelativityMC/VMP-fabric (Yarn mappings) diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f2ec048260bf93663b782e95f2b3cc255144e94d..9bf3ed2abbbc3dc161167c1d97f8b96e68dc621a 100644 +index d0b001ec4265dda8d130122c2e946ea07f9aa3ac..9a9d2e4cf955da26edc3b20d567294b2b2775ac4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -399,6 +399,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -20,7 +20,7 @@ index f2ec048260bf93663b782e95f2b3cc255144e94d..9bf3ed2abbbc3dc161167c1d97f8b96e public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1035,6 +1036,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1036,6 +1037,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { // Paper end - detailed watchdog information public void move(MoverType movementType, Vec3 movement) { @@ -34,7 +34,7 @@ index f2ec048260bf93663b782e95f2b3cc255144e94d..9bf3ed2abbbc3dc161167c1d97f8b96e // Paper start - detailed watchdog information io.papermc.paper.util.TickThread.ensureTickThread("Cannot move an entity off-main"); synchronized (this.posLock) { -@@ -3796,6 +3804,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3797,6 +3805,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public final void setBoundingBox(AABB boundingBox) { diff --git a/patches/server/0015-Use-Timings-v2-instead-of-spark.patch b/patches/server/0015-Use-Timings-v2-instead-of-spark.patch index 2ada2dd..b208dad 100644 --- a/patches/server/0015-Use-Timings-v2-instead-of-spark.patch +++ b/patches/server/0015-Use-Timings-v2-instead-of-spark.patch @@ -65,7 +65,7 @@ index 04ca6d27a13706fbddc708df0fcca42b4098bcba..d03551e81e3ef37935cb1d963aba3df3 } } diff --git a/src/main/java/net/minecraft/network/protocol/PacketUtils.java b/src/main/java/net/minecraft/network/protocol/PacketUtils.java -index e8efbbeece7e866c6c4d7489677d2d9e15fea4d0..8bc0cb9ad5bb4e76d962ff54305e2c08e279a17b 100644 +index 6c2ba21da99548a107fc9cda433f65b9b7c1e977..edefab4e22ee7217e17eb036165ce58788d4c782 100644 --- a/src/main/java/net/minecraft/network/protocol/PacketUtils.java +++ b/src/main/java/net/minecraft/network/protocol/PacketUtils.java @@ -47,9 +47,8 @@ public class PacketUtils { @@ -89,7 +89,7 @@ index e8efbbeece7e866c6c4d7489677d2d9e15fea4d0..8bc0cb9ad5bb4e76d962ff54305e2c08 PacketUtils.LOGGER.debug("Ignoring packet due to disconnection: {}", packet); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 735e01c550d561aa21c3c8f7f34a495ec3a0ab67..13d86c1fba2377808a5ef1e2820db445383af156 100644 +index 02ea949342380567448909ad82b4d701831a92bb..0a1662fc8bffca26de909c980b828f7ab05aa5a3 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -328,13 +328,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { + entity.activatedPriorityReset = false; // Pufferfish - DAB if (!entity.isRemoved()) { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); @@ -889,7 +890,7 @@ index 2c53e7915bdf299ce7ecfc0aade0716c30cdf0d3..21475834d44e2d0da94c9bf941555620 if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - now always true if in the ticking list Entity entity1 = entity.getVehicle(); -@@ -747,7 +747,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -749,7 +749,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.stopRiding(); } @@ -898,7 +899,7 @@ index 2c53e7915bdf299ce7ecfc0aade0716c30cdf0d3..21475834d44e2d0da94c9bf941555620 // Pufferfish start - copied from this.guardEntityTick try { this.tickNonPassenger(entity); // Pufferfish - changed -@@ -762,22 +762,22 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -764,22 +764,22 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end } // Pufferfish end @@ -928,7 +929,7 @@ index 2c53e7915bdf299ce7ecfc0aade0716c30cdf0d3..21475834d44e2d0da94c9bf941555620 } @Override -@@ -859,9 +859,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -861,9 +861,9 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); @@ -940,7 +941,7 @@ index 2c53e7915bdf299ce7ecfc0aade0716c30cdf0d3..21475834d44e2d0da94c9bf941555620 final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - disable thunder // Pufferfish - replace random with shouldDoLightning -@@ -893,7 +893,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -895,7 +895,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } @@ -949,7 +950,7 @@ index 2c53e7915bdf299ce7ecfc0aade0716c30cdf0d3..21475834d44e2d0da94c9bf941555620 if (!this.paperConfig().environment.disableIceAndSnow && (this.currentIceAndSnowTick++ & 15) == 0) { // Paper - Disable ice and snow // Paper - optimise random ticking // Pufferfish - optimize further random ticking // Paper start - optimise chunk ticking this.getRandomBlockPosition(j, 0, k, 15, blockposition); -@@ -929,8 +929,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -931,8 +931,8 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking @@ -960,7 +961,7 @@ index 2c53e7915bdf299ce7ecfc0aade0716c30cdf0d3..21475834d44e2d0da94c9bf941555620 if (randomTickSpeed > 0) { LevelChunkSection[] sections = chunk.getSections(); int minSection = io.papermc.paper.util.WorldUtil.getMinSection(this); -@@ -964,8 +964,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -966,8 +966,8 @@ public class ServerLevel extends Level implements WorldGenLevel { } } // Paper end - optimise random block ticking @@ -971,7 +972,7 @@ index 2c53e7915bdf299ce7ecfc0aade0716c30cdf0d3..21475834d44e2d0da94c9bf941555620 } public Optional findLightningRod(BlockPos pos) { -@@ -1257,24 +1257,24 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1259,24 +1259,24 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot end // Paper start- timings final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); @@ -1004,7 +1005,7 @@ index 2c53e7915bdf299ce7ecfc0aade0716c30cdf0d3..21475834d44e2d0da94c9bf941555620 Iterator iterator = entity.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1297,17 +1297,17 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1299,17 +1299,17 @@ public class ServerLevel extends Level implements WorldGenLevel { if (passenger instanceof Player || this.entityTickList.contains(passenger)) { // Paper - EAR 2 final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger); @@ -1028,7 +1029,7 @@ index 2c53e7915bdf299ce7ecfc0aade0716c30cdf0d3..21475834d44e2d0da94c9bf941555620 // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1319,7 +1319,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1321,7 +1321,7 @@ public class ServerLevel extends Level implements WorldGenLevel { vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -1037,7 +1038,7 @@ index 2c53e7915bdf299ce7ecfc0aade0716c30cdf0d3..21475834d44e2d0da94c9bf941555620 Iterator iterator = passenger.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1328,7 +1328,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1330,7 +1330,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.tickPassenger(passenger, entity2); } @@ -1046,7 +1047,7 @@ index 2c53e7915bdf299ce7ecfc0aade0716c30cdf0d3..21475834d44e2d0da94c9bf941555620 } } else { passenger.stopRiding(); -@@ -1348,14 +1348,14 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1350,14 +1350,14 @@ public class ServerLevel extends Level implements WorldGenLevel { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); } @@ -1064,7 +1065,7 @@ index 2c53e7915bdf299ce7ecfc0aade0716c30cdf0d3..21475834d44e2d0da94c9bf941555620 // Copied from save() // CraftBukkit start - moved from MinecraftServer.saveChunks -@@ -1367,7 +1367,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1369,7 +1369,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.convertable.saveDataTag(this.server.registryHolder, this.serverLevelData, this.server.getPlayerList().getSingleplayerData()); } // CraftBukkit end @@ -1073,7 +1074,7 @@ index 2c53e7915bdf299ce7ecfc0aade0716c30cdf0d3..21475834d44e2d0da94c9bf941555620 } // Paper end -@@ -1381,7 +1381,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1383,7 +1383,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (!savingDisabled) { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit @@ -1082,7 +1083,7 @@ index 2c53e7915bdf299ce7ecfc0aade0716c30cdf0d3..21475834d44e2d0da94c9bf941555620 if (progressListener != null) { progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); } -@@ -1391,11 +1391,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1393,11 +1393,11 @@ public class ServerLevel extends Level implements WorldGenLevel { progressListener.progressStage(Component.translatable("menu.savingChunks")); } @@ -1098,7 +1099,7 @@ index 2c53e7915bdf299ce7ecfc0aade0716c30cdf0d3..21475834d44e2d0da94c9bf941555620 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 57dd2f5190e00bddbc575044ce5d9cc613e3c0df..833d7c3007dfd3407371beb08f2187a037c6fdee 100644 +index 59b15c55d353f7fdde1dbd54c6a978b7075ebe1c..01ef7210ac1ffd69297a792469bec951604378b3 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2612,7 +2612,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -1369,7 +1370,7 @@ index 2877441927de3aeba28f5c3dd876e2ae4c15797c..e0e4a924e926b086699998095a1abddd } } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 3a67aaa39daf1fb86938f53e129aadfb686583b0..33accb56fbc00560e2f253a2150991331e515858 100644 +index de23676372e86406b069a8ca51de388daa64ab1a..fd3a29f829818886391321a0147764ead2154f13 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -435,38 +435,7 @@ public final class CraftServer implements Server { @@ -1490,7 +1491,7 @@ index a6e9e503a496c18e2501b03ec84f4600c134a50c..138407c2d4b0bc55ddb9aac5d2aa3eda // Paper end - add timings for scoreboard search } diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 937e3e783cf2f38b30024d29600eb4d042816058..6e87153e62db14b5bc8a984c6c9c61780d102083 100644 +index fe830a419c81811f0a72add63a3f09a94392e4a7..383a13a26ee9445fa6201770bb9bef274d72283a 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -170,7 +170,7 @@ public class ActivationRange @@ -1502,7 +1503,7 @@ index 937e3e783cf2f38b30024d29600eb4d042816058..6e87153e62db14b5bc8a984c6c9c6178 final int miscActivationRange = world.spigotConfig.miscActivationRange; final int raiderActivationRange = world.spigotConfig.raiderActivationRange; final int animalActivationRange = world.spigotConfig.animalActivationRange; -@@ -240,7 +240,7 @@ public class ActivationRange +@@ -244,7 +244,7 @@ public class ActivationRange } // Paper end } diff --git a/patches/server/0018-Use-cached-pool-for-mob-spawning-executor.patch b/patches/server/0018-Use-cached-pool-for-mob-spawning-executor.patch index 0d86966..e432188 100644 --- a/patches/server/0018-Use-cached-pool-for-mob-spawning-executor.patch +++ b/patches/server/0018-Use-cached-pool-for-mob-spawning-executor.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Use cached pool for mob spawning executor diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 13d86c1fba2377808a5ef1e2820db445383af156..ae95e3af64811f6f149a01b9715d8fdd2c2583fa 100644 +index 0a1662fc8bffca26de909c980b828f7ab05aa5a3..ae95e3af64811f6f149a01b9715d8fdd2c2583fa 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -43,6 +43,7 @@ import java.util.Optional; @@ -20,7 +20,7 @@ index 13d86c1fba2377808a5ef1e2820db445383af156..ae95e3af64811f6f149a01b9715d8fdd public volatile boolean abnormalExit = false; // Paper public boolean isIteratingOverLevels = false; // Paper -- public gg.pufferfish.pufferfish.util.AsyncExecutor mobSpawnExecutor = new gg.pufferfish.pufferfish.util.AsyncExecutor("MobSpawning", () -> true); // Pufferfish - optimize mob spawning +- public gg.pufferfish.pufferfish.util.AsyncExecutor mobSpawnExecutor = new gg.pufferfish.pufferfish.util.AsyncExecutor("MobSpawning"); // Pufferfish - optimize mob spawning + public ExecutorService mobSpawnExecutor; // Pufferfish - optimize mob spawning // KeYi - use cached pool public static S spin(Function serverFactory) { diff --git a/patches/server/0020-Use-a-faster-random-implementation.patch b/patches/server/0020-Use-a-faster-random-implementation.patch index bba545e..39f330f 100644 --- a/patches/server/0020-Use-a-faster-random-implementation.patch +++ b/patches/server/0020-Use-a-faster-random-implementation.patch @@ -507,7 +507,7 @@ index d1c7ab67cba881d96b7a5e9220130d86d0514304..309d1ce15aace9da4a84819e8511af2c public CraftFirework(CraftServer server, FireworkRocketEntity entity) { diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java -index 382879562a808290cc4dd59dcd5022c6c22fb169..4c8e07dc44283b374ebe0a59339110d1f3507d1e 100644 +index 23b1725679d195380a902a3b03c6b6ad3aaede19..d554bd8e2fbaab8ee4a770563396544d5f447319 100644 --- a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java +++ b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java @@ -40,13 +40,14 @@ import org.bukkit.craftbukkit.util.RandomSourceWrapper; @@ -518,7 +518,7 @@ index 382879562a808290cc4dd59dcd5022c6c22fb169..4c8e07dc44283b374ebe0a59339110d1 public class CustomChunkGenerator extends InternalChunkGenerator { - public final net.minecraft.world.level.chunk.ChunkGenerator delegate; + private final net.minecraft.world.level.chunk.ChunkGenerator delegate; private final ChunkGenerator generator; private final ServerLevel world; - private final Random random = new Random(); diff --git a/patches/server/0021-Player-Skull-API.patch b/patches/server/0021-Player-Skull-API.patch index f30b4fe..f9bcc85 100644 --- a/patches/server/0021-Player-Skull-API.patch +++ b/patches/server/0021-Player-Skull-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Player Skull API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 2400d9d488259f73f4ae02fe06b107e5c470a7dd..cc98f5aca737bcf226626029f83b7ddae51b87cb 100644 +index 965dabe484bf6276497389656e12d0363fb6513f..77c877118517717a6abf386d104b2c81094ae52a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -26,6 +26,9 @@ import java.util.Optional; @@ -26,7 +26,7 @@ index 2400d9d488259f73f4ae02fe06b107e5c470a7dd..cc98f5aca737bcf226626029f83b7dda import org.bukkit.map.MapCursor; import org.bukkit.map.MapView; import org.bukkit.metadata.MetadataValue; -@@ -3103,4 +3107,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3138,4 +3142,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { this.getHandle().connection.send(packet); } // Purpur end diff --git a/patches/server/0022-Reduce-sensor-work.patch b/patches/server/0022-Reduce-sensor-work.patch index 7d14a6c..ffa3065 100644 --- a/patches/server/0022-Reduce-sensor-work.patch +++ b/patches/server/0022-Reduce-sensor-work.patch @@ -10,10 +10,10 @@ this patch is focused around the sensors used for ai delete the line of sight cache less often and use a faster nearby comparison diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 1ec9a48f2f44f5bd647e0661423ae90970aee262..8800f2ab9e43a0377c1eae1f735bf3c5a09c8a36 100644 +index f23829690d2be20af50256e4d985e3e342415d54..995fc228430ac6c8af8654aa1137c7f66668f622 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1011,20 +1011,22 @@ public abstract class LivingEntity extends Entity { +@@ -1026,20 +1026,22 @@ public abstract class LivingEntity extends Entity { } if (entity != null) { @@ -41,7 +41,7 @@ index 1ec9a48f2f44f5bd647e0661423ae90970aee262..8800f2ab9e43a0377c1eae1f735bf3c5 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 7809f341dc76536250b4eb3809de9368b5c2d652..f62bb6f85c646326a33a56037792b54b15ef258b 100644 +index bc18c166ca776b0ef6e816eb034e410c391258b6..e68533ff29c882e955c150130e3260584cc250b0 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -884,10 +884,10 @@ public abstract class Mob extends LivingEntity {