From 45e119a5adbfa06ab65578b302743e60d7b91ff2 Mon Sep 17 00:00:00 2001
From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
Date: Thu, 9 May 2024 18:36:58 -0400
Subject: [PATCH] Some 1.20.6 work
---
.../{build_1.20.4.yml => build_1.20.6.yml} | 12 +--
README.md | 6 +-
README_EN.md | 6 +-
build.gradle.kts | 9 +--
gradle.properties | 6 +-
patches/api/0002-Leaves-Replay-Mod-API.patch | 8 +-
patches/api/0003-KioCG-Chunk-API.patch | 4 +-
patches/server/0001-Fix-build.patch | 6 +-
patches/server/0002-Rebrand-to-Luminol.patch | 10 +--
.../server/0003-Empty-config-file-base.patch | 8 +-
.../0004-Add-config-for-server-mod-name.patch | 4 +-
...-Add-config-for-unsafe-teleportation.patch | 6 +-
.../0006-Add-config-for-void-trading.patch | 4 +-
.../0007-Add-config-for-vanilla-random.patch | 4 +-
.../0008-Add-config-for-chat-sign.patch | 19 +++--
patches/server/0009-Add-a-simple-tpsbar.patch | 14 ++--
.../0010-Add-config-for-username-check.patch | 17 ++--
...-Add-config-for-offline-mode-warning.patch | 4 +-
...-config-for-out-of-order-chat-checks.patch | 20 ++---
...d-a-simple-watchdog-for-tick-regions.patch | 4 +-
...y-fixing-folia-spector-teleportation.patch | 4 +-
...f-entity-was-moving-to-another-regio.patch | 4 +-
...Async-calling-during-moving-event-be.patch | 22 ++---
...iju-Vanilla-end-portal-teleportation.patch | 8 +-
.../0019-Petal-Reduce-sensor-work.patch | 19 ++---
...-Cache-climbing-check-for-activation.patch | 10 +--
...0023-Pufferfish-Optimize-suffocation.patch | 10 +--
...ferfish-Reduce-chunk-loading-lookups.patch | 4 +-
...ce-entity-fluid-lookups-if-no-fluids.patch | 10 +--
...check-for-spooky-season-once-an-hour.patch | 8 +-
.../server/0029-Pufferfish-Entity-TTL.patch | 10 +--
...fish-Reduce-projectile-chunk-loading.patch | 4 +-
...fferfish-Dynamic-Activation-of-Brain.patch | 81 ++++++++++---------
...tle-goal-selector-during-inactive-ti.patch | 4 +-
...Pufferfish-Reduce-entity-allocations.patch | 19 ++---
35 files changed, 193 insertions(+), 195 deletions(-)
rename .github/workflows/{build_1.20.4.yml => build_1.20.6.yml} (92%)
diff --git a/.github/workflows/build_1.20.4.yml b/.github/workflows/build_1.20.6.yml
similarity index 92%
rename from .github/workflows/build_1.20.4.yml
rename to .github/workflows/build_1.20.6.yml
index ee623a0..901e735 100644
--- a/.github/workflows/build_1.20.4.yml
+++ b/.github/workflows/build_1.20.6.yml
@@ -1,10 +1,10 @@
-name: Luminol CI - ver/1.20.4
+name: Luminol CI - ver/1.20.6
on:
push:
- branches: [ "ver/1.20.4" ]
+ branches: [ "ver/1.20.6" ]
pull_request:
- branches: [ "ver/1.20.4" ]
+ branches: [ "ver/1.20.6" ]
permissions: write-all
@@ -20,12 +20,12 @@ jobs:
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
with:
- gradle-version: 8.4
+ gradle-version: 8.7
- name: Set up JDK
uses: actions/setup-java@v4
with:
- distribution: 'temurin'
- java-version: '17'
+ distribution: 'zulu'
+ java-version: '21'
- name: Configure Git User Details
run: git config --global user.email "ci@luminolmc.com" && git config --global user.name "LuminolMC CI"
- name: Apply Patches
diff --git a/README.md b/README.md
index a2af4b0..cbf361b 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@
任何版本都可以在 [Release](https://github.com/LuminolMC/Luminol/releases) 中找到,你也可以通过[以下步骤](./README.md#构建)自己构建。
## 构建
-要构建一个paperclip jar,你需要运行以下命令。你可以在build/libs中找到jar(注意:需要`JDK17`)
+要构建一个paperclip jar,你需要运行以下命令。你可以在build/libs中找到jar(注意:需要`JDK21`)
```shell
./gradlew applyPatches && ./gradlew createMojmapPaperclipJar
@@ -33,7 +33,7 @@
```kotlin
dependencies {
- compileOnly("me.earthme.luminol:luminol-api:1.20.4-R0.1-SNAPSHOT")
+ compileOnly("me.earthme.luminol:luminol-api:1.20.6-R0.1-SNAPSHOT")
}
```
@@ -43,7 +43,7 @@ dependencies {
me.earthme.luminol
luminol-api
- 1.20.4-R0.1-SNAPSHOT
+ 1.20.6-R0.1-SNAPSHOT
```
diff --git a/README_EN.md b/README_EN.md
index 8ce5c87..da7f01b 100644
--- a/README_EN.md
+++ b/README_EN.md
@@ -22,7 +22,7 @@
Any versions are available in the [release](https://github.com/LuminolMC/Luminol/releases), also you can build it by yourself through [the following steps](./README_EN.md#build).
## Build
-To build a paperclip jar, you need to run the following command. You can find the jar in build/libs(Note: JDK17 is needed)
+To build a paperclip jar, you need to run the following command. You can find the jar in build/libs(Note: JDK21 is needed)
```shell
./gradlew applyPatches && ./gradlew createMojmapPaperclipJar
@@ -33,7 +33,7 @@ For gradle:
```kotlin
dependencies {
- compileOnly("me.earthme.luminol:luminol-api:1.20.4-R0.1-SNAPSHOT")
+ compileOnly("me.earthme.luminol:luminol-api:1.20.6-R0.1-SNAPSHOT")
}
```
@@ -43,7 +43,7 @@ For maven
me.earthme.luminol
luminol-api
- 1.20.4-R0.1-SNAPSHOT
+ 1.20.6-R0.1-SNAPSHOT
```
diff --git a/build.gradle.kts b/build.gradle.kts
index 4ed9779..7563f69 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,8 +1,7 @@
plugins {
java
`maven-publish`
- id("com.github.johnrengelman.shadow") version "8.1.1" apply false
- id("io.papermc.paperweight.patcher") version "1.5.15"
+ id("io.papermc.paperweight.patcher") version "1.6.3"
}
val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/"
@@ -26,13 +25,13 @@ subprojects {
java {
toolchain {
- languageVersion.set(JavaLanguageVersion.of(17))
+ languageVersion.set(JavaLanguageVersion.of(21))
}
}
tasks.withType {
options.encoding = Charsets.UTF_8.name()
- options.release.set(17)
+ options.release.set(21)
}
tasks.withType {
@@ -75,7 +74,7 @@ paperweight {
decompileRepo.set("https://maven.quiltmc.org/")
useStandardUpstream("folia") {
- url.set(github("Dreeam-qwq", "Folia"))
+ url.set(github("ColdeZhang", "Folia"))
ref.set(providers.gradleProperty("foliaCommit"))
withStandardPatcher {
diff --git a/gradle.properties b/gradle.properties
index b6387d3..ec2b657 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,13 +1,13 @@
group = me.earthme.luminol
-version = 1.20.4-R0.1-SNAPSHOT
+version = 1.20.6-R0.1-SNAPSHOT
-foliaCommit = 6dba62e72c05cd71da3a99da09f3d8879a508ac3
+foliaCommit = e11a709b335774e10fade0ade952a73d7dd577a7
org.gradle.caching = true
org.gradle.parallel = true
org.gradle.vfs.watch = false
org.gradle.jvmargs = -Xmx3G
-mcVersion = 1.20.4
+mcVersion = 1.20.6
GroupMCV = 1.20
preVersion = false
\ No newline at end of file
diff --git a/patches/api/0002-Leaves-Replay-Mod-API.patch b/patches/api/0002-Leaves-Replay-Mod-API.patch
index aec3d41..497b7e8 100644
--- a/patches/api/0002-Leaves-Replay-Mod-API.patch
+++ b/patches/api/0002-Leaves-Replay-Mod-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Leaves Replay Mod API
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
-index c37904d1aae749030620e1bbdb955e25c91ab1f8..84df970635f25239ba1e67fd3dcb4401d14be862 100644
+index b4327a55c422380ca6b3a1dc47c3adbe76de4655..8645a137c6beb5fe9bbb30159317a35a4cd96a50 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
-@@ -2892,4 +2892,10 @@ public final class Bukkit {
+@@ -2918,4 +2918,10 @@ public final class Bukkit {
public static Server.Spigot spigot() {
return server.spigot();
}
@@ -20,10 +20,10 @@ index c37904d1aae749030620e1bbdb955e25c91ab1f8..84df970635f25239ba1e67fd3dcb4401
+ // Leaves end - Photographer API
}
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
-index 15395ef52505087e7eef3b1a5981e787dcc16508..7c7b350f1bbcd1585d175cf9c6b0a938ae5ad759 100644
+index 2a888d33eff4487f23463c565c9f75c40fba7d94..3a78bcb6f681b44594c4f5f35120b67adbe6aeb5 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
-@@ -2524,4 +2524,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
+@@ -2546,4 +2546,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
*/
public boolean isGlobalTickThread();
// Folia end - region threading API
diff --git a/patches/api/0003-KioCG-Chunk-API.patch b/patches/api/0003-KioCG-Chunk-API.patch
index a0f8cda..6ee6033 100644
--- a/patches/api/0003-KioCG-Chunk-API.patch
+++ b/patches/api/0003-KioCG-Chunk-API.patch
@@ -16,10 +16,10 @@ index d547ae2b20c58bc703de4532b3b591dd34ddb1c6..8721954514f813d0a1200935e27a3ac0
+ long getChunkHotAvg(); // KioCG
}
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index d048ae07cc33fd77d128cc1ebf88b0804969fa3c..7e633b448327ee01533a00bc278367c47951d3e2 100644
+index 6c327a07bf8a6aa11a2d7dad12b2830acc539484..d66a165ca910bf47da837fb166e5c295325ef9a8 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -3752,4 +3752,6 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -3806,4 +3806,6 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@Override
Spigot spigot();
// Spigot end
diff --git a/patches/server/0001-Fix-build.patch b/patches/server/0001-Fix-build.patch
index 425686b..9925338 100644
--- a/patches/server/0001-Fix-build.patch
+++ b/patches/server/0001-Fix-build.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix build
diff --git a/build.gradle.kts b/build.gradle.kts
-index 905262067dabc7cbe5b08639fcefd3a996a937e0..c0608731dd7a352628a1e31997d0658dfa9f2ea8 100644
+index b1d621ed91c74790fd5b66339c044ec444de62ef..fee54ed7abfc93f8fd911aea6831988e3699f762 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
-@@ -14,7 +14,7 @@ val alsoShade: Configuration by configurations.creating
+@@ -13,7 +13,7 @@ val alsoShade: Configuration by configurations.creating
dependencies {
// Folia start
@@ -17,7 +17,7 @@ index 905262067dabc7cbe5b08639fcefd3a996a937e0..c0608731dd7a352628a1e31997d0658d
implementation("io.papermc.paper:paper-mojangapi:${project.version}") {
exclude("io.papermc.paper", "paper-api")
}
-@@ -75,7 +75,7 @@ tasks.jar {
+@@ -83,7 +83,7 @@ tasks.jar {
attributes(
"Main-Class" to "org.bukkit.craftbukkit.Main",
"Implementation-Title" to "CraftBukkit",
diff --git a/patches/server/0002-Rebrand-to-Luminol.patch b/patches/server/0002-Rebrand-to-Luminol.patch
index be8d1ea..6f52a83 100644
--- a/patches/server/0002-Rebrand-to-Luminol.patch
+++ b/patches/server/0002-Rebrand-to-Luminol.patch
@@ -27,7 +27,7 @@ index cb60d58d4a7556dd896f31d0cd249f860bb3ef84..b52a805150e95d7d27403d3c18088b33
metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> {
Map> map = new HashMap<>();
diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
-index e2f704c115fd6e00960bb56bb0779f1100c89c17..72b9343979de5aa8bb399cbe7cb8a795df9830ab 100644
+index e2f704c115fd6e00960bb56bb0779f1100c89c17..7707908064a75ecf02677a0110207e194c3eefd1 100644
--- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
+++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
@@ -20,7 +20,7 @@ import java.util.stream.StreamSupport;
@@ -51,10 +51,10 @@ index e2f704c115fd6e00960bb56bb0779f1100c89c17..72b9343979de5aa8bb399cbe7cb8a795
return history != null ? TextComponent.ofChildren(updateMessage, Component.newline(), history) : updateMessage;
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index d6a7188227cee9072976db98613324ee2d3dcdc8..8c9a80197247a384dd80747bf23fdd809d08b341 100644
+index 5702ab6f4a3f02ce791a7bdbc2a9487fc318a611..f456ff479ee40fc318efa526dd02a21a2bc131ab 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1963,7 +1963,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop entries) {
+@@ -14,9 +14,16 @@ public record ArgumentSignatures(List entries) {
private static final int MAX_ARGUMENT_NAME_LENGTH = 16;
public ArgumentSignatures(FriendlyByteBuf buf) {
@@ -49,15 +49,14 @@ index 4abd7babc3aa7268975386e7c2319f7961b0c3aa..d209466866c30b3f15b8c40934ea6470
+ }
+ //Luminol end
+
-+
- @Nullable
- public MessageSignature get(String argumentName) {
- for (ArgumentSignatures.Entry entry : this.entries) {
+ public void write(FriendlyByteBuf buf) {
+ buf.writeCollection(this.entries, (buf2, entry) -> entry.write(buf2));
+ }
diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
-index b863249ff7e13cf4939c8961601f0564c62fd661..6ab73b0568c3f9df8090be992736a14d49e0286c 100644
+index aafeb9c61ddba6a8671f0238eda47b227619f1af..6ba184b38864ac64ec94a8bb326d91495a56c945 100644
--- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java
+++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
-@@ -143,6 +143,16 @@ public class FriendlyByteBuf extends ByteBuf {
+@@ -129,6 +129,16 @@ public class FriendlyByteBuf extends ByteBuf {
// Paper end - Adventure; add max length parameter
DataResult dataresult = codec.encodeStart(JsonOps.INSTANCE, value);
@@ -71,6 +70,6 @@ index b863249ff7e13cf4939c8961601f0564c62fd661..6ab73b0568c3f9df8090be992736a14d
+ }
+ //Luminol end
+
- this.writeUtf(FriendlyByteBuf.GSON.toJson((JsonElement) Util.getOrThrow(dataresult, (s) -> {
- return new EncoderException("Failed to encode: " + s + " " + value);
+ this.writeUtf(FriendlyByteBuf.GSON.toJson((JsonElement) dataresult.getOrThrow((s) -> {
+ return new EncoderException("Failed to encode: " + s + " " + String.valueOf(value));
})), maxLength); // Paper - Adventure; add max length parameter
diff --git a/patches/server/0009-Add-a-simple-tpsbar.patch b/patches/server/0009-Add-a-simple-tpsbar.patch
index 1e09045..88d5963 100644
--- a/patches/server/0009-Add-a-simple-tpsbar.patch
+++ b/patches/server/0009-Add-a-simple-tpsbar.patch
@@ -347,10 +347,10 @@ index 0000000000000000000000000000000000000000..3f1478dde900d671c4bfa43df80f6295
+ }
+}
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
-index 68355b9a0a88c871e18031d04581c9ef53313f48..c626018d786fe231cd74a28c83515715d896f214 100644
+index e032f454fe8b274ed70f750ada4b3f375fda33da..af3eedca870fdf01e9ff82e6b6595ef9b3a9a0a8 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
-@@ -830,6 +830,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
+@@ -851,6 +851,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@Override
public void stopServer() {
@@ -359,10 +359,10 @@ index 68355b9a0a88c871e18031d04581c9ef53313f48..c626018d786fe231cd74a28c83515715
//Util.shutdownExecutors(); // Paper - moved into super
SkullBlockEntity.clear();
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 9d7837f90340a96edbd544826ae2241c61ae72c4..c8701a2a0a3cbd60e263fe5c069b5993b36842a6 100644
+index da87c4825c67e62ae238877f1fb3220f4c57f553..11b5155820d38a42e62f68fe0f70fe4daf80f5d1 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -285,6 +285,7 @@ public class ServerPlayer extends Player {
+@@ -302,6 +302,7 @@ public class ServerPlayer extends Player {
// Paper start - replace player chunk loader
private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1));
public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
@@ -371,10 +371,10 @@ index 9d7837f90340a96edbd544826ae2241c61ae72c4..c8701a2a0a3cbd60e263fe5c069b5993
public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances getViewDistances() {
return this.viewDistances.get();
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 0ece776a1e281a328e28dc07fb4dc882b19d029c..b57980d4fa445f2aa71e4477459da833eade50e8 100644
+index 92f08b13da2e13cf375d8794e54f7292140545d7..14dca1757d518814890d9866182b50e7e22ebf58 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2287,6 +2287,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2372,6 +2372,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
handle.expToDrop = data.getInt("expToDrop");
handle.keepLevel = data.getBoolean("keepLevel");
}
@@ -384,7 +384,7 @@ index 0ece776a1e281a328e28dc07fb4dc882b19d029c..b57980d4fa445f2aa71e4477459da833
}
}
-@@ -2308,6 +2311,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2393,6 +2396,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
data.putLong("lastPlayed", System.currentTimeMillis());
data.putString("lastKnownName", handle.getScoreboardName());
diff --git a/patches/server/0010-Add-config-for-username-check.patch b/patches/server/0010-Add-config-for-username-check.patch
index 406e2b8..0544f93 100644
--- a/patches/server/0010-Add-config-for-username-check.patch
+++ b/patches/server/0010-Add-config-for-username-check.patch
@@ -31,15 +31,16 @@ index 0000000000000000000000000000000000000000..c7e4724cc4ab8d911bcaf0106c098b26
+ }
+}
diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
-index aa4b461bbb2c8c4753f7c9057bab1740de2c0284..1ff6c82925417932df856bf1e5866519327f018e 100644
+index 83b09feec13a00c35e6f8d4f0ccdae1c8da9c0e5..d946a08f7a7532079eab83a7d4affc89e6e6ac1e 100644
--- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
-@@ -143,7 +143,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
- @Override
+@@ -171,7 +171,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
public void handleHello(ServerboundHelloPacket packet) {
Validate.validState(this.state == ServerLoginPacketListenerImpl.State.HELLO, "Unexpected hello packet", new Object[0]);
-- if (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() && io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.performUsernameValidation && !this.iKnowThisMayNotBeTheBestIdeaButPleaseDisableUsernameValidation) Validate.validState(Player.isValidUsername(packet.name()), "Invalid characters in username", new Object[0]); // Paper - config username validation
-+ if (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() && io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.performUsernameValidation && !this.iKnowThisMayNotBeTheBestIdeaButPleaseDisableUsernameValidation && me.earthme.luminol.config.modules.misc.UsernameCheckConfig.enabled) Validate.validState(Player.isValidUsername(packet.name()), "Invalid characters in username", new Object[0]); // Paper - config username validation //Luminol - Add config for username check
- this.requestedUsername = packet.name();
- GameProfile gameprofile = this.server.getSingleplayerProfile();
-
+ // Paper start - Validate usernames
+- if (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode()
++ if (me.earthme.luminol.config.modules.misc.UsernameCheckConfig.enabled //Luminol - Add config for username check
++ && io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode()
+ && io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.performUsernameValidation
+ && !this.iKnowThisMayNotBeTheBestIdeaButPleaseDisableUsernameValidation) {
+ Validate.validState(StringUtil.isReasonablePlayerName(packet.name()), "Invalid characters in username", new Object[0]);
diff --git a/patches/server/0011-Add-config-for-offline-mode-warning.patch b/patches/server/0011-Add-config-for-offline-mode-warning.patch
index 4247a54..5dd8a71 100644
--- a/patches/server/0011-Add-config-for-offline-mode-warning.patch
+++ b/patches/server/0011-Add-config-for-offline-mode-warning.patch
@@ -31,10 +31,10 @@ index 0000000000000000000000000000000000000000..502b93c7bda9e8577a1901a8777b7cf9
+ }
+}
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
-index c626018d786fe231cd74a28c83515715d896f214..49555381641e9cf9a5c3f00db1e193c9d992637b 100644
+index af3eedca870fdf01e9ff82e6b6595ef9b3a9a0a8..fd00ae1315bafeb24247943e5c84b107a783eea3 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
-@@ -282,7 +282,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
+@@ -295,7 +295,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
String proxyFlavor = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "Velocity" : "BungeeCord";
String proxyLink = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "https://docs.papermc.io/velocity/security" : "http://www.spigotmc.org/wiki/firewall-guide/";
// Paper end - Add Velocity IP Forwarding Support
diff --git a/patches/server/0012-Add-config-for-out-of-order-chat-checks.patch b/patches/server/0012-Add-config-for-out-of-order-chat-checks.patch
index 0b1475e..4e8dcce 100644
--- a/patches/server/0012-Add-config-for-out-of-order-chat-checks.patch
+++ b/patches/server/0012-Add-config-for-out-of-order-chat-checks.patch
@@ -31,15 +31,15 @@ index 0000000000000000000000000000000000000000..83176a8a7e993b51a0663b0f76161884
+ }
+}
diff --git a/src/main/java/net/minecraft/network/chat/SignedMessageChain.java b/src/main/java/net/minecraft/network/chat/SignedMessageChain.java
-index 0af9ed92824ccf30814eceb6a2c2e5c12661c991..7c42f0ca1f3abe38dcd97b0985c72332b45761f7 100644
+index 300929a406905f5ff1ede664d5b99fb0938d4d2e..7c82730e9a66f9b44dd559d7b8da511f9c5f8ca8 100644
--- a/src/main/java/net/minecraft/network/chat/SignedMessageChain.java
+++ b/src/main/java/net/minecraft/network/chat/SignedMessageChain.java
-@@ -37,7 +37,7 @@ public class SignedMessageChain {
- throw new SignedMessageChain.DecodeException(Component.translatable("chat.disabled.chain_broken"), false); // Paper - diff on change (if disconnects, need a new kick event cause)
- } else if (playerPublicKey.data().hasExpired()) {
- throw new SignedMessageChain.DecodeException(Component.translatable("chat.disabled.expiredProfileKey"), false, org.bukkit.event.player.PlayerKickEvent.Cause.EXPIRED_PROFILE_PUBLIC_KEY); // Paper - kick event causes
-- } else if (body.timeStamp().isBefore(this.lastTimeStamp)) {
-+ } else if (me.earthme.luminol.config.modules.misc.InorderChatConfig.enabled && body.timeStamp().isBefore(this.lastTimeStamp)) { // Luminol - Add config for out-of-order chat checks
- throw new SignedMessageChain.DecodeException(Component.translatable("multiplayer.disconnect.out_of_order_chat"), true, org.bukkit.event.player.PlayerKickEvent.Cause.OUT_OF_ORDER_CHAT); // Paper - kick event causes
- } else {
- this.lastTimeStamp = body.timeStamp();
+@@ -45,7 +45,7 @@ public class SignedMessageChain {
+ SignedMessageLink signedMessageLink = SignedMessageChain.this.nextLink;
+ if (signedMessageLink == null) {
+ throw new SignedMessageChain.DecodeException(SignedMessageChain.DecodeException.CHAIN_BROKEN);
+- } else if (body.timeStamp().isBefore(SignedMessageChain.this.lastTimeStamp)) {
++ } else if (me.earthme.luminol.config.modules.misc.InorderChatConfig.enabled && body.timeStamp().isBefore(SignedMessageChain.this.lastTimeStamp)) { // Luminol - Add config for out-of-order chat checks
+ this.setChainBroken();
+ throw new SignedMessageChain.DecodeException(SignedMessageChain.DecodeException.OUT_OF_ORDER_CHAT, org.bukkit.event.player.PlayerKickEvent.Cause.OUT_OF_ORDER_CHAT); // Paper - kick event causes
+ } else {
diff --git a/patches/server/0013-Add-a-simple-watchdog-for-tick-regions.patch b/patches/server/0013-Add-a-simple-watchdog-for-tick-regions.patch
index fbd8a7c..1517f1d 100644
--- a/patches/server/0013-Add-a-simple-watchdog-for-tick-regions.patch
+++ b/patches/server/0013-Add-a-simple-watchdog-for-tick-regions.patch
@@ -243,10 +243,10 @@ index 0000000000000000000000000000000000000000..6b4368cdf9762ad981345fef0f26cd00
+}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 0d756dd5181a2444175184227bef648d07c17236..59b1da130e519cbe06ed5eedf9e4dc881e45ba36 100644
+index d5487dbe3cb9c6fcdec0e6bf02d030d666e81858..bf488b466a9901f0311bacf774ad046a18f2426b 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1222,6 +1222,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop teleportComplete) {
io.papermc.paper.util.TickThread.ensureTickThread(this, "Cannot teleport entity async");
@@ -95,10 +95,10 @@ index 36f0175228f4ab80ebc67082e7c9bbbc2c14e147..ad15df5dfe34e20a6b5dafaf01e8a730
return false;
}
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
-index d514ec1e4cbdc579c3a61533998437903afdc8b6..ed4cbc459bf5f4b7615c6e2ab0d99728d18f2598 100644
+index 4d7454e5a64fc18e63793a221daa94617f17c666..a1dc46ec6d53389eb7c801a7a14c4169406de580 100644
--- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
+++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
-@@ -378,7 +378,21 @@ public abstract class AbstractMinecart extends VehicleEntity {
+@@ -375,7 +375,21 @@ public abstract class AbstractMinecart extends VehicleEntity {
this.level().getCraftServer().getPluginManager().callEvent(new org.bukkit.event.vehicle.VehicleUpdateEvent(vehicle));
if (!from.equals(to)) {
@@ -121,10 +121,10 @@ index d514ec1e4cbdc579c3a61533998437903afdc8b6..ed4cbc459bf5f4b7615c6e2ab0d99728
// CraftBukkit end
if (this.getMinecartType() == AbstractMinecart.Type.RIDEABLE && this.getDeltaMovement().horizontalDistanceSqr() > 0.01D) {
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
-index db6aa75d642f4a7258f197933671907faf79c8f2..065d4c06e3fd93fb46595b9864b150ea2480f5fc 100644
+index b068cff9b5aa457d65b679529956e8210296d799..d002519a356072284faa5f879e188f3e3062939f 100644
--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
+++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
-@@ -377,8 +377,22 @@ public class Boat extends VehicleEntity implements VariantHolder {
+@@ -370,8 +370,22 @@ public class Boat extends VehicleEntity implements VariantHolder {
server.getPluginManager().callEvent(new org.bukkit.event.vehicle.VehicleUpdateEvent(vehicle));
if (this.lastLocation != null && !this.lastLocation.equals(to)) {
diff --git a/patches/server/0018-Kaiiju-Vanilla-end-portal-teleportation.patch b/patches/server/0018-Kaiiju-Vanilla-end-portal-teleportation.patch
index 3df4eb3..fec0756 100644
--- a/patches/server/0018-Kaiiju-Vanilla-end-portal-teleportation.patch
+++ b/patches/server/0018-Kaiiju-Vanilla-end-portal-teleportation.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Kaiiju Vanilla end portal teleportation
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 8749e1d7109b751ec69e771b43014c085c0802cd..b676200cb54afa7aebe23eee4e7aef7c9a6e0712 100644
+index 7112c529a652b6ab6a418b3a44fc1f075061cc74..643631e11c88285f33d050bf7b4b1e2f63b5c992 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -4193,12 +4193,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
+@@ -4240,12 +4240,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
targetPos, 16, // load 16 blocks to be safe from block physics
ca.spottedleaf.concurrentutil.executor.standard.PrioritisedExecutor.Priority.HIGH,
(chunks) -> {
@@ -28,7 +28,7 @@ index 8749e1d7109b751ec69e771b43014c085c0802cd..b676200cb54afa7aebe23eee4e7aef7c
);
}
);
-@@ -4385,6 +4390,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
+@@ -4432,6 +4437,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
if (!this.canPortalAsync(takePassengers)) {
return false;
}
@@ -39,7 +39,7 @@ index 8749e1d7109b751ec69e771b43014c085c0802cd..b676200cb54afa7aebe23eee4e7aef7c
Vec3 initialPosition = this.position();
ChunkPos initialPositionChunk = new ChunkPos(
-@@ -4443,7 +4452,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
+@@ -4490,7 +4499,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// place
passengerTree.root.placeInAsync(
originWorld, destination, Entity.TELEPORT_FLAG_LOAD_CHUNK | (takePassengers ? Entity.TELEPORT_FLAG_TELEPORT_PASSENGERS : 0L),
diff --git a/patches/server/0019-Petal-Reduce-sensor-work.patch b/patches/server/0019-Petal-Reduce-sensor-work.patch
index 863d5e1..5fefee4 100644
--- a/patches/server/0019-Petal-Reduce-sensor-work.patch
+++ b/patches/server/0019-Petal-Reduce-sensor-work.patch
@@ -33,20 +33,21 @@ index 0000000000000000000000000000000000000000..dd45cf1fde5ee4cf8347064f106c64b8
+ }
+}
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index 54297b9dde40fe853d873d60373cd8c0a3c9466b..7369d608c26e46e9d3a881ac14efe1d0f075b1cb 100644
+index ef5cd008de4d145b67c70e48ae21ea969aedb1f0..8345d8431e1c05639f14919b9bad1029249a5f50 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
-@@ -926,10 +926,11 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -983,12 +983,12 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
return;
}
// Paper end - Allow nerfed mobs to jump and float
-+ int i = this.tickCount + this.getId(); // Folia - region threading //Luminol - Petal - Move up
-+
- this.level().getProfiler().push("sensing");
++ int i = this.tickCount + this.getId(); //Luminol - Petal - Move up
+ ProfilerFiller gameprofilerfiller = this.level().getProfiler();
+
+ gameprofilerfiller.push("sensing");
- this.sensing.tick();
-+ if (i % me.earthme.luminol.config.modules.optimizations.PetalReduceSensorWorkConfig.delayTicks == 0 || !me.earthme.luminol.config.modules.optimizations.PetalReduceSensorWorkConfig.enabled)this.sensing.tick(); //Luminol - Petal - Reduce sensor work
- this.level().getProfiler().pop();
-- int i = this.tickCount + this.getId(); // Folia - region threading
++ if (i % me.earthme.luminol.config.modules.optimizations.PetalReduceSensorWorkConfig.delayTicks == 0 || !me.earthme.luminol.config.modules.optimizations.PetalReduceSensorWorkConfig.enabled) this.sensing.tick(); // Luminol - Petal - Reduce sensor work
+ gameprofilerfiller.pop();
+- int i = this.tickCount + this.getId();
if (i % 2 != 0 && this.tickCount > 1) {
- this.level().getProfiler().push("targetSelector");
+ gameprofilerfiller.push("targetSelector");
diff --git a/patches/server/0021-Pufferfish-Cache-climbing-check-for-activation.patch b/patches/server/0021-Pufferfish-Cache-climbing-check-for-activation.patch
index a2f9c0e..7e67add 100644
--- a/patches/server/0021-Pufferfish-Cache-climbing-check-for-activation.patch
+++ b/patches/server/0021-Pufferfish-Cache-climbing-check-for-activation.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Pufferfish Cache climbing check for activation
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index b676200cb54afa7aebe23eee4e7aef7c9a6e0712..2fb2df4922a1b5b3acf732e68d8db7bb15ecc789 100644
+index 643631e11c88285f33d050bf7b4b1e2f63b5c992..94c9f407f526b2d43cf61725b414b113de03c67d 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -309,7 +309,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
+@@ -312,7 +312,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
public double yo;
public double zo;
private Vec3 position;
@@ -18,10 +18,10 @@ index b676200cb54afa7aebe23eee4e7aef7c9a6e0712..2fb2df4922a1b5b3acf732e68d8db7bb
private Vec3 deltaMovement;
private float yRot;
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index b9f6e599afd4bdfb97e7f1b1881730cbed781bba..ff7b0d6a22a0858d4e4348d4f3c0c55bcb3f0084 100644
+index ae5c7f39581bf389c5a89ad914d0d7092ad3dcdd..03226f99cbf67a77b4ffcd3accbe23298a0bcecd 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -143,7 +143,6 @@ import org.bukkit.event.entity.EntityTeleportEvent;
+@@ -150,7 +150,6 @@ import org.bukkit.event.entity.EntityTeleportEvent;
import org.bukkit.event.player.PlayerItemConsumeEvent;
// CraftBukkit end
@@ -29,7 +29,7 @@ index b9f6e599afd4bdfb97e7f1b1881730cbed781bba..ff7b0d6a22a0858d4e4348d4f3c0c55b
public abstract class LivingEntity extends Entity implements Attackable {
-@@ -2043,6 +2042,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -2070,6 +2069,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
return this.lastClimbablePos;
}
diff --git a/patches/server/0023-Pufferfish-Optimize-suffocation.patch b/patches/server/0023-Pufferfish-Optimize-suffocation.patch
index f792cdd..7c3d861 100644
--- a/patches/server/0023-Pufferfish-Optimize-suffocation.patch
+++ b/patches/server/0023-Pufferfish-Optimize-suffocation.patch
@@ -31,10 +31,10 @@ index 0000000000000000000000000000000000000000..3e48cd297b4869e5c89b6abc43c726d3
+ }
+}
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index ff7b0d6a22a0858d4e4348d4f3c0c55bcb3f0084..96039cd1c01cf6ea384f63bf5623de75e5def41f 100644
+index 03226f99cbf67a77b4ffcd3accbe23298a0bcecd..0e53ec3e67820b86ceb3680f3b743632489600d2 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -428,7 +428,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -441,7 +441,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
boolean flag = this instanceof net.minecraft.world.entity.player.Player;
if (!this.level().isClientSide) {
@@ -43,7 +43,7 @@ index ff7b0d6a22a0858d4e4348d4f3c0c55bcb3f0084..96039cd1c01cf6ea384f63bf5623de75
this.hurt(this.damageSources().inWall(), 1.0F);
} else if (flag && !this.level().getWorldBorder().isWithinBounds(this.getBoundingBox())) {
double d0 = this.level().getWorldBorder().getDistanceToBorder(this) + this.level().getWorldBorder().getDamageSafeZone();
-@@ -1436,6 +1436,19 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1450,6 +1450,19 @@ public abstract class LivingEntity extends Entity implements Attackable {
return this.getHealth() <= 0.0F;
}
@@ -64,10 +64,10 @@ index ff7b0d6a22a0858d4e4348d4f3c0c55bcb3f0084..96039cd1c01cf6ea384f63bf5623de75
public boolean hurt(DamageSource source, float amount) {
if (this.isInvulnerableTo(source)) {
diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
-index 12440ee2dccc0a697fb403765f2e1b987ccc0283..de2471cfa96a23944f229f33ffdff88b6b7756e4 100644
+index 7ddca52f7fe3f289b4b867e134326b1ead1a2aee..5040b1a7125dd9647a98fd812f558ec3a2171092 100644
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
-@@ -151,6 +151,13 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
+@@ -154,6 +154,13 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
this.bossEvent.setName(this.getDisplayName());
}
diff --git a/patches/server/0025-Pufferfish-Reduce-chunk-loading-lookups.patch b/patches/server/0025-Pufferfish-Reduce-chunk-loading-lookups.patch
index f8acd09..85e5aa5 100644
--- a/patches/server/0025-Pufferfish-Reduce-chunk-loading-lookups.patch
+++ b/patches/server/0025-Pufferfish-Reduce-chunk-loading-lookups.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Pufferfish Reduce chunk loading & lookups
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
-index f33c03e81b7ff643741f56eea055e6af260de618..6563e625ebae47fc68e5010d36bd4b4d327c07b7 100644
+index 260202fab3ac300552c557b44dcf251f083c6a78..9cf4e2f309e182c69e9592ac606c0ae85a1200b6 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
-@@ -333,11 +333,17 @@ public class EnderMan extends Monster implements NeutralMob {
+@@ -318,11 +318,17 @@ public class EnderMan extends Monster implements NeutralMob {
private boolean teleport(double x, double y, double z) {
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(x, y, z);
diff --git a/patches/server/0027-Pufferfish-Reduce-entity-fluid-lookups-if-no-fluids.patch b/patches/server/0027-Pufferfish-Reduce-entity-fluid-lookups-if-no-fluids.patch
index 903ef93..3eccaba 100644
--- a/patches/server/0027-Pufferfish-Reduce-entity-fluid-lookups-if-no-fluids.patch
+++ b/patches/server/0027-Pufferfish-Reduce-entity-fluid-lookups-if-no-fluids.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Pufferfish Reduce entity fluid lookups if no fluids
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 2fb2df4922a1b5b3acf732e68d8db7bb15ecc789..9b4a9025f9b30834a07a83cc02e7ee7f665dcbd9 100644
+index 94c9f407f526b2d43cf61725b414b113de03c67d..94bac805d032015587e88b4de3cf7064a534e736 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -5260,16 +5260,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
+@@ -5317,16 +5317,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) {
@@ -34,7 +34,7 @@ index 2fb2df4922a1b5b3acf732e68d8db7bb15ecc789..9b4a9025f9b30834a07a83cc02e7ee7f
double d1 = 0.0D;
boolean flag = this.isPushedByFluid();
boolean flag1 = false;
-@@ -5277,14 +5279,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
+@@ -5334,14 +5336,61 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
int k1 = 0;
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();
@@ -102,7 +102,7 @@ index 2fb2df4922a1b5b3acf732e68d8db7bb15ecc789..9b4a9025f9b30834a07a83cc02e7ee7f
if (d2 >= axisalignedbb.minY) {
flag1 = true;
-@@ -5306,9 +5355,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
+@@ -5363,9 +5412,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// CraftBukkit end
}
}
@@ -116,7 +116,7 @@ index 2fb2df4922a1b5b3acf732e68d8db7bb15ecc789..9b4a9025f9b30834a07a83cc02e7ee7f
if (vec3d.length() > 0.0D) {
if (k1 > 0) {
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java
-index 796bbef3544e06b8e7aac7e8ac5f740a2613f4bd..2422ca3ffc6ab7178cacf933b8013f85e7de4bd9 100644
+index a2a5aef769ee8bb638a5a9f3da9812fa4a85dda5..7288261b8924d08e93abecb664e2273c624a325b 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java
@@ -25,6 +25,7 @@ public class LevelChunkSection {
diff --git a/patches/server/0028-Pufferfish-Only-check-for-spooky-season-once-an-hour.patch b/patches/server/0028-Pufferfish-Only-check-for-spooky-season-once-an-hour.patch
index 3fab086..5e1d8ad 100644
--- a/patches/server/0028-Pufferfish-Only-check-for-spooky-season-once-an-hour.patch
+++ b/patches/server/0028-Pufferfish-Only-check-for-spooky-season-once-an-hour.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Pufferfish Only check for spooky season once an hour
diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
-index 44fa2d4f90389f5526746bd94a2450c03340bd0b..3bbeb33eb51b6aea96e926af6715980e207b815e 100644
+index dc27ddf5131e7398a5390a5187261d4c7fb6ccaa..39cc49b746b0a775fde5d173dd4f712ab4a84a97 100644
--- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java
+++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
-@@ -241,13 +241,25 @@ public class Bat extends AmbientCreature {
+@@ -239,13 +239,25 @@ public class Bat extends AmbientCreature {
}
}
@@ -33,5 +33,5 @@ index 44fa2d4f90389f5526746bd94a2450c03340bd0b..3bbeb33eb51b6aea96e926af6715980e
}
+ // Pufferfish end
- @Override
- protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) {
+ private void setupAnimationStates() {
+ if (this.isResting()) {
diff --git a/patches/server/0029-Pufferfish-Entity-TTL.patch b/patches/server/0029-Pufferfish-Entity-TTL.patch
index cbadd13..5f935b9 100644
--- a/patches/server/0029-Pufferfish-Entity-TTL.patch
+++ b/patches/server/0029-Pufferfish-Entity-TTL.patch
@@ -49,10 +49,10 @@ index 0000000000000000000000000000000000000000..15697d69659b6e1e776acf5094684b5f
+ }
+}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 9b4a9025f9b30834a07a83cc02e7ee7f665dcbd9..835a6e73a340375e30e4822df45a1c99d36ac009 100644
+index 94bac805d032015587e88b4de3cf7064a534e736..5caa390a167c770f657f142fe3355d127fc95cce 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -812,6 +812,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
+@@ -856,6 +856,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public void tick() {
@@ -66,12 +66,12 @@ index 9b4a9025f9b30834a07a83cc02e7ee7f665dcbd9..835a6e73a340375e30e4822df45a1c99
}
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
-index f921c159c4f7556daf3c8405241de3607ba251ad..8deae3e95a26f4b42b2c2134e22f9649bd7a5391 100644
+index a2f0fb8b4057bd3a84d18298e49c4d02955240d3..aa2bb97ef305ed234a11b05e665ac1062b571591 100644
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
-@@ -313,6 +313,7 @@ public class EntityType implements FeatureElement, EntityTypeT
- private ResourceLocation lootTable;
+@@ -325,6 +325,7 @@ public class EntityType implements FeatureElement, EntityTypeT
private final EntityDimensions dimensions;
+ private final float spawnDimensionsScale;
private final FeatureFlagSet requiredFeatures;
+ public int ttl = -1; // Pufferfish
diff --git a/patches/server/0030-Pufferfish-Reduce-projectile-chunk-loading.patch b/patches/server/0030-Pufferfish-Reduce-projectile-chunk-loading.patch
index c8a637b..19944d0 100644
--- a/patches/server/0030-Pufferfish-Reduce-projectile-chunk-loading.patch
+++ b/patches/server/0030-Pufferfish-Reduce-projectile-chunk-loading.patch
@@ -33,10 +33,10 @@ index 0000000000000000000000000000000000000000..12683ec5a5102e45b6171fea0b833ba5
+ }
+}
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
-index 10d7c64fb3a9bafdcdae99f8dc87017722341337..11dfac223d36b0a8cbd865b3a29de15b4268eeb0 100644
+index a8d2f7a9d0bcb6db0b38ac30b098d59951053b47..77eee09a301a838f21834319d4962eba1c8dcbed 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
-@@ -45,6 +45,36 @@ public abstract class Projectile extends Entity implements TraceableEntity {
+@@ -46,6 +46,36 @@ public abstract class Projectile extends Entity implements TraceableEntity {
super(type, world);
}
diff --git a/patches/server/0031-Pufferfish-Dynamic-Activation-of-Brain.patch b/patches/server/0031-Pufferfish-Dynamic-Activation-of-Brain.patch
index 6a7070f..6679c8f 100644
--- a/patches/server/0031-Pufferfish-Dynamic-Activation-of-Brain.patch
+++ b/patches/server/0031-Pufferfish-Dynamic-Activation-of-Brain.patch
@@ -71,10 +71,10 @@ index 0000000000000000000000000000000000000000..af5893ba1f738ec9827d7b714682c314
+ }
+}
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 43b8f64d7c14e6dd0975b24a3205806c4433f26f..3f394934e64df09e65b86d61a1dcabd3c6031a38 100644
+index 3cf345900624cb00e371a980a9828f94b8f9c674..01ff844462226b262d307204acff116844c09584 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -987,6 +987,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -993,6 +993,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.timings.entityTick.startTiming(); // Spigot
profiler.startTimer(ca.spottedleaf.leafprofiler.LProfilerRegistry.ENTITY_TICK); try { // Folia - profiler
regionizedWorldData.forEachTickingEntity((entity) -> { // Folia - regionised ticking
@@ -83,10 +83,10 @@ index 43b8f64d7c14e6dd0975b24a3205806c4433f26f..3f394934e64df09e65b86d61a1dcabd3
if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
entity.discard();
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 5c36b3c6bf38acfa3f38dcca4b666aca9665e7d4..5b76c645214852f172c2a498751438090cc970ec 100644
+index 5caa390a167c770f657f142fe3355d127fc95cce..18c6fe66fa944f5e5b7892df4d8fef4c7346d3bc 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -481,6 +481,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
+@@ -483,6 +483,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// Folia - region ticking
// Paper end - optimise entity tracking
@@ -99,10 +99,10 @@ index 5c36b3c6bf38acfa3f38dcca4b666aca9665e7d4..5b76c645214852f172c2a49875143809
return this.yRot;
}
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
-index 8deae3e95a26f4b42b2c2134e22f9649bd7a5391..c09357c1ef84a29d972119cb496b0ae97f98e4f4 100644
+index aa2bb97ef305ed234a11b05e665ac1062b571591..29699e51b3e791a1a82a19c95fd6a3f30bac75d5 100644
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
-@@ -305,6 +305,7 @@ public class EntityType implements FeatureElement, EntityTypeT
+@@ -316,6 +316,7 @@ public class EntityType implements FeatureElement, EntityTypeT
private final boolean canSpawnFarFromPlayer;
private final int clientTrackingRange;
private final int updateInterval;
@@ -111,10 +111,10 @@ index 8deae3e95a26f4b42b2c2134e22f9649bd7a5391..c09357c1ef84a29d972119cb496b0ae9
private String descriptionId;
@Nullable
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index 7433a29577ecb36e847bd610059c0c83702d01f6..397c8ef1c83f0bf3c03d31ee19dbf1533dba9e48 100644
+index 8345d8431e1c05639f14919b9bad1029249a5f50..208f0995479df5741ff780df607451f27c6f91af 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
-@@ -234,10 +234,10 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -249,10 +249,10 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
@Override
public void inactiveTick() {
super.inactiveTick();
@@ -127,51 +127,52 @@ index 7433a29577ecb36e847bd610059c0c83702d01f6..397c8ef1c83f0bf3c03d31ee19dbf153
this.targetSelector.tick();
}
}
-@@ -934,16 +934,20 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -992,16 +992,20 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
if (i % 2 != 0 && this.tickCount > 1) {
- this.level().getProfiler().push("targetSelector");
+ gameprofilerfiller.push("targetSelector");
+ if (this.targetSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking
this.targetSelector.tickRunningGoals(false);
- this.level().getProfiler().pop();
- this.level().getProfiler().push("goalSelector");
+ gameprofilerfiller.pop();
+ gameprofilerfiller.push("goalSelector");
+ if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking
this.goalSelector.tickRunningGoals(false);
- this.level().getProfiler().pop();
+ gameprofilerfiller.pop();
} else {
- this.level().getProfiler().push("targetSelector");
+ gameprofilerfiller.push("targetSelector");
+ if (this.targetSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking
this.targetSelector.tick();
- this.level().getProfiler().pop();
- this.level().getProfiler().push("goalSelector");
+ gameprofilerfiller.pop();
+ gameprofilerfiller.push("goalSelector");
+ if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking
this.goalSelector.tick();
- this.level().getProfiler().pop();
+ gameprofilerfiller.pop();
}
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java
-index 38af5c7280366fd6ec077f3d914ea5f3ee77451a..f97b41422949bc6521b289daa6ca2861f25885a0 100644
+index 74d4f653d5c7f1923c59019effd78337402f7025..73f2a527d18f61db97d5b5050ebe67822771cf58 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java
-@@ -52,9 +52,12 @@ public class GoalSelector {
+@@ -43,9 +43,13 @@ public class GoalSelector {
}
// Paper start
- public boolean inactiveTick() {
+ public boolean inactiveTick(int tickRate, boolean inactive) { // Pufferfish start
+ if (inactive && !me.earthme.luminol.config.modules.optimizations.EntityDABConfig.dearEnabled) tickRate = 4; // reset to Paper's
-+ tickRate = Math.min(tickRate, this.newGoalRate);
++ tickRate = Math.min(tickRate, 3);
this.curRate++;
-- return this.curRate % this.newGoalRate == 0;
-+ return this.curRate % tickRate == 0;
+- return this.curRate % 3 == 0; // TODO newGoalRate was already unused in 1.20.4, check if this is correct
++ //return this.curRate % 3 == 0; // TODO newGoalRate was already unused in 1.20.4, check if this is correct
++ return this.curRate % tickRate == 0; // Luminol - Waiting Paper
+ // Pufferfish end
}
public boolean hasTasks() {
for (WrappedGoal task : this.availableGoals) {
diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
-index 5ad5f22e5aa26445e5eb229958e7bf356bdd460e..d241ca4d0295f9fce39c11197bd435cfac7f6e54 100644
+index 991e3274091c4e25eebc6debd44653e5b566eedb..789d3469ce4983868e4b880b6053bd2d8c33a10a 100644
--- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
+++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java
-@@ -221,9 +221,11 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
+@@ -215,9 +215,11 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
return 0.4F;
}
@@ -184,10 +185,10 @@ index 5ad5f22e5aa26445e5eb229958e7bf356bdd460e..d241ca4d0295f9fce39c11197bd435cf
this.level().getProfiler().pop();
this.level().getProfiler().push("allayActivityUpdate");
diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java
-index b21e180641d17438997a80e5bcb0ec7998d24a2e..33c160994f70f71446d665e7487913437c9f9db4 100644
+index a8cc6ddbf45370fe632e5c5fb7ceef3d299e62a4..98766696556b520cf565ccadc8dba207832b4ae3 100644
--- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java
+++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java
-@@ -275,9 +275,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder {
- }
+@@ -181,9 +181,11 @@ public class Frog extends Animal implements VariantHolder> {
+ .ifPresent(this::setVariant);
}
+ private int behaviorTick = 0; // Pufferfish
@@ -216,10 +217,10 @@ index a03fb7aa9f4528f4885db88eaf480202d5f54750..1767fd2df8cb37e9c36fa3008b5131ff
this.level().getProfiler().pop();
this.level().getProfiler().push("frogActivityUpdate");
diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java
-index 958816ce2166248b542c96c10c398a52d769b4db..415afe3473d9f8a50b1edab8cfda6158e59836e6 100644
+index 290d41136f5ec7671bc4990dfe50da0a770c124d..0d34e9e0f7ce35c3c28a9216cf3cdd5eddfe90f6 100644
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java
-@@ -80,9 +80,11 @@ public class Tadpole extends AbstractFish {
+@@ -83,9 +83,11 @@ public class Tadpole extends AbstractFish {
return SoundEvents.TADPOLE_FLOP;
}
@@ -232,10 +233,10 @@ index 958816ce2166248b542c96c10c398a52d769b4db..415afe3473d9f8a50b1edab8cfda6158
this.level().getProfiler().pop();
this.level().getProfiler().push("tadpoleActivityUpdate");
diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
-index 5d247ac38fe8a61603b3d934f3000bcda773142b..2e4177cfb02616ef6fa689f6d378976e39484cfb 100644
+index 02e49c7ae5e120302b6479cf3e3934b9217eebf0..81c9f1c2895adedec246732df9f9dadddfa5f345 100644
--- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
+++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
-@@ -191,9 +191,11 @@ public class Goat extends Animal {
+@@ -190,9 +190,11 @@ public class Goat extends Animal {
return (Brain) super.getBrain(); // CraftBukkit - decompile error
}
@@ -248,10 +249,10 @@ index 5d247ac38fe8a61603b3d934f3000bcda773142b..2e4177cfb02616ef6fa689f6d378976e
this.level().getProfiler().pop();
this.level().getProfiler().push("goatActivityUpdate");
diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java
-index 050ffa4a23feba29fdf4c6a175cdff4e5009027d..1299f93d4f983e6715e447add65df91ef9e9090a 100644
+index c583d883118ded5e1884c757427dc5e73c10dd27..6f8a22c51ba5e2713dcdfc61c61b35123f9bf326 100644
--- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java
+++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java
-@@ -155,9 +155,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
+@@ -153,9 +153,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
return (Brain)super.getBrain();
}
@@ -264,10 +265,10 @@ index 050ffa4a23feba29fdf4c6a175cdff4e5009027d..1299f93d4f983e6715e447add65df91e
this.level().getProfiler().pop();
HoglinAi.updateActivity(this);
diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java
-index a9813da7f2b248f98f22e0ad2e7842915025ec12..83d83e3f84bb6bd58761671c6cd4c8683545ff4c 100644
+index a8ab486c7e11ec137da48174af6f1030dfd48056..5878a6ecadc2b9f7ac9f70622a8c85e2940e139a 100644
--- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java
+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java
-@@ -300,9 +300,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
+@@ -294,9 +294,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
return !this.cannotHunt;
}
@@ -280,10 +281,10 @@ index a9813da7f2b248f98f22e0ad2e7842915025ec12..83d83e3f84bb6bd58761671c6cd4c868
this.level().getProfiler().pop();
PiglinAi.updateActivity(this);
diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java
-index 937f81a859953498abe73bea560c86e6560e1c33..0a151c679b0dc943598180942d6d4b3886211688 100644
+index ddd60be52dce5773c80934be5aa5705db239e3dd..9cf56f2ada025aae0710099bcc3b5c62fd7bbb9e 100644
--- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java
+++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java
-@@ -273,11 +273,13 @@ public class Warden extends Monster implements VibrationSystem {
+@@ -271,11 +271,13 @@ public class Warden extends Monster implements VibrationSystem {
}
@@ -298,7 +299,7 @@ index 937f81a859953498abe73bea560c86e6560e1c33..0a151c679b0dc943598180942d6d4b38
this.level().getProfiler().pop();
super.customServerAiStep();
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-index 3eeff0cd8563939c656b5ded8470cab016903f25..90d8cd94d987416a3e9f6e6d47a5b366d4687fe0 100644
+index 6339967b154af1ca9632c7b8b315d612f4b80ea2..c4b7fd6c9d0f26361295a70d63f6fc080063d129 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -143,6 +143,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
diff --git a/patches/server/0032-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch b/patches/server/0032-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch
index a1c58ce..5785127 100644
--- a/patches/server/0032-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch
+++ b/patches/server/0032-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch
@@ -31,10 +31,10 @@ index 0000000000000000000000000000000000000000..acc032f727e605e79b688efb4873ff47
+ }
+}
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index 7f6b810f175e21dbbc85d17fefbba2a7c638144d..a892ff1b3bc11df5f46269c5ae8838c4a7f91ea9 100644
+index 208f0995479df5741ff780df607451f27c6f91af..78619c2ce66c34c4866755aa8c6c9ae18d594498 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
-@@ -230,11 +230,13 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -245,11 +245,13 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti
return this.lookControl;
}
diff --git a/patches/server/0033-Pufferfish-Reduce-entity-allocations.patch b/patches/server/0033-Pufferfish-Reduce-entity-allocations.patch
index cb2e698..9c41730 100644
--- a/patches/server/0033-Pufferfish-Reduce-entity-allocations.patch
+++ b/patches/server/0033-Pufferfish-Reduce-entity-allocations.patch
@@ -5,14 +5,14 @@ Subject: [PATCH] Pufferfish Reduce entity allocations
diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java
-index b99a080ab27e24d8131fda931ca70d6d271bb01c..8d6954d05d2bf6d6c1c4953db3127b011a858cec 100644
+index 9ef8f014af332da129bfcd3370da983ec035ecc6..bc178967affd21ad04b83ea26639a2dd9b497454 100644
--- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java
+++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java
-@@ -23,9 +23,11 @@ public class AttributeMap {
- private final Map attributes = Maps.newHashMap();
- private final Set dirtyAttributes = Sets.newHashSet();
+@@ -22,9 +22,11 @@ public class AttributeMap {
+ private final Map, AttributeInstance> attributes = new Object2ObjectOpenHashMap<>();
+ private final Set dirtyAttributes = new ObjectOpenHashSet<>();
private final AttributeSupplier supplier;
-+ private final java.util.function.Function createInstance; // Pufferfish
++ private final java.util.function.Function, AttributeInstance> createInstance; // Pufferfish
public AttributeMap(AttributeSupplier defaultAttributes) {
this.supplier = defaultAttributes;
@@ -20,15 +20,12 @@ index b99a080ab27e24d8131fda931ca70d6d271bb01c..8d6954d05d2bf6d6c1c4953db3127b01
}
private void onAttributeModified(AttributeInstance instance) {
-@@ -42,9 +44,10 @@ public class AttributeMap {
- return this.attributes.values().stream().filter(attribute -> attribute.getAttribute().isClientSyncable()).collect(Collectors.toList());
- }
+@@ -43,7 +45,7 @@ public class AttributeMap {
-+
@Nullable
- public AttributeInstance getInstance(Attribute attribute) {
+ public AttributeInstance getInstance(Holder attribute) {
- return this.attributes.computeIfAbsent(attribute, attributex -> this.supplier.createInstance(this::onAttributeModified, attributex));
+ return this.attributes.computeIfAbsent(attribute, this.createInstance); // Pufferfish - cache lambda, as for some reason java allocates it anyways
}
- @Nullable
+ public boolean hasAttribute(Holder attribute) {