diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 7c52ac2a..5a5d4ba5 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -5,9 +5,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Git Repository
- uses: actions/checkout@v3.0.2
+ uses: actions/checkout@v3
- name: Validate Gradle Wrapper
- uses: gradle/wrapper-validation-action@v1.0.4
+ uses: gradle/wrapper-validation-action@master
- name: Set up JDK (GraalVM)
uses: graalvm/setup-graalvm@v1
with:
@@ -15,7 +15,7 @@ jobs:
java-version: '17'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Pull Gradle Cache
- uses: actions/cache@v3.0.4
+ uses: actions/cache@v3
id: gradle-cache
with:
path: ~/.gradle
@@ -31,17 +31,11 @@ jobs:
- name: Build
run: |
./gradlew -Dorg.gradle.jvmargs="-Dfile.encoding=UTF-8 -Dgraal.CompilerConfiguration=community -Dgraal.UsePriorityInlining=true -Dgraal.Vectorization=true -Dgraal.OptDuplication=true -Dgraal.SpeculativeGuardMovement=true -Dgraal.WriteableCodeCache=true --add-modules jdk.incubator.vector" createReobfPaperclipJar --stacktrace --no-daemon
- - name: Archive Paperclip
- uses: actions/upload-artifact@v3.1.0
+ - name: Release
+ if: github.ref_name == 'ver/1.19.2'
+ uses: marvinpinto/action-automatic-releases@latest
with:
- name: Mirai-1.19.2
- path: build/libs/mirai-paperclip-1.19.2-R0.1-SNAPSHOT-reobf.jar
-# - name: Release
-# if: github.ref_name == 'ver/1.19'
-# uses: marvinpinto/action-automatic-releases@v1.2.1
-# with:
-# repo_token: ${{ secrets.GITHUB_TOKEN }}
-# automatic_release_tag: '1.19'
-# prerelease: false
-# title: 'Mirai 1.19'
-# files: build/libs/mirai-paperclip-1.19-R0.1-SNAPSHOT-reobf.jar
+ title: "Mirai-1.19.2"
+ automatic_release_tag: "1.19.2"
+ repo_token: "${{ secrets.GITHUB_TOKEN }}"
+ files: build/libs/mirai-paperclip-1.19.2-R0.1-SNAPSHOT-reobf.jar
diff --git a/README.md b/README.md
index c340c327..c85a75db 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
Mirai is ❗under heavy development❗ and contributions are welcome!
This project is experimental, its usage in production environment is discouraged if you are not ready to face possible bugs.
- [](https://ci.codemc.io/job/etil2jz/job/Mirai-1.19/lastSuccessfulBuild)
+ [](https://github.com/Dreeam-qwq/Mirai/releases/tag/1.19.2)
[](https://discord.gg/DdH6Yfu9gM)
@@ -26,7 +26,7 @@
## Downloads
The latest successful build can be downloaded here:
-[mirai-paperclip-1.19.2-R0.1-SNAPSHOT-reobf.jar](https://ci.codemc.io/job/etil2jz/job/Mirai-1.19/lastSuccessfulBuild/)
+[mirai-paperclip-1.19.2-R0.1-SNAPSHOT-reobf.jar](https://github.com/Dreeam-qwq/Mirai/releases/tag/1.19.2)
**Please note Java >= 17 is required.**
diff --git a/build-data/dev-imports.txt b/build-data/dev-imports.txt
index b818b96e..f35428a8 100644
--- a/build-data/dev-imports.txt
+++ b/build-data/dev-imports.txt
@@ -7,4 +7,4 @@
# datafixerupper com/mojang/datafixers/util/Either.java
# To import classes from the vanilla Minecraft jar use `minecraft` as the artifactId:
# minecraft net.minecraft.world.level.entity.LevelEntityGetterAdapter
-# minecraft net/minecraft/world/level/entity/LevelEntityGetter.java
+# minecraft net/minecraft/world/level/entity/LevelEntityGetter.java
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index 55981c9e..7bef4028 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -4,7 +4,7 @@ plugins {
java
`maven-publish`
id("com.github.johnrengelman.shadow") version "7.1.2" apply false
- id("io.papermc.paperweight.patcher") version "1.3.9-SNAPSHOT"
+ id("io.papermc.paperweight.patcher") version "1.4.1"
}
repositories {
@@ -16,7 +16,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 6d12ef33..d8879770 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,8 +1,9 @@
org.gradle.caching=true
org.gradle.parallel=true
org.gradle.vfs.watch=false
+org.gradle.jvmargs = -Xmx4G
group=dev.etil.mirai
version=1.19.2-R0.1-SNAPSHOT
mcVersion=1.19.2
-pufferfishRef=deb9638cd5243286685c20d254fdec9c2754979b
+pufferfishRef=9b8cdc74a4bed029a68682a6f0b6ec039b5c2707
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 249e5832..943f0cbf 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 ae04661e..f398c33c 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 a69d9cb6..65dcd68d 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
diff --git a/gradlew.bat b/gradlew.bat
index f127cfd4..93e3f59f 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
diff --git a/patches/api/0007-Lobotomize-stuck-villagers.patch b/patches/api/0007-Lobotomize-stuck-villagers.patch
index f452a990..1e905ae8 100644
--- a/patches/api/0007-Lobotomize-stuck-villagers.patch
+++ b/patches/api/0007-Lobotomize-stuck-villagers.patch
@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/org/bukkit/entity/Villager.java b/src/main/java/org/bukkit/entity/Villager.java
-index d61855b83da0776fe910dee8cde184c720571a71..b7b7963c07f9859df980017d0515ab437f7d9d10 100644
+index c61e7e41aeb3d4f5f4ac47da8890051d8e97340d..12b08318f78c8144cc809dbccf0feabdd31f0ee2 100644
--- a/src/main/java/org/bukkit/entity/Villager.java
+++ b/src/main/java/org/bukkit/entity/Villager.java
-@@ -297,4 +297,14 @@ public interface Villager extends AbstractVillager {
+@@ -328,4 +328,14 @@ public interface Villager extends AbstractVillager {
*/
public void clearReputations();
// Paper end
diff --git a/patches/server/0001-Mirai-Branding-Changes.patch b/patches/server/0001-Mirai-Branding-Changes.patch
index 347cecb6..40f4bc7d 100644
--- a/patches/server/0001-Mirai-Branding-Changes.patch
+++ b/patches/server/0001-Mirai-Branding-Changes.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Mirai Branding Changes
diff --git a/build.gradle.kts b/build.gradle.kts
-index f0d22a733e3b97fb959cd566fb6c93c6d5681e16..65441b943a97f8aa453f31bf5cf7f87862fdcc07 100644
+index 5b43f5c27ce903c53cbce245477fbdefdc88733f..ca62be1aca4467b81e7398fa98863c1604ed3e46 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
-@@ -9,7 +9,7 @@ plugins {
+@@ -7,7 +7,7 @@ plugins {
}
dependencies {
@@ -17,7 +17,7 @@ index f0d22a733e3b97fb959cd566fb6c93c6d5681e16..65441b943a97f8aa453f31bf5cf7f878
// Pufferfish start
implementation("io.papermc.paper:paper-mojangapi:1.19.2-R0.1-SNAPSHOT") {
exclude("io.papermc.paper", "paper-api")
-@@ -84,7 +84,7 @@ tasks.jar {
+@@ -82,7 +82,7 @@ tasks.jar {
attributes(
"Main-Class" to "org.bukkit.craftbukkit.Main",
"Implementation-Title" to "CraftBukkit",
@@ -360,7 +360,7 @@ index 0000000000000000000000000000000000000000..7be6bb03891e0831ad72e581900fdf11
+}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index af9da39dffda01325af2ab3dd8b5e1efb18e013a..da9623b90f3d25dc4c3e3aa269c4ccd2c8a0a52c 100644
+index 3cadf20891888b56ac70798d581d6a044a98c0a3..5f759d9b346d26ae1c85cd7fb7118de305d74d74 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -923,7 +923,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop {
-- return new String[][]{collection.toArray(new String[0])};
-+ return new String[][]{collection.toArray(me.titaniumtown.Constants.EMPTY_string_arr)}; // JettPack
+ RequirementsStrategy OR = (criteriaNames) -> {
+- return new String[][]{criteriaNames.toArray(new String[0])};
++ return new String[][]{criteriaNames.toArray(me.titaniumtown.Constants.EMPTY_string_arr)};
};
String[][] createRequirements(Collection criteriaNames);
@@ -237,10 +237,10 @@ index a2920b8a9eff77d9c5d1d7f70ad3abdacba8f0fa..f7f19e360d712211625ff28e92f83949
protected CipherBase(Cipher cipher) {
this.cipher = cipher;
diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java
-index cd386a13d8c0909d4ac971a5df751cd23e609b1b..5344f1f81797344130bd48f16689161af8261882 100644
+index f1e1a4a48349c0e431b31327fdf217989db027b3..8f6a3b5763b74597ae005295ccc21fc98537af1c 100644
--- a/src/main/java/net/minecraft/network/Connection.java
+++ b/src/main/java/net/minecraft/network/Connection.java
-@@ -311,7 +311,7 @@ public class Connection extends SimpleChannelInboundHandler> {
+@@ -312,7 +312,7 @@ public class Connection extends SimpleChannelInboundHandler> {
}
public void setListener(PacketListener listener) {
@@ -263,7 +263,7 @@ index 02fb51f7f699992caf13d088c75b8275ec5267bb..11cb4ac19ddc09889117690ffec51915
private static final FormattedText TEXT_NULL = FormattedText.of("null");
private final String key;
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
-index 5962f7a2b185d7d54a0f9e341a4fdf6e6f1c1ec5..0b677d128cbd108bb58d74d3cfe6015551e94143 100644
+index 0066b1abc008d245825abf1d256cb87fa9c2d877..7cc87a49a385eaf2fe0ac656571565ddbca16cf2 100644
--- a/src/main/java/net/minecraft/server/Main.java
+++ b/src/main/java/net/minecraft/server/Main.java
@@ -85,7 +85,7 @@ public class Main {
@@ -276,7 +276,7 @@ index 5962f7a2b185d7d54a0f9e341a4fdf6e6f1c1ec5..0b677d128cbd108bb58d74d3cfe60155
OptionSpec optionspec11 = optionparser.accepts("port").withRequiredArg().ofType(Integer.class).defaultsTo(-1, new Integer[0]);
OptionSpec optionspec12 = optionparser.accepts("serverId").withRequiredArg();
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index da9623b90f3d25dc4c3e3aa269c4ccd2c8a0a52c..7ace6c1e81519b3e4f673d23627ca603fecb646d 100644
+index 5f759d9b346d26ae1c85cd7fb7118de305d74d74..faf57e23c19742b5bb5688476daca50939fc505c 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1354,8 +1354,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> list = Lists.newArrayList();
@@ -304,10 +304,10 @@ index 1eb912ad97f9663bf6bd336ad739f2552b0a5c9b..9901ffe9de585a73e9ef32c700b1e870
for (int j = 0; j < i; ++j) {
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index e802ee2b2dc458f52dbce9746fc9891eebb6dcc1..f4280eb9f77568e4f3af6f264fc60901e667a936 100644
+index 77d538ab79b31cf43620e560cdf2876a26b2bb7f..e91028d409fe3c92b368f62fecf15015ff54c9b8 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -909,7 +909,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -911,7 +911,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
BlockPos blockposition2 = blockposition.set(j + randomX, randomY, k + randomZ);
BlockState iblockdata = com.destroystokyo.paper.util.maplist.IBlockDataList.getBlockDataFromRaw(raw);
@@ -316,7 +316,7 @@ index e802ee2b2dc458f52dbce9746fc9891eebb6dcc1..f4280eb9f77568e4f3af6f264fc60901
// We drop the fluid tick since LAVA is ALREADY TICKED by the above method (See LiquidBlock).
// TODO CHECK ON UPDATE
}
-@@ -1164,7 +1164,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1166,7 +1166,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
public static List getCurrentlyTickingEntities() {
Entity ticking = currentlyTickingEntity.get();
@@ -326,7 +326,7 @@ index e802ee2b2dc458f52dbce9746fc9891eebb6dcc1..f4280eb9f77568e4f3af6f264fc60901
return ret;
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 4e615e5d5b8d79f6eaac2136be03961415fd093e..633fe61c98c1fc181f38b4195651c3ed6fc1db42 100644
+index 187791ff8197be015856fdfa9159fb26558f95cf..7fddeb21f85d213447504985dde6180c9fe16725 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -410,7 +410,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@@ -354,7 +354,7 @@ index 4e615e5d5b8d79f6eaac2136be03961415fd093e..633fe61c98c1fc181f38b4195651c3ed
return;
}
// Paper end
-@@ -3398,7 +3398,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3399,7 +3399,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
// Paper start
if (!org.bukkit.Bukkit.isPrimaryThread()) {
if (recipeSpamPackets.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamLimit) {
@@ -364,10 +364,10 @@ index 4e615e5d5b8d79f6eaac2136be03961415fd093e..633fe61c98c1fc181f38b4195651c3ed
}
}
diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
-index ea9b56fd6ae1d5577da5bd3e0c38abfeec8f3646..f1105edce8484cac39d8fb33a42c9ed8d44fe5c0 100644
+index fbd9807e3a9ad555999fa99e06211ecaf455a091..0af8c2e775862e30ab870c803f043696f6ef07b3 100644
--- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
-@@ -269,8 +269,8 @@ public class ServerLoginPacketListenerImpl implements TickablePacketListener, Se
+@@ -268,8 +268,8 @@ public class ServerLoginPacketListenerImpl implements TickablePacketListener, Se
@Override
public void handleHello(ServerboundHelloPacket packet) {
@@ -378,7 +378,7 @@ index ea9b56fd6ae1d5577da5bd3e0c38abfeec8f3646..f1105edce8484cac39d8fb33a42c9ed8
// Paper start - validate usernames
if (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() && io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.performUsernameValidation) {
if (!this.iKnowThisMayNotBeTheBestIdeaButPleaseDisableUsernameValidation && !validateUsername(packet.name())) {
-@@ -330,7 +330,7 @@ public class ServerLoginPacketListenerImpl implements TickablePacketListener, Se
+@@ -329,7 +329,7 @@ public class ServerLoginPacketListenerImpl implements TickablePacketListener, Se
@Override
public void handleKey(ServerboundKeyPacket packet) {
@@ -388,7 +388,7 @@ index ea9b56fd6ae1d5577da5bd3e0c38abfeec8f3646..f1105edce8484cac39d8fb33a42c9ed8
final String s;
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index 06eda955f96b5fe2d08ed0d39229c7a6ebb88931..3fc95b7d7b41e078e1d219e29ada27aeab1320bf 100644
+index 3be9352ae9b0b84acf07064b45562ceffd30391b..4c2eda1e555015d557a311eeed4acd1d32e14a29 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -741,7 +741,7 @@ public abstract class PlayerList {
@@ -451,10 +451,10 @@ index c82bb38b5b1c9204daef21455723d21509ad1c44..4aa044ab8748c01b0022096733e5bacf
private EquipmentSlot(EquipmentSlot.Type type, int entityId, int armorStandId, String name) {
this.type = type;
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 26efc49b4530112c8bd3f580ce375ab4203c9609..c0e316582e085873c05a76c16e612eabd2e8cf2a 100644
+index 77a96dd66e2c39495f23b4219dfdbb0820233434..3721f6c220da68232aabf5ea17fc6ffc25f6e7bb 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -3070,7 +3070,7 @@ public abstract class LivingEntity extends Entity {
+@@ -3087,7 +3087,7 @@ public abstract class LivingEntity extends Entity {
@Nullable
private Map collectEquipmentChanges() {
Map map = null;
@@ -464,7 +464,7 @@ index 26efc49b4530112c8bd3f580ce375ab4203c9609..c0e316582e085873c05a76c16e612eab
for (int j = 0; j < i; ++j) {
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index e89b88eb3d4202ea7ff043dc9e92163332cd10d3..78b1fc7b4cacfc98a9e3e6ba93e17c3307d5449c 100644
+index 26fabc96d3c3ac4ea35d094c686975b19c428d7f..8c84b6d2329ae580502e584c6ab450160830d31d 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -1027,7 +1027,7 @@ public abstract class Mob extends LivingEntity {
@@ -504,7 +504,7 @@ index e89b88eb3d4202ea7ff043dc9e92163332cd10d3..78b1fc7b4cacfc98a9e3e6ba93e17c33
for (int j = 0; j < i; ++j) {
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
-index fb0a77b4cf1ba47c73c00993bd9b7454240fe5d6..df1dfaea8b49794d9e3ecb792a129113829b60c9 100644
+index d1f7d912ad274cf90a912e44d63b39f9387a694b..b9cd7723130440cd6929847084b0baa2fde5bbd9 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
@@ -233,7 +233,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
@@ -517,7 +517,7 @@ index fb0a77b4cf1ba47c73c00993bd9b7454240fe5d6..df1dfaea8b49794d9e3ecb792a129113
for (int j = 0; j < i; ++j) {
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index c18a0bc94d0210396046f4475e49a739088593f3..4fea1c9873b4dd9c9f21722adbb02200487caf3c 100644
+index 6eda115b5cd3312123784e758b59973e0a55773c..ffcaa1c5c78966bf5790dc7ea2382cccac88b40b 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -969,7 +969,7 @@ public final class ItemStack {
@@ -583,7 +583,7 @@ index 2f9f15d99f8b31e9f13f7f32378b2a9e09bcb5e5..b9579e3d1610ddcb5251baa2dd9462e0
@Override
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 0277633fd328ef9993fea4ac29df83b5b00c0f42..0948242ecebe507c90af343faeffc7c9388fa7e4 100644
+index 791411866cabc2c237f40d54250d5a34653ceaa0..cf7222ba4bbc1f40d8bc83abb04a4ea95b97c917 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -1521,7 +1521,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
diff --git a/patches/server/0015-Make-a-field-final.patch b/patches/server/0015-Make-a-field-final.patch
index 04cfb330..82f6a0cf 100644
--- a/patches/server/0015-Make-a-field-final.patch
+++ b/patches/server/0015-Make-a-field-final.patch
@@ -7,7 +7,7 @@ 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 e0dd0fc1638377f4d4226d4b2976b901d635dff0..e75a428ff261a52b8d5f72d5c46437feef5b8ac4 100644
+index 81f4e3c869623b6dd2d80886652fa41791fe7032..ac5496ee97ba2fdfcf9ec31f0cf8ff5b5426729e 100644
--- a/src/main/java/net/minecraft/commands/CommandSourceStack.java
+++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java
@@ -59,7 +59,7 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy
@@ -16,6 +16,6 @@ index e0dd0fc1638377f4d4226d4b2976b901d635dff0..e75a428ff261a52b8d5f72d5c46437fe
private final TaskChainer chatMessageChainer;
- public java.util.Map currentCommand = new java.util.concurrent.ConcurrentHashMap<>(); // CraftBukkit // Paper
+ public final java.util.Map currentCommand = new java.util.concurrent.ConcurrentHashMap<>(); // CraftBukkit // Paper // Patina - make a field final
+ public boolean bypassSelectorPermissions = false; // Paper
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) -> {
diff --git a/patches/server/0016-Don-t-create-new-random-instance.patch b/patches/server/0016-Don-t-create-new-random-instance.patch
index 2ced06c6..fe1e70be 100644
--- a/patches/server/0016-Don-t-create-new-random-instance.patch
+++ b/patches/server/0016-Don-t-create-new-random-instance.patch
@@ -7,10 +7,10 @@ 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/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index e5af7ef4ada68922a70f593ccec555ecb50627a9..eb634c540842a06bfea196bc9fe4bfbd73012bf1 100644
+index 9c9b4d7e0637348a94befce9377fdb69c1239694..8732b05b1fd8895d8e6696658b06b0de55b680b9 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -380,7 +380,7 @@ public class ServerPlayer extends Player {
+@@ -387,7 +387,7 @@ public class ServerPlayer extends Player {
long l = k * k;
int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l;
int j1 = this.getCoprime(i1);
@@ -19,7 +19,7 @@ index e5af7ef4ada68922a70f593ccec555ecb50627a9..eb634c540842a06bfea196bc9fe4bfbd
for (int l1 = 0; l1 < i1; ++l1) {
int i2 = (k1 + j1 * l1) % i1;
-@@ -417,7 +417,7 @@ public class ServerPlayer extends Player {
+@@ -424,7 +424,7 @@ public class ServerPlayer extends Player {
long l = k * k;
int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l;
int j1 = this.getCoprime(i1);
diff --git a/patches/server/0019-Use-MCUtil.asyncExecutor-for-MAIN_WORKER_EXECUTOR-in.patch b/patches/server/0019-Use-MCUtil.asyncExecutor-for-MAIN_WORKER_EXECUTOR-in.patch
index a0fa6ed9..803aa750 100644
--- a/patches/server/0019-Use-MCUtil.asyncExecutor-for-MAIN_WORKER_EXECUTOR-in.patch
+++ b/patches/server/0019-Use-MCUtil.asyncExecutor-for-MAIN_WORKER_EXECUTOR-in.patch
@@ -39,7 +39,7 @@ index 0000000000000000000000000000000000000000..7bd88761137b2a68c04fbaa920a9ea9c
+}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/Util.java b/src/main/java/net/minecraft/Util.java
-index 59ecf5ff33617a6b9d2a3ae317315484235da804..4b4f3533f6f8624551794e63baae87138a495835 100644
+index 04704bd2b3ea8f6d95edbc0404ba36da448c7d26..f818ad4d10e60e2d39d93382db71f2ccdae0001c 100644
--- a/src/main/java/net/minecraft/Util.java
+++ b/src/main/java/net/minecraft/Util.java
@@ -73,6 +73,12 @@ import net.minecraft.util.TimeSource;
@@ -49,7 +49,7 @@ index 59ecf5ff33617a6b9d2a3ae317315484235da804..4b4f3533f6f8624551794e63baae8713
+// JettPack start
+import java.util.concurrent.AbstractExecutorService;
+import me.titaniumtown.ServerWorkerWrapper;
-+import net.minecraft.server.MCUtil;
++import io.papermc.paper.util.MCUtil;
+import java.util.Collections;
+// JettPack end
@@ -59,10 +59,10 @@ index 59ecf5ff33617a6b9d2a3ae317315484235da804..4b4f3533f6f8624551794e63baae8713
if (i <= 0) {
executorService = MoreExecutors.newDirectExecutorService();
} else {
-- executorService = new java.util.concurrent.ThreadPoolExecutor(i, i,0L, TimeUnit.MILLISECONDS, new java.util.concurrent.LinkedBlockingQueue(), target -> new net.minecraft.server.ServerWorkerThread(target, s, priorityModifier));
+- executorService = new java.util.concurrent.ThreadPoolExecutor(i, i,0L, TimeUnit.MILLISECONDS, new java.util.concurrent.LinkedBlockingQueue(), target -> new io.papermc.paper.util.ServerWorkerThread(target, s, priorityModifier));
+ //executorService = new java.util.concurrent.ThreadPoolExecutor(i, i,0L, TimeUnit.MILLISECONDS, new java.util.concurrent.LinkedBlockingQueue(), target -> new net.minecraft.server.ServerWorkerThread(target, s, priorityModifier)); // JettPack
+ // JettPack start
-+ executorService = Integer.getInteger("Paper.WorkerThreadCount", i) <= 0 ? MoreExecutors.newDirectExecutorService() : new AbstractExecutorService(){
++ executorService = Integer.getInteger("Paper.WorkerThreadCount", i) <= 0 ? MoreExecutors.newDirectExecutorService() : new AbstractExecutorService() {
+ private volatile boolean shutdown = false;
+
+ @Override
diff --git a/patches/server/0021-Remove-Spigot-tick-limiter.patch b/patches/server/0021-Remove-Spigot-tick-limiter.patch
index f68db39f..3033d81d 100644
--- a/patches/server/0021-Remove-Spigot-tick-limiter.patch
+++ b/patches/server/0021-Remove-Spigot-tick-limiter.patch
@@ -7,7 +7,7 @@ Original code by Titaniumtown, licensed under GNU General Public License v3.0
You can find the original code on https://gitlab.com/Titaniumtown/JettPack
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 13aee2a785b3ddb481744277a25c1ab95e036d4a..7fc3c9892d69d14de694d5328fe17a971019cc54 100644
+index 513cbb4a21762a5c8c5c07a9f51194dc85cef75c..139866dd8c0db8e26b49923a3811e2c106ee37c3 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -176,8 +176,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -33,10 +33,10 @@ index 13aee2a785b3ddb481744277a25c1ab95e036d4a..7fc3c9892d69d14de694d5328fe17a97
}
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
-index 46ef3400605cc420bd88f13838df7d1f1106235e..a5a2e497eb3e651f3e715f995a80161d919ebab9 100644
+index 5503ad6a93d331771a0e92c0da6adedf2ac81aff..7c1efc3b6045b2179139dd419e969569f1af9f6d 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
-@@ -446,6 +446,7 @@ public class SpigotWorldConfig
+@@ -442,6 +442,7 @@ public class SpigotWorldConfig
this.hangingTickFrequency = this.getInt( "hanging-tick-frequency", 100 );
}
@@ -44,7 +44,7 @@ index 46ef3400605cc420bd88f13838df7d1f1106235e..a5a2e497eb3e651f3e715f995a80161d
public int tileMaxTickTime;
public int entityMaxTickTime;
private void maxTickTimes()
-@@ -454,6 +455,7 @@ public class SpigotWorldConfig
+@@ -450,6 +451,7 @@ public class SpigotWorldConfig
this.entityMaxTickTime = this.getInt("max-tick-time.entity", 50);
this.log("Tile Max Tick Time: " + this.tileMaxTickTime + "ms Entity max Tick Time: " + this.entityMaxTickTime + "ms");
}
diff --git a/patches/server/0029-Spread-out-and-optimise-player-list-ticksSpread-out-.patch b/patches/server/0029-Spread-out-and-optimise-player-list-ticksSpread-out-.patch
index 09ef8006..72a4a55c 100644
--- a/patches/server/0029-Spread-out-and-optimise-player-list-ticksSpread-out-.patch
+++ b/patches/server/0029-Spread-out-and-optimise-player-list-ticksSpread-out-.patch
@@ -8,7 +8,7 @@ Original code by PurpurMC, licensed under MIT
You can find the original code on https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index 532de4002d797c4d049f1f94ee588c20f80f6b69..b4158aed45ec60be71251d5b90e340f790e239fb 100644
+index 8f981f196c0a2b46fa20040e49689e33d270172f..367e08286dd9b668d8ef5855b05998082e4011b3 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1038,22 +1038,22 @@ public abstract class PlayerList {
@@ -48,10 +48,10 @@ index 532de4002d797c4d049f1f94ee588c20f80f6b69..b4158aed45ec60be71251d5b90e340f7
public void broadcastAll(Packet> packet) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 968aa80b57a31d89852c6f4bc0ec5ed4a98c6530..d0fc98ed0530a99adeb3c126b1040e40bb97685b 100644
+index a5220a4e514865c70700527bcd2f941d852564c0..d26b213c775c73c3f269aa6ba28825756ee7d756 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1883,7 +1883,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1887,7 +1887,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public boolean canSee(org.bukkit.entity.Entity entity) {
diff --git a/patches/server/0032-Fix-rotating-UP-DOWN-CW-and-CCW.patch b/patches/server/0031-Fix-rotating-UP-DOWN-CW-and-CCW.patch
similarity index 100%
rename from patches/server/0032-Fix-rotating-UP-DOWN-CW-and-CCW.patch
rename to patches/server/0031-Fix-rotating-UP-DOWN-CW-and-CCW.patch
diff --git a/patches/server/0031-MC-147659-Fix-non-black-cats-spawning-in-swamp-huts.patch b/patches/server/0031-MC-147659-Fix-non-black-cats-spawning-in-swamp-huts.patch
deleted file mode 100644
index 7eb81c61..00000000
--- a/patches/server/0031-MC-147659-Fix-non-black-cats-spawning-in-swamp-huts.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: William Blake Galbreath
-Date: Thu, 2 Jan 2020 01:23:22 -0600
-Subject: [PATCH] MC-147659 - Fix non black cats spawning in swamp huts
-
-Original code by PurpurMC, licensed under MIT
-You can find the original code on https://github.com/PurpurMC/Purpur
-
-diff --git a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java
-index 8808cb9f5df43d781cbb9c7943ff2f222e3a6969..09877498034dafccd20705670acd2866df7bd3a1 100644
---- a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java
-+++ b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java
-@@ -87,8 +87,9 @@ public class CatSpawner implements CustomSpawner {
- if (cat == null) {
- return 0;
- } else {
-+ cat.moveTo(pos, 0.0F, 0.0F); // Purpur
- cat.finalizeSpawn(world, world.getCurrentDifficultyAt(pos), MobSpawnType.NATURAL, (SpawnGroupData)null, (CompoundTag)null);
-- cat.moveTo(pos, 0.0F, 0.0F);
-+ // cat.moveTo(pos, 0.0F, 0.0F); // Purpur - move up - fixes non black cat types spawning inside swamp huts
- world.addFreshEntityWithPassengers(cat);
- return 1;
- }
diff --git a/patches/server/0033-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/server/0032-Fix-outdated-server-showing-in-ping-before-server-fu.patch
similarity index 92%
rename from patches/server/0033-Fix-outdated-server-showing-in-ping-before-server-fu.patch
rename to patches/server/0032-Fix-outdated-server-showing-in-ping-before-server-fu.patch
index 2a527231..7c43341d 100644
--- a/patches/server/0033-Fix-outdated-server-showing-in-ping-before-server-fu.patch
+++ b/patches/server/0032-Fix-outdated-server-showing-in-ping-before-server-fu.patch
@@ -8,7 +8,7 @@ Original code by PurpurMC, licensed under MIT
You can find the original code on https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java
-index 29a22da1b94d51300481c071aa16bfd8cd02178f..f67cbb1badc007987e62872bb0160ad6d05e3d97 100644
+index f90eb6c50208879c4a2d5ad7e4181c06d38076f8..603d13f66684e3b44f913e2c71233032a38cd5db 100644
--- a/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java
@@ -153,6 +153,7 @@ public class ServerStatusPacketListenerImpl implements ServerStatusPacketListene
diff --git a/patches/server/0034-Dont-send-useless-entity-packets.patch b/patches/server/0033-Dont-send-useless-entity-packets.patch
similarity index 94%
rename from patches/server/0034-Dont-send-useless-entity-packets.patch
rename to patches/server/0033-Dont-send-useless-entity-packets.patch
index f5600ed4..91a37d49 100644
--- a/patches/server/0034-Dont-send-useless-entity-packets.patch
+++ b/patches/server/0033-Dont-send-useless-entity-packets.patch
@@ -23,10 +23,10 @@ index db60b0dc87c5c7d50a5161ed2816067a49f2f5a7..9379fd91df73ac482064a89462764dac
}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
-index 9901ffe9de585a73e9ef32c700b1e8702f8786d3..bf314a8ea0145a82c5ff4fdff23444b8978845fe 100644
+index d68d995041b4a735e0b0b1fcc3b0c6c424051692..3fe68cdd9f53f3d000bd777dec5d485e299ddd78 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
-@@ -181,6 +181,7 @@ public class ServerEntity {
+@@ -182,6 +182,7 @@ public class ServerEntity {
this.teleportDelay = 0;
packet1 = new ClientboundTeleportEntityPacket(this.entity);
}
@@ -34,7 +34,7 @@ index 9901ffe9de585a73e9ef32c700b1e8702f8786d3..bf314a8ea0145a82c5ff4fdff23444b8
}
if ((this.trackDelta || this.entity.hasImpulse || this.entity instanceof LivingEntity && ((LivingEntity) this.entity).isFallFlying()) && this.tickCount > 0) {
-@@ -247,6 +248,22 @@ public class ServerEntity {
+@@ -248,6 +249,22 @@ public class ServerEntity {
}
diff --git a/patches/server/0035-Skip-events-if-there-s-no-listeners.patch b/patches/server/0034-Skip-events-if-there-s-no-listeners.patch
similarity index 100%
rename from patches/server/0035-Skip-events-if-there-s-no-listeners.patch
rename to patches/server/0034-Skip-events-if-there-s-no-listeners.patch
diff --git a/patches/server/0036-Alternative-Keepalive-Handling.patch b/patches/server/0035-Alternative-Keepalive-Handling.patch
similarity index 96%
rename from patches/server/0036-Alternative-Keepalive-Handling.patch
rename to patches/server/0035-Alternative-Keepalive-Handling.patch
index 7ad2d342..4d009e36 100644
--- a/patches/server/0036-Alternative-Keepalive-Handling.patch
+++ b/patches/server/0035-Alternative-Keepalive-Handling.patch
@@ -24,7 +24,7 @@ index 9379fd91df73ac482064a89462764dac9835c71f..432ba1293419dea0903e31043f68f5ad
}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 79c56946cecba2a6308a0a67b7da036d348a97a8..dfacc5d6b7eb30292f59b25752d2c7ee1ff9534f 100644
+index 782bf3f68575ca711ac2860a1694d5fb6d989c03..cfdd0eb2c660f5b3c70f2258339308a74347eb83 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -260,6 +260,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@@ -57,7 +57,7 @@ index 79c56946cecba2a6308a0a67b7da036d348a97a8..dfacc5d6b7eb30292f59b25752d2c7ee
if (this.keepAlivePending) {
if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected
ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info
-@@ -3598,6 +3614,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3599,6 +3615,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@Override
public void handleKeepAlive(ServerboundKeepAlivePacket packet) {
diff --git a/patches/server/0037-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0036-Logger-settings-suppressing-pointless-logs.patch
similarity index 76%
rename from patches/server/0037-Logger-settings-suppressing-pointless-logs.patch
rename to patches/server/0036-Logger-settings-suppressing-pointless-logs.patch
index 0f7d4f71..990c8198 100644
--- a/patches/server/0037-Logger-settings-suppressing-pointless-logs.patch
+++ b/patches/server/0036-Logger-settings-suppressing-pointless-logs.patch
@@ -7,13 +7,15 @@ Original code by PurpurMC, licensed under MIT
You can find the original code on https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
-index 432ba1293419dea0903e31043f68f5ad45ed0c2d..15e0cf25afc0a57f70af63294e5933632b409630 100644
+index 432ba1293419dea0903e31043f68f5ad45ed0c2d..b5b5a73e7b911c098564f9cc1ff670e6f8dbd652 100644
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
-@@ -166,4 +166,27 @@ public class MiraiConfig {
+@@ -166,4 +166,26 @@ public class MiraiConfig {
"This can drastically reduce players timeouts due to a bad connection.");
}
+-}
+\ No newline at end of file
+ public static boolean loggerSuppressInitLegacyMaterialError;
+ public static boolean loggerSuppressIgnoredAdvancementWarnings;
+ public static boolean loggerSuppressUnrecognizedRecipeErrors;
@@ -21,24 +23,22 @@ index 432ba1293419dea0903e31043f68f5ad45ed0c2d..15e0cf25afc0a57f70af63294e593363
+ public static boolean loggerSuppressSentExpiredChat;
+ private static void loggerSettings() {
+ loggerSuppressInitLegacyMaterialError = getBoolean("logger.suppress-init-legacy-material-errors", false,
-+ "Whether or not server should stop saying",
-+ "'Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!'");
++ "Whether or not server should stop saying",
++ "'Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!'");
+ loggerSuppressIgnoredAdvancementWarnings = getBoolean("logger.suppress-ignored-advancement-warnings", false,
-+ "Whether or not server should stop saying",
-+ "'Ignored advancement '{}' in progress file {} - it doesn't exist anymore?'");
++ "Whether or not server should stop saying",
++ "'Ignored advancement '{}' in progress file {} - it doesn't exist anymore?'");
+ loggerSuppressUnrecognizedRecipeErrors = getBoolean("logger.suppress-unrecognized-recipe-errors", false,
-+ "Whether or not server should stop saying",
-+ "'Tried to load unrecognized recipe: {} removed now.'");
++ "Whether or not server should stop saying",
++ "'Tried to load unrecognized recipe: {} removed now.'");
+ loggerSuppressSetBlockFarChunk = getBoolean("logger.suppress-setblock-in-far-chunk-errors", false,
-+ "Whether or not server should stop saying",
-+ "'Detected setBlock in a far chunk.'");
++ "Whether or not server should stop saying",
++ "'Detected setBlock in a far chunk.'");
+ loggerSuppressSentExpiredChat = getBoolean("logger.suppress-sent-expired-chat", false,
-+ "Whether or not server should stop saying",
-+ "'{} sent expired chat: '{}'. Is the client/server system time unsynchronized?'");
++ "Whether or not server should stop saying",
++ "'{} sent expired chat: '{}'. Is the client/server system time unsynchronized?'");
+ }
-+
- }
-\ No newline at end of file
++}
diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java
index a0c19503aabab5378d672a30163d35a5ba05b6c1..b5d2e67fef5f9c7802ca6b2cf9b3f86c1aa1882d 100644
--- a/src/main/java/net/minecraft/server/PlayerAdvancements.java
@@ -53,10 +53,10 @@ index a0c19503aabab5378d672a30163d35a5ba05b6c1..b5d2e67fef5f9c7802ca6b2cf9b3f86c
// CraftBukkit end
} else {
diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
-index 80c1e0e47818486a68e0114b063395290365346b..91b273d058d2fe83207cc562a25711e4d621c862 100644
+index 0d3587e2d454fb0994ecff930b5e496a3999746a..a23745ac430e5f236dd9e4552a343a71a63e0f1c 100644
--- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java
+++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
-@@ -295,7 +295,7 @@ public class WorldGenRegion implements WorldGenLevel {
+@@ -296,7 +296,7 @@ public class WorldGenRegion implements WorldGenLevel {
return true;
} else {
// Paper start
@@ -66,15 +66,15 @@ index 80c1e0e47818486a68e0114b063395290365346b..91b273d058d2fe83207cc562a25711e4
hasSetFarWarned = true;
if (this.getServer() != null && this.getServer().isDebugging()) {
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index dfacc5d6b7eb30292f59b25752d2c7ee1ff9534f..ed98aab3df24bbefc1adc0e21ec7f1deab8d8aa1 100644
+index cfdd0eb2c660f5b3c70f2258339308a74347eb83..214650909f83f024ebc5ddb0689682d5a81719db 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2628,7 +2628,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
- if (playerchatmessage.hasExpiredServer(Instant.now())) {
-- ServerGamePacketListenerImpl.LOGGER.warn("{} sent expired chat: '{}'. Is the client/server system time unsynchronized? c: {} s: {}", this.player.getName().getString(), playerchatmessage.signedContent().plain(), playerchatmessage.timeStamp().getEpochSecond(), Instant.now().getEpochSecond()); // Paper
-+ if (!dev.etil.mirai.MiraiConfig.loggerSuppressSentExpiredChat) ServerGamePacketListenerImpl.LOGGER.warn("{} sent expired chat: '{}'. Is the client/server system time unsynchronized? c: {} s: {}", this.player.getName().getString(), playerchatmessage.signedContent().plain(), playerchatmessage.timeStamp().getEpochSecond(), Instant.now().getEpochSecond()); // Paper // Purpur
+ if (message.hasExpiredServer(Instant.now())) {
+- ServerGamePacketListenerImpl.LOGGER.warn("{} sent expired chat: '{}'. Is the client/server system time unsynchronized? c: {} s: {}", this.player.getName().getString(), message.signedContent().plain(), message.timeStamp().getEpochSecond(), Instant.now().getEpochSecond()); // Paper
++ if (!dev.etil.mirai.MiraiConfig.loggerSuppressSentExpiredChat) ServerGamePacketListenerImpl.LOGGER.warn("{} sent expired chat: '{}'. Is the client/server system time unsynchronized? c: {} s: {}", this.player.getName().getString(), message.signedContent().plain(), message.timeStamp().getEpochSecond(), Instant.now().getEpochSecond()); // Paper // Purpur
}
return true;
diff --git a/patches/server/0038-Add-5-second-tps-average-in-tps.patch b/patches/server/0037-Add-5-second-tps-average-in-tps.patch
similarity index 97%
rename from patches/server/0038-Add-5-second-tps-average-in-tps.patch
rename to patches/server/0037-Add-5-second-tps-average-in-tps.patch
index 742091a9..e8b3b331 100644
--- a/patches/server/0038-Add-5-second-tps-average-in-tps.patch
+++ b/patches/server/0037-Add-5-second-tps-average-in-tps.patch
@@ -29,7 +29,7 @@ index fa56cd09102a89692b42f1d14257990508c5c720..f9251183df72ddc56662fd3f02acf216
setListData(vector);
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 904ce75db06d3a50025bf758279e84346912ef6c..6cdced357fdcd5ea4ce0c63d29e39573a5f40f65 100644
+index 3606ee44c9080348aecced1815c7e6f2dd1f5386..8f09ebf88bb26c74182893c86ad95ccc8580a455 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -290,7 +290,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop lockedFlags = new EnumMap<>(Goal.Flag.class);
-- public final Set availableGoals = Sets.newLinkedHashSet();
+- private final Set availableGoals = Sets.newLinkedHashSet();
+ public final Set availableGoals = new ObjectLinkedOpenHashSet<>(); // Lithium - replace AI goal set with optimized collection
private final Supplier profiler;
private final EnumSet disabledFlags = EnumSet.noneOf(Goal.Flag.class); // Paper unused, but dummy to prevent plugins from crashing as hard. Theyll need to support paper in a special case if this is super important, but really doesn't seem like it would be.
diff --git a/patches/server/0043-vmp-skip-entity-move-if-movement-is-zero.patch b/patches/server/0042-vmp-skip-entity-move-if-movement-is-zero.patch
similarity index 89%
rename from patches/server/0043-vmp-skip-entity-move-if-movement-is-zero.patch
rename to patches/server/0042-vmp-skip-entity-move-if-movement-is-zero.patch
index a6f36b59..f0d924a9 100644
--- a/patches/server/0043-vmp-skip-entity-move-if-movement-is-zero.patch
+++ b/patches/server/0042-vmp-skip-entity-move-if-movement-is-zero.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 e46948c61c4f694c2224bed2bee695570d196ab9..0565cf824c2d623845239cb07c80f042732ff6be 100644
+index bf03c5636d16a798411b441300f2d5d3c334b8f7..ecf67ebaac98924b48357802830c76b974aa8bb1 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -299,6 +299,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -20,7 +20,7 @@ index e46948c61c4f694c2224bed2bee695570d196ab9..0565cf824c2d623845239cb07c80f042
public boolean onGround;
public boolean horizontalCollision;
public boolean verticalCollision;
-@@ -1032,6 +1033,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -1033,6 +1034,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
// Paper end - detailed watchdog information
public void move(MoverType movementType, Vec3 movement) {
@@ -33,7 +33,7 @@ index e46948c61c4f694c2224bed2bee695570d196ab9..0565cf824c2d623845239cb07c80f042
// Paper start - detailed watchdog information
io.papermc.paper.util.TickThread.ensureTickThread("Cannot move an entity off-main");
synchronized (this.posLock) {
-@@ -3758,6 +3765,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -3763,6 +3770,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
public final void setBoundingBox(AABB boundingBox) {
diff --git a/patches/server/0044-Don-t-send-fire-packets-if-player-has-Fire-Resistanc.patch b/patches/server/0043-Don-t-send-fire-packets-if-player-has-Fire-Resistanc.patch
similarity index 88%
rename from patches/server/0044-Don-t-send-fire-packets-if-player-has-Fire-Resistanc.patch
rename to patches/server/0043-Don-t-send-fire-packets-if-player-has-Fire-Resistanc.patch
index c318d3d8..20f535ed 100644
--- a/patches/server/0044-Don-t-send-fire-packets-if-player-has-Fire-Resistanc.patch
+++ b/patches/server/0043-Don-t-send-fire-packets-if-player-has-Fire-Resistanc.patch
@@ -7,10 +7,10 @@ Original code by Cryptite, licensed under MIT
You can find the original code on https://github.com/Cryptite/Slice
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 0565cf824c2d623845239cb07c80f042732ff6be..4aae8f6dc6f06ca9bc30b86a4dac57f38560e395 100644
+index ecf67ebaac98924b48357802830c76b974aa8bb1..62d1817f8268d12f95c21a901aac2716c4d13709 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -878,7 +878,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -879,7 +879,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
this.checkOutOfWorld();
if (!this.level.isClientSide) {
diff --git a/patches/server/0045-lithium-cached-hashcode.patch b/patches/server/0044-lithium-cached-hashcode.patch
similarity index 100%
rename from patches/server/0045-lithium-cached-hashcode.patch
rename to patches/server/0044-lithium-cached-hashcode.patch
diff --git a/patches/server/0046-PaperPR-Fix-CME-in-CraftPersistentDataTypeRegistry.patch b/patches/server/0045-PaperPR-Fix-CME-in-CraftPersistentDataTypeRegistry.patch
similarity index 100%
rename from patches/server/0046-PaperPR-Fix-CME-in-CraftPersistentDataTypeRegistry.patch
rename to patches/server/0045-PaperPR-Fix-CME-in-CraftPersistentDataTypeRegistry.patch
diff --git a/patches/server/0047-lithium-store-gamerules-in-fastutil-hashmap.patch b/patches/server/0046-lithium-store-gamerules-in-fastutil-hashmap.patch
similarity index 95%
rename from patches/server/0047-lithium-store-gamerules-in-fastutil-hashmap.patch
rename to patches/server/0046-lithium-store-gamerules-in-fastutil-hashmap.patch
index 21ee0bf7..34b01959 100644
--- a/patches/server/0047-lithium-store-gamerules-in-fastutil-hashmap.patch
+++ b/patches/server/0046-lithium-store-gamerules-in-fastutil-hashmap.patch
@@ -7,7 +7,7 @@ Original code by CaffeineMC, licensed under GNU Lesser General Public License v3
You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings)
diff --git a/src/main/java/net/minecraft/world/level/GameRules.java b/src/main/java/net/minecraft/world/level/GameRules.java
-index 17e869074b8cf29a8c3280499a27e95179896750..97a5aec7da267b8b9f6d191c871316ccb89c448c 100644
+index 9fa0758c0a8c74dec6cfe8a16585ace1cf45df96..f912b0ec9f58861efcc4fbd65604bd0a31c6d7d5 100644
--- a/src/main/java/net/minecraft/world/level/GameRules.java
+++ b/src/main/java/net/minecraft/world/level/GameRules.java
@@ -27,6 +27,7 @@ import net.minecraft.network.protocol.game.ClientboundGameEventPacket;
diff --git a/patches/server/0048-carpetfixes-BiomeAccess-prediction.patch b/patches/server/0047-carpetfixes-BiomeAccess-prediction.patch
similarity index 100%
rename from patches/server/0048-carpetfixes-BiomeAccess-prediction.patch
rename to patches/server/0047-carpetfixes-BiomeAccess-prediction.patch
diff --git a/patches/server/0049-Configurable-enchantment-table-book-animation-tick.patch b/patches/server/0048-Configurable-enchantment-table-book-animation-tick.patch
similarity index 73%
rename from patches/server/0049-Configurable-enchantment-table-book-animation-tick.patch
rename to patches/server/0048-Configurable-enchantment-table-book-animation-tick.patch
index c201ecd9..7076458c 100644
--- a/patches/server/0049-Configurable-enchantment-table-book-animation-tick.patch
+++ b/patches/server/0048-Configurable-enchantment-table-book-animation-tick.patch
@@ -5,24 +5,23 @@ Subject: [PATCH] Configurable enchantment table book animation tick
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
-index 8e720820a94cf5d39e59998700932bfbb5c15544..929ccc5cf475a5b3d19e44d8d6b324e1d647b5d1 100644
+index 697b766953607e25a6e9f3eced2ea9e801d37e81..53fa3c4b9d589ebc7d003a12a40a43c2772e004c 100644
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
-@@ -202,4 +202,11 @@ public class MiraiConfig {
- "Whether or not entities should be able to use portals.");
+@@ -201,4 +201,11 @@ public class MiraiConfig {
+ entitiesCanUsePortals = getBoolean("entities-can-use-portals", true,
+ "Whether or not entities should be able to use portals.");
}
-
++
+ public static boolean bookAnimationTick;
+ private static void bookTicking() {
+ bookAnimationTick = getBoolean("enchantment-table-book-animation-tick", false,
-+ "Whether or not server should animate enchantment table book.",
-+ "Disabling it can save MSPT, especially with quite a lot of enchantment tables.");
++ "Whether or not server should animate enchantment table book.",
++ "Disabling it can save MSPT, especially with quite a lot of enchantment tables.");
+ }
-+
}
-\ No newline at end of file
diff --git a/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java
-index 2341a5a249d455628165fc6ba508fc6d70c3dbfb..20e224ea5dbd96fd0d12ea5a1143fe0702cd6e77 100644
+index 65e1381bb2d10bd212463feb602c60f8fdb9ade1..528a722919e5ab79ff71236fd713ed614713af2a 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java
@@ -48,6 +48,7 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable
diff --git a/patches/server/0050-Skip-cloning-loot-parameters.patch b/patches/server/0049-Skip-cloning-loot-parameters.patch
similarity index 91%
rename from patches/server/0050-Skip-cloning-loot-parameters.patch
rename to patches/server/0049-Skip-cloning-loot-parameters.patch
index 56b8bdf0..bd2e1bc4 100644
--- a/patches/server/0050-Skip-cloning-loot-parameters.patch
+++ b/patches/server/0049-Skip-cloning-loot-parameters.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Skip cloning loot parameters
diff --git a/src/main/java/net/minecraft/advancements/Advancement.java b/src/main/java/net/minecraft/advancements/Advancement.java
-index 2c01231dcfbb992c9d2f034fcfd4af52fe8ac265..7ed9ca7d220c2af764a2febe2c1d7cb208593074 100644
+index dd4409790524293be07483f00df05d8a8743e3d9..b816302aa46528bdd14b6d47c3e6b5ce5ebdc222 100644
--- a/src/main/java/net/minecraft/advancements/Advancement.java
+++ b/src/main/java/net/minecraft/advancements/Advancement.java
@@ -45,7 +45,7 @@ public class Advancement {
diff --git a/patches/server/0051-lithium-precompute-shape-arrays.patch b/patches/server/0050-lithium-precompute-shape-arrays.patch
similarity index 100%
rename from patches/server/0051-lithium-precompute-shape-arrays.patch
rename to patches/server/0050-lithium-precompute-shape-arrays.patch
diff --git a/patches/server/0052-Fix-MC-121706.patch b/patches/server/0051-Fix-MC-121706.patch
similarity index 100%
rename from patches/server/0052-Fix-MC-121706.patch
rename to patches/server/0051-Fix-MC-121706.patch
diff --git a/patches/server/0053-vmp-spawn_density_cap.patch b/patches/server/0052-vmp-spawn_density_cap.patch
similarity index 100%
rename from patches/server/0053-vmp-spawn_density_cap.patch
rename to patches/server/0052-vmp-spawn_density_cap.patch
diff --git a/patches/server/0054-lithium-entity.fast_elytra_check.patch b/patches/server/0053-lithium-entity.fast_elytra_check.patch
similarity index 84%
rename from patches/server/0054-lithium-entity.fast_elytra_check.patch
rename to patches/server/0053-lithium-entity.fast_elytra_check.patch
index 34effd28..5002c111 100644
--- a/patches/server/0054-lithium-entity.fast_elytra_check.patch
+++ b/patches/server/0053-lithium-entity.fast_elytra_check.patch
@@ -7,10 +7,10 @@ Original code by CaffeineMC, licensed under GNU Lesser General Public License v3
You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings)
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index c0e316582e085873c05a76c16e612eabd2e8cf2a..dbcabd230bd9bd070e157f35d098553f3ed06987 100644
+index 3721f6c220da68232aabf5ea17fc6ffc25f6e7bb..19adfc12667e28d4f9b38cb74e210bb58bb1f6da 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -3428,6 +3428,8 @@ public abstract class LivingEntity extends Entity {
+@@ -3456,6 +3456,8 @@ public abstract class LivingEntity extends Entity {
}
private void updateFallFlying() {
diff --git a/patches/server/0055-lithium-entity.fast_hand_swing.patch b/patches/server/0054-lithium-entity.fast_hand_swing.patch
similarity index 84%
rename from patches/server/0055-lithium-entity.fast_hand_swing.patch
rename to patches/server/0054-lithium-entity.fast_hand_swing.patch
index 224c52d7..c6c5a2cf 100644
--- a/patches/server/0055-lithium-entity.fast_hand_swing.patch
+++ b/patches/server/0054-lithium-entity.fast_hand_swing.patch
@@ -7,10 +7,10 @@ Original code by CaffeineMC, licensed under GNU Lesser General Public License v3
You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings)
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index dbcabd230bd9bd070e157f35d098553f3ed06987..2cd8dfe953ac72f6be14557ab39d3cec1108499e 100644
+index 19adfc12667e28d4f9b38cb74e210bb58bb1f6da..c99a5f0d41031a15276ba4f49e9e01f7136f4fbd 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -2488,6 +2488,8 @@ public abstract class LivingEntity extends Entity {
+@@ -2505,6 +2505,8 @@ public abstract class LivingEntity extends Entity {
}
protected void updateSwingTime() {
diff --git a/patches/server/0056-c2me-opts-math.patch b/patches/server/0055-c2me-opts-math.patch
similarity index 100%
rename from patches/server/0056-c2me-opts-math.patch
rename to patches/server/0055-c2me-opts-math.patch
diff --git a/patches/server/0057-lithium-entity.fast_powder_snow_check.patch b/patches/server/0056-lithium-entity.fast_powder_snow_check.patch
similarity index 86%
rename from patches/server/0057-lithium-entity.fast_powder_snow_check.patch
rename to patches/server/0056-lithium-entity.fast_powder_snow_check.patch
index 87f20070..4a0ecf62 100644
--- a/patches/server/0057-lithium-entity.fast_powder_snow_check.patch
+++ b/patches/server/0056-lithium-entity.fast_powder_snow_check.patch
@@ -7,10 +7,10 @@ Original code by CaffeineMC, licensed under GNU Lesser General Public License v3
You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings)
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 2cd8dfe953ac72f6be14557ab39d3cec1108499e..d6f7fd9dc4804e7565c89a9cbb0948f256559f03 100644
+index c99a5f0d41031a15276ba4f49e9e01f7136f4fbd..4cd993dbd2189af060349bda0df4ba710d59c11d 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -569,11 +569,11 @@ public abstract class LivingEntity extends Entity {
+@@ -570,11 +570,11 @@ public abstract class LivingEntity extends Entity {
}
protected void tryAddFrost() {
@@ -24,7 +24,7 @@ index 2cd8dfe953ac72f6be14557ab39d3cec1108499e..d6f7fd9dc4804e7565c89a9cbb0948f2
if (attributemodifiable == null) {
return;
-@@ -583,7 +583,7 @@ public abstract class LivingEntity extends Entity {
+@@ -584,7 +584,7 @@ public abstract class LivingEntity extends Entity {
attributemodifiable.addTransientModifier(new AttributeModifier(LivingEntity.SPEED_MODIFIER_POWDER_SNOW_UUID, "Powder snow slow", (double) f, AttributeModifier.Operation.ADDITION));
}
diff --git a/patches/server/0058-lithium-collections.attributes.patch b/patches/server/0057-lithium-collections.attributes.patch
similarity index 94%
rename from patches/server/0058-lithium-collections.attributes.patch
rename to patches/server/0057-lithium-collections.attributes.patch
index 03032b5b..ad413689 100644
--- a/patches/server/0058-lithium-collections.attributes.patch
+++ b/patches/server/0057-lithium-collections.attributes.patch
@@ -7,7 +7,7 @@ Original code by CaffeineMC, licensed under GNU Lesser General Public License v3
You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings)
diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java
-index 9bce290eb0c2cfef4896a3f2076c80bf3d76bd56..ac56484b1bf19dabe4bdd5b25eafa4ac38f08cbe 100644
+index 59ca3a0a70c68263495ae9972215b76554d3fb83..7c567bede8fd142626e488ed83c54a9188c818e1 100644
--- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java
+++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java
@@ -16,11 +16,13 @@ import net.minecraft.nbt.CompoundTag;
diff --git a/patches/server/0059-lithium-collections.entity_by_type.patch b/patches/server/0058-lithium-collections.entity_by_type.patch
similarity index 100%
rename from patches/server/0059-lithium-collections.entity_by_type.patch
rename to patches/server/0058-lithium-collections.entity_by_type.patch
diff --git a/patches/server/0060-lithium-collections.entity_filtering.patch b/patches/server/0059-lithium-collections.entity_filtering.patch
similarity index 100%
rename from patches/server/0060-lithium-collections.entity_filtering.patch
rename to patches/server/0059-lithium-collections.entity_filtering.patch
diff --git a/patches/server/0061-lithium-chunk.serialization.patch b/patches/server/0060-lithium-chunk.serialization.patch
similarity index 100%
rename from patches/server/0061-lithium-chunk.serialization.patch
rename to patches/server/0060-lithium-chunk.serialization.patch
diff --git a/patches/server/0062-Configurable-criterion-triggers.patch b/patches/server/0061-Configurable-criterion-triggers.patch
similarity index 75%
rename from patches/server/0062-Configurable-criterion-triggers.patch
rename to patches/server/0061-Configurable-criterion-triggers.patch
index da33c88f..f004ba63 100644
--- a/patches/server/0062-Configurable-criterion-triggers.patch
+++ b/patches/server/0061-Configurable-criterion-triggers.patch
@@ -9,32 +9,31 @@ Original code by YatopiaMC, licensed under MIT
You can find the original code on https://github.com/YatopiaMC/Yatopia
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
-index 929ccc5cf475a5b3d19e44d8d6b324e1d647b5d1..dde09a19916798afabe28902636a2ced642017a5 100644
+index 53fa3c4b9d589ebc7d003a12a40a43c2772e004c..8bdc549be4f1fc9e2b0373c5f16f66d97ba2d868 100644
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
-@@ -209,4 +209,16 @@ public class MiraiConfig {
- "Disabling it can save MSPT, especially with quite a lot of enchantment tables.");
+@@ -208,4 +208,16 @@ public class MiraiConfig {
+ "Whether or not server should animate enchantment table book.",
+ "Disabling it can save MSPT, especially with quite a lot of enchantment tables.");
}
-
++
+ public static boolean criterionTriggerEnterBlock;
+ public static boolean criterionTriggerTick;
+ public static boolean criterionTriggerLocation;
+ private static void criterionTriggers() {
+ criterionTriggerEnterBlock = getBoolean("criterion-trigger.enter-block", true,
-+ "Whether or not server should listen to block enter triggers.");
++ "Whether or not server should listen to block enter triggers.");
+ criterionTriggerTick = getBoolean("criterion-trigger.tick", true,
-+ "Whether or not server should listen to tick triggers.");
++ "Whether or not server should listen to tick triggers.");
+ criterionTriggerLocation = getBoolean("criterion-trigger.location", true,
-+ "Whether or not server should listen to location triggers.");
++ "Whether or not server should listen to location triggers.");
+ }
-+
}
-\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 33cb9a669fed30509d2737898dbd15ce16193da4..d1a6a21bfe93882e23a0bad742abd6fedcac29d0 100644
+index 047af0c6b83cafd73316985f4af17794b7072440..ccac0539787d05b5e71abe98ab611e976ca56802 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -619,7 +619,7 @@ public class ServerPlayer extends Player {
+@@ -626,7 +626,7 @@ public class ServerPlayer extends Player {
@Override
protected void onInsideBlock(BlockState state) {
@@ -43,7 +42,7 @@ index 33cb9a669fed30509d2737898dbd15ce16193da4..d1a6a21bfe93882e23a0bad742abd6fe
}
@Override
-@@ -665,7 +665,7 @@ public class ServerPlayer extends Player {
+@@ -672,7 +672,7 @@ public class ServerPlayer extends Player {
}
}
@@ -52,7 +51,7 @@ index 33cb9a669fed30509d2737898dbd15ce16193da4..d1a6a21bfe93882e23a0bad742abd6fe
if (this.levitationStartPos != null) {
CriteriaTriggers.LEVITATION.trigger(this, this.levitationStartPos, this.tickCount - this.levitationStartTime);
}
-@@ -741,9 +741,7 @@ public class ServerPlayer extends Player {
+@@ -748,9 +748,7 @@ public class ServerPlayer extends Player {
this.connection.send(new ClientboundSetExperiencePacket(this.experienceProgress, this.totalExperience, this.experienceLevel));
}
diff --git a/patches/server/0063-Set-item-stuck-sleep-to-15-ticks.patch b/patches/server/0062-Set-item-stuck-sleep-to-15-ticks.patch
similarity index 87%
rename from patches/server/0063-Set-item-stuck-sleep-to-15-ticks.patch
rename to patches/server/0062-Set-item-stuck-sleep-to-15-ticks.patch
index 4a189883..07c63739 100644
--- a/patches/server/0063-Set-item-stuck-sleep-to-15-ticks.patch
+++ b/patches/server/0062-Set-item-stuck-sleep-to-15-ticks.patch
@@ -7,10 +7,10 @@ Original code by YatopiaMC, licensed under MIT
You can find the original code on https://github.com/YatopiaMC/Yatopia
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 16a55f94bda9f959548772c8916b4dc3eb045d47..3fbcd5e5d83b4451d2bf169971aa23ae5402184b 100644
+index 8a5efb6c81bbe85b67a6bb83c0c4afdf995121d0..15e14a4fbea313716b3f4b5ed53823b8b5a5caa8 100644
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
-@@ -141,7 +141,7 @@ public class ItemEntity extends Entity {
+@@ -142,7 +142,7 @@ public class ItemEntity extends Entity {
if (this.level.isClientSide) {
this.noPhysics = false;
diff --git a/patches/server/0064-Smarter-statistics-ticking.patch b/patches/server/0063-Smarter-statistics-ticking.patch
similarity index 95%
rename from patches/server/0064-Smarter-statistics-ticking.patch
rename to patches/server/0063-Smarter-statistics-ticking.patch
index 84132a6f..22018421 100644
--- a/patches/server/0064-Smarter-statistics-ticking.patch
+++ b/patches/server/0063-Smarter-statistics-ticking.patch
@@ -10,7 +10,7 @@ Original code by YatopiaMC, licensed under MIT
You can find the original code on https://github.com/YatopiaMC/Yatopia
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
-index 9b131f0a827413e9f5d6d0f7491c5481576cb8b1..b5ffd28b2d17014d25bc4d099b1cc5da186f3146 100644
+index 0ea101f155936f7c340d9e1d1077c58b72551027..4ee90ce146abbbdce509be3d1e08ea427a6cd82a 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -284,19 +284,21 @@ public abstract class Player extends LivingEntity {
diff --git a/patches/server/0065-some-entity-micro-opts.patch b/patches/server/0064-some-entity-micro-opts.patch
similarity index 92%
rename from patches/server/0065-some-entity-micro-opts.patch
rename to patches/server/0064-some-entity-micro-opts.patch
index 7dac4842..3a74baf8 100644
--- a/patches/server/0065-some-entity-micro-opts.patch
+++ b/patches/server/0064-some-entity-micro-opts.patch
@@ -7,10 +7,10 @@ Original code by Titaniumtown, licensed under GNU General Public License v3.0
You can find the original code on https://gitlab.com/Titaniumtown/JettPack
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index fc71a56fd84d975890b0e5e44f2ad020718bcc8a..8e88ae24d7e3299d7250a2021cb3604c045eaac9 100644
+index 62d1817f8268d12f95c21a901aac2716c4d13709..e9f57c2be715fca246ad7f593a3cf28501b25701 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -1880,12 +1880,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -1881,12 +1881,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
}
@@ -30,7 +30,7 @@ index fc71a56fd84d975890b0e5e44f2ad020718bcc8a..8e88ae24d7e3299d7250a2021cb3604c
public void absMoveTo(double x, double y, double z, float yaw, float pitch) {
this.absMoveTo(x, y, z);
this.setYRot(yaw % 360.0F);
-@@ -4333,6 +4339,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -4350,6 +4356,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
// Paper end - block invalid positions
@@ -44,7 +44,7 @@ index fc71a56fd84d975890b0e5e44f2ad020718bcc8a..8e88ae24d7e3299d7250a2021cb3604c
// Paper start
this.setPosRaw(x, y, z, false);
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index 78b1fc7b4cacfc98a9e3e6ba93e17c3307d5449c..63911fd0d2a5f194ed4632f209555b3146ed7b79 100644
+index 8c84b6d2329ae580502e584c6ab450160830d31d..21334240fb5cf9c6cc0df5ad4af99e05a44bf128 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -1647,15 +1647,31 @@ public abstract class Mob extends LivingEntity {
diff --git a/patches/server/0066-Dont-eat-blocks-in-non-ticking-chunks.patch b/patches/server/0065-Dont-eat-blocks-in-non-ticking-chunks.patch
similarity index 96%
rename from patches/server/0066-Dont-eat-blocks-in-non-ticking-chunks.patch
rename to patches/server/0065-Dont-eat-blocks-in-non-ticking-chunks.patch
index 2c7240dc..f9801b16 100644
--- a/patches/server/0066-Dont-eat-blocks-in-non-ticking-chunks.patch
+++ b/patches/server/0065-Dont-eat-blocks-in-non-ticking-chunks.patch
@@ -7,7 +7,7 @@ Original code by PurpurMC, licensed under MIT
You can find the original code on https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
-index 9ce60dd72dee4d3ceef38f425b13aed18fd5e002..9976630fad886392057f642e84f919f0b95cc040 100644
+index 65327b58bced011efb117e546fd6657092b76035..5b714df6faca6424e7c7d89e56a4e0425bd1b1c6 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -983,7 +983,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
diff --git a/patches/server/0067-Fast-speed-check.patch b/patches/server/0066-Fast-speed-check.patch
similarity index 77%
rename from patches/server/0067-Fast-speed-check.patch
rename to patches/server/0066-Fast-speed-check.patch
index 93335fa5..ce4eae28 100644
--- a/patches/server/0067-Fast-speed-check.patch
+++ b/patches/server/0066-Fast-speed-check.patch
@@ -12,27 +12,26 @@ doing questionable/buggy ones, and claiming breathtaking performance improvement
any of those Spigot forks!
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
-index dde09a19916798afabe28902636a2ced642017a5..b9ab67acf30d20745111b9fe5c6ccf44dca3e006 100644
+index 8bdc549be4f1fc9e2b0373c5f16f66d97ba2d868..c498f72b394b4b0041a438eed7caa228097411c8 100644
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
-@@ -221,4 +221,11 @@ public class MiraiConfig {
- "Whether or not server should listen to location triggers.");
+@@ -220,4 +220,11 @@ public class MiraiConfig {
+ criterionTriggerLocation = getBoolean("criterion-trigger.location", true,
+ "Whether or not server should listen to location triggers.");
}
-
++
+ public static boolean fastSpeedCheck;
+ private static void speedCheck() {
+ fastSpeedCheck = getBoolean("fast-speed-check", true,
-+ "Whether or not server should use a faster method",
-+ "to check when entity delta movement is null.");
++ "Whether or not server should use a faster method",
++ "to check when entity delta movement is null.");
+ }
-+
}
-\ No newline at end of file
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 8e88ae24d7e3299d7250a2021cb3604c045eaac9..d2bffae52474883488a05534273dff9450a1634c 100644
+index e9f57c2be715fca246ad7f593a3cf28501b25701..3ff172293f45119c2d4a169ec3a87262f49ee897 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -1205,7 +1205,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -1206,7 +1206,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
this.tryCheckInsideBlocks();
diff --git a/patches/server/0068-lithium-cache-iterate-outwards.patch b/patches/server/0067-lithium-cache-iterate-outwards.patch
similarity index 100%
rename from patches/server/0068-lithium-cache-iterate-outwards.patch
rename to patches/server/0067-lithium-cache-iterate-outwards.patch
diff --git a/patches/server/0069-lithium-ai.raid.patch b/patches/server/0068-lithium-ai.raid.patch
similarity index 95%
rename from patches/server/0069-lithium-ai.raid.patch
rename to patches/server/0068-lithium-ai.raid.patch
index fb88c6ec..0ccfbd65 100644
--- a/patches/server/0069-lithium-ai.raid.patch
+++ b/patches/server/0068-lithium-ai.raid.patch
@@ -37,7 +37,7 @@ index 6a0a1731fd6804eb69d3641213712d31bce085b2..5f4bb589474ce7d4f214e32ab0bc4b9c
public float getHealthOfLivingRaiders() {
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raider.java b/src/main/java/net/minecraft/world/entity/raid/Raider.java
-index 8877423a99e387c18d1d994518bf15d8d9ba64af..a65e82c8e2975244d725ff2f4931df183f25b63f 100644
+index e5ccbaf72f29731f1d1aa939b9297b644a408cd4..940fcebe1e1ab7d249487d58958b24b62fb8eaab 100644
--- a/src/main/java/net/minecraft/world/entity/raid/Raider.java
+++ b/src/main/java/net/minecraft/world/entity/raid/Raider.java
@@ -46,8 +46,9 @@ import net.minecraft.world.phys.Vec3;
@@ -60,7 +60,7 @@ index 8877423a99e387c18d1d994518bf15d8d9ba64af..a65e82c8e2975244d725ff2f4931df18
MobEffectInstance mobeffect = entityhuman.getEffect(MobEffects.BAD_OMEN);
byte b0 = 1;
int i;
-@@ -309,6 +310,7 @@ public abstract class Raider extends PatrollingMonster {
+@@ -311,6 +312,7 @@ public abstract class Raider extends PatrollingMonster {
public class ObtainRaidLeaderBannerGoal extends Goal {
private final T mob;
@@ -68,7 +68,7 @@ index 8877423a99e387c18d1d994518bf15d8d9ba64af..a65e82c8e2975244d725ff2f4931df18
public ObtainRaidLeaderBannerGoal(T entityraider) { // CraftBukkit - decompile error
this.mob = entityraider;
-@@ -320,7 +322,7 @@ public abstract class Raider extends PatrollingMonster {
+@@ -322,7 +324,7 @@ public abstract class Raider extends PatrollingMonster {
if (!this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items
Raid raid = this.mob.getCurrentRaid();
diff --git a/patches/server/0070-lithium-block.moving_block_shapes.patch b/patches/server/0069-lithium-block.moving_block_shapes.patch
similarity index 98%
rename from patches/server/0070-lithium-block.moving_block_shapes.patch
rename to patches/server/0069-lithium-block.moving_block_shapes.patch
index c230043f..4bf4dd4b 100644
--- a/patches/server/0070-lithium-block.moving_block_shapes.patch
+++ b/patches/server/0069-lithium-block.moving_block_shapes.patch
@@ -7,7 +7,7 @@ Original code by CaffeineMC, licensed under GNU Lesser General Public License v3
You can find the original code on https://github.com/CaffeineMC/lithium-fabric (Yarn mappings)
diff --git a/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java b/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
-index 7c59d44a3bafdc65f453d77ff3e25cffb742ad6c..636721a111cad13e7329f1157981ca03a8f339b3 100644
+index 4b61602a1d2d6817272e02cfd282ac5dabbd976d..57bd494395de37a34452e9c7d2899b249011651c 100644
--- a/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java
@@ -52,6 +52,74 @@ public class PistonMovingBlockEntity extends BlockEntity {
diff --git a/patches/server/0071-lithium-shapes.blockstate_cache.patch b/patches/server/0070-lithium-shapes.blockstate_cache.patch
similarity index 100%
rename from patches/server/0071-lithium-shapes.blockstate_cache.patch
rename to patches/server/0070-lithium-shapes.blockstate_cache.patch
diff --git a/patches/server/0072-lithium-gen.patch b/patches/server/0071-lithium-gen.patch
similarity index 99%
rename from patches/server/0072-lithium-gen.patch
rename to patches/server/0071-lithium-gen.patch
index 10d40227..6650eb6d 100644
--- a/patches/server/0072-lithium-gen.patch
+++ b/patches/server/0071-lithium-gen.patch
@@ -106,7 +106,7 @@ index 0000000000000000000000000000000000000000..c99eff34c1be07508c88fe9525c3ae1a
+}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
-index 91b273d058d2fe83207cc562a25711e4d621c862..982ebf0fe6aa4d4f42e8e3b8820fbaf1f7736849 100644
+index a23745ac430e5f236dd9e4552a343a71a63e0f1c..303061187fc289d2f7098b46629341a01719068f 100644
--- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java
+++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
@@ -54,6 +54,7 @@ import net.minecraft.world.phys.Vec3;
diff --git a/patches/server/0074-vmp-use-linked-map-for-entity-trackers-for-faster-it.patch b/patches/server/0072-vmp-use-linked-map-for-entity-trackers-for-faster-it.patch
similarity index 94%
rename from patches/server/0074-vmp-use-linked-map-for-entity-trackers-for-faster-it.patch
rename to patches/server/0072-vmp-use-linked-map-for-entity-trackers-for-faster-it.patch
index 46dc227d..a3e26c51 100644
--- a/patches/server/0074-vmp-use-linked-map-for-entity-trackers-for-faster-it.patch
+++ b/patches/server/0072-vmp-use-linked-map-for-entity-trackers-for-faster-it.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/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
-index 9976630fad886392057f642e84f919f0b95cc040..c01c22b6fda9e36a2336a992c760b813b71469ce 100644
+index 5b714df6faca6424e7c7d89e56a4e0425bd1b1c6..76795b9d30ddb1f938d86b40bcac54c88364dde5 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -111,6 +111,7 @@ import org.bukkit.entity.Player;
diff --git a/patches/server/0073-PaperPR-Add-more-collision-code-skipping-logic.patch b/patches/server/0073-PaperPR-Add-more-collision-code-skipping-logic.patch
deleted file mode 100644
index f05a5874..00000000
--- a/patches/server/0073-PaperPR-Add-more-collision-code-skipping-logic.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: etil2jz <81570777+etil2jz@users.noreply.github.com>
-Date: Sat, 19 Mar 2022 16:27:30 +0100
-Subject: [PATCH] PaperPR Add more collision code skipping logic
-
-Taken from https://github.com/PaperMC/Paper/pull/7581
-
-diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index d6f7fd9dc4804e7565c89a9cbb0948f256559f03..24484d985929c7860aa08dbfca6df113086d2ed0 100644
---- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
-+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -3470,6 +3470,10 @@ public abstract class LivingEntity extends Entity {
-
- protected void pushEntities() {
- // Paper start - don't run getEntities if we're not going to use its result
-+ if (!isCollidable(level.paperConfig().collisions.fixClimbingBypassingCrammingRule)) return;
-+ net.minecraft.world.scores.Team team = getTeam();
-+ if (team != null && team.getCollisionRule() == net.minecraft.world.scores.Team.CollisionRule.NEVER) return;
-+
- int i = this.level.getGameRules().getInt(GameRules.RULE_MAX_ENTITY_CRAMMING);
- if (i <= 0 && level.paperConfig().collisions.maxEntityCollisions <= 0) {
- return;
diff --git a/patches/server/0075-c2me-reduce_allocs.patch b/patches/server/0073-c2me-reduce_allocs.patch
similarity index 100%
rename from patches/server/0075-c2me-reduce_allocs.patch
rename to patches/server/0073-c2me-reduce_allocs.patch
diff --git a/patches/server/0076-lithium-ai.sensor.secondary_poi.patch b/patches/server/0074-lithium-ai.sensor.secondary_poi.patch
similarity index 100%
rename from patches/server/0076-lithium-ai.sensor.secondary_poi.patch
rename to patches/server/0074-lithium-ai.sensor.secondary_poi.patch
diff --git a/patches/server/0077-Fix-tick-function-tag-running-before-load.patch b/patches/server/0075-Fix-tick-function-tag-running-before-load.patch
similarity index 100%
rename from patches/server/0077-Fix-tick-function-tag-running-before-load.patch
rename to patches/server/0075-Fix-tick-function-tag-running-before-load.patch
diff --git a/patches/server/0078-lithium-suffocation.patch b/patches/server/0076-lithium-suffocation.patch
similarity index 96%
rename from patches/server/0078-lithium-suffocation.patch
rename to patches/server/0076-lithium-suffocation.patch
index 64bfb537..96284cfd 100644
--- a/patches/server/0078-lithium-suffocation.patch
+++ b/patches/server/0076-lithium-suffocation.patch
@@ -9,10 +9,10 @@ Original license: GNU Lesser General Public License v3.0
Original project: https://github.com/CaffeineMC/lithium-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 d2bffae52474883488a05534273dff9450a1634c..b19d4b2fec798c13601b5e46f8e77ed95917c2f0 100644
+index 3ff172293f45119c2d4a169ec3a87262f49ee897..32362fcd303fb1ed80a2f98d87704dfec275ef7e 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -2607,39 +2607,64 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -2608,39 +2608,64 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
return !this.isRemoved();
}
diff --git a/patches/server/0079-Optimize-default-values-for-configs.patch b/patches/server/0077-Optimize-default-values-for-configs.patch
similarity index 91%
rename from patches/server/0079-Optimize-default-values-for-configs.patch
rename to patches/server/0077-Optimize-default-values-for-configs.patch
index ff7412dc..30adc18d 100644
--- a/patches/server/0079-Optimize-default-values-for-configs.patch
+++ b/patches/server/0077-Optimize-default-values-for-configs.patch
@@ -18,7 +18,7 @@ index 34eb43ca2bf446504c372f98dfbe6dbfd0a81369..74d86c1a9ef79e09b1ec02b93e8f62d3
setComment("projectile", "Optimizes projectile settings");
}
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
-index 54bca103347e89f116fb7fbf37449a32ac094286..76810d7767b1a66315b006569654c718105ab4ee 100644
+index d03551e81e3ef37935cb1d963aba3df316f48ef5..c2cece9c2c8ba0f14a2d6878e4bb3e8dc816821d 100644
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
@@ -55,7 +55,7 @@ public class GlobalConfiguration extends ConfigurationPart {
@@ -30,7 +30,7 @@ index 54bca103347e89f116fb7fbf37449a32ac094286..76810d7767b1a66315b006569654c718
public boolean serverNamePrivacy = false;
public List hiddenConfigEntries = List.of(
"database",
-@@ -289,9 +289,9 @@ public class GlobalConfiguration extends ConfigurationPart {
+@@ -291,9 +291,9 @@ public class GlobalConfiguration extends ConfigurationPart {
public boolean fixEntityPositionDesync = true;
public boolean loadPermissionsYmlBeforePlugins = true;
@Constraints.Min(4)
@@ -43,10 +43,10 @@ index 54bca103347e89f116fb7fbf37449a32ac094286..76810d7767b1a66315b006569654c718
public boolean useDimensionTypeForCustomSpawners = false;
public boolean strictAdvancementDimensionCheck = false;
diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
-index 3d2e67dc559ee3910b17ca86a46030ec05232250..9fe2a3800f4cb2dc5a3148463144835f94db8a10 100644
+index 5982dda61e07f1661b0a68d0ba1fcc1122e8d428..2805413e4fc5f977fa05c7292bb7eb46fbe18280 100644
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
-@@ -113,8 +113,8 @@ public class WorldConfiguration extends ConfigurationPart {
+@@ -114,8 +114,8 @@ public class WorldConfiguration extends ConfigurationPart {
public ArmorStands armorStands;
public class ArmorStands extends ConfigurationPart {
@@ -57,7 +57,7 @@ index 3d2e67dc559ee3910b17ca86a46030ec05232250..9fe2a3800f4cb2dc5a3148463144835f
}
public Spawning spawning;
-@@ -197,8 +197,8 @@ public class WorldConfiguration extends ConfigurationPart {
+@@ -198,8 +198,8 @@ public class WorldConfiguration extends ConfigurationPart {
public Behavior behavior;
public class Behavior extends ConfigurationPart {
@@ -68,16 +68,16 @@ index 3d2e67dc559ee3910b17ca86a46030ec05232250..9fe2a3800f4cb2dc5a3148463144835f
public int experienceMergeMaxValue = -1;
public boolean shouldRemoveDragon = false;
public boolean zombiesTargetTurtleEggs = true;
-@@ -241,7 +241,7 @@ public class WorldConfiguration extends ConfigurationPart {
- public boolean enderDragonsDeathAlwaysPlacesDragonEgg = false;
- public boolean phantomsDoNotSpawnOnCreativePlayers = true;
- public boolean phantomsOnlyAttackInsomniacs = true;
+@@ -245,7 +245,7 @@ public class WorldConfiguration extends ConfigurationPart {
+ public int playerInsomniaStartTicks = 72000;
+ public int phantomsSpawnAttemptMinSeconds = 60;
+ public int phantomsSpawnAttemptMaxSeconds = 119;
- public boolean parrotsAreUnaffectedByPlayerMovement = false;
+ public boolean parrotsAreUnaffectedByPlayerMovement = true; // Mirai - optimize default values for configs
public double zombieVillagerInfectionChance = -1.0;
public MobsCanAlwaysPickUpLoot mobsCanAlwaysPickUpLoot;
-@@ -251,7 +251,7 @@ public class WorldConfiguration extends ConfigurationPart {
+@@ -255,7 +255,7 @@ public class WorldConfiguration extends ConfigurationPart {
}
public boolean disablePlayerCrits = false;
@@ -86,7 +86,7 @@ index 3d2e67dc559ee3910b17ca86a46030ec05232250..9fe2a3800f4cb2dc5a3148463144835f
public PillagerPatrols pillagerPatrols;
public class PillagerPatrols extends ConfigurationPart {
-@@ -309,7 +309,7 @@ public class WorldConfiguration extends ConfigurationPart {
+@@ -313,7 +313,7 @@ public class WorldConfiguration extends ConfigurationPart {
public class Environment extends ConfigurationPart {
public boolean disableThunder = false;
public boolean disableIceAndSnow = false;
@@ -95,7 +95,7 @@ index 3d2e67dc559ee3910b17ca86a46030ec05232250..9fe2a3800f4cb2dc5a3148463144835f
public boolean disableExplosionKnockback = false;
public boolean generateFlatBedrock = false;
public FrostedIce frostedIce;
-@@ -354,7 +354,7 @@ public class WorldConfiguration extends ConfigurationPart {
+@@ -359,7 +359,7 @@ public class WorldConfiguration extends ConfigurationPart {
public class Maps extends ConfigurationPart {
public int itemFrameCursorLimit = 128;
@@ -104,7 +104,7 @@ index 3d2e67dc559ee3910b17ca86a46030ec05232250..9fe2a3800f4cb2dc5a3148463144835f
}
public Fixes fixes;
-@@ -380,7 +380,7 @@ public class WorldConfiguration extends ConfigurationPart {
+@@ -385,7 +385,7 @@ public class WorldConfiguration extends ConfigurationPart {
public class Hopper extends ConfigurationPart {
public boolean cooldownWhenFull = true;
public boolean disableMoveEvent = false;
@@ -113,7 +113,7 @@ index 3d2e67dc559ee3910b17ca86a46030ec05232250..9fe2a3800f4cb2dc5a3148463144835f
}
public Collisions collisions;
-@@ -388,9 +388,9 @@ public class WorldConfiguration extends ConfigurationPart {
+@@ -393,9 +393,9 @@ public class WorldConfiguration extends ConfigurationPart {
public class Collisions extends ConfigurationPart {
public boolean onlyPlayersCollide = false;
public boolean allowVehicleCollisions = true;
@@ -125,7 +125,7 @@ index 3d2e67dc559ee3910b17ca86a46030ec05232250..9fe2a3800f4cb2dc5a3148463144835f
public boolean allowPlayerCrammingDamage = false;
}
-@@ -398,18 +398,32 @@ public class WorldConfiguration extends ConfigurationPart {
+@@ -403,18 +403,32 @@ public class WorldConfiguration extends ConfigurationPart {
public class Chunks extends ConfigurationPart {
public AutosavePeriod autoSaveInterval = AutosavePeriod.def();
@@ -167,7 +167,7 @@ index 3d2e67dc559ee3910b17ca86a46030ec05232250..9fe2a3800f4cb2dc5a3148463144835f
});
}
-@@ -423,11 +437,22 @@ public class WorldConfiguration extends ConfigurationPart {
+@@ -428,11 +442,22 @@ public class WorldConfiguration extends ConfigurationPart {
public TickRates tickRates;
public class TickRates extends ConfigurationPart {
@@ -195,7 +195,7 @@ index 3d2e67dc559ee3910b17ca86a46030ec05232250..9fe2a3800f4cb2dc5a3148463144835f
}
@Setting(FeatureSeedsGeneration.FEATURE_SEEDS_KEY)
-@@ -435,7 +460,7 @@ public class WorldConfiguration extends ConfigurationPart {
+@@ -440,7 +465,7 @@ public class WorldConfiguration extends ConfigurationPart {
public class FeatureSeeds extends ConfigurationPart.Post {
@Setting(FeatureSeedsGeneration.GENERATE_KEY)
@@ -204,7 +204,7 @@ index 3d2e67dc559ee3910b17ca86a46030ec05232250..9fe2a3800f4cb2dc5a3148463144835f
@Setting(FeatureSeedsGeneration.FEATURES_KEY)
public Reference2LongMap>> features = new Reference2LongOpenHashMap<>();
-@@ -449,9 +474,9 @@ public class WorldConfiguration extends ConfigurationPart {
+@@ -454,9 +479,9 @@ public class WorldConfiguration extends ConfigurationPart {
public class Misc extends ConfigurationPart {
public int lightQueueSize = 20;
@@ -217,10 +217,10 @@ index 3d2e67dc559ee3910b17ca86a46030ec05232250..9fe2a3800f4cb2dc5a3148463144835f
public float maxLeashDistance = 10f;
public boolean disableSprintInterruptionOnAttack = false;
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
-index a5a2e497eb3e651f3e715f995a80161d919ebab9..6594d184940fd5b0a5418ce10c02ebe6540a4d0f 100644
+index 7c1efc3b6045b2179139dd419e969569f1af9f6d..ae41c804efd5fd223240f0fe541e971ebc5ae346 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
-@@ -150,14 +150,14 @@ public class SpigotWorldConfig
+@@ -146,14 +146,14 @@ public class SpigotWorldConfig
public double itemMerge;
private void itemMerge()
{
@@ -237,7 +237,7 @@ index a5a2e497eb3e651f3e715f995a80161d919ebab9..6594d184940fd5b0a5418ce10c02ebe6
this.log( "Experience Merge Radius: " + this.expMerge );
}
-@@ -196,7 +196,7 @@ public class SpigotWorldConfig
+@@ -192,7 +192,7 @@ public class SpigotWorldConfig
public byte mobSpawnRange;
private void mobSpawnRange()
{
@@ -246,7 +246,7 @@ index a5a2e497eb3e651f3e715f995a80161d919ebab9..6594d184940fd5b0a5418ce10c02ebe6
this.log( "Mob Spawn Range: " + this.mobSpawnRange );
}
-@@ -207,14 +207,14 @@ public class SpigotWorldConfig
+@@ -203,14 +203,14 @@ public class SpigotWorldConfig
this.log( "Item Despawn Rate: " + this.itemDespawnRate );
}
@@ -266,7 +266,7 @@ index a5a2e497eb3e651f3e715f995a80161d919ebab9..6594d184940fd5b0a5418ce10c02ebe6
public int wakeUpInactiveAnimals = 4;
public int wakeUpInactiveAnimalsEvery = 60*20;
public int wakeUpInactiveAnimalsFor = 5*20;
-@@ -231,7 +231,7 @@ public class SpigotWorldConfig
+@@ -227,7 +227,7 @@ public class SpigotWorldConfig
public int villagersWorkImmunityFor = 20;
public boolean villagersActiveForPanic = true;
// Paper end
@@ -275,7 +275,7 @@ index a5a2e497eb3e651f3e715f995a80161d919ebab9..6594d184940fd5b0a5418ce10c02ebe6
public boolean ignoreSpectatorActivation = false;
private void activationRange()
{
-@@ -297,7 +297,7 @@ public class SpigotWorldConfig
+@@ -293,7 +293,7 @@ public class SpigotWorldConfig
{
this.set( "ticks-per.hopper-check", 1 );
}
@@ -284,7 +284,7 @@ index a5a2e497eb3e651f3e715f995a80161d919ebab9..6594d184940fd5b0a5418ce10c02ebe6
this.hopperAmount = this.getInt( "hopper-amount", 1 );
this.hopperCanLoadChunks = this.getBoolean( "hopper-can-load-chunks", false );
this.log( "Hopper Transfer: " + this.hopperTransfer + " Hopper Check: " + this.hopperCheck + " Hopper Amount: " + this.hopperAmount + " Hopper Can Load Chunks: " + this.hopperCanLoadChunks );
-@@ -307,7 +307,7 @@ public class SpigotWorldConfig
+@@ -303,7 +303,7 @@ public class SpigotWorldConfig
public int tridentDespawnRate;
private void arrowDespawnRate()
{
@@ -293,7 +293,7 @@ index a5a2e497eb3e651f3e715f995a80161d919ebab9..6594d184940fd5b0a5418ce10c02ebe6
this.tridentDespawnRate = this.getInt( "trident-despawn-rate", this.arrowDespawnRate );
this.log( "Arrow Despawn Rate: " + this.arrowDespawnRate + " Trident Respawn Rate:" + this.tridentDespawnRate );
}
-@@ -322,14 +322,14 @@ public class SpigotWorldConfig
+@@ -318,14 +318,14 @@ public class SpigotWorldConfig
public boolean nerfSpawnerMobs;
private void nerfSpawnerMobs()
{
@@ -310,7 +310,7 @@ index a5a2e497eb3e651f3e715f995a80161d919ebab9..6594d184940fd5b0a5418ce10c02ebe6
this.log( "Allow Zombie Pigmen to spawn from portal blocks: " + this.enableZombiePigmenPortalSpawns );
}
-@@ -443,7 +443,7 @@ public class SpigotWorldConfig
+@@ -439,7 +439,7 @@ public class SpigotWorldConfig
public int hangingTickFrequency;
private void hangingTickFrequency()
{
diff --git a/patches/server/0080-Fix-hunger-saturation-depleting-on-peaceful.patch b/patches/server/0078-Fix-hunger-saturation-depleting-on-peaceful.patch
similarity index 87%
rename from patches/server/0080-Fix-hunger-saturation-depleting-on-peaceful.patch
rename to patches/server/0078-Fix-hunger-saturation-depleting-on-peaceful.patch
index b120c533..11f49f60 100644
--- a/patches/server/0080-Fix-hunger-saturation-depleting-on-peaceful.patch
+++ b/patches/server/0078-Fix-hunger-saturation-depleting-on-peaceful.patch
@@ -8,10 +8,10 @@ the displayed hunger bar never goes down. Hunger (or any related value, includin
should not go down on peaceful. See https://bugs.mojang.com/browse/MC-31819.
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
-index b5ffd28b2d17014d25bc4d099b1cc5da186f3146..54e241534f0a3c00044c1ce33e7dc3a8fd020ab7 100644
+index 4ee90ce146abbbdce509be3d1e08ea427a6cd82a..92464a0a470b97636b448c38d5b611e8b821dd71 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
-@@ -1921,6 +1921,7 @@ public abstract class Player extends LivingEntity {
+@@ -1930,6 +1930,7 @@ public abstract class Player extends LivingEntity {
}
public void causeFoodExhaustion(float f, EntityExhaustionEvent.ExhaustionReason reason) {
diff --git a/patches/server/0081-Fix-mobs-attacking-themselves.patch b/patches/server/0079-Fix-mobs-attacking-themselves.patch
similarity index 100%
rename from patches/server/0081-Fix-mobs-attacking-themselves.patch
rename to patches/server/0079-Fix-mobs-attacking-themselves.patch
diff --git a/patches/server/0082-Fix-brewing-stands-resetting-their-brewTime-when-bei.patch b/patches/server/0080-Fix-brewing-stands-resetting-their-brewTime-when-bei.patch
similarity index 100%
rename from patches/server/0082-Fix-brewing-stands-resetting-their-brewTime-when-bei.patch
rename to patches/server/0080-Fix-brewing-stands-resetting-their-brewTime-when-bei.patch
diff --git a/patches/server/0083-lithium-world.tick_scheduler.patch b/patches/server/0081-lithium-world.tick_scheduler.patch
similarity index 95%
rename from patches/server/0083-lithium-world.tick_scheduler.patch
rename to patches/server/0081-lithium-world.tick_scheduler.patch
index 753fdc3c..e00a431d 100644
--- a/patches/server/0083-lithium-world.tick_scheduler.patch
+++ b/patches/server/0081-lithium-world.tick_scheduler.patch
@@ -205,7 +205,7 @@ index 0000000000000000000000000000000000000000..52e90ea09b44543af661c214767073cf
+ }
+}
diff --git a/src/main/java/net/minecraft/world/ticks/LevelChunkTicks.java b/src/main/java/net/minecraft/world/ticks/LevelChunkTicks.java
-index 9f6c2e5b5d9e8d714a47c770e255d06c0ef7c190..826ced345c97bd2eb04749f42744a086fafc4ce8 100644
+index ac807277a6b26d140ea9873d17c7aa4fb5fe37b2..89c5169d05687582ebef67267e8e2cbd22032cdc 100644
--- a/src/main/java/net/minecraft/world/ticks/LevelChunkTicks.java
+++ b/src/main/java/net/minecraft/world/ticks/LevelChunkTicks.java
@@ -16,14 +16,37 @@ import javax.annotation.Nullable;
@@ -246,9 +246,9 @@ index 9f6c2e5b5d9e8d714a47c770e255d06c0ef7c190..826ced345c97bd2eb04749f42744a086
+ private final IntOpenHashSet allpendingTicks = new IntOpenHashSet();
+ // Mirai end
- public LevelChunkTicks() {
- }
-@@ -35,34 +58,133 @@ public class LevelChunkTicks implements SerializableTickContainer, TickCon
+ // Paper start - add dirty flag
+ private boolean dirty;
+@@ -48,36 +71,133 @@ public class LevelChunkTicks implements SerializableTickContainer, TickCon
this.ticksPerPosition.add(ScheduledTick.probe(savedTick.type(), savedTick.pos()));
}
@@ -259,8 +259,8 @@ index 9f6c2e5b5d9e8d714a47c770e255d06c0ef7c190..826ced345c97bd2eb04749f42744a086
+ this.allpendingTicks.add(tickToInt(orderedTick.pos(), orderedTick.type()));
+ }
+ }
-+ this.ticksPerPosition = null;
-+ this.tickQueue = null;
++ //this.ticksPerPosition = null; // KeYi - dont null
++ //this.tickQueue = null; // KeYi - dont null
+ // Mirai end
+ }
+
@@ -323,6 +323,7 @@ index 9f6c2e5b5d9e8d714a47c770e255d06c0ef7c190..826ced345c97bd2eb04749f42744a086
public ScheduledTick poll() {
- ScheduledTick scheduledTick = this.tickQueue.poll();
- if (scheduledTick != null) {
+- this.dirty = true; // Paper - add dirty flag
- this.ticksPerPosition.remove(scheduledTick);
+ ScheduledTick orderedTick = this.nextTickQueue.poll();
+ if (orderedTick != null) {
@@ -344,6 +345,7 @@ index 9f6c2e5b5d9e8d714a47c770e255d06c0ef7c190..826ced345c97bd2eb04749f42744a086
@Override
public void schedule(ScheduledTick orderedTick) {
- if (this.ticksPerPosition.add(orderedTick)) {
+- this.dirty = true; // Paper - add dirty flag
- this.scheduleUnchecked(orderedTick);
+ int intTick = tickToInt(orderedTick.pos(), orderedTick.type());
+ if (this.allpendingTicks.add(intTick)) {
@@ -390,7 +392,7 @@ index 9f6c2e5b5d9e8d714a47c770e255d06c0ef7c190..826ced345c97bd2eb04749f42744a086
private void scheduleUnchecked(ScheduledTick orderedTick) {
this.tickQueue.add(orderedTick);
-@@ -72,60 +194,93 @@ public class LevelChunkTicks implements SerializableTickContainer, TickCon
+@@ -87,50 +207,83 @@ public class LevelChunkTicks implements SerializableTickContainer, TickCon
}
@@ -415,7 +417,7 @@ index 9f6c2e5b5d9e8d714a47c770e255d06c0ef7c190..826ced345c97bd2eb04749f42744a086
- while(iterator.hasNext()) {
- ScheduledTick scheduledTick = iterator.next();
- if (predicate.test(scheduledTick)) {
-- iterator.remove();
+- iterator.remove(); this.dirty = true; // Paper - add dirty flag
- this.ticksPerPosition.remove(scheduledTick);
+ for (ObjectIterator> tickQueueIterator = this.tickQueuesByTimeAndPriority.values().iterator(); tickQueueIterator.hasNext(); ) {
+ OrderedTickQueue nextTickQueue = tickQueueIterator.next();
@@ -464,6 +466,7 @@ index 9f6c2e5b5d9e8d714a47c770e255d06c0ef7c190..826ced345c97bd2eb04749f42744a086
+ */
@Override
public ListTag save(long l, Function function) {
+- this.lastSaved = l; // Paper - add dirty system to level ticks
- ListTag listTag = new ListTag();
+ ListTag nbtList = new ListTag();
if (this.pendingTicks != null) {
@@ -492,6 +495,10 @@ index 9f6c2e5b5d9e8d714a47c770e255d06c0ef7c190..826ced345c97bd2eb04749f42744a086
+ */
public void unpack(long time) {
if (this.pendingTicks != null) {
+ // Paper start - add dirty system to level chunk ticks
+@@ -139,14 +292,13 @@ public class LevelChunkTicks implements SerializableTickContainer, TickCon
+ }
+ // Paper end - add dirty system to level chunk ticks
int i = -this.pendingTicks.size();
-
- for(SavedTick savedTick : this.pendingTicks) {
diff --git a/patches/server/0084-Save-Json-list-asynchronously.patch b/patches/server/0082-Save-Json-list-asynchronously.patch
similarity index 89%
rename from patches/server/0084-Save-Json-list-asynchronously.patch
rename to patches/server/0082-Save-Json-list-asynchronously.patch
index 8ba60eeb..8cd74615 100644
--- a/patches/server/0084-Save-Json-list-asynchronously.patch
+++ b/patches/server/0082-Save-Json-list-asynchronously.patch
@@ -8,7 +8,7 @@ Original license: GPLv3
Original project: https://github.com/Akarin-project/Akarin
diff --git a/src/main/java/net/minecraft/server/players/StoredUserList.java b/src/main/java/net/minecraft/server/players/StoredUserList.java
-index 109e08e098a6c1ca1ba3dc2a9a293eaf9d5d7cb7..ebefa64eb343f2185c11de56a1a364fc3a367b14 100644
+index 109e08e098a6c1ca1ba3dc2a9a293eaf9d5d7cb7..26c35cc4f40af6cd1465ab2da89624e160a2d096 100644
--- a/src/main/java/net/minecraft/server/players/StoredUserList.java
+++ b/src/main/java/net/minecraft/server/players/StoredUserList.java
@@ -151,6 +151,7 @@ public abstract class StoredUserList> {
@@ -35,7 +35,7 @@ index 109e08e098a6c1ca1ba3dc2a9a293eaf9d5d7cb7..ebefa64eb343f2185c11de56a1a364fc
+ StoredUserList.LOGGER.warn("Failed to async save " + this.file, e); // Akarin - Save json list async
+ }
+ }; // Akarin - Save json list async
-+ net.minecraft.server.MCUtil.scheduleAsyncTask(runnable); // Akarin - Save json list async
++ io.papermc.paper.util.MCUtil.scheduleAsyncTask(runnable); // Akarin - Save json list async
}
diff --git a/patches/server/0085-Swaps-the-predicate-order-of-collision.patch b/patches/server/0083-Swaps-the-predicate-order-of-collision.patch
similarity index 88%
rename from patches/server/0085-Swaps-the-predicate-order-of-collision.patch
rename to patches/server/0083-Swaps-the-predicate-order-of-collision.patch
index 81c45a05..66b33f88 100644
--- a/patches/server/0085-Swaps-the-predicate-order-of-collision.patch
+++ b/patches/server/0083-Swaps-the-predicate-order-of-collision.patch
@@ -8,10 +8,10 @@ Original license: GPLv3
Original project: https://github.com/Akarin-project/Akarin
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index b19d4b2fec798c13601b5e46f8e77ed95917c2f0..9f2d0ec15afb8192ea06bfdd473ffca42e887072 100644
+index 32362fcd303fb1ed80a2f98d87704dfec275ef7e..a6d3a99bc70959726334b97611d3829e3faec32a 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -1997,8 +1997,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -1998,8 +1998,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
public void playerTouch(Player player) {}
public void push(Entity entity) {
diff --git a/patches/server/0086-Fix-head-rotation-packet-spam.patch b/patches/server/0084-Fix-head-rotation-packet-spam.patch
similarity index 89%
rename from patches/server/0086-Fix-head-rotation-packet-spam.patch
rename to patches/server/0084-Fix-head-rotation-packet-spam.patch
index 95738f43..0dd30894 100644
--- a/patches/server/0086-Fix-head-rotation-packet-spam.patch
+++ b/patches/server/0084-Fix-head-rotation-packet-spam.patch
@@ -7,10 +7,10 @@ Original license: GPLv3
Original project: https://github.com/Electroid/SportPaper
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
-index bf314a8ea0145a82c5ff4fdff23444b8978845fe..3a0ff721e01e5bb2b2d05459019f8bba5f5d0737 100644
+index 3fe68cdd9f53f3d000bd777dec5d485e299ddd78..5a26a683fa5c896584f15effd97225775dc8d8b8 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
-@@ -342,8 +342,10 @@ public class ServerEntity {
+@@ -343,8 +343,10 @@ public class ServerEntity {
}
// CraftBukkit start - Fix for nonsensical head yaw
diff --git a/patches/server/0087-Cache-block-break-animation-packet.patch b/patches/server/0085-Cache-block-break-animation-packet.patch
similarity index 86%
rename from patches/server/0087-Cache-block-break-animation-packet.patch
rename to patches/server/0085-Cache-block-break-animation-packet.patch
index f5181c93..0b5cab50 100644
--- a/patches/server/0087-Cache-block-break-animation-packet.patch
+++ b/patches/server/0085-Cache-block-break-animation-packet.patch
@@ -7,10 +7,10 @@ Original license: GPLv3
Original project: https://github.com/Electroid/SportPaper
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index f4280eb9f77568e4f3af6f264fc60901e667a936..42166dbec3154b9ebf26d9eda1752f80a9350764 100644
+index e91028d409fe3c92b368f62fecf15015ff54c9b8..8053be51c7b04a3ce3fe6ec364f51c9f405fa024 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -1565,6 +1565,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1567,6 +1567,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (entity instanceof Player) entityhuman = (Player) entity;
// CraftBukkit end
@@ -18,7 +18,7 @@ index f4280eb9f77568e4f3af6f264fc60901e667a936..42166dbec3154b9ebf26d9eda1752f80
while (iterator.hasNext()) {
ServerPlayer entityplayer = (ServerPlayer) iterator.next();
-@@ -1580,7 +1581,10 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1582,7 +1583,10 @@ public class ServerLevel extends Level implements WorldGenLevel {
// CraftBukkit end
if (d0 * d0 + d1 * d1 + d2 * d2 < 1024.0D) {
diff --git a/patches/server/0088-Use-more-fastutil-data-structures.patch b/patches/server/0086-Use-more-fastutil-data-structures.patch
similarity index 94%
rename from patches/server/0088-Use-more-fastutil-data-structures.patch
rename to patches/server/0086-Use-more-fastutil-data-structures.patch
index 3eee8c93..4b3b5664 100644
--- a/patches/server/0088-Use-more-fastutil-data-structures.patch
+++ b/patches/server/0086-Use-more-fastutil-data-structures.patch
@@ -9,7 +9,7 @@ Original project: https://github.com/nopjmp/Dionysus
Copyright 2021 Kayla Thompson
diff --git a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java
-index 08b21f5a7a07f44f8044f56991fb6723cd8f3eea..ac254e4fe3973a8cb3321e96c651847e387d9f0e 100644
+index e7ff7ad3bf4dd17fdd34202ec3aef8e9512bc36d..71c674630087e8a7f76e6b425ea6991d15f2db40 100644
--- a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java
@@ -12,8 +12,14 @@ import net.minecraft.server.MinecraftServer;
@@ -37,7 +37,7 @@ index 08b21f5a7a07f44f8044f56991fb6723cd8f3eea..ac254e4fe3973a8cb3321e96c651847e
private static int throttleCounter = 0;
// CraftBukkit end
private static final Component IGNORE_STATUS_REASON = Component.literal("Ignoring status request");
-@@ -49,7 +55,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL
+@@ -50,7 +56,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL
InetAddress address = ((java.net.InetSocketAddress) this.connection.getRemoteAddress()).getAddress();
synchronized (ServerHandshakePacketListenerImpl.throttleTracker) {
@@ -46,7 +46,7 @@ index 08b21f5a7a07f44f8044f56991fb6723cd8f3eea..ac254e4fe3973a8cb3321e96c651847e
ServerHandshakePacketListenerImpl.throttleTracker.put(address, currentTime);
Component chatmessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(io.papermc.paper.configuration.GlobalConfiguration.get().messages.kick.connectionThrottle); // Paper - Configurable connection throttle kick message
this.connection.send(new ClientboundLoginDisconnectPacket(chatmessage));
-@@ -63,13 +69,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL
+@@ -64,13 +70,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL
ServerHandshakePacketListenerImpl.throttleCounter = 0;
// Cleanup stale entries
diff --git a/patches/server/0089-Optimize-Math.round-and-Math.hypot-functions.patch b/patches/server/0087-Optimize-Math.round-and-Math.hypot-functions.patch
similarity index 94%
rename from patches/server/0089-Optimize-Math.round-and-Math.hypot-functions.patch
rename to patches/server/0087-Optimize-Math.round-and-Math.hypot-functions.patch
index 46302b2e..d6ab28dd 100644
--- a/patches/server/0089-Optimize-Math.round-and-Math.hypot-functions.patch
+++ b/patches/server/0087-Optimize-Math.round-and-Math.hypot-functions.patch
@@ -100,24 +100,23 @@ index c3e54da4ab6440811aab2f9dd1e218802ac13285..db1319c51a5410ee106d023fce759f1e
}
}
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
-index b9ab67acf30d20745111b9fe5c6ccf44dca3e006..3719d421ea6a959a6bae512cf9860085c0679c27 100644
+index c498f72b394b4b0041a438eed7caa228097411c8..b29efeef8fbdd395604a7c464ee60e2a112fb12f 100644
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
-@@ -228,4 +228,13 @@ public class MiraiConfig {
- "to check when entity delta movement is null.");
+@@ -227,4 +227,13 @@ public class MiraiConfig {
+ "Whether or not server should use a faster method",
+ "to check when entity delta movement is null.");
}
-
++
+ public static boolean optimizedRound;
+ public static boolean optimizedHypot;
+ private static void fastMath() {
+ optimizedRound = getBoolean("optimize-math-round", true,
-+ "Whether or not Math.round should be replaced by a faster version.");
++ "Whether or not Math.round should be replaced by a faster version.");
+ optimizedHypot = getBoolean("optimize-math-hypot", true,
-+ "Whether or not Math.hypot should be replaced by a faster version.");
++ "Whether or not Math.hypot should be replaced by a faster version.");
+ }
-+
}
-\ No newline at end of file
diff --git a/src/main/java/gg/pufferfish/pufferfish/flare/collectors/TPSCollector.java b/src/main/java/gg/pufferfish/pufferfish/flare/collectors/TPSCollector.java
index 40447d00aefb5ffedb8a2ee87155a04088f0649f..633a6e313174244cf13ed89b53893ea5900e2828 100644
--- a/src/main/java/gg/pufferfish/pufferfish/flare/collectors/TPSCollector.java
@@ -133,7 +132,7 @@ index 40447d00aefb5ffedb8a2ee87155a04088f0649f..633a6e313174244cf13ed89b53893ea5
}
}
diff --git a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java
-index dd501e83d991e45598509134fab05bafc1904953..5ecdbeb90e9715fc89ff25e9b3c33a2e8d98ff93 100644
+index 0b060183429f4c72ec767075538477b4302bbf0d..75e7d181a8dff7247c6db8448cbf5f22772eab4b 100644
--- a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java
+++ b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java
@@ -387,11 +387,11 @@ public final class PlayerChunkLoader {
@@ -151,7 +150,7 @@ index dd501e83d991e45598509134fab05bafc1904953..5ecdbeb90e9715fc89ff25e9b3c33a2e
public void onChunkPlayerTickReady(final int chunkX, final int chunkZ) {
diff --git a/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java b/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java
-index 450bd95218852174cfbc88d4517e17daee5ffd5f..317e952655db5a4dcb2e6ec6573510f75bba9255 100644
+index 7784d72ddd6db00c674e22759c00c430222c4b85..0f180d11774f6dec2667b3a3f6a63d1127bac869 100644
--- a/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java
+++ b/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java
@@ -95,12 +95,12 @@ public final class FixLightCommand implements PaperSubcommand {
@@ -183,7 +182,7 @@ index e3e80db89c18588322ffdaa0f9fd85e398cb1471..d947011b80ee14e7aaf74af3d9081fc7
throw ERROR_INVALID_TICK_COUNT.create(j);
} else {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 6cdced357fdcd5ea4ce0c63d29e39573a5f40f65..3c528e612e9ed17e8c58bbef6c26471cc3411a7a 100644
+index 8f09ebf88bb26c74182893c86ad95ccc8580a455..15f602bf646d7d08215cce5cd9c16a2886e1a77a 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -2767,7 +2767,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0.0F && f2 < 3.4028235E37F) {
@@ -233,7 +232,7 @@ index 24484d985929c7860aa08dbfca6df113086d2ed0..2c4cd831414f73e6eba51e8b49d97cdb
}
}
-@@ -2050,9 +2050,9 @@ public abstract class LivingEntity extends Entity {
+@@ -2065,9 +2065,9 @@ public abstract class LivingEntity extends Entity {
if (f3 > 0.0F && f3 < 3.4028235E37F) {
if (this instanceof ServerPlayer) {
@@ -245,7 +244,7 @@ index 24484d985929c7860aa08dbfca6df113086d2ed0..2c4cd831414f73e6eba51e8b49d97cdb
}
}
}
-@@ -2164,9 +2164,9 @@ public abstract class LivingEntity extends Entity {
+@@ -2179,9 +2179,9 @@ public abstract class LivingEntity extends Entity {
float f3 = (float) -event.getDamage(DamageModifier.RESISTANCE);
if (f3 > 0.0F && f3 < 3.4028235E37F) {
if (this instanceof ServerPlayer) {
@@ -257,7 +256,7 @@ index 24484d985929c7860aa08dbfca6df113086d2ed0..2c4cd831414f73e6eba51e8b49d97cdb
}
}
}
-@@ -2198,10 +2198,10 @@ public abstract class LivingEntity extends Entity {
+@@ -2213,10 +2213,10 @@ public abstract class LivingEntity extends Entity {
float f2 = absorptionModifier;
if (f2 > 0.0F && f2 < 3.4028235E37F && this instanceof net.minecraft.world.entity.player.Player) {
@@ -270,7 +269,7 @@ index 24484d985929c7860aa08dbfca6df113086d2ed0..2c4cd831414f73e6eba51e8b49d97cdb
}
if (f > 0 || !human) {
-@@ -2209,7 +2209,7 @@ public abstract class LivingEntity extends Entity {
+@@ -2224,7 +2224,7 @@ public abstract class LivingEntity extends Entity {
// PAIL: Be sure to drag all this code from the EntityHuman subclass each update.
((net.minecraft.world.entity.player.Player) this).causeFoodExhaustion(damagesource.getFoodExhaustion(), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.DAMAGED); // CraftBukkit - EntityExhaustionEvent
if (f < 3.4028235E37F) {
@@ -279,7 +278,7 @@ index 24484d985929c7860aa08dbfca6df113086d2ed0..2c4cd831414f73e6eba51e8b49d97cdb
}
}
// CraftBukkit end
-@@ -2231,7 +2231,7 @@ public abstract class LivingEntity extends Entity {
+@@ -2248,7 +2248,7 @@ public abstract class LivingEntity extends Entity {
CriteriaTriggers.ENTITY_HURT_PLAYER.trigger((ServerPlayer) this, damagesource, f, originalDamage, true);
f2 = (float) -event.getDamage(DamageModifier.BLOCKING);
if (f2 > 0.0F && f2 < 3.4028235E37F) {
@@ -288,7 +287,7 @@ index 24484d985929c7860aa08dbfca6df113086d2ed0..2c4cd831414f73e6eba51e8b49d97cdb
}
}
-@@ -3035,13 +3035,13 @@ public abstract class LivingEntity extends Entity {
+@@ -3052,13 +3052,13 @@ public abstract class LivingEntity extends Entity {
this.level.getProfiler().push("rangeChecks");
// Paper start - stop large pitch and yaw changes from crashing the server
@@ -307,7 +306,7 @@ index 24484d985929c7860aa08dbfca6df113086d2ed0..2c4cd831414f73e6eba51e8b49d97cdb
this.level.getProfiler().pop();
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
-index 54e241534f0a3c00044c1ce33e7dc3a8fd020ab7..18c4f2eeb6bb427c1314608fc6a81e4642d92888 100644
+index 92464a0a470b97636b448c38d5b611e8b821dd71..2d1497480a5d535798d70ece277a7252a3d5dc79 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1087,7 +1087,7 @@ public abstract class Player extends LivingEntity {
@@ -328,7 +327,7 @@ index 54e241534f0a3c00044c1ce33e7dc3a8fd020ab7..18c4f2eeb6bb427c1314608fc6a81e46
}
}
-@@ -1423,7 +1423,7 @@ public abstract class Player extends LivingEntity {
+@@ -1432,7 +1432,7 @@ public abstract class Player extends LivingEntity {
if (target instanceof LivingEntity) {
float f5 = f3 - ((LivingEntity) target).getHealth();
@@ -337,7 +336,7 @@ index 54e241534f0a3c00044c1ce33e7dc3a8fd020ab7..18c4f2eeb6bb427c1314608fc6a81e46
if (j > 0) {
// CraftBukkit start - Call a combust event when somebody hits with a fire enchanted item
EntityCombustByEntityEvent combustEvent = new EntityCombustByEntityEvent(this.getBukkitEntity(), target.getBukkitEntity(), j * 4);
-@@ -1696,29 +1696,29 @@ public abstract class Player extends LivingEntity {
+@@ -1705,29 +1705,29 @@ public abstract class Player extends LivingEntity {
int i;
if (this.isSwimming()) {
@@ -372,7 +371,7 @@ index 54e241534f0a3c00044c1ce33e7dc3a8fd020ab7..18c4f2eeb6bb427c1314608fc6a81e46
if (i > 0) {
if (this.isSprinting()) {
this.awardStat(Stats.SPRINT_ONE_CM, i);
-@@ -1732,10 +1732,10 @@ public abstract class Player extends LivingEntity {
+@@ -1741,10 +1741,10 @@ public abstract class Player extends LivingEntity {
}
}
} else if (this.isFallFlying()) {
@@ -385,16 +384,16 @@ index 54e241534f0a3c00044c1ce33e7dc3a8fd020ab7..18c4f2eeb6bb427c1314608fc6a81e46
if (i > 25) {
this.awardStat(Stats.FLY_ONE_CM, i);
}
-@@ -1746,7 +1746,7 @@ public abstract class Player extends LivingEntity {
+@@ -1755,7 +1755,7 @@ public abstract class Player extends LivingEntity {
- public void checkRidingStatistics(double dx, double dy, double dz) {
+ private void checkRidingStatistics(double dx, double dy, double dz) {
if (this.isPassenger()) {
- int i = Math.round((float) Math.sqrt(dx * dx + dy * dy + dz * dz) * 100.0F);
+ int i = carpetfixes.helpers.FastMath.round((float) Math.sqrt(dx * dx + dy * dy + dz * dz) * 100.0F); // Mirai
if (i > 0) {
Entity entity = this.getVehicle();
-@@ -1773,7 +1773,7 @@ public abstract class Player extends LivingEntity {
+@@ -1782,7 +1782,7 @@ public abstract class Player extends LivingEntity {
return false;
} else {
if (fallDistance >= 2.0F) {
@@ -443,7 +442,7 @@ index 16504b8be08064e61b013fa943f692816612cbd0..38f6759501dcc2a0adb9608a9f639c24
i = Mth.clamp(i, (int) 0, (int) 15);
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 52264a583e79cc6adb9967aebac7f6b3ac129017..f642b7c58b8e9189d9734bf6a699848f9610b66d 100644
+index 9579889e4c7dedefc4f901ccac6157c425740481..7904e80ff9476221ffac153494c1ecbd9b9cd9d9 100644
--- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
+++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
@@ -254,8 +254,8 @@ public abstract class ChunkGenerator {
diff --git a/patches/server/0090-Faster-Sheep.getOffspringColor.patch b/patches/server/0088-Faster-Sheep.getOffspringColor.patch
similarity index 100%
rename from patches/server/0090-Faster-Sheep.getOffspringColor.patch
rename to patches/server/0088-Faster-Sheep.getOffspringColor.patch
diff --git a/patches/server/0091-PaperPR-Optimize-VarInts.patch b/patches/server/0089-PaperPR-Optimize-VarInts.patch
similarity index 100%
rename from patches/server/0091-PaperPR-Optimize-VarInts.patch
rename to patches/server/0089-PaperPR-Optimize-VarInts.patch
diff --git a/patches/server/0092-reduce-work-done-by-game-event-system.patch b/patches/server/0090-reduce-work-done-by-game-event-system.patch
similarity index 97%
rename from patches/server/0092-reduce-work-done-by-game-event-system.patch
rename to patches/server/0090-reduce-work-done-by-game-event-system.patch
index 4264620d..0754f810 100644
--- a/patches/server/0092-reduce-work-done-by-game-event-system.patch
+++ b/patches/server/0090-reduce-work-done-by-game-event-system.patch
@@ -11,10 +11,10 @@ Original project: https://github.com/Bloom-host/Petal
2. euclideangameeventdispatcher is not used concurrently so we ban that usage for improved performance with allays
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 42166dbec3154b9ebf26d9eda1752f80a9350764..ac96f90d2f89fa449907108700db327ca5c798d5 100644
+index 8053be51c7b04a3ce3fe6ec364f51c9f405fa024..901e226d30ff15dd72876a1ae135a53f7fbd9fc9 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -1643,6 +1643,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1645,6 +1645,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (chunk != null) {
for (int j2 = k; j2 <= j1; ++j2) {
flag |= chunk.getEventDispatcher(j2).walkListeners(event, emitterPos, emitter, (gameeventlistener, vec3d1) -> {
@@ -41,7 +41,7 @@ index 22c309343299e60ed8028229b7f134109001ff35..d5947d29295ddc93ba8ac1c0fc61f7ba
org.bukkit.craftbukkit.event.CraftEventFactory.sourceBlockOverride = blockEntity.getBlockPos(); // CraftBukkit - SPIGOT-7068: Add source block override, not the most elegant way but better than passing down a BlockPosition up to five methods deep.
blockEntity.sculkSpreader.updateCursors(world, pos, world.getRandom(), true);
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
-index f5adadb2e29ed8b52a502489ba06df4551cd06dc..5153dc3dcec63dc8063c7dd17d774d129dc0b67c 100644
+index 39684720c5ee2bb36b8d12cc10e05b7ab8d06172..30ff49c8b5a3f14d2b83006180552f70c0c9717d 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -84,7 +84,18 @@ public class LevelChunk extends ChunkAccess {
diff --git a/patches/server/0093-reduce-sensor-work.patch b/patches/server/0091-reduce-sensor-work.patch
similarity index 90%
rename from patches/server/0093-reduce-sensor-work.patch
rename to patches/server/0091-reduce-sensor-work.patch
index 584e667d..d2da3d57 100644
--- a/patches/server/0093-reduce-sensor-work.patch
+++ b/patches/server/0091-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 2c4cd831414f73e6eba51e8b49d97cdb89ec6fbb..bfa50273b6726e6f228ee235b1abf4d9d5145703 100644
+index 750bebe575c2a57b62fac6a0a14e41ee0541faa6..6cca6b3470c8d6c65ad5c2765c873a72251d4522 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -998,12 +998,14 @@ public abstract class LivingEntity extends Entity {
+@@ -1013,12 +1013,14 @@ public abstract class LivingEntity extends Entity {
}
if (entity != null) {
@@ -31,7 +31,7 @@ index 2c4cd831414f73e6eba51e8b49d97cdb89ec6fbb..bfa50273b6726e6f228ee235b1abf4d9
return d0;
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index 63911fd0d2a5f194ed4632f209555b3146ed7b79..fe6ea0b8f40172e59ad0f84c440ceeddd9b2c001 100644
+index 21334240fb5cf9c6cc0df5ad4af99e05a44bf128..5338616937d95b2352d9d9540bca47d0d874f90e 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -855,10 +855,10 @@ public abstract class Mob extends LivingEntity {
diff --git a/patches/server/0094-Configurable-chat-message-signatures.patch b/patches/server/0092-Configurable-chat-message-signatures.patch
similarity index 81%
rename from patches/server/0094-Configurable-chat-message-signatures.patch
rename to patches/server/0092-Configurable-chat-message-signatures.patch
index 0761011e..959a157e 100644
--- a/patches/server/0094-Configurable-chat-message-signatures.patch
+++ b/patches/server/0092-Configurable-chat-message-signatures.patch
@@ -5,23 +5,22 @@ Subject: [PATCH] Configurable chat message signatures
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
-index 3719d421ea6a959a6bae512cf9860085c0679c27..40755fa049ab889f31f626cd04eca4799197de13 100644
+index b29efeef8fbdd395604a7c464ee60e2a112fb12f..213d394a4fcfaa3e384edd9fd7c098e05b44529f 100644
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
-@@ -237,4 +237,12 @@ public class MiraiConfig {
- "Whether or not Math.hypot should be replaced by a faster version.");
+@@ -236,4 +236,12 @@ public class MiraiConfig {
+ optimizedHypot = getBoolean("optimize-math-hypot", true,
+ "Whether or not Math.hypot should be replaced by a faster version.");
}
-
++
+ public static boolean chatMessageSignatures;
+ private static void chatreport() {
+ chatMessageSignatures = getBoolean("disable-chat-reports", false,
-+ "Whether or not players should be able to report chat messages.",
-+ "It also disables the popup when joining a server without",
-+ "'secure chat', such as offline-mode servers.");
++ "Whether or not players should be able to report chat messages.",
++ "It also disables the popup when joining a server without",
++ "'secure chat', such as offline-mode servers.");
+ }
-+
}
-\ No newline at end of file
diff --git a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
index 11183b4a39b9897e1b1067eb2a3556d2b1d90f52..df109dd1b2d252f82096d02e57596fdd4076771f 100644
--- a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
@@ -35,7 +34,7 @@ index 11183b4a39b9897e1b1067eb2a3556d2b1d90f52..df109dd1b2d252f82096d02e57596fdd
}
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
-index 54a53a65130919b68f9cd8fd2d580fd8b9d2dfb3..7d7d88d2f920446a98c63229a351dc0dc07d454b 100644
+index f8d4154388f7ddae4e65835e24edf5fa6a9dce2b..38994fdf82f8bffc9caecc083e790caf11236322 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -646,6 +646,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -47,7 +46,7 @@ index 54a53a65130919b68f9cd8fd2d580fd8b9d2dfb3..7d7d88d2f920446a98c63229a351dc0d
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index ed98aab3df24bbefc1adc0e21ec7f1deab8d8aa1..e4abcd2f58dabe919a41162470386a6322f91f05 100644
+index 214650909f83f024ebc5ddb0689682d5a81719db..c6235099e79881f8aae1d6243decf18cf19e12ff 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2165,10 +2165,34 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@@ -60,13 +59,13 @@ index ed98aab3df24bbefc1adc0e21ec7f1deab8d8aa1..e4abcd2f58dabe919a41162470386a63
+ return;
+ } else if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket chat) {
+ packet = new ClientboundSystemChatPacket(chat.chatType().resolve(this.player.level.registryAccess())
-+ .get().decorate(chat.message().serverContent()), false);
++ .get().decorate(chat.message().serverContent()), false);
+
+
+ this.send(packet);
+ return;
-+ }
-+ }
++ }
++ }
+ // Mirai end
this.send(packet, (PacketSendListener) null);
}
@@ -86,7 +85,7 @@ index ed98aab3df24bbefc1adc0e21ec7f1deab8d8aa1..e4abcd2f58dabe919a41162470386a63
if (packet == null || this.processedDisconnect) { // Spigot
return;
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index e5d8d85bfa84c52208dbf4efa1579286d2b22e75..1b0e26afd4cbc8daec655513fe78933abb4a2151 100644
+index 367e08286dd9b668d8ef5855b05998082e4011b3..7b1ba24e2c541d1271335c95e440102bbd46e1fb 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1489,6 +1489,7 @@ public abstract class PlayerList {
@@ -98,10 +97,10 @@ index e5d8d85bfa84c52208dbf4efa1579286d2b22e75..1b0e26afd4cbc8daec655513fe78933a
}
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
-index 18c4f2eeb6bb427c1314608fc6a81e4642d92888..d9ea767bac44e47d5e580d2264cbdb4c8edb4fff 100644
+index 2d1497480a5d535798d70ece277a7252a3d5dc79..ae205f436251c18573d45927a1d39c549e1f0bf4 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
-@@ -1516,6 +1516,7 @@ public abstract class Player extends LivingEntity {
+@@ -1525,6 +1525,7 @@ public abstract class Player extends LivingEntity {
@Nullable
public ProfilePublicKey getProfilePublicKey() {
diff --git a/patches/server/0095-PaperPR-Fix-exact-choice-recipe-book-clicks.patch b/patches/server/0093-PaperPR-Fix-exact-choice-recipe-book-clicks.patch
similarity index 98%
rename from patches/server/0095-PaperPR-Fix-exact-choice-recipe-book-clicks.patch
rename to patches/server/0093-PaperPR-Fix-exact-choice-recipe-book-clicks.patch
index 020cc113..7d1df2cb 100644
--- a/patches/server/0095-PaperPR-Fix-exact-choice-recipe-book-clicks.patch
+++ b/patches/server/0093-PaperPR-Fix-exact-choice-recipe-book-clicks.patch
@@ -86,7 +86,7 @@ index efee1a8e0e3ad566cd550e51d3e559c5a495889a..f75ff62be1630e3a86f917e18432769e
}
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index 4fea1c9873b4dd9c9f21722adbb02200487caf3c..cd47b6882509888f7d34e95b4687ca7a9eab6caf 100644
+index ffcaa1c5c78966bf5790dc7ea2382cccac88b40b..6988e18411241047ded06ade916acee0fdf72109 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -105,6 +105,7 @@ import org.bukkit.event.world.StructureGrowEvent;
diff --git a/patches/server/0096-Fix-MC-238526.patch b/patches/server/0094-Fix-MC-238526.patch
similarity index 100%
rename from patches/server/0096-Fix-MC-238526.patch
rename to patches/server/0094-Fix-MC-238526.patch
diff --git a/patches/server/0097-Lobotomize-stuck-villagers.patch b/patches/server/0095-Lobotomize-stuck-villagers.patch
similarity index 86%
rename from patches/server/0097-Lobotomize-stuck-villagers.patch
rename to patches/server/0095-Lobotomize-stuck-villagers.patch
index 8446ecb8..b4cafca1 100644
--- a/patches/server/0097-Lobotomize-stuck-villagers.patch
+++ b/patches/server/0095-Lobotomize-stuck-villagers.patch
@@ -7,24 +7,23 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
-index 40755fa049ab889f31f626cd04eca4799197de13..3cd738e0f8bd1fdb2ec5203f8f73daad1e230205 100644
+index 213d394a4fcfaa3e384edd9fd7c098e05b44529f..523375618efaeca8f7cb51216a9cc4b48dc6b0d7 100644
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
-@@ -245,4 +245,11 @@ public class MiraiConfig {
- "'secure chat', such as offline-mode servers.");
+@@ -244,4 +244,11 @@ public class MiraiConfig {
+ "It also disables the popup when joining a server without",
+ "'secure chat', such as offline-mode servers.");
}
-
++
+ public static boolean villagerLobotomizeEnabled;
+ private static void lobotomizing() {
+ villagerLobotomizeEnabled = getBoolean("villager-lobotomize", false,
-+ "Whether or not villagers should be lobotomized when",
-+ "standing on a 1x1 block while being stuck.");
++ "Whether or not villagers should be lobotomized when",
++ "standing on a 1x1 block while being stuck.");
+ }
-+
}
-\ No newline at end of file
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-index 93077e8c6b5a35adc6febb749d1d08be172402f1..e9c36f92bec3a54653db1fd9327467a20b577765 100644
+index fa7cede4a0b59efde4949dba4a010aed5cd0a960..8b00e82a09e48103ec35af4320644b2ff25574f4 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -139,6 +139,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -64,7 +63,7 @@ index 93077e8c6b5a35adc6febb749d1d08be172402f1..e9c36f92bec3a54653db1fd9327467a2
this.level.getProfiler().pop();
if (this.assignProfessionWhenSpawned) {
this.assignProfessionWhenSpawned = false;
-@@ -1052,4 +1069,47 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -1060,4 +1077,47 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
return optional.isPresent() ? worldTime - (Long) optional.get() < 24000L : false;
}
@@ -113,10 +112,10 @@ index 93077e8c6b5a35adc6febb749d1d08be172402f1..e9c36f92bec3a54653db1fd9327467a2
+ // Purpur end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
-index f0b910df1ee471b4d72d97c6197ab14f2854976e..6ce32a52d621a0c2629568ea07e445f50160d97d 100644
+index 9220b1a7aa30ba59ac8dc6196859923b0675d8ec..3e820092c2b48c37b822a7afbb3f342340eed5c7 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
-@@ -194,4 +194,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager {
+@@ -222,4 +222,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager {
getHandle().getGossips().getReputations().clear();
}
// Paper end
diff --git a/patches/server/0098-Fix-legacy-colors-in-console.patch b/patches/server/0096-Fix-legacy-colors-in-console.patch
similarity index 90%
rename from patches/server/0098-Fix-legacy-colors-in-console.patch
rename to patches/server/0096-Fix-legacy-colors-in-console.patch
index 6767218b..db26f9f0 100644
--- a/patches/server/0098-Fix-legacy-colors-in-console.patch
+++ b/patches/server/0096-Fix-legacy-colors-in-console.patch
@@ -7,7 +7,7 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/io/papermc/paper/console/HexFormattingConverter.java b/src/main/java/io/papermc/paper/console/HexFormattingConverter.java
-index b4d0b7ecd56ab952319946854168c1299cb0b1be..8054b8da82ca455d23b26a53cc568160b14e04ce 100644
+index b9922b07cb105618390187d98acdf89e728e1f5a..6a1eda942aa33fc0802066416f8bc64f5f15d011 100644
--- a/src/main/java/io/papermc/paper/console/HexFormattingConverter.java
+++ b/src/main/java/io/papermc/paper/console/HexFormattingConverter.java
@@ -38,6 +38,7 @@ public final class HexFormattingConverter extends LogEventPatternConverter {
@@ -18,8 +18,8 @@ index b4d0b7ecd56ab952319946854168c1299cb0b1be..8054b8da82ca455d23b26a53cc568160
public static final LegacyComponentSerializer SERIALIZER = LegacyComponentSerializer.builder()
.hexColors()
.flattener(PaperAdventure.FLATTENER)
-@@ -48,6 +49,8 @@ public final class HexFormattingConverter extends LogEventPatternConverter {
- private static final String RGB_ANSI = "\u001B[38;2;%d;%d;%dm";
+@@ -49,6 +50,8 @@ public final class HexFormattingConverter extends LogEventPatternConverter {
+ private static final String RESET_RGB_ANSI = ANSI_RESET + RGB_ANSI;
private static final Pattern NAMED_PATTERN = Pattern.compile(COLOR_CHAR + "[0-9a-fk-orA-FK-OR]");
private static final Pattern RGB_PATTERN = Pattern.compile(COLOR_CHAR + "#([0-9a-fA-F]){6}");
+ private static final Pattern LEGACY_RGB_PATTERN = Pattern.compile(LEGACY_CHAR + "x((" + LEGACY_CHAR + "[0-9a-fA-F]){6})"); // Purpur
@@ -27,7 +27,7 @@ index b4d0b7ecd56ab952319946854168c1299cb0b1be..8054b8da82ca455d23b26a53cc568160
private static final String[] RGB_ANSI_CODES = new String[]{
formatHexAnsi(NamedTextColor.BLACK), // Black §0
-@@ -133,7 +136,21 @@ public final class HexFormattingConverter extends LogEventPatternConverter {
+@@ -134,7 +137,21 @@ public final class HexFormattingConverter extends LogEventPatternConverter {
}
private static String convertRGBColors(final String input) {
@@ -50,7 +50,7 @@ index b4d0b7ecd56ab952319946854168c1299cb0b1be..8054b8da82ca455d23b26a53cc568160
final int hex = Integer.decode(result.group().substring(1));
return formatHexAnsi(hex);
});
-@@ -151,10 +168,11 @@ public final class HexFormattingConverter extends LogEventPatternConverter {
+@@ -152,10 +169,11 @@ public final class HexFormattingConverter extends LogEventPatternConverter {
}
private static String stripRGBColors(final String input) {
diff --git a/patches/server/0099-Set-multiple-Team-settings-at-once.patch b/patches/server/0097-Set-multiple-Team-settings-at-once.patch
similarity index 100%
rename from patches/server/0099-Set-multiple-Team-settings-at-once.patch
rename to patches/server/0097-Set-multiple-Team-settings-at-once.patch
diff --git a/patches/server/0100-Smooth-Teleports.patch b/patches/server/0098-Smooth-Teleports.patch
similarity index 92%
rename from patches/server/0100-Smooth-Teleports.patch
rename to patches/server/0098-Smooth-Teleports.patch
index 7c458047..f5ac2206 100644
--- a/patches/server/0100-Smooth-Teleports.patch
+++ b/patches/server/0098-Smooth-Teleports.patch
@@ -9,7 +9,7 @@ Original license: MIT
Original project: https://github.com/Cryptite/Slice
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index d1a6a21bfe93882e23a0bad742abd6fedcac29d0..bbe39f0fab243c763ee9c9a0629d17bdb167cd72 100644
+index ccac0539787d05b5e71abe98ab611e976ca56802..1b6f2f6f909dd862745c1e2f4bb6d9ce8db6eb74 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -266,6 +266,7 @@ public class ServerPlayer extends Player {
@@ -21,7 +21,7 @@ index d1a6a21bfe93882e23a0bad742abd6fedcac29d0..bbe39f0fab243c763ee9c9a0629d17bd
public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile, @Nullable ProfilePublicKey publicKey) {
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile, publicKey);
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index 1b0e26afd4cbc8daec655513fe78933abb4a2151..790b25582f4fe78a681c0bf8281892e7545af1d6 100644
+index 7b1ba24e2c541d1271335c95e440102bbd46e1fb..d92846ccf7666e93a969898b004685d829295b62 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -970,12 +970,12 @@ public abstract class PlayerList {
@@ -40,10 +40,10 @@ index 1b0e26afd4cbc8daec655513fe78933abb4a2151..790b25582f4fe78a681c0bf8281892e7
// entityplayer1.connection.teleport(entityplayer1.getX(), entityplayer1.getY(), entityplayer1.getZ(), entityplayer1.getYRot(), entityplayer1.getXRot());
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index cfbabdcade291b2fcdbe83206b060b8762f50f41..f81c16884f8e517ceccb832bdff8840f24d52982 100644
+index d26b213c775c73c3f269aa6ba28825756ee7d756..83bfc375dfa1fa8a4ac47cff498a394f5e00e12e 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1212,6 +1212,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1216,6 +1216,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper end
}
diff --git a/patches/server/0101-Unfreeze-MappedRegistry.patch b/patches/server/0099-Unfreeze-MappedRegistry.patch
similarity index 100%
rename from patches/server/0101-Unfreeze-MappedRegistry.patch
rename to patches/server/0099-Unfreeze-MappedRegistry.patch
diff --git a/patches/server/0102-Don-t-double-save-the-json-lists.patch b/patches/server/0100-Don-t-double-save-the-json-lists.patch
similarity index 100%
rename from patches/server/0102-Don-t-double-save-the-json-lists.patch
rename to patches/server/0100-Don-t-double-save-the-json-lists.patch
diff --git a/patches/server/0103-Don-t-wander-into-non-ticking-chunks.patch b/patches/server/0101-Don-t-wander-into-non-ticking-chunks.patch
similarity index 100%
rename from patches/server/0103-Don-t-wander-into-non-ticking-chunks.patch
rename to patches/server/0101-Don-t-wander-into-non-ticking-chunks.patch
diff --git a/patches/server/0104-Optimize-CraftServer.getWorld-UUID.patch b/patches/server/0102-Optimize-CraftServer.getWorld-UUID.patch
similarity index 96%
rename from patches/server/0104-Optimize-CraftServer.getWorld-UUID.patch
rename to patches/server/0102-Optimize-CraftServer.getWorld-UUID.patch
index 9a457b13..7dba09a6 100644
--- a/patches/server/0104-Optimize-CraftServer.getWorld-UUID.patch
+++ b/patches/server/0102-Optimize-CraftServer.getWorld-UUID.patch
@@ -7,7 +7,7 @@ Original license: GPLv3
Original project: https://github.com/MultiPaper/MultiPaper
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index d2478bda9e8395a8730a3416ce3133782ab9a8e9..cc9c5eecc4ef1d5dc4e814ad89a40a34f4d48a69 100644
+index 75dd4849f87689489cacdc90757f23a6ebe1cb12..f77c36ee502cc41b908e50368d0a55c198c3eefd 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -45,6 +45,8 @@ import java.util.logging.Level;
diff --git a/patches/server/0105-Configurable-mobs-from-spawners-picking-up-loot.patch b/patches/server/0103-Configurable-mobs-from-spawners-picking-up-loot.patch
similarity index 81%
rename from patches/server/0105-Configurable-mobs-from-spawners-picking-up-loot.patch
rename to patches/server/0103-Configurable-mobs-from-spawners-picking-up-loot.patch
index 238974bc..af5c0784 100644
--- a/patches/server/0105-Configurable-mobs-from-spawners-picking-up-loot.patch
+++ b/patches/server/0103-Configurable-mobs-from-spawners-picking-up-loot.patch
@@ -5,26 +5,25 @@ Subject: [PATCH] Configurable mobs from spawners picking up loot
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
-index 3cd738e0f8bd1fdb2ec5203f8f73daad1e230205..24e2c81fe0de5eb2e9a17554d81cfd14a36f90c4 100644
+index 523375618efaeca8f7cb51216a9cc4b48dc6b0d7..db7901672c113a85b3c7cfb32f5051ade4a9e492 100644
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
-@@ -252,4 +252,15 @@ public class MiraiConfig {
- "standing on a 1x1 block while being stuck.");
+@@ -251,4 +251,15 @@ public class MiraiConfig {
+ "Whether or not villagers should be lobotomized when",
+ "standing on a 1x1 block while being stuck.");
}
-
++
+ public static boolean skeletonPickupLoot;
+ public static boolean zombiePickupLoot;
+ private static void spawnersPickupLoot() {
+ skeletonPickupLoot = getBoolean("disable-spawners-pick-up-items.skeleton", false,
-+ "Whether or not skeletons from spawners should be able to",
-+ "pick up items on the ground.");
++ "Whether or not skeletons from spawners should be able to",
++ "pick up items on the ground.");
+ zombiePickupLoot = getBoolean("disable-spawners-pick-up-items.zombie", false,
-+ "Whether or not zombies from spawners should be able to",
-+ "pick up items on the ground.");
++ "Whether or not zombies from spawners should be able to",
++ "pick up items on the ground.");
+ }
-+
}
-\ No newline at end of file
diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
index b8abee145fc92faddef98da913eca7715b6bfc03..4f6d0ffb03a6490494327e9cc0cdf5f079075537 100644
--- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
@@ -45,10 +44,10 @@ index b8abee145fc92faddef98da913eca7715b6bfc03..4f6d0ffb03a6490494327e9cc0cdf5f0
LocalDate localdate = LocalDate.now();
int i = localdate.get(ChronoField.DAY_OF_MONTH);
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
-index 97b3082dc020043fa38d9e5e4591102f97519ed3..7b74e2aade9a0b5fb41c48ee6affcb7a3d544ad8 100644
+index e0e16d3b4ba0afc3cfc66b93ecf5f889599f48dd..3093e55473696667056ea93b48f76f8e83a4c551 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
-@@ -514,7 +514,13 @@ public class Zombie extends Monster {
+@@ -513,7 +513,13 @@ public class Zombie extends Monster {
Object object = super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt);
float f = difficulty.getSpecialMultiplier();
diff --git a/patches/server/0106-Async-Pathfinding.patch b/patches/server/0104-Async-Pathfinding.patch
similarity index 99%
rename from patches/server/0106-Async-Pathfinding.patch
rename to patches/server/0104-Async-Pathfinding.patch
index 60339b9d..15c6a448 100644
--- a/patches/server/0106-Async-Pathfinding.patch
+++ b/patches/server/0104-Async-Pathfinding.patch
@@ -8,27 +8,26 @@ This patch was ported downstream from the Petal fork.
Makes most pathfinding-related work happen asynchronously
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
-index 24e2c81fe0de5eb2e9a17554d81cfd14a36f90c4..8dffa2fadd615cfd59cc85630b4a1454c87e5aa9 100644
+index db7901672c113a85b3c7cfb32f5051ade4a9e492..5e667ac09cb3d8ec08f829704953926da50c650d 100644
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
-@@ -263,4 +263,16 @@ public class MiraiConfig {
- "pick up items on the ground.");
+@@ -262,4 +262,16 @@ public class MiraiConfig {
+ "Whether or not zombies from spawners should be able to",
+ "pick up items on the ground.");
}
-
++
+ public static boolean enableAsyncPathfinding;
+ public static boolean enableAsyncPathfindingInitialized;
+ private static void asyncPathfinding() {
+ boolean temp = getBoolean("enable-async-pathfinding", true,
-+ "Whether or not async pathfinding should be enabled.",
-+ "You may encounter issues with water interactions.");
++ "Whether or not async pathfinding should be enabled.",
++ "You may encounter issues with water interactions.");
+ if (!enableAsyncPathfindingInitialized) {
+ enableAsyncPathfindingInitialized = true;
+ enableAsyncPathfinding = temp;
+ }
+ }
-+
}
-\ No newline at end of file
diff --git a/src/main/java/dev/etil/mirai/path/AsyncPath.java b/src/main/java/dev/etil/mirai/path/AsyncPath.java
new file mode 100644
index 0000000000000000000000000000000000000000..2ecf19f9623a4c6c99a7b97e950387e8b9c7757a
@@ -824,7 +823,7 @@ index f0248d839255763005ba333b0bfcf691407fb69b..dd627d720320b09ac909a19646f50435
@Override
diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java
-index c1781c92ff59f0c9eb47cbbef01e3252c5e1a1bf..3803d5b79b4bb99d1a87c1af4d7e20ae4128a416 100644
+index 1d9d502e071324f50c8b7655790091c0c55263ba..6ae82fe9c7e0ba8755ded15508224ee02b32304d 100644
--- a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java
+++ b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java
@@ -150,6 +150,9 @@ public abstract class PathNavigation {
diff --git a/patches/server/0107-Multithreaded-Tracker.patch b/patches/server/0105-Multithreaded-Tracker.patch
similarity index 96%
rename from patches/server/0107-Multithreaded-Tracker.patch
rename to patches/server/0105-Multithreaded-Tracker.patch
index e18e7acd..8ec981a5 100644
--- a/patches/server/0107-Multithreaded-Tracker.patch
+++ b/patches/server/0105-Multithreaded-Tracker.patch
@@ -13,27 +13,26 @@ Some things are too unsafe to run off the main thread so we don't attempt to do
that. This multithreaded tracker remains accurate, non-breaking and fast.
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
-index 8dffa2fadd615cfd59cc85630b4a1454c87e5aa9..4c8dd8b1a3355578f067d547ab1d0151314f7ddf 100644
+index 5e667ac09cb3d8ec08f829704953926da50c650d..a7b3a543251a34a733958c59956028fb1ed8fd38 100644
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
-@@ -275,4 +275,16 @@ public class MiraiConfig {
+@@ -274,4 +274,16 @@ public class MiraiConfig {
+ enableAsyncPathfinding = temp;
}
}
-
++
+ public static boolean enableAsyncEntityTracker;
+ public static boolean enableAsyncEntityTrackerInitialized;
+ private static void asyncEntityTracker() {
+ boolean temp = getBoolean("enable-async-entity-tracker", true,
-+ "Whether or not async entity tracking should be enabled.",
-+ "You may encounter issues with NPCs.");
++ "Whether or not async entity tracking should be enabled.",
++ "You may encounter issues with NPCs.");
+ if (!enableAsyncEntityTrackerInitialized) {
+ enableAsyncEntityTrackerInitialized = true;
+ enableAsyncEntityTracker = temp;
+ }
+ }
-+
}
-\ No newline at end of file
diff --git a/src/main/java/dev/etil/mirai/tracker/MultithreadedTracker.java b/src/main/java/dev/etil/mirai/tracker/MultithreadedTracker.java
new file mode 100644
index 0000000000000000000000000000000000000000..613bd104762755395e86101decaf1cb7dc74d2ad
@@ -222,7 +221,7 @@ index 209c4f0b25470bff7278c0a8dcd30576900b9933..603eb6ca629796cfd00c831a509fb71a
public ChunkHolder.FullChunkStatus status;
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
-index c01c22b6fda9e36a2336a992c760b813b71469ce..9f0fe4672abcfe417fd5f160ca497ad323434d5f 100644
+index 76795b9d30ddb1f938d86b40bcac54c88364dde5..0a1f27af53a65a88519a4b003d3088d9031fb481 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -1237,8 +1237,36 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -318,10 +317,10 @@ index ca42c2642a729b90d22b968af7258f3aee72e14b..c4d6d5be09c788bbc062c50d8547538e
public boolean visible = true;
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
-index 3a0ff721e01e5bb2b2d05459019f8bba5f5d0737..52697f4907d63b975c2d5045f7d11bc76dd6b78d 100644
+index 5a26a683fa5c896584f15effd97225775dc8d8b8..05d9a27c156f8c70f8bdd279227d65589e10a4b5 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
-@@ -266,14 +266,18 @@ public class ServerEntity {
+@@ -267,14 +267,18 @@ public class ServerEntity {
public void removePairing(ServerPlayer player) {
this.entity.stopSeenByPlayer(player);
@@ -342,7 +341,7 @@ index 3a0ff721e01e5bb2b2d05459019f8bba5f5d0737..52697f4907d63b975c2d5045f7d11bc7
this.entity.startSeenByPlayer(player);
}
-@@ -381,19 +385,30 @@ public class ServerEntity {
+@@ -382,19 +386,30 @@ public class ServerEntity {
SynchedEntityData datawatcher = this.entity.getEntityData();
if (datawatcher.isDirty()) {
diff --git a/settings.gradle.kts b/settings.gradle.kts
index d84af5c4..4b21e43d 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,7 +1,7 @@
pluginManagement {
repositories {
gradlePluginPortal()
- maven("https://papermc.io/repo/repository/maven-public/")
+ maven("https://repo.papermc.io/repository/maven-public/")
}
}