diff --git a/.github/workflows/ver1193.yml b/.github/workflows/build-1194.yml
similarity index 81%
rename from .github/workflows/ver1193.yml
rename to .github/workflows/build-1194.yml
index 25290f17..408bd200 100644
--- a/.github/workflows/ver1193.yml
+++ b/.github/workflows/build-1194.yml
@@ -1,4 +1,4 @@
-name: Build Leaf 1.19.3
+name: Build Leaf 1.19.4
on: [ push, pull_request ]
jobs:
build:
@@ -9,7 +9,7 @@ jobs:
- name: Set up JDK
uses: graalvm/setup-graalvm@v1
with:
- version: "latest"
+ version: latest
java-version: 19
github-token: "${{ secrets.GITHUB_TOKEN }}"
cache: gradle
@@ -22,17 +22,18 @@ jobs:
- name: Create ReobfPaperclipJar
run: ./gradlew -Dorg.gradle.jvmargs="-Dgraal.CompilerConfiguration=enterprise -Dgraal.UsePriorityInlining=true -Dgraal.Vectorization=true -Dgraal.OptDuplication=true --add-modules jdk.incubator.vector" createReobfPaperclipJar --stacktrace --no-daemon
- name: Rename Paperclip Jar
- run: mv build/libs/leaf-paperclip-1.19.3-R0.1-SNAPSHOT-reobf.jar ./leaf-1.19.3.jar
+ run: mv build/libs/leaf-paperclip-1.19.4-R0.1-SNAPSHOT-reobf.jar ./leaf-1.19.4.jar
- name: Upload Leaf
uses: actions/upload-artifact@v3
with:
name: Leaf
- path: ./leaf-1.19.3.jar
+ path: ./leaf-1.19.4.jar
- name: Release Artifacts
+ if: github.ref_name == 'ver/1.19.4'
uses: marvinpinto/action-automatic-releases@latest
with:
- title: "Leaf 1.19.3"
- automatic_release_tag: "ver-1.19.3"
+ title: "Leaf 1.19.4"
+ automatic_release_tag: "ver-1.19.4"
repo_token: "${{ secrets.GITHUB_TOKEN }}"
- files: "./leaf-1.19.3.jar"
+ files: "./leaf-1.19.4.jar"
prerelease: false
diff --git a/README.md b/README.md
index 9195c3a0..5f92c9be 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,8 @@
## Leaf
-[](https://github.com/Winds-Studio/Leaf/actions)
-[](LICENSE)
+[](https://github.com/Winds-Studio/Leaf/releases)
+[](LICENSE)
Leaf is a drop-in replacement designed for removing some checks, customized, and high-performance built on top of Gale with optimization from other forks.
@@ -27,7 +27,7 @@
## Downloads
-The Reobf JAR can be obtained in the [Actions](https://github.com/Dreeam-qwq/Leaf/actions) or [Releases](https://github.com/Dreeam-qwq/Leaf/releases)
+The Reobf JAR can be obtained in the [Actions](https://github.com/Winds-Studio/Leaf/actions) or [Releases](https://github.com/Winds-Studio/Leaf/releases)
## Building
@@ -40,7 +40,7 @@ Building a Paperclip JAR for distribution:
## License
-[](LICENSE)
+[](LICENSE)
All patches are licensed under the MIT license, unless otherwise noted in the patch headers.
diff --git a/build.gradle.kts b/build.gradle.kts
index 263b0282..1280d716 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -3,7 +3,7 @@ import io.papermc.paperweight.util.constants.*
plugins {
java
`maven-publish`
- id("com.github.johnrengelman.shadow") version "8.1.0" apply false
+ id("com.github.johnrengelman.shadow") version "8.1.1" apply false
id("io.papermc.paperweight.patcher") version "1.5.4-SNAPSHOT"
}
@@ -19,7 +19,7 @@ repositories {
dependencies {
remapper("net.fabricmc:tiny-remapper:0.8.6:fat")
decompiler("org.quiltmc:quiltflower:1.9.0")
- paperclip("io.papermc:paperclip:3.0.3-SNAPSHOT")
+ paperclip("io.papermc:paperclip:3.0.4-SNAPSHOT")
}
subprojects {
diff --git a/gradle.properties b/gradle.properties
index 699e0c67..329a74a8 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,7 +1,7 @@
group = org.dreeam.leaf
-version = 1.19.3-R0.1-SNAPSHOT
+version = 1.19.4-R0.1-SNAPSHOT
-galeCommit = fea609a45aa6337c29d5db00c4262843691559f5
+galeCommit = 43611dc08655f8b54b42256c0cfd6cbf945325b2
org.gradle.caching = true
org.gradle.parallel = true
diff --git a/patches/api/0002-Bump-Dependencies.patch b/patches/api/0002-Bump-Dependencies.patch
index aa8ac639..05de19b4 100644
--- a/patches/api/0002-Bump-Dependencies.patch
+++ b/patches/api/0002-Bump-Dependencies.patch
@@ -5,20 +5,21 @@ Subject: [PATCH] Bump Dependencies
diff --git a/build.gradle.kts b/build.gradle.kts
-index 1f8ce35cbc0802917d6fb166fe276a22b03835ed..c9c032ff0ff898cd28de231843c2b98f9843cb8b 100644
+index 8af9efe2dbc9563a2c327002cf05c5d2fd8fc68b..475761fc9ee0ed5c3c7f74fef46b459dd26e3f01 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
-@@ -24,14 +24,16 @@ configurations.api {
+@@ -24,15 +24,17 @@ configurations.api {
dependencies {
// api dependencies are listed transitively to API consumers
api("com.google.guava:guava:31.1-jre")
- api("com.google.code.gson:gson:2.10")
-- api("net.md-5:bungeecord-chat:1.16-R0.4-deprecated+build.6") // Paper
+- api("net.md-5:bungeecord-chat:1.16-R0.4-deprecated+build.9") // Paper
+ // Leaf start - Bump Dependencies
+ api("com.google.code.gson:gson:2.10.1")
+ api("net.md-5:bungeecord-chat:1.19-R0.1-SNAPSHOT") // Paper
+ // Leaf end
api("org.yaml:snakeyaml:1.33")
+ api("org.joml:joml:1.10.5")
// Paper start
api("com.googlecode.json-simple:json-simple:1.1.1") {
isTransitive = false // includes junit
@@ -28,7 +29,7 @@ index 1f8ce35cbc0802917d6fb166fe276a22b03835ed..c9c032ff0ff898cd28de231843c2b98f
apiAndDocs(platform("net.kyori:adventure-bom:$adventureVersion"))
apiAndDocs("net.kyori:adventure-api")
apiAndDocs("net.kyori:adventure-text-minimessage")
-@@ -39,33 +41,35 @@ dependencies {
+@@ -40,32 +42,34 @@ dependencies {
apiAndDocs("net.kyori:adventure-text-serializer-legacy")
apiAndDocs("net.kyori:adventure-text-serializer-plain")
apiAndDocs("net.kyori:adventure-text-logger-slf4j")
@@ -38,13 +39,11 @@ index 1f8ce35cbc0802917d6fb166fe276a22b03835ed..c9c032ff0ff898cd28de231843c2b98f
+ api("org.apache.logging.log4j:log4j-api:2.20.0")
+ api("org.slf4j:slf4j-api:2.0.6")
-- implementation("org.ow2.asm:asm:9.2")
-- implementation("org.ow2.asm:asm-commons:9.2")
-+ implementation("org.ow2.asm:asm:9.4")
-+ implementation("org.ow2.asm:asm-commons:9.4")
+ implementation("org.ow2.asm:asm:9.4")
+ implementation("org.ow2.asm:asm-commons:9.4")
// Paper end
-- compileOnly("org.apache.maven:maven-resolver-provider:3.8.5")
+- api("org.apache.maven:maven-resolver-provider:3.8.5") // Paper, expose
- compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3")
- compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3")
- compileOnly("com.google.code.findbugs:jsr305:1.3.9") // Paper
@@ -70,14 +69,12 @@ index 1f8ce35cbc0802917d6fb166fe276a22b03835ed..c9c032ff0ff898cd28de231843c2b98f
testImplementation("org.apache.commons:commons-lang3:3.12.0")
testImplementation("junit:junit:4.13.2")
- testImplementation("org.hamcrest:hamcrest-library:1.3")
-- testImplementation("org.ow2.asm:asm-tree:9.3")
+ testImplementation("org.hamcrest:hamcrest-library:2.2")
-+ testImplementation("org.ow2.asm:asm-tree:9.4")
+ // Leaf end
+ testImplementation("org.ow2.asm:asm-tree:9.4")
}
- configure {
-@@ -111,9 +115,11 @@ tasks.withType {
+@@ -112,9 +116,11 @@ tasks.withType {
options.use()
options.isDocFilesSubDirs = true
options.links(
@@ -90,8 +87,8 @@ index 1f8ce35cbc0802917d6fb166fe276a22b03835ed..c9c032ff0ff898cd28de231843c2b98f
+ // Leaf end
// Paper start
//"https://javadoc.io/doc/net.md-5/bungeecord-chat/1.16-R0.4/", // don't link to bungee chat
- "https://jd.adventure.kyori.net/api/$adventureVersion/",
-@@ -153,6 +159,9 @@ val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks.
+ "https://jd.advntr.dev/api/$adventureVersion/",
+@@ -154,6 +160,9 @@ val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks.
jarToScan.set(tasks.jar.flatMap { it.archiveFile })
classpath.from(configurations.compileClasspath)
}
diff --git a/patches/api/0004-Purpur-ChatColor-conveniences.patch b/patches/api/0004-Purpur-ChatColor-conveniences.patch
index 313dec79..894d63a1 100644
--- a/patches/api/0004-Purpur-ChatColor-conveniences.patch
+++ b/patches/api/0004-Purpur-ChatColor-conveniences.patch
@@ -7,7 +7,7 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/org/bukkit/ChatColor.java b/src/main/java/org/bukkit/ChatColor.java
-index f6eb30f53dad684f156102cf7147b2f00c82c71e..f1239a2618b08fa92e0e20692d1c3d20d1558502 100644
+index e3f185dc982d1c38195a4e01ddd485c13ffa58c0..98c2f73ee5c921dab506fc933a0acff400201537 100644
--- a/src/main/java/org/bukkit/ChatColor.java
+++ b/src/main/java/org/bukkit/ChatColor.java
@@ -3,6 +3,7 @@ package org.bukkit;
@@ -18,7 +18,7 @@ index f6eb30f53dad684f156102cf7147b2f00c82c71e..f1239a2618b08fa92e0e20692d1c3d20
import java.util.regex.Pattern;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
-@@ -413,4 +414,77 @@ public enum ChatColor {
+@@ -454,4 +455,77 @@ public enum ChatColor {
BY_CHAR.put(color.code, color);
}
}
diff --git a/patches/api/0006-Purpur-Lobotomize-stuck-villagers.patch b/patches/api/0005-Purpur-Lobotomize-stuck-villagers.patch
similarity index 100%
rename from patches/api/0006-Purpur-Lobotomize-stuck-villagers.patch
rename to patches/api/0005-Purpur-Lobotomize-stuck-villagers.patch
diff --git a/patches/api/0005-Purpur-Spigot-Improve-output-of-plugins-command.patch b/patches/api/0005-Purpur-Spigot-Improve-output-of-plugins-command.patch
deleted file mode 100644
index 275bb6ed..00000000
--- a/patches/api/0005-Purpur-Spigot-Improve-output-of-plugins-command.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Parker Hawke
-Date: Sat, 27 Jun 2020 18:43:37 -0400
-Subject: [PATCH] Purpur: Spigot - Improve output of plugins command
-
-Original license: MIT
-Original project: https://github.com/PurpurMC/Purpur
-
-Co-authored-by: Oharass
-
-diff --git a/src/main/java/org/bukkit/command/defaults/PluginsCommand.java b/src/main/java/org/bukkit/command/defaults/PluginsCommand.java
-index 1aa58c59e1e8738bbdc77752885ff3b18b29de42..46525191653e4ac0e0366c0357f368c0b709f20d 100644
---- a/src/main/java/org/bukkit/command/defaults/PluginsCommand.java
-+++ b/src/main/java/org/bukkit/command/defaults/PluginsCommand.java
-@@ -11,6 +11,14 @@ import org.bukkit.ChatColor;
- import org.bukkit.command.CommandSender;
- import org.bukkit.plugin.Plugin;
- import org.jetbrains.annotations.NotNull;
-+// Spigot start
-+import net.kyori.adventure.text.Component;
-+import net.kyori.adventure.text.TextComponent;
-+import net.kyori.adventure.text.format.NamedTextColor;
-+import net.kyori.adventure.text.event.ClickEvent;
-+import org.bukkit.entity.Player;
-+import org.bukkit.plugin.PluginDescriptionFile;
-+// Spigot end
-
- public class PluginsCommand extends BukkitCommand {
- public PluginsCommand(@NotNull String name) {
-@@ -25,7 +33,13 @@ public class PluginsCommand extends BukkitCommand {
- public boolean execute(@NotNull CommandSender sender, @NotNull String currentAlias, @NotNull String[] args) {
- if (!testPermission(sender)) return true;
-
-- sender.sendMessage("Plugins " + getPluginList());
-+ // Spigot start
-+ if (sender instanceof Player && sender.hasPermission("bukkit.command.version")) {
-+ sender.sendMessage(getPluginListSpigot());
-+ } else {
-+ sender.sendMessage("Plugins " + getPluginList());
-+ }
-+ // Spigot end
- return true;
- }
-
-@@ -71,4 +85,73 @@ public class PluginsCommand extends BukkitCommand {
- // Paper end
- }
-
-+ // Spigot start
-+ @NotNull
-+ private TextComponent getPluginListSpigot() {
-+ Plugin[] plugins = Bukkit.getPluginManager().getPlugins();
-+ TextComponent.Builder builder = Component.text();
-+ builder.append(Component.text("Plugins (" + plugins.length + "): "));
-+
-+ int index = 0;
-+ for (Plugin plugin : plugins) {
-+ if (index++ > 0) {
-+ builder.append(Component.text(", ", NamedTextColor.WHITE));
-+ }
-+
-+ // Event components
-+ PluginDescriptionFile description = plugin.getDescription();
-+ TextComponent.Builder hover = Component.text();
-+ hover.append(Component.text("Version: ", NamedTextColor.WHITE)).append(Component.text(description.getVersion(), NamedTextColor.GREEN));
-+
-+ if (description.getDescription() != null) {
-+ hover.append(Component.newline())
-+ .append(Component.text("Description: ", NamedTextColor.WHITE))
-+ .append(Component.text(description.getDescription(), NamedTextColor.GREEN));
-+ }
-+
-+ if (description.getWebsite() != null) {
-+ hover.append(Component.newline())
-+ .append(Component.text("Website: ", NamedTextColor.WHITE))
-+ .append(Component.text(description.getWebsite(), NamedTextColor.GREEN));
-+ }
-+
-+ if (!description.getAuthors().isEmpty()) {
-+ hover.append(Component.newline());
-+ if (description.getAuthors().size() == 1) {
-+ hover.append(Component.text("Author: "));
-+ } else {
-+ hover.append(Component.text("Authors: "));
-+ }
-+
-+ hover.append(getAuthors(description));
-+ }
-+
-+ // Plugin list entry
-+ builder.append(Component.text(plugin.getDescription().getName(), plugin.isEnabled() ? NamedTextColor.GREEN : NamedTextColor.RED)
-+ .hoverEvent(hover.build()).clickEvent(ClickEvent.suggestCommand("/version " + description.getName())));
-+
-+ if (plugin.getDescription().getProvides().size() > 0) {
-+ builder.append(Component.text(" (", NamedTextColor.WHITE)).append(Component.text(String.join(", ", plugin.getDescription().getProvides()))).append(Component.text(")"));
-+ }
-+ }
-+
-+ return builder.build();
-+ }
-+
-+ @NotNull
-+ private TextComponent getAuthors(@NotNull final PluginDescriptionFile description) {
-+ TextComponent.Builder builder = Component.text();
-+ List authors = description.getAuthors();
-+
-+ for (int i = 0; i < authors.size(); i++) {
-+ if (i > 0) {
-+ builder.append(Component.text(i < authors.size() - 1 ? ", " : " and ", NamedTextColor.WHITE));
-+ }
-+
-+ builder.append(Component.text(authors.get(i), NamedTextColor.GREEN));
-+ }
-+
-+ return builder.build();
-+ }
-+ // Spigot end
- }
diff --git a/patches/api/0007-KTP-Optimize-Spigot-event-bus.patch b/patches/api/0006-KTP-Optimize-Spigot-event-bus.patch
similarity index 94%
rename from patches/api/0007-KTP-Optimize-Spigot-event-bus.patch
rename to patches/api/0006-KTP-Optimize-Spigot-event-bus.patch
index 59b71ac3..03afb477 100644
--- a/patches/api/0007-KTP-Optimize-Spigot-event-bus.patch
+++ b/patches/api/0006-KTP-Optimize-Spigot-event-bus.patch
@@ -24,10 +24,10 @@ index 3b3d9642a8d63798dc28f2f8df77f0466451cbff..8d3605f25e97a375971705c737bc7bac
}
}
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
-index 7903554958f567c7b566a47fa4b49852a837898e..730394fd53fdaa90133ee399f86e76da8ccc08e6 100644
+index 623c683563a5fb5dcf3b8478873ef2a27307b289..e7e7a4b5ed1a1ae7b4f711daec51003514908d86 100644
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
-@@ -662,11 +662,15 @@ public final class SimplePluginManager implements PluginManager {
+@@ -640,11 +640,15 @@ public final class SimplePluginManager implements PluginManager {
// Gale end - JettPack - skip events without listeners
// Paper - replace callEvent by merging to below method
diff --git a/patches/api/0008-KeYi-Player-Skull-API.patch b/patches/api/0007-KeYi-Player-Skull-API.patch
similarity index 73%
rename from patches/api/0008-KeYi-Player-Skull-API.patch
rename to patches/api/0007-KeYi-Player-Skull-API.patch
index 77ec6a22..407ad7a8 100644
--- a/patches/api/0008-KeYi-Player-Skull-API.patch
+++ b/patches/api/0007-KeYi-Player-Skull-API.patch
@@ -7,20 +7,20 @@ Original license: MIT
Original project: https://github.com/KeYiMC/KeYi
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 6acdd0c9a6ea65b06ad5dad4758efb64884daaf3..49b7960390cef1f2e00105ed07186608376b4ddf 100644
+index 15c57f3e4e1c023e0f3168ce03dd770f006cf27b..9b1390c60bb8a5777a93676ad878b3bee1e8fd4e 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -3,6 +3,9 @@ package org.bukkit.entity;
- import java.net.InetSocketAddress;
+@@ -4,7 +4,8 @@ import java.net.InetSocketAddress;
import java.util.Collection;
+ import java.util.Map;
import java.util.UUID;
+-
+import java.util.concurrent.CompletableFuture;
-+import java.util.concurrent.Future;
-+
- import com.destroystokyo.paper.ClientOption; // Paper
- import com.destroystokyo.paper.Title; // Paper
- import net.kyori.adventure.text.Component;
-@@ -3010,4 +3013,23 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
++import net.kyori.adventure.text.Component;
+ import org.bukkit.DyeColor;
+ import org.bukkit.Effect;
+ import org.bukkit.GameMode;
+@@ -3012,4 +3013,23 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@Override
Spigot spigot();
// Spigot end
diff --git a/patches/api/0009-Slice-Smooth-Teleports.patch b/patches/api/0008-Slice-Smooth-Teleports.patch
similarity index 89%
rename from patches/api/0009-Slice-Smooth-Teleports.patch
rename to patches/api/0008-Slice-Smooth-Teleports.patch
index b3237d39..94d98a04 100644
--- a/patches/api/0009-Slice-Smooth-Teleports.patch
+++ b/patches/api/0008-Slice-Smooth-Teleports.patch
@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/Cryptite/Slice
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 49b7960390cef1f2e00105ed07186608376b4ddf..04da082de862bef1d345266fc763d480e3bed0bc 100644
+index 9b1390c60bb8a5777a93676ad878b3bee1e8fd4e..cc2be9366a671112e30578e5a470bdc4790e05ed 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2873,6 +2873,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2895,6 +2895,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
String getClientBrandName();
// Paper end
diff --git a/patches/api/0010-Pufferfish-Sentry.patch b/patches/api/0009-Pufferfish-Sentry.patch
similarity index 90%
rename from patches/api/0010-Pufferfish-Sentry.patch
rename to patches/api/0009-Pufferfish-Sentry.patch
index 7e4db65f..b1be29d2 100644
--- a/patches/api/0010-Pufferfish-Sentry.patch
+++ b/patches/api/0009-Pufferfish-Sentry.patch
@@ -7,10 +7,10 @@ Original license: GPL v3
Original project: https://github.com/pufferfish-gg/Pufferfish
diff --git a/build.gradle.kts b/build.gradle.kts
-index 359050a6f125e16787b4f712aaea463d0014dc63..1b61f96fa04c30b7e25b0dbb24a602def228175c 100644
+index 475761fc9ee0ed5c3c7f74fef46b459dd26e3f01..fb4e4e4fa637032f4eb315d27a69c297bc0a9d52 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
-@@ -44,6 +44,7 @@ dependencies {
+@@ -45,6 +45,7 @@ dependencies {
// Leaf start - Bump Dependencies
api("org.apache.logging.log4j:log4j-api:2.20.0")
api("org.slf4j:slf4j-api:2.0.6")
@@ -186,10 +186,10 @@ index 0000000000000000000000000000000000000000..10310fdd53de28efb8a8250f6d3b0c8e
+ }
+}
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
-index 730394fd53fdaa90133ee399f86e76da8ccc08e6..17b8d42f8e2897eb019ef12ad772ed0d505f7e84 100644
+index e7e7a4b5ed1a1ae7b4f711daec51003514908d86..f81a3ac08a80d1a3282844b9e3d9e64e2eed34d9 100644
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
-@@ -625,7 +625,9 @@ public final class SimplePluginManager implements PluginManager {
+@@ -584,7 +584,9 @@ public final class SimplePluginManager implements PluginManager {
// Paper start
private void handlePluginException(String msg, Throwable ex, Plugin plugin) {
@@ -199,7 +199,7 @@ index 730394fd53fdaa90133ee399f86e76da8ccc08e6..17b8d42f8e2897eb019ef12ad772ed0d
callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerPluginEnableDisableException(msg, ex, plugin)));
}
// Paper end
-@@ -693,9 +695,11 @@ public final class SimplePluginManager implements PluginManager {
+@@ -671,9 +673,11 @@ public final class SimplePluginManager implements PluginManager {
));
}
} catch (Throwable ex) {
@@ -212,20 +212,24 @@ index 730394fd53fdaa90133ee399f86e76da8ccc08e6..17b8d42f8e2897eb019ef12ad772ed0d
callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerEventException(msg, ex, registration.getPlugin(), registration.getListener(), event)));
}
diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
-index 7e5149a21b6747f64425a277c142e69f0ef43b3f..bf93183aa76af005d5daf8cf533f908d535166e8 100644
+index eaefbb00e9993d54906cc8cf35cf753c0d6c7707..301e82369603f3dd6e6c1bd380da4bacacd7ef6c 100644
--- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
+++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
-@@ -370,7 +370,9 @@ public final class JavaPluginLoader implements PluginLoader {
+@@ -336,7 +336,13 @@ public final class JavaPluginLoader implements PluginLoader {
try {
jPlugin.setEnabled(true);
} catch (Throwable ex) {
+ gg.pufferfish.pufferfish.sentry.SentryContext.setPluginContext(plugin); // Pufferfish
server.getLogger().log(Level.SEVERE, "Error occurred while enabling " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex);
+ gg.pufferfish.pufferfish.sentry.SentryContext.removePluginContext(); // Pufferfish
- // Paper start - Disable plugins that fail to load
- this.server.getPluginManager().disablePlugin(jPlugin);
- return;
-@@ -399,7 +401,9 @@ public final class JavaPluginLoader implements PluginLoader {
++ // Paper start - Disable plugins that fail to load
++ this.server.getPluginManager().disablePlugin(jPlugin);
++ return;
++ // Paper end
+ }
+
+ // Perhaps abort here, rather than continue going, but as it stands,
+@@ -361,7 +367,9 @@ public final class JavaPluginLoader implements PluginLoader {
try {
jPlugin.setEnabled(false);
} catch (Throwable ex) {
diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch
index 54bb1a23..330603bd 100644
--- a/patches/server/0001-Rebrand.patch
+++ b/patches/server/0001-Rebrand.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand
diff --git a/build.gradle.kts b/build.gradle.kts
-index f5999d4e9834e19669301612044857d34bd64daa..bb7ecba3612a77191d26a3da2a3609748860b540 100644
+index bb7cb64ccf87508110325c1cae30ca56d036bd90..0785aef21cc7c89d971d22188d287c6406e44ac6 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -9,7 +9,7 @@ plugins {
@@ -40,10 +40,10 @@ index e45e6b44b2a8f2cdae6e0048a812b92126aa17ca..b5f3f213da8a40d5184098af017c8e26
.completer(new ConsoleCommandCompleter(this.server))
.option(LineReader.Option.COMPLETE_IN_WORD, true);
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index fe702a042cb132987e5135d2ed855484f9cef686..51704170ca171440e198a51b7fba563dca8debb6 100644
+index dad347675f45922254f8b26efb2cce7461411928..6df45f1978ad075c37902940e7a925dea0717606 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1027,7 +1027,7 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
+@@ -1030,7 +1030,7 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
We do not want people to report thread issues to Paper,
but we do want people to report thread issues to Gale.
*/
@@ -52,7 +52,7 @@ index fe702a042cb132987e5135d2ed855484f9cef686..51704170ca171440e198a51b7fba563d
// Gale end - branding changes
// Gale start - base thread pool
while (serverThread.isAlive()) {
-@@ -1857,7 +1857,7 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
+@@ -1880,7 +1880,7 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
@DontObfuscate
public String getServerModName() {
@@ -62,10 +62,10 @@ index fe702a042cb132987e5135d2ed855484f9cef686..51704170ca171440e198a51b7fba563d
public SystemReport fillSystemReport(SystemReport details) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index a618eb60a7f6af1174e9cf1428fdd1cddceaf56d..b4cb8cdacc822d9bf238fcc2029b21c28ea1753b 100644
+index 8605f089a40c56f52f1d2df28af0704677623671..822aad8bacc80fadd8b9ec1dfa48cd45126896b5 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -266,7 +266,7 @@ import javax.annotation.Nullable; // Paper
+@@ -261,7 +261,7 @@ import javax.annotation.Nullable; // Paper
import javax.annotation.Nonnull; // Paper
public final class CraftServer implements Server {
diff --git a/patches/server/0002-Leaf-Config.patch b/patches/server/0002-Leaf-Config.patch
index 9a649fe4..5b2bd7a9 100644
--- a/patches/server/0002-Leaf-Config.patch
+++ b/patches/server/0002-Leaf-Config.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Leaf Config
diff --git a/build.gradle.kts b/build.gradle.kts
-index 6e68916e8db5819a56c2696ebf5f1742df7119f8..c745122af630d0f79bed7f0c03baa66eeb2e5da0 100644
+index 0785aef21cc7c89d971d22188d287c6406e44ac6..c088aca3cd93a09860089bbc39e39ba65a8eec0a 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -49,6 +49,13 @@ dependencies {
@@ -38,10 +38,10 @@ index 781fc0a92f73be73b9313e7bc4eeb2f2ed6ff8ea..b40c03e42e02bca29fe8b107d9382db6
new TimingsExport(listeners, parent, history).start();
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 51704170ca171440e198a51b7fba563dca8debb6..108245311279757c17b543b8bb0fcafd31c5eaf8 100644
+index 6df45f1978ad075c37902940e7a925dea0717606..3b73a250d738d75ce2bc2078b380938bc64186ee 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1857,7 +1857,7 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
+@@ -1880,7 +1880,7 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
@DontObfuscate
public String getServerModName() {
diff --git a/patches/server/0003-Bump-Dependencies.patch b/patches/server/0003-Bump-Dependencies.patch
index 41983730..615c3f12 100644
--- a/patches/server/0003-Bump-Dependencies.patch
+++ b/patches/server/0003-Bump-Dependencies.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Bump Dependencies
diff --git a/build.gradle.kts b/build.gradle.kts
-index c745122af630d0f79bed7f0c03baa66eeb2e5da0..1b4d00c5b5794b065737f0ca2e61ec8a79a5fa48 100644
+index c088aca3cd93a09860089bbc39e39ba65a8eec0a..63a819196ddcad8106c7358172176c41031c70cd 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -17,7 +17,7 @@ dependencies {
@@ -17,7 +17,7 @@ index c745122af630d0f79bed7f0c03baa66eeb2e5da0..1b4d00c5b5794b065737f0ca2e61ec8a
implementation("net.minecrell:terminalconsoleappender:1.3.0")
/*
Required to add the missing Log4j2Plugins.dat file from log4j-core
-@@ -25,29 +25,35 @@ dependencies {
+@@ -25,14 +25,16 @@ dependencies {
all its classes to check if they are plugins.
Scanning takes about 1-2 seconds so adding this speeds up the server start.
*/
@@ -30,31 +30,24 @@ index c745122af630d0f79bed7f0c03baa66eeb2e5da0..1b4d00c5b5794b065737f0ca2e61ec8a
+ implementation("io.netty:netty-codec-haproxy:4.1.89.Final") // Paper - Add support for proxy protocol
// Paper end
- implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion
-- implementation("org.ow2.asm:asm:9.3")
-- implementation("org.ow2.asm:asm-commons:9.3") // Paper - ASM event executor generation
-- testImplementation("org.mockito:mockito-core:4.9.0") // Paper - switch to mockito
+ implementation("org.apache.logging.log4j:log4j-iostreams:2.20.0") // Paper - remove exclusion
-+ implementation("org.ow2.asm:asm:9.4")
-+ implementation("org.ow2.asm:asm-commons:9.4") // Paper - ASM event executor generation
-+
+ implementation("org.ow2.asm:asm:9.4")
+ implementation("org.ow2.asm:asm-commons:9.4") // Paper - ASM event executor generation
+- testImplementation("org.mockito:mockito-core:4.9.0") // Paper - switch to mockito
+ testImplementation("org.mockito:mockito-core:5.2.0") // Paper - switch to mockito
+ // Leaf end
implementation("org.spongepowered:configurate-yaml:4.1.2") // Paper - config files
implementation("commons-lang:commons-lang:2.6")
implementation("net.fabricmc:mapping-io:0.3.0") // Paper - needed to read mappings for stacktrace deobfuscation
+@@ -40,14 +42,15 @@ dependencies {
+ runtimeOnly("com.mysql:mysql-connector-j:8.0.32")
+ runtimeOnly("com.lmax:disruptor:3.4.4") // Paper
// Paper start - Use Velocity cipher
- implementation("com.velocitypowered:velocity-native:3.1.2-SNAPSHOT") {
+ implementation("com.velocitypowered:velocity-native:3.2.0-SNAPSHOT") { // Leaf - Bump Dependencies
isTransitive = false
}
// Paper end
-- runtimeOnly("org.xerial:sqlite-jdbc:3.36.0.3")
-- runtimeOnly("mysql:mysql-connector-java:8.0.29")
-+ // Leaf start - Bump Dependencies
-+ runtimeOnly("org.xerial:sqlite-jdbc:3.41.0.0")
-+ runtimeOnly("com.mysql:mysql-connector-j:8.0.32")
-+
- runtimeOnly("com.lmax:disruptor:3.4.4") // Paper
- runtimeOnly("org.apache.maven:maven-resolver-provider:3.8.5")
- runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3")
@@ -66,7 +59,7 @@ index c745122af630d0f79bed7f0c03baa66eeb2e5da0..1b4d00c5b5794b065737f0ca2e61ec8a
// Pufferfish start
implementation("org.yaml:snakeyaml:1.33")
-@@ -56,11 +62,13 @@ dependencies {
+@@ -56,11 +59,13 @@ dependencies {
}
// Pufferfish end
@@ -82,8 +75,8 @@ index c745122af630d0f79bed7f0c03baa66eeb2e5da0..1b4d00c5b5794b065737f0ca2e61ec8a
+ // Leaf end
}
- val craftbukkitPackageVersion = "1_19_R2" // Paper
-@@ -228,3 +236,6 @@ tasks.registerRunTask("runDev") {
+ val craftbukkitPackageVersion = "1_19_R3" // Paper
+@@ -231,3 +236,6 @@ tasks.registerRunTask("runDev") {
description = "Spin up a non-relocated Mojang-mapped test server"
classpath(sourceSets.main.map { it.runtimeClasspath })
}
diff --git a/patches/server/0005-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch b/patches/server/0005-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch
index a5f50200..8bbe6ca1 100644
--- a/patches/server/0005-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch
+++ b/patches/server/0005-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch
@@ -5,18 +5,18 @@ Subject: [PATCH] Remove Spigot Check for Broken BungeeCord Configurations
diff --git a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java
-index 8e68d1373a519cc12bf83de6aadcb24cbbd34af6..4b07c53efffff8c8c88e13c0c890eff8bc55c4f4 100644
+index f3bbfb472b9be083dd1f1a317b90dda5c3c4f851..ff24597a21d2fb6b4143679e18e0a89d2e2d3914 100644
--- a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java
-@@ -10,6 +10,7 @@ import net.minecraft.network.protocol.handshake.ClientIntentionPacket;
- import net.minecraft.network.protocol.handshake.ServerHandshakePacketListener;
+@@ -11,6 +11,7 @@ import net.minecraft.network.protocol.handshake.ServerHandshakePacketListener;
import net.minecraft.network.protocol.login.ClientboundLoginDisconnectPacket;
+ import net.minecraft.network.protocol.status.ServerStatus;
import net.minecraft.server.MinecraftServer;
+import org.dreeam.leaf.LeafConfig;
// CraftBukkit start
import java.net.InetAddress;
-@@ -135,7 +136,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL
+@@ -136,7 +137,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL
{
connection.spoofedProfile = ServerHandshakePacketListenerImpl.gson.fromJson(split[3], com.mojang.authlib.properties.Property[].class);
}
@@ -26,7 +26,7 @@ index 8e68d1373a519cc12bf83de6aadcb24cbbd34af6..4b07c53efffff8c8c88e13c0c890eff8
this.connection.send(new ClientboundLoginDisconnectPacket(chatmessage));
this.connection.disconnect(chatmessage);
diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java
-index 64d105330644aedabff26ba359597b8621bc02c5..9f5150c9e75cd01cbcdce8e359f4df5d4de621d1 100644
+index 590b796615b6ddebea07b79a17c6b3594d900ae7..152968788244233bd249b335b4d291ae536c792e 100644
--- a/src/main/java/org/dreeam/leaf/LeafConfig.java
+++ b/src/main/java/org/dreeam/leaf/LeafConfig.java
@@ -166,9 +166,13 @@ public class LeafConfig {
diff --git a/patches/server/0007-Remove-UseItemOnPacket-Too-Far-Check.patch b/patches/server/0007-Remove-UseItemOnPacket-Too-Far-Check.patch
index 0d703bda..b57be6f7 100644
--- a/patches/server/0007-Remove-UseItemOnPacket-Too-Far-Check.patch
+++ b/patches/server/0007-Remove-UseItemOnPacket-Too-Far-Check.patch
@@ -7,10 +7,10 @@ This Check is added in 1.17.x -> 1.18.x update by Mojang.
By removing this check, it enable hackers to use some modules of hack clients.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 8fd2a0a9f3990742c17d471b143c672163eb76aa..4ff68ff8b4e442a6b6a132eefedd88870006052d 100644
+index cfa431c16d3e366b9bba3539a95286c7485993e1..37890682543302feef9717c3889bfab655b2ec27 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -188,6 +188,7 @@ import org.bukkit.craftbukkit.util.permissions.CraftDefaultPermissions;
+@@ -190,6 +190,7 @@ import org.bukkit.craftbukkit.util.permissions.CraftDefaultPermissions;
import org.galemc.gale.configuration.GaleGlobalConfiguration;
import org.galemc.gale.executor.queue.BaseTaskQueues;
import org.galemc.gale.executor.queue.ScheduledServerThreadTaskQueues;
@@ -18,7 +18,7 @@ index 8fd2a0a9f3990742c17d471b143c672163eb76aa..4ff68ff8b4e442a6b6a132eefedd8887
import org.slf4j.Logger;
// CraftBukkit start
-@@ -1979,7 +1980,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1969,7 +1970,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
Vec3 vec3d2 = vec3d.subtract(vec3d1);
double d0 = 1.0000001D;
@@ -28,7 +28,7 @@ index 8fd2a0a9f3990742c17d471b143c672163eb76aa..4ff68ff8b4e442a6b6a132eefedd8887
this.player.resetLastActionTime();
diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java
-index 9f5150c9e75cd01cbcdce8e359f4df5d4de621d1..e79c612336d609ca4182c97adaa7cef02a50c93f 100644
+index 152968788244233bd249b335b4d291ae536c792e..cd8d422cb9a6ba38d0ff74e2028bcff76073e307 100644
--- a/src/main/java/org/dreeam/leaf/LeafConfig.java
+++ b/src/main/java/org/dreeam/leaf/LeafConfig.java
@@ -167,6 +167,8 @@ public class LeafConfig {
diff --git a/patches/server/0008-Purpur-Fix-decompile-errors.patch b/patches/server/0008-Purpur-Fix-decompile-errors.patch
index d6bd6cec..c6671027 100644
--- a/patches/server/0008-Purpur-Fix-decompile-errors.patch
+++ b/patches/server/0008-Purpur-Fix-decompile-errors.patch
@@ -6,24 +6,11 @@ Subject: [PATCH] Purpur: Fix decompile errors
Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
-diff --git a/src/main/java/net/minecraft/world/entity/decoration/Painting.java b/src/main/java/net/minecraft/world/entity/decoration/Painting.java
-index 0c5caad2a5bfc14450cf8d37f988ee176e8d1450..05a0a890a719a957d9aea736d6c0e85bae9e4eec 100644
---- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java
-+++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java
-@@ -124,7 +124,7 @@ public class Painting extends HangingEntity implements VariantHolder {
- return entry;
-- }).orElseGet(Painting::getDefaultVariant);
-+ }).orElseGet(() -> (Holder.Reference) getDefaultVariant()); // Purpur - decompile error
- this.setVariant(holder);
- this.direction = Direction.from2DDataValue(nbt.getByte("facing"));
- super.readAdditionalSaveData(nbt);
diff --git a/src/main/java/net/minecraft/world/level/block/Blocks.java b/src/main/java/net/minecraft/world/level/block/Blocks.java
-index 42f46d338886e2892ee4219d19be4dc97f61616f..fdd3aa81644087bff33a47c5f98e14ca0452f3ef 100644
+index f148c7d2954cc17377d0da4af03ea2c1c9397a52..8584a65433555133cdcfc24a078fb0b53b9f83bc 100644
--- a/src/main/java/net/minecraft/world/level/block/Blocks.java
+++ b/src/main/java/net/minecraft/world/level/block/Blocks.java
-@@ -1127,7 +1127,7 @@ public class Blocks {
+@@ -1153,7 +1153,7 @@ public class Blocks {
}
private static Boolean ocelotOrParrot(BlockState state, BlockGetter world, BlockPos pos, EntityType> type) {
diff --git a/patches/server/0009-Purpur-Implement-TPSBar.patch b/patches/server/0009-Purpur-Implement-TPSBar.patch
index de2f258f..ec345575 100644
--- a/patches/server/0009-Purpur-Implement-TPSBar.patch
+++ b/patches/server/0009-Purpur-Implement-TPSBar.patch
@@ -19,7 +19,7 @@ index 39844531b03eb8a6c70700b4ecbf0ff1a557424d..632ae75cb3bbc7a3955872d14ad0fbc2
public void removeCommand(String name) {
this.children.remove(name);
diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java
-index ae5dd08de75a7ed231295f306fd0974da3988249..b8d49f7607c646216d42f4e047997d47b49f228f 100644
+index 7b6b51392b123d34382233adcf4c3d4867bdaa32..ccc78857b51e25640ec1e4dcfe4c76a06d1bbff4 100644
--- a/src/main/java/net/minecraft/commands/CommandSourceStack.java
+++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java
@@ -317,6 +317,30 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy
@@ -54,10 +54,10 @@ index ae5dd08de75a7ed231295f306fd0974da3988249..b8d49f7607c646216d42f4e047997d47
if (this.source.acceptsSuccess() && !this.silent) {
this.source.sendSystemMessage(message);
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
-index c7083450b3466d80611b5efdac78b31ac2e70cf5..0e8700ccc884957f08fa382723a3784d94da0f0e 100644
+index 1a28f9b348a24448bd4a327e1bf0dfab4dc301f5..265c2f9b6b5301f52ef8cf544bbeb8f4a9242737 100644
--- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java
-@@ -214,6 +214,7 @@ public class Commands {
+@@ -221,6 +221,7 @@ public class Commands {
SetPlayerIdleTimeoutCommand.register(this.dispatcher);
StopCommand.register(this.dispatcher);
WhitelistCommand.register(this.dispatcher);
@@ -66,10 +66,10 @@ index c7083450b3466d80611b5efdac78b31ac2e70cf5..0e8700ccc884957f08fa382723a3784d
if (environment.includeIntegrated) {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 108245311279757c17b543b8bb0fcafd31c5eaf8..590d697eb0b1e61d3b910ac5276598e6428189fe 100644
+index 3b73a250d738d75ce2bc2078b380938bc64186ee..ef9511d74a185c800e106c1192bbb8162f037326 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1127,6 +1127,7 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
+@@ -1130,6 +1130,7 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
this.safeShutdown(waitForShutdown, false);
}
public void safeShutdown(boolean waitForShutdown, boolean isRestarting) {
@@ -98,10 +98,10 @@ index b104a38d2c879b649a3862876c389564c69e83b4..001738c2553cb73a9ed647302a99b462
}
}
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 82dec221441ad4b76af0aebf788af801a275be64..39a0bd651736c80cc558775d94794ee020c574a8 100644
+index aee10fe735b4ccbafbd92908890989b6b8b3685d..74556d5a894a83ca2053c6dbd8117b53b80c28ed 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -269,6 +269,7 @@ public class ServerPlayer extends Player {
+@@ -275,6 +275,7 @@ public class ServerPlayer extends Player {
public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper
public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper
public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event
@@ -109,7 +109,7 @@ index 82dec221441ad4b76af0aebf788af801a275be64..39a0bd651736c80cc558775d94794ee0
public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile) {
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile);
-@@ -507,6 +508,7 @@ public class ServerPlayer extends Player {
+@@ -513,6 +514,7 @@ public class ServerPlayer extends Player {
}
}
@@ -117,7 +117,7 @@ index 82dec221441ad4b76af0aebf788af801a275be64..39a0bd651736c80cc558775d94794ee0
}
@Override
-@@ -573,6 +575,7 @@ public class ServerPlayer extends Player {
+@@ -579,6 +581,7 @@ public class ServerPlayer extends Player {
}
this.getBukkitEntity().setExtraData(nbt); // CraftBukkit
@@ -125,7 +125,7 @@ index 82dec221441ad4b76af0aebf788af801a275be64..39a0bd651736c80cc558775d94794ee0
}
// CraftBukkit start - World fallback code, either respawn location or global spawn
-@@ -2551,4 +2554,14 @@ public class ServerPlayer extends Player {
+@@ -2543,4 +2546,14 @@ public class ServerPlayer extends Player {
return (CraftPlayer) super.getBukkitEntity();
}
// CraftBukkit end
@@ -141,10 +141,10 @@ index 82dec221441ad4b76af0aebf788af801a275be64..39a0bd651736c80cc558775d94794ee0
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index 0cbef825129b173a5244a195ea68444c216c0b1b..56a585f9b05e7b38900899be2fe439ac20205bc8 100644
+index 996f4debc4e5fd2aa6097a0d9769481b9bad70b9..cb5ff86443cd1c599f3167b050cf15ec348eacca 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
-@@ -105,6 +105,7 @@ import net.minecraft.world.scores.Scoreboard; // Paper
+@@ -106,6 +106,7 @@ import net.minecraft.world.scores.Scoreboard; // Paper
import net.minecraft.world.scores.Team;
import org.galemc.gale.configuration.GaleGlobalConfiguration;
import org.galemc.gale.executor.queue.ScheduledServerThreadTaskQueues;
@@ -152,7 +152,7 @@ index 0cbef825129b173a5244a195ea68444c216c0b1b..56a585f9b05e7b38900899be2fe439ac
import org.slf4j.Logger;
// CraftBukkit start
-@@ -521,6 +522,7 @@ public abstract class PlayerList {
+@@ -528,6 +529,7 @@ public abstract class PlayerList {
scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam);
}
// Paper end
@@ -160,7 +160,7 @@ index 0cbef825129b173a5244a195ea68444c216c0b1b..56a585f9b05e7b38900899be2fe439ac
// CraftBukkit - Moved from above, added world
if (GaleGlobalConfiguration.get().logToConsole.playerLoginLocations) { // Gale - JettPack - make logging login location configurable
PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ());
-@@ -636,6 +638,8 @@ public abstract class PlayerList {
+@@ -643,6 +645,8 @@ public abstract class PlayerList {
}
public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer, net.kyori.adventure.text.Component leaveMessage) {
// Paper end
@@ -182,7 +182,7 @@ index 6035af2cf08353b3d3801220d8116d8611a0cd37..7774ab6a2e553a40def4bb4dceea9e5f
final String commandName;
if (vanillaCommand.getRedirect() == null) {
diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java
-index e79c612336d609ca4182c97adaa7cef02a50c93f..0bc65b128f52fca34017c579bd31f13fe89c5ec9 100644
+index cd8d422cb9a6ba38d0ff74e2028bcff76073e307..395327b9bd07a6860d6b41f76d865f63cd4619a7 100644
--- a/src/main/java/org/dreeam/leaf/LeafConfig.java
+++ b/src/main/java/org/dreeam/leaf/LeafConfig.java
@@ -1,9 +1,11 @@
diff --git a/patches/server/0010-Purpur-Add-compass-command.patch b/patches/server/0010-Purpur-Add-compass-command.patch
index fc31e43c..385fc435 100644
--- a/patches/server/0010-Purpur-Add-compass-command.patch
+++ b/patches/server/0010-Purpur-Add-compass-command.patch
@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
-index 0e8700ccc884957f08fa382723a3784d94da0f0e..66242833210ae89cbca7448cd4e7cf1fa774bcf0 100644
+index 265c2f9b6b5301f52ef8cf544bbeb8f4a9242737..5ddaaf3b50b6483143e21f278d3fd732429e64d4 100644
--- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java
-@@ -215,6 +215,7 @@ public class Commands {
+@@ -222,6 +222,7 @@ public class Commands {
StopCommand.register(this.dispatcher);
WhitelistCommand.register(this.dispatcher);
org.dreeam.leaf.commands.TPSBarCommand.register(this.dispatcher); // Purpur
@@ -19,10 +19,10 @@ index 0e8700ccc884957f08fa382723a3784d94da0f0e..66242833210ae89cbca7448cd4e7cf1f
if (environment.includeIntegrated) {
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 39a0bd651736c80cc558775d94794ee020c574a8..09667820e41ef9c4e3aef9e2c8d18eb6aa0bdc1e 100644
+index 74556d5a894a83ca2053c6dbd8117b53b80c28ed..f0cf0f82920e09a984c8c3dbb131103beb327163 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -270,6 +270,7 @@ public class ServerPlayer extends Player {
+@@ -276,6 +276,7 @@ public class ServerPlayer extends Player {
public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper
public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event
private boolean tpsBar = false; // Purpur
@@ -30,7 +30,7 @@ index 39a0bd651736c80cc558775d94794ee020c574a8..09667820e41ef9c4e3aef9e2c8d18eb6
public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile) {
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile);
-@@ -509,6 +510,7 @@ public class ServerPlayer extends Player {
+@@ -515,6 +516,7 @@ public class ServerPlayer extends Player {
}
if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur
@@ -38,7 +38,7 @@ index 39a0bd651736c80cc558775d94794ee020c574a8..09667820e41ef9c4e3aef9e2c8d18eb6
}
@Override
-@@ -576,6 +578,7 @@ public class ServerPlayer extends Player {
+@@ -582,6 +584,7 @@ public class ServerPlayer extends Player {
this.getBukkitEntity().setExtraData(nbt); // CraftBukkit
nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur
@@ -46,7 +46,7 @@ index 39a0bd651736c80cc558775d94794ee020c574a8..09667820e41ef9c4e3aef9e2c8d18eb6
}
// CraftBukkit start - World fallback code, either respawn location or global spawn
-@@ -2563,5 +2566,13 @@ public class ServerPlayer extends Player {
+@@ -2555,5 +2558,13 @@ public class ServerPlayer extends Player {
public void tpsBar(boolean tpsBar) {
this.tpsBar = tpsBar;
}
@@ -61,7 +61,7 @@ index 39a0bd651736c80cc558775d94794ee020c574a8..09667820e41ef9c4e3aef9e2c8d18eb6
// Purpur end
}
diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java
-index 0bc65b128f52fca34017c579bd31f13fe89c5ec9..178891c37d9dea00329dee1fb8d413ec4bb77cb6 100644
+index 395327b9bd07a6860d6b41f76d865f63cd4619a7..41b79bdda2f643fdb85577b2b52327d4b7fa83a8 100644
--- a/src/main/java/org/dreeam/leaf/LeafConfig.java
+++ b/src/main/java/org/dreeam/leaf/LeafConfig.java
@@ -194,6 +194,11 @@ public class LeafConfig {
diff --git a/patches/server/0011-Purpur-Implement-ram-and-rambar-commands.patch b/patches/server/0011-Purpur-Implement-ram-and-rambar-commands.patch
index e075f6f3..65634acb 100644
--- a/patches/server/0011-Purpur-Implement-ram-and-rambar-commands.patch
+++ b/patches/server/0011-Purpur-Implement-ram-and-rambar-commands.patch
@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
-index 66242833210ae89cbca7448cd4e7cf1fa774bcf0..ff19fcd83295c6936dd83c7780d5757071ca44a5 100644
+index 5ddaaf3b50b6483143e21f278d3fd732429e64d4..e94bcacae678b70a61c428dd307b860ab2382f50 100644
--- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java
-@@ -216,6 +216,8 @@ public class Commands {
+@@ -223,6 +223,8 @@ public class Commands {
WhitelistCommand.register(this.dispatcher);
org.dreeam.leaf.commands.TPSBarCommand.register(this.dispatcher); // Purpur
org.dreeam.leaf.commands.CompassCommand.register(this.dispatcher); // Purpur
@@ -20,10 +20,10 @@ index 66242833210ae89cbca7448cd4e7cf1fa774bcf0..ff19fcd83295c6936dd83c7780d57570
if (environment.includeIntegrated) {
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 09667820e41ef9c4e3aef9e2c8d18eb6aa0bdc1e..05ef07550dae98170a71968673addf9bf8c96769 100644
+index f0cf0f82920e09a984c8c3dbb131103beb327163..807bae553cf0008e3ca328b85fb210dc6a929fde 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -271,6 +271,7 @@ public class ServerPlayer extends Player {
+@@ -277,6 +277,7 @@ public class ServerPlayer extends Player {
public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event
private boolean tpsBar = false; // Purpur
private boolean compassBar = false; // Purpur
@@ -31,7 +31,7 @@ index 09667820e41ef9c4e3aef9e2c8d18eb6aa0bdc1e..05ef07550dae98170a71968673addf9b
public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile) {
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile);
-@@ -509,6 +510,7 @@ public class ServerPlayer extends Player {
+@@ -515,6 +516,7 @@ public class ServerPlayer extends Player {
}
}
@@ -39,7 +39,7 @@ index 09667820e41ef9c4e3aef9e2c8d18eb6aa0bdc1e..05ef07550dae98170a71968673addf9b
if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur
if (nbt.contains("Purpur.CompassBar")) { this.compassBar = nbt.getBoolean("Purpur.CompassBar"); } // Purpur
}
-@@ -577,6 +579,7 @@ public class ServerPlayer extends Player {
+@@ -583,6 +585,7 @@ public class ServerPlayer extends Player {
}
this.getBukkitEntity().setExtraData(nbt); // CraftBukkit
@@ -47,7 +47,7 @@ index 09667820e41ef9c4e3aef9e2c8d18eb6aa0bdc1e..05ef07550dae98170a71968673addf9b
nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur
nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur
}
-@@ -2574,5 +2577,14 @@ public class ServerPlayer extends Player {
+@@ -2566,5 +2569,14 @@ public class ServerPlayer extends Player {
public void compassBar(boolean compassBar) {
this.compassBar = compassBar;
}
@@ -63,7 +63,7 @@ index 09667820e41ef9c4e3aef9e2c8d18eb6aa0bdc1e..05ef07550dae98170a71968673addf9b
// Purpur end
}
diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java
-index 178891c37d9dea00329dee1fb8d413ec4bb77cb6..95131d2fb1b2fff8fe787498ab4d9fbbdf970118 100644
+index 41b79bdda2f643fdb85577b2b52327d4b7fa83a8..b9ade5d89b8dd48b075338e0f61c54aee5fa72ae 100644
--- a/src/main/java/org/dreeam/leaf/LeafConfig.java
+++ b/src/main/java/org/dreeam/leaf/LeafConfig.java
@@ -199,6 +199,17 @@ public class LeafConfig {
diff --git a/patches/server/0012-Purpur-Lagging-threshold.patch b/patches/server/0012-Purpur-Lagging-threshold.patch
index b606fc62..3efc2da9 100644
--- a/patches/server/0012-Purpur-Lagging-threshold.patch
+++ b/patches/server/0012-Purpur-Lagging-threshold.patch
@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 590d697eb0b1e61d3b910ac5276598e6428189fe..fe25f51ee708c76bcf66e3280bb235713c99f79c 100644
+index ef9511d74a185c800e106c1192bbb8162f037326..9fe91c7d5949fcd1c764e79fa937f62a5a2ee23b 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -404,6 +404,7 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
+@@ -408,6 +408,7 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
public final io.papermc.paper.configuration.PaperConfigurations paperConfigurations;
public final GaleConfigurations galeConfigurations; // Gale - Gale configuration
public static long currentTickLong = 0L; // Paper
@@ -18,7 +18,7 @@ index 590d697eb0b1e61d3b910ac5276598e6428189fe..fe25f51ee708c76bcf66e3280bb23571
public volatile Thread shutdownThread; // Paper
public volatile boolean abnormalExit = false; // Paper
-@@ -1272,6 +1273,7 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
+@@ -1273,6 +1274,7 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
this.recentTps[1] = tps5.getAverage();
this.recentTps[2] = tps15.getAverage();
// Paper end
@@ -27,10 +27,10 @@ index 590d697eb0b1e61d3b910ac5276598e6428189fe..fe25f51ee708c76bcf66e3280bb23571
}
// Spigot end
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index b4cb8cdacc822d9bf238fcc2029b21c28ea1753b..8e3d8b34816a4c097fa6a001aae6eaa2d416af72 100644
+index 822aad8bacc80fadd8b9ec1dfa48cd45126896b5..9dd50870384e1a8bc12a94099a357c6227aa0c3a 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -3002,4 +3002,10 @@ public final class CraftServer implements Server {
+@@ -2982,4 +2982,10 @@ public final class CraftServer implements Server {
}
// Gale end - YAPFA - last tick time - API
@@ -42,7 +42,7 @@ index b4cb8cdacc822d9bf238fcc2029b21c28ea1753b..8e3d8b34816a4c097fa6a001aae6eaa2
+ // Purpur end
}
diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java
-index 95131d2fb1b2fff8fe787498ab4d9fbbdf970118..81a06fa14b0c47321ad37ad73b59770f1563c883 100644
+index b9ade5d89b8dd48b075338e0f61c54aee5fa72ae..d16699e35a17b78364f7d47d69cbeb4ab76c00a1 100644
--- a/src/main/java/org/dreeam/leaf/LeafConfig.java
+++ b/src/main/java/org/dreeam/leaf/LeafConfig.java
@@ -183,6 +183,11 @@ public class LeafConfig {
diff --git a/patches/server/0013-Purpur-Configurable-TPS-Catchup.patch b/patches/server/0013-Purpur-Configurable-TPS-Catchup.patch
index d4a2be28..1d57a46b 100644
--- a/patches/server/0013-Purpur-Configurable-TPS-Catchup.patch
+++ b/patches/server/0013-Purpur-Configurable-TPS-Catchup.patch
@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index fe25f51ee708c76bcf66e3280bb235713c99f79c..1f3f414ede558f590a5e68256a60d9ca3c3edf32 100644
+index 9fe91c7d5949fcd1c764e79fa937f62a5a2ee23b..8cd54a95609df0c5497c00d1a254c22d47e80a15 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1285,6 +1285,13 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
+@@ -1286,6 +1286,13 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
this.tickServer(this::haveTime);
lastTickProperTime = (System.nanoTime() - tickProperStart) / 1000000L; // Gale - YAPFA - last tick time
this.setDelayedTasksMaxNextTickTime(Math.max(Util.getMillis() + 50L, this.nextTickTime)); // Gale - base thread pool
@@ -25,7 +25,7 @@ index fe25f51ee708c76bcf66e3280bb235713c99f79c..1f3f414ede558f590a5e68256a60d9ca
this.isReady = true;
JvmProfiler.INSTANCE.onServerTick(this.averageTickTime);
diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java
-index 81a06fa14b0c47321ad37ad73b59770f1563c883..1beacdeacb712396cd3de1206c9789be800d2761 100644
+index d16699e35a17b78364f7d47d69cbeb4ab76c00a1..8fce40f92fb9113e01080ef9b67cf61557f19263 100644
--- a/src/main/java/org/dreeam/leaf/LeafConfig.java
+++ b/src/main/java/org/dreeam/leaf/LeafConfig.java
@@ -184,8 +184,10 @@ public class LeafConfig {
diff --git a/patches/server/0014-Purpur-Add-allow-water-in-end-world-option.patch b/patches/server/0014-Purpur-Add-allow-water-in-end-world-option.patch
index ea8bce5a..d9fb911a 100644
--- a/patches/server/0014-Purpur-Add-allow-water-in-end-world-option.patch
+++ b/patches/server/0014-Purpur-Add-allow-water-in-end-world-option.patch
@@ -29,10 +29,10 @@ index 5c6aa9c464784ad5ee366412d080c72d3d22a76f..35d819aa2e660263cf6a5a0c09a6e73f
return true;
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 0ab14271e6efebe49ed9fec904e47566691b9f40..b5e887258bee7de80a9b1d06da030b1d7d07ddc6 100644
+index b19e842be160748a6969e498952eb02ffece2ecc..db412c3409e17eda94290d4f5998d44b6e8220c1 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -1616,4 +1616,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1629,4 +1629,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
return null;
}
// Paper end
@@ -48,13 +48,13 @@ index 0ab14271e6efebe49ed9fec904e47566691b9f40..b5e887258bee7de80a9b1d06da030b1d
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/world/level/block/IceBlock.java b/src/main/java/net/minecraft/world/level/block/IceBlock.java
-index 64206d94a5bf210116d208f9678618b905a61428..fbb06c5db6f80008a54563b7d959e55e5ba96673 100644
+index 5ecf02ce83b7496c977adfeb203b8eadb05f9da5..a04965be7126a9d94bdd52db91067cb05f3ba15f 100644
--- a/src/main/java/net/minecraft/world/level/block/IceBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/IceBlock.java
@@ -31,7 +31,7 @@ public class IceBlock extends HalfTransparentBlock {
- public void afterDestroy(Level world, BlockPos pos, ItemStack stack) {
+ public void afterDestroy(Level world, BlockPos pos, ItemStack tool) {
// Paper end
- if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, stack) == 0) {
+ if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) == 0) {
- if (world.dimensionType().ultraWarm()) {
+ if (world.isNether() || (world.isTheEnd() && !org.dreeam.leaf.LeafConfig.allowWaterPlacementInTheEnd)) { // Purpur
world.removeBlock(pos, false);
@@ -70,7 +70,7 @@ index 64206d94a5bf210116d208f9678618b905a61428..fbb06c5db6f80008a54563b7d959e55e
} else {
world.setBlockAndUpdate(pos, Blocks.WATER.defaultBlockState());
diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java
-index 1beacdeacb712396cd3de1206c9789be800d2761..e0f97f0072232fb4aa45e0cebc98860418c63215 100644
+index 8fce40f92fb9113e01080ef9b67cf61557f19263..25f97e391c29da7b3b49e6b4724875bd904a9270 100644
--- a/src/main/java/org/dreeam/leaf/LeafConfig.java
+++ b/src/main/java/org/dreeam/leaf/LeafConfig.java
@@ -251,7 +251,9 @@ public class LeafConfig {
diff --git a/patches/server/0017-Purpur-Configurable-broadcast-settings.patch b/patches/server/0017-Purpur-Configurable-broadcast-settings.patch
index b4b6841d..c5ee046d 100644
--- a/patches/server/0017-Purpur-Configurable-broadcast-settings.patch
+++ b/patches/server/0017-Purpur-Configurable-broadcast-settings.patch
@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java
-index 5ba0a756d45350dcda3caa5518c9a47a4de06f14..e438597242adc99e88f465231a043ea25eec4ba1 100644
+index c953f7f2f125985eeec9563a22f9188cc979cd36..09ba481ca721306d3696078e475850a9f36e9df5 100644
--- a/src/main/java/net/minecraft/server/PlayerAdvancements.java
+++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java
-@@ -298,6 +298,7 @@ public class PlayerAdvancements {
+@@ -250,6 +250,7 @@ public class PlayerAdvancements {
advancement.getRewards().grant(this.player);
// Paper start - Add Adventure message to PlayerAdvancementDoneEvent
if (message != null && this.player.level.getGameRules().getBoolean(GameRules.RULE_ANNOUNCE_ADVANCEMENTS)) {
@@ -19,10 +19,10 @@ index 5ba0a756d45350dcda3caa5518c9a47a4de06f14..e438597242adc99e88f465231a043ea2
// Paper end
}
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 05ef07550dae98170a71968673addf9bf8c96769..f940f54841455caf5959cb7c9289c5bf4a159f55 100644
+index 807bae553cf0008e3ca328b85fb210dc6a929fde..b9b16f566103798c95592b2921b48a2585a65e73 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -948,6 +948,7 @@ public class ServerPlayer extends Player {
+@@ -954,6 +954,7 @@ public class ServerPlayer extends Player {
}));
Team scoreboardteambase = this.getTeam();
@@ -30,7 +30,7 @@ index 05ef07550dae98170a71968673addf9bf8c96769..f940f54841455caf5959cb7c9289c5bf
if (scoreboardteambase != null && scoreboardteambase.getDeathMessageVisibility() != Team.Visibility.ALWAYS) {
if (scoreboardteambase.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) {
this.server.getPlayerList().broadcastSystemToTeam(this, ichatbasecomponent);
-@@ -1744,6 +1745,26 @@ public class ServerPlayer extends Player {
+@@ -1721,6 +1722,26 @@ public class ServerPlayer extends Player {
this.lastSentExp = -1; // CraftBukkit - Added to reset
}
@@ -58,10 +58,10 @@ index 05ef07550dae98170a71968673addf9bf8c96769..f940f54841455caf5959cb7c9289c5bf
public void displayClientMessage(Component message, boolean overlay) {
this.sendSystemMessage(message, overlay);
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index 56a585f9b05e7b38900899be2fe439ac20205bc8..fb1bf9dd162ae7105df6ff20724be72768c60d0f 100644
+index cb5ff86443cd1c599f3167b050cf15ec348eacca..bbd2e5cba28b6eded49c6bb70db24f2e0d7a5e84 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
-@@ -1131,6 +1131,20 @@ public abstract class PlayerList {
+@@ -1140,6 +1140,20 @@ public abstract class PlayerList {
}
// CraftBukkit end
@@ -83,11 +83,11 @@ index 56a585f9b05e7b38900899be2fe439ac20205bc8..fb1bf9dd162ae7105df6ff20724be727
Iterator iterator = this.players.iterator();
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
-index 2848cb7c76e94d8349f042dc92daf01322a6ce5a..0edf0e24b0b311269b447a34f3aad485556bce10 100644
+index 93a1e990b0a6caae4143c2f9d09bfb368fa1d6db..615611fe372d6edaef56db058bbf2cf7641e3c26 100644
--- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
-@@ -265,6 +265,15 @@ public class DamageSource {
- return entityliving1 != null ? Component.translatable(s1, entity.getDisplayName(), entityliving1.getDisplayName()) : Component.translatable(s, entity.getDisplayName());
+@@ -126,6 +126,15 @@ public class DamageSource {
+ }
}
+ // Purpur start
@@ -99,14 +99,14 @@ index 2848cb7c76e94d8349f042dc92daf01322a6ce5a..0edf0e24b0b311269b447a34f3aad485
+ }
+ // Purpur end
+
- public boolean isFire() {
- return this.isFireSource;
+ public String getMsgId() {
+ return this.type().msgId();
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index ce197df36b3746dbd511287ecd78e46eaec3d5e0..b439a6033223269c94e988069c0df3ad6ba5da28 100644
+index 697fad59a6ab4fb41aac65979b42d8ed4b4c8c21..1544c29011ec8d2074dc2e1e107a6e32f351d7c4 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -3877,6 +3877,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -3922,6 +3922,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
return SlotAccess.NULL;
}
@@ -128,7 +128,7 @@ index ce197df36b3746dbd511287ecd78e46eaec3d5e0..b439a6033223269c94e988069c0df3ad
public void sendSystemMessage(Component message) {}
diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java
-index cf40152856e51a3c90d6740f45f0e63d582763ed..e66bb8559d6756e07d4c75a1195927377dc7960d 100644
+index b484e1124f861c41e025c3f625bc0881434de086..dbf1099be0c16cb8d8facba8a2f7b56b3a586d23 100644
--- a/src/main/java/org/dreeam/leaf/LeafConfig.java
+++ b/src/main/java/org/dreeam/leaf/LeafConfig.java
@@ -250,6 +250,13 @@ public class LeafConfig {
diff --git a/patches/server/0018-Purpur-Allow-player-join-full-server-by-permission.patch b/patches/server/0018-Purpur-Allow-player-join-full-server-by-permission.patch
index b69d290e..6cbb410b 100644
--- a/patches/server/0018-Purpur-Allow-player-join-full-server-by-permission.patch
+++ b/patches/server/0018-Purpur-Allow-player-join-full-server-by-permission.patch
@@ -7,10 +7,10 @@ Original license: MIT
Original project: 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 fb1bf9dd162ae7105df6ff20724be72768c60d0f..94f3d84a1a89e1f1c720d6e7f19e93b1b0b5a865 100644
+index bbd2e5cba28b6eded49c6bb70db24f2e0d7a5e84..f509a31c20bef0a37dfa9b51afe2fac9a607b10b 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
-@@ -794,7 +794,7 @@ public abstract class PlayerList {
+@@ -801,7 +801,7 @@ public abstract class PlayerList {
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure
} else {
// return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? IChatBaseComponent.translatable("multiplayer.disconnect.server_full") : null;
diff --git a/patches/server/0019-Purpur-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0019-Purpur-Persistent-BlockEntity-Lore-and-DisplayName.patch
index 1cab1b80..475e3b26 100644
--- a/patches/server/0019-Purpur-Persistent-BlockEntity-Lore-and-DisplayName.patch
+++ b/patches/server/0019-Purpur-Persistent-BlockEntity-Lore-and-DisplayName.patch
@@ -40,7 +40,7 @@ index b0204af850ee182773ad458208cccd946ad148d5..f74e420b1791df528a30a1213bb0076b
@Nullable
diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
-index 39981cd0003eb7ee416d887ffec70fb049599320..a5a1773109123c3499d6b2b02b76805d66764ec5 100644
+index 52743a5865997506b5a53fdfd99cdbab67ae3d3f..7f46de07e117d33634ab3510ce16da0fd8770f84 100644
--- a/src/main/java/net/minecraft/world/level/block/Block.java
+++ b/src/main/java/net/minecraft/world/level/block/Block.java
@@ -65,6 +65,13 @@ import net.minecraft.world.phys.shapes.Shapes;
@@ -76,13 +76,13 @@ index 39981cd0003eb7ee416d887ffec70fb049599320..a5a1773109123c3499d6b2b02b76805d
state.spawnAfterBreak(world.getMinecraftWorld(), pos, ItemStack.EMPTY, true);
}
@@ -355,13 +362,53 @@ public class Block extends BlockBehaviour implements ItemLike {
- public static void dropResources(BlockState state, Level world, BlockPos pos, @Nullable BlockEntity blockEntity, Entity entity, ItemStack stack) {
+ public static void dropResources(BlockState state, Level world, BlockPos pos, @Nullable BlockEntity blockEntity, Entity entity, ItemStack tool) {
if (world instanceof ServerLevel) {
- Block.getDrops(state, (ServerLevel) world, pos, blockEntity, entity, stack).forEach((itemstack1) -> {
+ Block.getDrops(state, (ServerLevel) world, pos, blockEntity, entity, tool).forEach((itemstack1) -> {
- Block.popResource(world, pos, itemstack1);
+ Block.popResource(world, pos, applyDisplayNameAndLoreFromTile(itemstack1, blockEntity)); // Purpur
});
- state.spawnAfterBreak((ServerLevel) world, pos, stack, true);
+ state.spawnAfterBreak((ServerLevel) world, pos, tool, true);
}
}
@@ -128,10 +128,10 @@ index 39981cd0003eb7ee416d887ffec70fb049599320..a5a1773109123c3499d6b2b02b76805d
+ // Purpur end
+
public static void popResource(Level world, BlockPos pos, ItemStack stack) {
- float f = EntityType.ITEM.getHeight() / 2.0F;
- // Paper start - don't convert potentially massive numbers to floats
+ double d0 = (double) EntityType.ITEM.getHeight() / 2.0D;
+ double d1 = (double) pos.getX() + 0.5D + Mth.nextDouble(world.random, -0.25D, 0.25D);
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
-index 58986bc0677c5ea1ad54d7d6d4efa5c2ea233aea..59d616137088af46d4494171fe96ba0129082496 100644
+index 1b248db497500aa6bd346b306dcb908af77626f3..64c55f3ebdbc27f7f0cea38247ff7b35fa99e341 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
@@ -6,6 +6,8 @@ import net.minecraft.CrashReportCategory;
@@ -198,7 +198,7 @@ index 58986bc0677c5ea1ad54d7d6d4efa5c2ea233aea..59d616137088af46d4494171fe96ba01
+ // Purpur end
}
diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java
-index e66bb8559d6756e07d4c75a1195927377dc7960d..8f6198983afdf371200d266f7b6e005a97598fcd 100644
+index dbf1099be0c16cb8d8facba8a2f7b56b3a586d23..788a9f3ebf1135e00f8e93199cf1e2a300b67f0b 100644
--- a/src/main/java/org/dreeam/leaf/LeafConfig.java
+++ b/src/main/java/org/dreeam/leaf/LeafConfig.java
@@ -259,9 +259,11 @@ public class LeafConfig {
diff --git a/patches/server/0020-Purpur-Add-more-logger-output-for-invalid-movement-k.patch b/patches/server/0020-Purpur-Add-more-logger-output-for-invalid-movement-k.patch
index cc4d2ffa..b18cce94 100644
--- a/patches/server/0020-Purpur-Add-more-logger-output-for-invalid-movement-k.patch
+++ b/patches/server/0020-Purpur-Add-more-logger-output-for-invalid-movement-k.patch
@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 5a656751b101d914afd5b07d70e60b50009ed215..4f131ca1977475513ee43120f06b7c026f49e91e 100644
+index 37890682543302feef9717c3889bfab655b2ec27..89416f1222bb31275ae033009dac18b5578d5807 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -837,6 +837,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -839,6 +839,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
if (packet.getId() == this.awaitingTeleport) {
if (this.awaitingPositionFromClient == null) {
this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause
@@ -18,7 +18,7 @@ index 5a656751b101d914afd5b07d70e60b50009ed215..4f131ca1977475513ee43120f06b7c02
return;
}
-@@ -1401,8 +1402,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1403,8 +1404,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@Override
public void handleMovePlayer(ServerboundMovePlayerPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel());
diff --git a/patches/server/0021-Purpur-Log-skipped-entity-s-position.patch b/patches/server/0021-Purpur-Log-skipped-entity-s-position.patch
index 4828690b..e08a3115 100644
--- a/patches/server/0021-Purpur-Log-skipped-entity-s-position.patch
+++ b/patches/server/0021-Purpur-Log-skipped-entity-s-position.patch
@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
-index 41ff954010c11d524ffb90abd22c29a1d8d8f5a0..675da6794923cfefbe41034247a71ef929e2802c 100644
+index ceacc0d383e2ee674783d3c0a7df0a951595faca..77214e07b0013014a5dbbd8a14862958db0bcbcd 100644
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
-@@ -581,6 +581,12 @@ public class EntityType implements FeatureElement, EntityTypeT
+@@ -589,6 +589,12 @@ public class EntityType implements FeatureElement, EntityTypeT
entity.load(nbt);
}, () -> {
EntityType.LOGGER.warn("Skipping Entity with id {}", nbt.getString("id"));
diff --git a/patches/server/0023-Purpur-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0023-Purpur-Option-to-disable-kick-for-out-of-order-chat.patch
index aea72e95..df2223d1 100644
--- a/patches/server/0023-Purpur-Option-to-disable-kick-for-out-of-order-chat.patch
+++ b/patches/server/0023-Purpur-Option-to-disable-kick-for-out-of-order-chat.patch
@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index ed8c12a221c493657f8bdf3c1cb91b0dc2384699..1aaf511a1f69eae6a83e3d7d2cf4d3f03807728f 100644
+index 89416f1222bb31275ae033009dac18b5578d5807..441d5ed7f48a3725a0a50441eaa8ab68ce1025d8 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2405,7 +2405,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2399,7 +2399,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
do {
instant1 = (Instant) this.lastChatTimeStamp.get();
if (timestamp.isBefore(instant1)) {
@@ -20,7 +20,7 @@ index ed8c12a221c493657f8bdf3c1cb91b0dc2384699..1aaf511a1f69eae6a83e3d7d2cf4d3f0
} while (!this.lastChatTimeStamp.compareAndSet(instant1, timestamp));
diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java
-index f7948743b75c2cabaee0f259881e366c371454aa..e8ca567656f23548ddd2485e2f973ec128d93763 100644
+index 24f24530f4e6c7981ca7a30d347648e950915f60..984bed1917c9556775f13f0314a0a7c42ba17ba6 100644
--- a/src/main/java/org/dreeam/leaf/LeafConfig.java
+++ b/src/main/java/org/dreeam/leaf/LeafConfig.java
@@ -278,4 +278,9 @@ public class LeafConfig {
diff --git a/patches/server/0025-KeYi-Player-Skull-API.patch b/patches/server/0025-KeYi-Player-Skull-API.patch
index 1d38ae72..8d32be39 100644
--- a/patches/server/0025-KeYi-Player-Skull-API.patch
+++ b/patches/server/0025-KeYi-Player-Skull-API.patch
@@ -7,7 +7,7 @@ Original license: MIT
Original project: https://github.com/KeYiMC/KeYi
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 03430916a8107c1b0f04d84e1dce494e2da06e7a..74874910d339bd8fbec44755f1ab32fafd17d2e9 100644
+index eca5e6b93dd84307bf9dbadf32414d6f506e69dc..7b80640474c35cf0d47a246c3dcb0f3e72581da8 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -26,6 +26,9 @@ import java.util.Optional;
@@ -20,7 +20,7 @@ index 03430916a8107c1b0f04d84e1dce494e2da06e7a..74874910d339bd8fbec44755f1ab32fa
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nullable;
-@@ -146,6 +149,7 @@ import org.bukkit.event.player.PlayerUnregisterChannelEvent;
+@@ -147,6 +150,7 @@ import org.bukkit.event.player.PlayerUnregisterChannelEvent;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.InventoryView.Property;
import org.bukkit.inventory.ItemStack;
@@ -28,7 +28,7 @@ index 03430916a8107c1b0f04d84e1dce494e2da06e7a..74874910d339bd8fbec44755f1ab32fa
import org.bukkit.map.MapCursor;
import org.bukkit.map.MapView;
import org.bukkit.metadata.MetadataValue;
-@@ -3058,4 +3062,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -3148,4 +3152,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.spigot;
}
// Spigot end
diff --git a/patches/server/0026-KeYi-Disable-arrow-despawn-counter-by-default.patch b/patches/server/0026-KeYi-Disable-arrow-despawn-counter-by-default.patch
index e2ea3156..fb354781 100644
--- a/patches/server/0026-KeYi-Disable-arrow-despawn-counter-by-default.patch
+++ b/patches/server/0026-KeYi-Disable-arrow-despawn-counter-by-default.patch
@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/KeYiMC/KeYi
diff --git a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java
-index cc25c05262929b946cf696a1df0f24a50508db5e..e06cfc5aac784b62ffa8c425ba438d53b18359d2 100644
+index 0b4621b60c2eee7201b38016063ec3db11706022..4892c6d9e1df2f25ae82c98bdabbe807e8c58b2e 100644
--- a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java
+++ b/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java
-@@ -308,7 +308,7 @@ public class GaleWorldConfiguration extends ConfigurationPart {
+@@ -325,7 +325,7 @@ public class GaleWorldConfiguration extends ConfigurationPart {
public boolean entitiesCanEatBlocksInNonTickingChunks = false; // Gale - Purpur - prevent entities eating blocks in non-ticking chunks
public boolean entitiesCanRandomStrollIntoNonTickingChunks = true; // Gale - MultiPaper - prevent entities random strolling into non-ticking chunks
diff --git a/patches/server/0027-KeYi-Add-an-option-for-spigot-item-merging-mechanism.patch b/patches/server/0027-KeYi-Add-an-option-for-spigot-item-merging-mechanism.patch
index 19c90901..b176eb04 100644
--- a/patches/server/0027-KeYi-Add-an-option-for-spigot-item-merging-mechanism.patch
+++ b/patches/server/0027-KeYi-Add-an-option-for-spigot-item-merging-mechanism.patch
@@ -7,28 +7,28 @@ Original license: MIT
Original project: https://github.com/KeYiMC/KeYi
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 7b0374b6e22105e59b29995983a6ac50268c722e..da45ccd3b96158dace1dec4c291aa98f9d5c4ac5 100644
+index b77d112f74046cd35f17bada00a22402cb716482..881fe946c1046dd0421db98f628fcf6f0922e469 100644
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
-@@ -37,6 +37,7 @@ import org.bukkit.event.entity.EntityPickupItemEvent;
+@@ -38,6 +38,7 @@ import org.bukkit.event.entity.EntityPickupItemEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
// CraftBukkit end
import org.bukkit.event.player.PlayerAttemptPickupItemEvent; // Paper
+import org.dreeam.leaf.LeafConfig;
- public class ItemEntity extends Entity {
+ public class ItemEntity extends Entity implements TraceableEntity {
-@@ -316,7 +317,7 @@ public class ItemEntity extends Entity {
+@@ -325,7 +326,7 @@ public class ItemEntity extends Entity implements TraceableEntity {
ItemStack itemstack1 = other.getItem();
- if (Objects.equals(this.getOwner(), other.getOwner()) && ItemEntity.areMergable(itemstack, itemstack1)) {
+ if (Objects.equals(this.target, other.target) && ItemEntity.areMergable(itemstack, itemstack1)) {
- if (true || itemstack1.getCount() < itemstack.getCount()) { // Spigot
+ if (LeafConfig.useSpigotItemMergingMechanism || itemstack1.getCount() < itemstack.getCount()) { // Spigot // KeYi
ItemEntity.merge(this, itemstack, other, itemstack1);
} else {
ItemEntity.merge(other, itemstack1, this, itemstack);
diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java
-index e8ca567656f23548ddd2485e2f973ec128d93763..b3604afdc3fcb515d0c56349552dc1eaeb733a5a 100644
+index 984bed1917c9556775f13f0314a0a7c42ba17ba6..918631209956adae59b83dd28e7492290362311e 100644
--- a/src/main/java/org/dreeam/leaf/LeafConfig.java
+++ b/src/main/java/org/dreeam/leaf/LeafConfig.java
@@ -187,11 +187,13 @@ public class LeafConfig {
diff --git a/patches/server/0030-Carpet-Fixes-Optimize-Math.round-and-Math.hypot-func.patch b/patches/server/0030-Carpet-Fixes-Optimize-Math.round-and-Math.hypot-func.patch
index d8180cb2..b2d88604 100644
--- a/patches/server/0030-Carpet-Fixes-Optimize-Math.round-and-Math.hypot-func.patch
+++ b/patches/server/0030-Carpet-Fixes-Optimize-Math.round-and-Math.hypot-func.patch
@@ -140,23 +140,23 @@ index 7784d72ddd6db00c674e22759c00c430222c4b85..0f180d11774f6dec2667b3a3f6a63d11
text("Relit ", BLUE), text(totalRelit),
text(" chunks. Took ", BLUE), text(diff + "ms")
diff --git a/src/main/java/net/minecraft/commands/arguments/TimeArgument.java b/src/main/java/net/minecraft/commands/arguments/TimeArgument.java
-index e3e80db89c18588322ffdaa0f9fd85e398cb1471..d947011b80ee14e7aaf74af3d9081fc78e8cb4c3 100644
+index b2f1d117abd3828140c1edf2baf314b34d2ccf40..d13bafdfa4175e193fa3e337f93e796dd346e678 100644
--- a/src/main/java/net/minecraft/commands/arguments/TimeArgument.java
+++ b/src/main/java/net/minecraft/commands/arguments/TimeArgument.java
-@@ -35,7 +35,7 @@ public class TimeArgument implements ArgumentType {
+@@ -48,7 +48,7 @@ public class TimeArgument implements ArgumentType {
if (i == 0) {
throw ERROR_INVALID_UNIT.create();
} else {
- int j = Math.round(f * (float)i);
+ int j = carpetfixes.helpers.FastMath.round(f * (float)i); // Mirai
- if (j < 0) {
- throw ERROR_INVALID_TICK_COUNT.create(j);
+ if (j < this.minimum) {
+ throw ERROR_TICK_COUNT_TOO_LOW.create(j, this.minimum);
} else {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 1f3f414ede558f590a5e68256a60d9ca3c3edf32..4bd8a68ed3fb9ab8857ed53a78284c2b43dbaaec 100644
+index 8cd54a95609df0c5497c00d1a254c22d47e80a15..0447aaaa778e9e7f5ceb3d0f3c868a8289fcdc6f 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -2838,7 +2838,7 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
+@@ -2861,7 +2861,7 @@ public abstract class MinecraftServer extends MinecraftServerBlockableEventLoop
}
double overuseCount = (double)overuse/(double)MAX_CHUNK_EXEC_TIME;
@@ -179,7 +179,7 @@ index 88f10d729aa1e0a01790521821d691a0ecd373a2..45b2aa542969798a5a3b73af78de21cc
// Paper end
}
diff --git a/src/main/java/net/minecraft/util/Mth.java b/src/main/java/net/minecraft/util/Mth.java
-index 618f19d70a61062ed5989ec6cf0c036f2e047466..2963a5516575f656882d11547671201060b8ada0 100644
+index a378a2ddd96e76925fa3409282d9606a86c72334..8f6a109675d3ac160c8ee199400cedc20f529e2e 100644
--- a/src/main/java/net/minecraft/util/Mth.java
+++ b/src/main/java/net/minecraft/util/Mth.java
@@ -9,6 +9,7 @@ import net.minecraft.core.Vec3i;
@@ -189,8 +189,8 @@ index 618f19d70a61062ed5989ec6cf0c036f2e047466..2963a5516575f656882d115476712010
+import org.dreeam.leaf.LeafConfig;
public class Mth {
- private static final int BIG_ENOUGH_INT = 1024;
-@@ -800,6 +801,7 @@ public class Mth {
+ private static final long UUID_VERSION = 61440L;
+@@ -592,6 +593,7 @@ public class Mth {
}
public static double length(double a, double b) {
@@ -199,10 +199,10 @@ index 618f19d70a61062ed5989ec6cf0c036f2e047466..2963a5516575f656882d115476712010
}
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 87499e82e80a8b7d6d8ca6eeaa1819b74fcf1665..cb6f4a671dc258eab9e739d5a80952e3768acbbd 100644
+index a076e8b852a87b67602a21f07048da1570226a81..a947acfee2d45ba29e293b196250d52af874bcc6 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -1512,7 +1512,7 @@ public abstract class LivingEntity extends Entity {
+@@ -1501,7 +1501,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (this instanceof ServerPlayer) {
CriteriaTriggers.ENTITY_HURT_PLAYER.trigger((ServerPlayer) this, source, f1, amount, flag);
if (f2 > 0.0F && f2 < 3.4028235E37F) {
@@ -211,7 +211,7 @@ index 87499e82e80a8b7d6d8ca6eeaa1819b74fcf1665..cb6f4a671dc258eab9e739d5a80952e3
}
}
-@@ -2102,9 +2102,9 @@ public abstract class LivingEntity extends Entity {
+@@ -2100,9 +2100,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (f3 > 0.0F && f3 < 3.4028235E37F) {
if (this instanceof ServerPlayer) {
@@ -223,7 +223,7 @@ index 87499e82e80a8b7d6d8ca6eeaa1819b74fcf1665..cb6f4a671dc258eab9e739d5a80952e3
}
}
}
-@@ -2216,9 +2216,9 @@ public abstract class LivingEntity extends Entity {
+@@ -2214,9 +2214,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
float f3 = (float) -event.getDamage(DamageModifier.RESISTANCE);
if (f3 > 0.0F && f3 < 3.4028235E37F) {
if (this instanceof ServerPlayer) {
@@ -235,20 +235,25 @@ index 87499e82e80a8b7d6d8ca6eeaa1819b74fcf1665..cb6f4a671dc258eab9e739d5a80952e3
}
}
}
-@@ -2250,10 +2250,10 @@ public abstract class LivingEntity extends Entity {
+@@ -2248,7 +2248,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
float f2 = absorptionModifier;
if (f2 > 0.0F && f2 < 3.4028235E37F && this instanceof net.minecraft.world.entity.player.Player) {
- ((net.minecraft.world.entity.player.Player) this).awardStat(Stats.DAMAGE_ABSORBED, Math.round(f2 * 10.0F));
+ ((net.minecraft.world.entity.player.Player) this).awardStat(Stats.DAMAGE_ABSORBED, carpetfixes.helpers.FastMath.round(f2 * 10.0F)); // Mirai
}
- if (f2 > 0.0F && f2 < 3.4028235E37F && damagesource.getEntity() instanceof ServerPlayer) {
-- ((ServerPlayer) damagesource.getEntity()).awardStat(Stats.DAMAGE_DEALT_ABSORBED, Math.round(f2 * 10.0F));
-+ ((ServerPlayer) damagesource.getEntity()).awardStat(Stats.DAMAGE_DEALT_ABSORBED, carpetfixes.helpers.FastMath.round(f2 * 10.0F)); // Mirai
+ if (f2 > 0.0F && f2 < 3.4028235E37F) {
+ Entity entity = damagesource.getEntity();
+@@ -2256,7 +2256,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+ if (entity instanceof ServerPlayer) {
+ ServerPlayer entityplayer = (ServerPlayer) entity;
+
+- entityplayer.awardStat(Stats.DAMAGE_DEALT_ABSORBED, Math.round(f2 * 10.0F));
++ entityplayer.awardStat(Stats.DAMAGE_DEALT_ABSORBED, carpetfixes.helpers.FastMath.round(f2 * 10.0F)); // Mirai
+ }
}
- if (f > 0 || !human) {
-@@ -2261,7 +2261,7 @@ public abstract class LivingEntity extends Entity {
+@@ -2265,7 +2265,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
// 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) {
@@ -257,8 +262,8 @@ index 87499e82e80a8b7d6d8ca6eeaa1819b74fcf1665..cb6f4a671dc258eab9e739d5a80952e3
}
}
// CraftBukkit end
-@@ -2285,7 +2285,7 @@ public abstract class LivingEntity extends Entity {
- CriteriaTriggers.ENTITY_HURT_PLAYER.trigger((ServerPlayer) this, damagesource, f, originalDamage, true);
+@@ -2287,7 +2287,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+ CriteriaTriggers.ENTITY_HURT_PLAYER.trigger((ServerPlayer) this, damagesource, originalDamage, f, true); // Paper - fix taken/dealt param order
f2 = (float) -event.getDamage(DamageModifier.BLOCKING);
if (f2 > 0.0F && f2 < 3.4028235E37F) {
- ((ServerPlayer) this).awardStat(Stats.DAMAGE_BLOCKED_BY_SHIELD, Math.round(originalDamage * 10.0F));
@@ -266,7 +271,7 @@ index 87499e82e80a8b7d6d8ca6eeaa1819b74fcf1665..cb6f4a671dc258eab9e739d5a80952e3
}
}
-@@ -3088,13 +3088,13 @@ public abstract class LivingEntity extends Entity {
+@@ -3054,13 +3054,13 @@ public abstract class LivingEntity extends Entity implements Attackable {
f2 = this.tickHeadTurn(f1, f2);
// Paper start - stop large pitch and yaw changes from crashing the server
@@ -285,10 +290,10 @@ index 87499e82e80a8b7d6d8ca6eeaa1819b74fcf1665..cb6f4a671dc258eab9e739d5a80952e3
this.animStep += f2;
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 8123f6dade5e64f6f8d9e567402636b8e297abe0..cd68fabce025a80eb2633192ae9493ff6bbf7817 100644
+index 7b0dbfaab5951aaf09c36bc5112d953585f0098a..8814e1320fa716184a7f8ae930717583184b5408 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
-@@ -1074,7 +1074,7 @@ public abstract class Player extends LivingEntity {
+@@ -1072,7 +1072,7 @@ public abstract class Player extends LivingEntity {
float f2 = f1 - f;
if (f2 > 0.0F && f2 < 3.4028235E37F) {
@@ -297,16 +302,16 @@ index 8123f6dade5e64f6f8d9e567402636b8e297abe0..cd68fabce025a80eb2633192ae9493ff
}
if (f != 0.0F) {
-@@ -1084,7 +1084,7 @@ public abstract class Player extends LivingEntity {
- this.setHealth(this.getHealth() - f);
+@@ -1082,7 +1082,7 @@ public abstract class Player extends LivingEntity {
this.getCombatTracker().recordDamage(damagesource, f3, f);
+ this.setHealth(this.getHealth() - f);
if (f < 3.4028235E37F) {
- this.awardStat(Stats.DAMAGE_TAKEN, Math.round(f * 10.0F));
+ this.awardStat(Stats.DAMAGE_TAKEN, carpetfixes.helpers.FastMath.round(f * 10.0F)); // Mirai
}
}
-@@ -1423,7 +1423,7 @@ public abstract class Player extends LivingEntity {
+@@ -1422,7 +1422,7 @@ public abstract class Player extends LivingEntity {
if (target instanceof LivingEntity) {
float f5 = f3 - ((LivingEntity) target).getHealth();
@@ -315,7 +320,7 @@ index 8123f6dade5e64f6f8d9e567402636b8e297abe0..cd68fabce025a80eb2633192ae9493ff
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);
-@@ -1691,29 +1691,29 @@ public abstract class Player extends LivingEntity {
+@@ -1686,29 +1686,29 @@ public abstract class Player extends LivingEntity {
int i;
if (this.isSwimming()) {
@@ -350,7 +355,7 @@ index 8123f6dade5e64f6f8d9e567402636b8e297abe0..cd68fabce025a80eb2633192ae9493ff
if (i > 0) {
if (this.isSprinting()) {
this.awardStat(Stats.SPRINT_ONE_CM, i);
-@@ -1727,10 +1727,10 @@ public abstract class Player extends LivingEntity {
+@@ -1722,10 +1722,10 @@ public abstract class Player extends LivingEntity {
}
}
} else if (this.isFallFlying()) {
@@ -363,7 +368,7 @@ index 8123f6dade5e64f6f8d9e567402636b8e297abe0..cd68fabce025a80eb2633192ae9493ff
if (i > 25) {
this.awardStat(Stats.FLY_ONE_CM, i);
}
-@@ -1741,7 +1741,7 @@ public abstract class Player extends LivingEntity {
+@@ -1736,7 +1736,7 @@ public abstract class Player extends LivingEntity {
private void checkRidingStatistics(double dx, double dy, double dz) {
if (this.isPassenger()) {
@@ -372,7 +377,7 @@ index 8123f6dade5e64f6f8d9e567402636b8e297abe0..cd68fabce025a80eb2633192ae9493ff
if (i > 0) {
Entity entity = this.getVehicle();
-@@ -1768,7 +1768,7 @@ public abstract class Player extends LivingEntity {
+@@ -1763,7 +1763,7 @@ public abstract class Player extends LivingEntity {
return false;
} else {
if (fallDistance >= 2.0F) {
@@ -382,10 +387,10 @@ index 8123f6dade5e64f6f8d9e567402636b8e297abe0..cd68fabce025a80eb2633192ae9493ff
return super.causeFallDamage(fallDistance, damageMultiplier, damageSource);
diff --git a/src/main/java/net/minecraft/world/item/Item.java b/src/main/java/net/minecraft/world/item/Item.java
-index 253d3c1b83d1e8f5d1afbdb5fb7007196ed94436..ea9c536db845d94ae4333c1e8fa9469cf20a45b7 100644
+index dd2f6c67533cc3344a171fe3ae9b3704796d8c50..78e641cf4f5857712f60b168be803f311e7def10 100644
--- a/src/main/java/net/minecraft/world/item/Item.java
+++ b/src/main/java/net/minecraft/world/item/Item.java
-@@ -168,7 +168,7 @@ public class Item implements FeatureElement, ItemLike {
+@@ -169,7 +169,7 @@ public class Item implements FeatureElement, ItemLike {
}
public int getBarWidth(ItemStack stack) {
@@ -395,10 +400,10 @@ index 253d3c1b83d1e8f5d1afbdb5fb7007196ed94436..ea9c536db845d94ae4333c1e8fa9469c
public int getBarColor(ItemStack stack) {
diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
-index 064783822333d11120daa28f3be5099e10510b72..48fa055b8130889c5fcce9d0e282ea12a4daf577 100644
+index ecf640b00007a386290f8dfe9935a8aa610079fd..8b199643eda44a6f020768af70e85175fbe2be5d 100644
--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
-@@ -346,7 +346,7 @@ public class EnchantmentHelper {
+@@ -350,7 +350,7 @@ public class EnchantmentHelper {
} else {
level += 1 + random.nextInt(i / 4 + 1) + random.nextInt(i / 4 + 1);
float f = (random.nextFloat() + random.nextFloat() - 1.0F) * 0.15F;
@@ -408,7 +413,7 @@ index 064783822333d11120daa28f3be5099e10510b72..48fa055b8130889c5fcce9d0e282ea12
if (!list2.isEmpty()) {
WeightedRandom.getRandomItem(random, list2).ifPresent(list::add);
diff --git a/src/main/java/net/minecraft/world/level/block/DaylightDetectorBlock.java b/src/main/java/net/minecraft/world/level/block/DaylightDetectorBlock.java
-index 16504b8be08064e61b013fa943f692816612cbd0..38f6759501dcc2a0adb9608a9f639c2411acf277 100644
+index 81376e725151f723dad8a7b5c1a4bd597e60294e..5a33c98d29e1a76e5239dab166514ab95779ddc6 100644
--- a/src/main/java/net/minecraft/world/level/block/DaylightDetectorBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/DaylightDetectorBlock.java
@@ -62,7 +62,7 @@ public class DaylightDetectorBlock extends BaseEntityBlock {
@@ -419,7 +424,7 @@ index 16504b8be08064e61b013fa943f692816612cbd0..38f6759501dcc2a0adb9608a9f639c24
+ i = carpetfixes.helpers.FastMath.round((float) i * Mth.cos(f)); // Mirai
}
- i = Mth.clamp(i, (int) 0, (int) 15);
+ i = Mth.clamp(i, 0, 15);
diff --git a/src/main/java/net/minecraft/world/level/levelgen/SurfaceSystem.java b/src/main/java/net/minecraft/world/level/levelgen/SurfaceSystem.java
index 3152d995f87beca1e0243a7d594d352ec458b0ed..d4dbee946d292e0d01910cc4fd1c67cda8fd7dc8 100644
--- a/src/main/java/net/minecraft/world/level/levelgen/SurfaceSystem.java
@@ -487,7 +492,7 @@ index 731c7dd15f131dc124be6af8f342b122cb89491b..24a82111a5485da1e3903977d0519e9e
return i;
}
diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java
-index b3604afdc3fcb515d0c56349552dc1eaeb733a5a..4260147ebc4f1e60ce510212c2829ed32f94b735 100644
+index 918631209956adae59b83dd28e7492290362311e..607b02f77c76760f607ce763ea2ea17e48323c0e 100644
--- a/src/main/java/org/dreeam/leaf/LeafConfig.java
+++ b/src/main/java/org/dreeam/leaf/LeafConfig.java
@@ -188,12 +188,18 @@ public class LeafConfig {
diff --git a/patches/server/0031-Petal-reduce-work-done-by-game-event-system.patch b/patches/server/0031-Petal-reduce-work-done-by-game-event-system.patch
index b5d12bae..8b3e697c 100644
--- a/patches/server/0031-Petal-reduce-work-done-by-game-event-system.patch
+++ b/patches/server/0031-Petal-reduce-work-done-by-game-event-system.patch
@@ -11,7 +11,7 @@ Original project: https://github.com/Bloom-host/Petal
2. EuclideanGameEventListenerRegistry is not used concurrently so we ban that usage for improved performance with allays
diff --git a/src/main/java/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java
-index 163e63e3c538c7c1c75ed634896db9d8c00416f3..d07c31d21c98583f7a387a23697b673feae6ad6b 100644
+index 902f2b39104bf059849228829bfe93b6dbc757d4..088bc38bfe82532a9ec80a96de8178dee21d07d6 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java
@@ -85,6 +85,13 @@ public class SculkCatalystBlockEntity extends BlockEntity implements GameEventLi
@@ -29,7 +29,7 @@ index 163e63e3c538c7c1c75ed634896db9d8c00416f3..d07c31d21c98583f7a387a23697b673f
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 c752545aa67ef6488d8dfa80fa424e123d7c8f0b..4c0f62f95990dc926ced1e4528612904bfbb6399 100644
+index ccf7a5abfe1d15c02eaa7b7b5699642f53bc3510..e6d3fa7921e5e5d002613391851a75a53370276a 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -87,7 +87,18 @@ public class LevelChunk extends ChunkAccess {
@@ -173,10 +173,10 @@ index a6689c03777c2b4b79dcafcae5d70c949519cd8e..f94169a3e177251a05644e3e384ac051
+ // petal end
}
diff --git a/src/main/java/net/minecraft/world/level/gameevent/vibrations/VibrationListener.java b/src/main/java/net/minecraft/world/level/gameevent/vibrations/VibrationListener.java
-index 3288837a406539c4a22464524ffb2e727c6ad32b..f36c53a7f34be7540c805df91454fa614cd3bbb7 100644
+index 103e12ec589dcbe6dbad7432b50e0644c3a37b1b..c90a827ca260d5f010c699488cba0dd00f9e97e4 100644
--- a/src/main/java/net/minecraft/world/level/gameevent/vibrations/VibrationListener.java
+++ b/src/main/java/net/minecraft/world/level/gameevent/vibrations/VibrationListener.java
-@@ -225,6 +225,13 @@ public class VibrationListener implements GameEventListener {
+@@ -228,6 +228,13 @@ public class VibrationListener implements GameEventListener {
return true;
}
diff --git a/patches/server/0032-Petal-Reduce-sensor-work.patch b/patches/server/0032-Petal-Reduce-sensor-work.patch
index b8401056..33eb897f 100644
--- a/patches/server/0032-Petal-Reduce-sensor-work.patch
+++ b/patches/server/0032-Petal-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 cb6f4a671dc258eab9e739d5a80952e3768acbbd..a6f9361ac685bd87c6a697c4f0da0b37dccbb5ab 100644
+index a947acfee2d45ba29e293b196250d52af874bcc6..1467773e42a6c85121e96c492c01abe73d7b257e 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -1012,12 +1012,14 @@ public abstract class LivingEntity extends Entity {
+@@ -1006,12 +1006,14 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
if (entity != null) {
@@ -31,10 +31,10 @@ index cb6f4a671dc258eab9e739d5a80952e3768acbbd..a6f9361ac685bd87c6a697c4f0da0b37
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 27fc50571305132c86497fcb1d5b1bb514610a4e..f1a33fd186fa9c10ac99b7b0e6379902a10dfb14 100644
+index f2eca869a9301c8e6536396f55fd5dc871a3dfbc..9a3551cf7977ef59b499871bd31bd20d33679d3a 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
-@@ -867,8 +867,8 @@ public abstract class Mob extends LivingEntity {
+@@ -896,8 +896,8 @@ public abstract class Mob extends LivingEntity implements Targeting {
return;
}
// Paper end
diff --git a/patches/server/0034-Slice-Smooth-Teleports.patch b/patches/server/0034-Slice-Smooth-Teleports.patch
index 207ebdba..86ec8e77 100644
--- a/patches/server/0034-Slice-Smooth-Teleports.patch
+++ b/patches/server/0034-Slice-Smooth-Teleports.patch
@@ -7,10 +7,10 @@ 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 f940f54841455caf5959cb7c9289c5bf4a159f55..f5190797bc4e91f080abe1a01cac03913f3eb276 100644
+index b9b16f566103798c95592b2921b48a2585a65e73..fc1209030fc72a1160899fbb795a1c1a38e95c59 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -269,6 +269,7 @@ public class ServerPlayer extends Player {
+@@ -275,6 +275,7 @@ public class ServerPlayer extends Player {
public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper
public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper
public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event
@@ -19,10 +19,10 @@ index f940f54841455caf5959cb7c9289c5bf4a159f55..f5190797bc4e91f080abe1a01cac0391
private boolean compassBar = false; // Purpur
private boolean ramBar = false; // Purpur
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index 94f3d84a1a89e1f1c720d6e7f19e93b1b0b5a865..e77d9b23ae797cc1b2d04028695bfa27d9f02076 100644
+index f509a31c20bef0a37dfa9b51afe2fac9a607b10b..ca352368716214a6c670aa7185a0b3a8ac1a0ffc 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
-@@ -975,12 +975,12 @@ public abstract class PlayerList {
+@@ -982,12 +982,12 @@ public abstract class PlayerList {
int i = flag ? 1 : 0;
// CraftBukkit start
LevelData worlddata = worldserver1.getLevelData();
@@ -38,10 +38,10 @@ index 94f3d84a1a89e1f1c720d6e7f19e93b1b0b5a865..e77d9b23ae797cc1b2d04028695bfa27
// 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 74874910d339bd8fbec44755f1ab32fafd17d2e9..f968f35aa0665e6ead59a221f30c2cd36da40ac0 100644
+index 7b80640474c35cf0d47a246c3dcb0f3e72581da8..14c9a75ae54ad2f63caf22f826b302181e8fddda 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1215,6 +1215,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1244,6 +1244,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper end
}
diff --git a/patches/server/0036-PaperPR-Optimize-VarInts.patch b/patches/server/0036-PaperPR-Optimize-VarInts.patch
index fc937584..0cee0253 100644
--- a/patches/server/0036-PaperPR-Optimize-VarInts.patch
+++ b/patches/server/0036-PaperPR-Optimize-VarInts.patch
@@ -8,10 +8,10 @@ Original project: https://github.com/PaperMC/Velocity
Paper pull request: https://github.com/PaperMC/Paper/pull/8418
diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
-index 32ee4ed11aefd82dca2e3e78b3108f041fdc3695..b54a4b2df126006b200a9e2dfda85303e6baa0ee 100644
+index 9938bb90bef84cf784f9a1ceb02a1a45aa8b48a1..f5080a3716a65a7175b043c41f1e002322ecbf70 100644
--- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java
+++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
-@@ -94,6 +94,18 @@ public class FriendlyByteBuf extends ByteBuf {
+@@ -103,6 +103,18 @@ public class FriendlyByteBuf extends ByteBuf {
}
public static int getVarIntSize(int value) {
@@ -30,7 +30,7 @@ index 32ee4ed11aefd82dca2e3e78b3108f041fdc3695..b54a4b2df126006b200a9e2dfda85303
for (int j = 1; j < 5; ++j) {
if ((value & -1 << j * 7) == 0) {
return j;
-@@ -566,6 +578,21 @@ public class FriendlyByteBuf extends ByteBuf {
+@@ -613,6 +625,21 @@ public class FriendlyByteBuf extends ByteBuf {
}
public FriendlyByteBuf writeVarInt(int value) {
diff --git a/patches/server/0037-Fix-build-system-issues.patch b/patches/server/0037-Fix-build-system-issues.patch
index 9c3cdd07..f408eacf 100644
--- a/patches/server/0037-Fix-build-system-issues.patch
+++ b/patches/server/0037-Fix-build-system-issues.patch
@@ -5,28 +5,23 @@ Subject: [PATCH] Fix build system issues
diff --git a/build.gradle.kts b/build.gradle.kts
-index 1b4d00c5b5794b065737f0ca2e61ec8a79a5fa48..4edfa9998d160026765a35806fad2d959ce84de4 100644
+index 63a819196ddcad8106c7358172176c41031c70cd..3ef66e60ef5c8645ed6b88328a33ef332bb1ea27 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
-@@ -198,15 +198,14 @@ fun TaskContainer.registerRunTask(
- systemProperty("gale.detect.thread.blocks", true) // Gale - base thread pool - watch for blocking base threads
-
- val memoryGb = providers.gradleProperty("paper.runMemoryGb").getOrElse("2")
-- val modifiedJvmArgs = jvmArgs ?: arrayListOf()
-- modifiedJvmArgs.addAll(listOf("-Xms${memoryGb}G", "-Xmx${memoryGb}G"))
-+ minHeapSize = "${memoryGb}G"
-+ maxHeapSize = "${memoryGb}G"
- // Gale start - enable virtual threads for development runs
+@@ -198,14 +198,8 @@ fun TaskContainer.registerRunTask(
+ minHeapSize = "${memoryGb}G"
+ maxHeapSize = "${memoryGb}G"
+ // Gale start - modify JVM args for development runs
+- val modifiedJvmArgs = ArrayList(jvmArgs) ?: arrayListOf()
+- // Gale start - enable virtual threads for development runs
- modifiedJvmArgs.add("--enable-preview")
- modifiedJvmArgs.addAll(listOf("--add-opens=java.base/java.lang=ALL-UNNAMED"))
-+ args("--enable-preview")
-+ args(listOf("--add-opens=java.base/java.lang=ALL-UNNAMED"))
- // Gale end - enable virtual threads for development runs
+- // Gale end - enable virtual threads for development runs
- modifiedJvmArgs.add("--add-modules=jdk.incubator.vector") // Gale - Pufferfish - SIMD support
- modifiedJvmArgs.add("-XX:+AllowRedefinitionToAddDeleteMethods") // Gale - base thread pool - watch for blocking base threads
- jvmArgs = modifiedJvmArgs
-+ args("--add-modules=jdk.incubator.vector") // Gale - Pufferfish - SIMD support
-+ args("-XX:+AllowRedefinitionToAddDeleteMethods") // Gale - base thread pool - watch for blocking base threads
++ args("--add-modules=jdk.incubator.vector") // Gale - Pufferfish - SIMD support // Leaf - Fix build system issues
++ args("-XX:+AllowRedefinitionToAddDeleteMethods") // Gale - base thread pool - watch for blocking base threads // Leaf - Fix build system issues
+ // Gale end - modify JVM args for development runs
doFirst {
- workingDir.mkdirs()