diff --git a/gradle.properties b/gradle.properties
index 3afd939ea..6f44a4d38 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,7 +2,7 @@ group = org.purpurmc.purpur
version = 1.20.2-R0.1-SNAPSHOT
mcVersion = 1.20.2
-paperCommit = 852c1c236d080d9fd907a5f4fd3e850437996aa2
+paperCommit = e57af7d01e509c747520cc1037169029256289bf
org.gradle.caching = true
org.gradle.parallel = true
diff --git a/patches/unapplied/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch
similarity index 88%
rename from patches/unapplied/server/0001-Pufferfish-Server-Changes.patch
rename to patches/server/0001-Pufferfish-Server-Changes.patch
index d36441494..2c8a927be 100644
--- a/patches/unapplied/server/0001-Pufferfish-Server-Changes.patch
+++ b/patches/server/0001-Pufferfish-Server-Changes.patch
@@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
diff --git a/build.gradle.kts b/build.gradle.kts
-index 7e0580bbd0a557c7bb269507a99d25db07bf31f1..4d89c46c7ee559acf986ff5081a42fe91cb5a257 100644
+index a79461457ea19339f47572c70705d655ebc55276..57739f9dd7d045d1a585a9fc1be290a1a007db6a 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -13,8 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) {
@@ -38,7 +38,7 @@ index 7e0580bbd0a557c7bb269507a99d25db07bf31f1..4d89c46c7ee559acf986ff5081a42fe9
// Paper start
implementation("org.jline:jline-terminal-jansi:3.21.0")
implementation("net.minecrell:terminalconsoleappender:1.3.0")
-@@ -52,6 +56,13 @@ dependencies {
+@@ -52,12 +56,27 @@ dependencies {
runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3")
runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3")
@@ -50,12 +50,11 @@ index 7e0580bbd0a557c7bb269507a99d25db07bf31f1..4d89c46c7ee559acf986ff5081a42fe9
+ // Pufferfish end
+
testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test
- testImplementation("junit:junit:4.13.2")
- testImplementation("org.hamcrest:hamcrest-library:1.3")
-@@ -60,6 +71,14 @@ dependencies {
+ testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
+ testImplementation("org.hamcrest:hamcrest:2.2")
}
- val craftbukkitPackageVersion = "1_20_R1" // Paper
+ val craftbukkitPackageVersion = "1_20_R2" // Paper
+
+// Pufferfish Start
+tasks.withType {
@@ -67,7 +66,7 @@ index 7e0580bbd0a557c7bb269507a99d25db07bf31f1..4d89c46c7ee559acf986ff5081a42fe9
tasks.jar {
archiveClassifier.set("dev")
-@@ -72,7 +91,7 @@ tasks.jar {
+@@ -70,7 +89,7 @@ tasks.jar {
attributes(
"Main-Class" to "org.bukkit.craftbukkit.Main",
"Implementation-Title" to "CraftBukkit",
@@ -76,6 +75,15 @@ index 7e0580bbd0a557c7bb269507a99d25db07bf31f1..4d89c46c7ee559acf986ff5081a42fe9
"Implementation-Vendor" to date, // Paper
"Specification-Title" to "Bukkit",
"Specification-Version" to project.version,
+@@ -210,7 +229,5 @@ val runtimeClasspathForRunDev = sourceSets.main.flatMap { src ->
+ }
+ tasks.registerRunTask("runDev") {
+ description = "Spin up a non-relocated Mojang-mapped test server"
+- classpath(tasks.filterProjectDir.flatMap { it.outputJar })
+- classpath(runtimeClasspathForRunDev)
+- jvmArgs("-DPaper.isRunDev=true")
++ classpath(sourceSets.main.map { it.runtimeClasspath })
+ }
diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java
index a2f71a6d1a9e98133dff6cd0f625da9435a8af14..ff940e43ca35094bbcae6c7d471d3c4aeb7c1727 100644
--- a/src/main/java/co/aikar/timings/TimingsExport.java
@@ -616,10 +624,10 @@ index 0000000000000000000000000000000000000000..020368da69b9a492155f6de6297f7473
+}
diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
new file mode 100644
-index 0000000000000000000000000000000000000000..95d1a8a5b349f7849c040026bfa3469d03d92bfd
+index 0000000000000000000000000000000000000000..cc66657cb4f978aa2df3ca1be6c683759952cc7a
--- /dev/null
+++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
-@@ -0,0 +1,295 @@
+@@ -0,0 +1,294 @@
+package gg.pufferfish.pufferfish;
+
+import gg.pufferfish.pufferfish.simd.SIMDDetection;
@@ -904,13 +912,12 @@ index 0000000000000000000000000000000000000000..95d1a8a5b349f7849c040026bfa3469d
+ "the ender dragon whenever a player places an end crystal.");
+ }
+
++
+ public static boolean disableMethodProfiler;
+ public static boolean disableOutOfOrderChat;
-+ public static boolean suppressNullIdDisconnections;
+ private static void miscSettings() {
+ disableMethodProfiler = getBoolean("misc.disable-method-profiler", true);
+ disableOutOfOrderChat = getBoolean("misc.disable-out-of-order-chat", false);
-+ suppressNullIdDisconnections = getBoolean("misc.suppress-null-id-disconnections", false);
+ setComment("misc", "Settings for things that don't belong elsewhere");
+ }
+
@@ -1456,10 +1463,10 @@ index 0000000000000000000000000000000000000000..facd55463d44cb7e3d2ca6892982f549
+ }
+}
diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java
-index c69088a2ec374b2d236fec61e267f42afa2967b1..5dffe28f93925d4c45c9b5c4f7565b00b1aa8dd2 100644
+index d02546b18cb689724887b4e85e8d32a18828a4ad..91eaff58bb422ba188e6cfaa9c20b45bec211edd 100644
--- a/src/main/java/io/papermc/paper/util/MCUtil.java
+++ b/src/main/java/io/papermc/paper/util/MCUtil.java
-@@ -215,7 +215,7 @@ public final class MCUtil {
+@@ -213,7 +213,7 @@ public final class MCUtil {
}
public static long getCoordinateKey(final Entity entity) {
@@ -1469,19 +1476,19 @@ index c69088a2ec374b2d236fec61e267f42afa2967b1..5dffe28f93925d4c45c9b5c4f7565b00
public static long getCoordinateKey(final ChunkPos pair) {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 67ee3a4ca8a6cdeb275653d492a1fea8037c51fb..67cba5cf510e4a602121e10c015a491650127752 100644
+index 97745f0bab8d82d397c6c2a5775aed92bca0a034..371049c1236c6443384c0ce184e99d5b9f8e57c2 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -310,6 +310,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) {
AtomicReference atomicreference = new AtomicReference();
-@@ -1692,7 +1694,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop needsChangeBroadcasting = new it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet<>();
+- public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerMobSpawnMap = new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets);
++ public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerMobSpawnMap = new gg.pufferfish.pufferfish.util.AsyncPlayerAreaMap(this.pooledLinkedPlayerHashSets); // Pufferfish
+ // Paper end - optimise chunk tick iteration
+
+ public ChunkMap(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureTemplateManager structureTemplateManager, Executor executor, BlockableEventLoop mainThreadExecutor, LightChunkGetter chunkProvider, ChunkGenerator chunkGenerator, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory, int viewDistance, boolean dsync) {
+@@ -1330,8 +1330,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
return ChunkMap.this.level.getServer().getScaledTrackingDistance(initialDistance);
}
@@ -1561,7 +1568,7 @@ index fb6cbcc4839aef7dc4bd4a49613f892b07aab353..d60ae9f8d3afe3e996a66331ee510cfa
Iterator iterator = this.entity.getIndirectPassengers().iterator();
while (iterator.hasNext()) {
-@@ -1609,6 +1629,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
+@@ -1343,6 +1363,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
i = j;
}
}
@@ -1572,10 +1579,10 @@ index fb6cbcc4839aef7dc4bd4a49613f892b07aab353..d60ae9f8d3afe3e996a66331ee510cfa
return this.scaledRange(i);
}
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
-index acbcdc8cb1523044b1657e03a141fae6389a3686..fe1a9c646b09d11e7fa2186afbeb70b680ad2b57 100644
+index 17b6925b46f8386dcfc561483693de516465ec12..5d9a1855cdab1a25ad22ad096c68e55143efa821 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
-@@ -76,6 +76,9 @@ public class ServerChunkCache extends ChunkSource {
+@@ -75,6 +75,9 @@ public class ServerChunkCache extends ChunkSource {
final it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap loadedChunkMap = new it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap<>(8192, 0.5f);
private final LevelChunk[] lastLoadedChunks = new LevelChunk[4 * 4];
@@ -1585,7 +1592,7 @@ index acbcdc8cb1523044b1657e03a141fae6389a3686..fe1a9c646b09d11e7fa2186afbeb70b6
private static int getChunkCacheKey(int x, int z) {
return x & 3 | ((z & 3) << 2);
-@@ -553,6 +556,7 @@ public class ServerChunkCache extends ChunkSource {
+@@ -521,6 +524,7 @@ public class ServerChunkCache extends ChunkSource {
ProfilerFiller gameprofilerfiller = this.level.getProfiler();
gameprofilerfiller.push("pollingChunks");
@@ -1593,10 +1600,10 @@ index acbcdc8cb1523044b1657e03a141fae6389a3686..fe1a9c646b09d11e7fa2186afbeb70b6
int k = this.level.getGameRules().getInt(GameRules.RULE_RANDOMTICKING);
boolean flag1 = level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit
-@@ -562,28 +566,35 @@ public class ServerChunkCache extends ChunkSource {
+@@ -530,28 +534,35 @@ public class ServerChunkCache extends ChunkSource {
// Paper start - per player mob spawning
NaturalSpawner.SpawnState spawnercreature_d; // moved down
- if ((this.spawnFriendlies || this.spawnEnemies) && this.chunkMap.playerMobDistanceMap != null) { // don't count mobs when animals and monsters are disabled
+ if ((this.spawnFriendlies || this.spawnEnemies) && this.level.paperConfig().entities.spawning.perPlayerMobSpawns) { // don't count mobs when animals and monsters are disabled
- // re-set mob counts
- for (ServerPlayer player : this.level.players) {
- // Paper start - per player mob spawning backoff
@@ -1629,9 +1636,9 @@ index acbcdc8cb1523044b1657e03a141fae6389a3686..fe1a9c646b09d11e7fa2186afbeb70b6
- spawnercreature_d = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, null, true);
+ // Pufferfish end
} else {
-- spawnercreature_d = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, this.chunkMap.playerMobDistanceMap == null ? new LocalMobCapCalculator(this.chunkMap) : null, false);
-+ // Pufferfish start - this is only implemented for per-player mob spawning so this makes everything work if this setting is disabled.
-+ lastSpawnState = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, this.chunkMap.playerMobDistanceMap == null ? new LocalMobCapCalculator(this.chunkMap) : null, false);
+- spawnercreature_d = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false);
++ // Pufferfish start
++ lastSpawnState = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false);
+ _pufferfish_spawnCountsReady.set(true);
+ // Pufferfish end
}
@@ -1641,22 +1648,22 @@ index acbcdc8cb1523044b1657e03a141fae6389a3686..fe1a9c646b09d11e7fa2186afbeb70b6
- this.lastSpawnState = spawnercreature_d;
+ //this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously
gameprofilerfiller.popPush("filteringLoadedChunks");
- // Paper - moved down
- this.level.timings.chunkTicks.startTiming(); // Paper
-@@ -622,8 +633,8 @@ public class ServerChunkCache extends ChunkSource {
-
- if ((true || this.level.isNaturalSpawningAllowed(chunkcoordintpair)) && this.chunkMap.anyPlayerCloseEnoughForSpawning(holder, chunkcoordintpair, false)) { // Paper - optimise anyPlayerCloseEnoughForSpawning // Paper - the chunk is known ticking
+ // Paper - optimise chunk tick iteration
+ // Paper - optimise chunk tick iteration
+@@ -644,8 +655,8 @@ public class ServerChunkCache extends ChunkSource {
+ // Paper end - optimise chunk tick iteration
+ if (tick && chunk1.chunkStatus.isOrAfter(net.minecraft.server.level.FullChunkStatus.ENTITY_TICKING)) { // Paper - optimise chunk tick iteration
chunk1.incrementInhabitedTime(j);
-- if (flag2 && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair) && this.chunkMap.anyPlayerCloseEnoughForSpawning(holder, chunkcoordintpair, true)) { // Spigot // Paper - optimise anyPlayerCloseEnoughForSpawning & optimise chunk tick iteration
+- if (spawn && flag2 && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair)) { // Spigot // Paper - optimise chunk tick iteration
- NaturalSpawner.spawnForChunk(this.level, chunk1, spawnercreature_d, this.spawnFriendlies, this.spawnEnemies, flag1);
-+ if (flag2 && (!gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning || _pufferfish_spawnCountsReady.get()) && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair) && this.chunkMap.anyPlayerCloseEnoughForSpawning(holder, chunkcoordintpair, true)) { // Spigot // Paper - optimise anyPlayerCloseEnoughForSpawning & optimise chunk tick iteration
++ if (spawn && flag2 && (!gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning || _pufferfish_spawnCountsReady.get()) && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair)) { // Spigot // Paper - optimise chunk tick iteration // Pufferfish
+ NaturalSpawner.spawnForChunk(this.level, chunk1, lastSpawnState, this.spawnFriendlies, this.spawnEnemies, flag1); // Pufferfish
}
- if (true || this.level.shouldTickBlocksAt(chunkcoordintpair.toLong())) { // Paper - the chunk is known ticking
-@@ -685,6 +696,40 @@ public class ServerChunkCache extends ChunkSource {
- }
- // Paper end - controlled flush for entity tracker packets
+ if (true || this.level.shouldTickBlocksAt(chunkcoordintpair.toLong())) { // Paper - optimise chunk tick iteration
+@@ -691,6 +702,40 @@ public class ServerChunkCache extends ChunkSource {
+ gameprofilerfiller.pop();
+ this.chunkMap.tick();
}
+
+ // Pufferfish start - optimize mob spawning
@@ -1678,7 +1685,7 @@ index acbcdc8cb1523044b1657e03a141fae6389a3686..fe1a9c646b09d11e7fa2186afbeb70b6
+ firstRunSpawnCounts = false;
+ _pufferfish_spawnCountsReady.set(true);
+ }
-+ if (chunkMap.playerMobDistanceMap != null && _pufferfish_spawnCountsReady.getAndSet(false)) {
++ if (_pufferfish_spawnCountsReady.getAndSet(false)) {
+ net.minecraft.server.MinecraftServer.getServer().mobSpawnExecutor.submit(() -> {
+ int mapped = distanceManager.getNaturalSpawnChunkCount();
+ io.papermc.paper.util.maplist.IteratorSafeOrderedReferenceSet.Iterator objectiterator =
@@ -1696,10 +1703,10 @@ index acbcdc8cb1523044b1657e03a141fae6389a3686..fe1a9c646b09d11e7fa2186afbeb70b6
private void getFullChunk(long pos, Consumer chunkConsumer) {
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
-index 196280f54e397c69d32bd4d1f6ae666efdd93773..8ab959dd588b5154b63e133b2e937fa2d0ab8e52 100644
+index 35674f92a67f93382103c2766df4b678ba5c862f..d46e61640b241d32df05240dedd2c23f138725e6 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
-@@ -180,7 +180,8 @@ public class ServerEntity {
+@@ -177,7 +177,8 @@ public class ServerEntity {
long i1 = this.positionCodec.encodeZ(vec3d);
boolean flag6 = k < -32768L || k > 32767L || l < -32768L || l > 32767L || i1 < -32768L || i1 > 32767L;
@@ -1709,7 +1716,7 @@ index 196280f54e397c69d32bd4d1f6ae666efdd93773..8ab959dd588b5154b63e133b2e937fa2
if ((!flag2 || !flag3) && !(this.entity instanceof AbstractArrow)) {
if (flag2) {
packet1 = new ClientboundMoveEntityPacket.Pos(this.entity.getId(), (short) ((int) k), (short) ((int) l), (short) ((int) i1), this.entity.onGround());
-@@ -194,6 +195,7 @@ public class ServerEntity {
+@@ -191,6 +192,7 @@ public class ServerEntity {
flag4 = true;
flag5 = true;
}
@@ -1718,10 +1725,10 @@ index 196280f54e397c69d32bd4d1f6ae666efdd93773..8ab959dd588b5154b63e133b2e937fa2
this.wasOnGround = this.entity.onGround();
this.teleportDelay = 0;
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 18aac3da3c88f33b1a71a5920a8daa27e9723913..eac31c3fcc9161711328588ac852fcae1116d8ef 100644
+index 17610196db7a1c6feb2cf74a02479a8691aa323f..c1b03e4c37ea85ddf283479682d0eb2eca57ee3c 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -850,6 +850,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -878,6 +878,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
org.spigotmc.ActivationRange.activateEntities(this); // Spigot
timings.entityTick.startTiming(); // Spigot
this.entityTickList.forEach((entity) -> {
@@ -1729,7 +1736,7 @@ index 18aac3da3c88f33b1a71a5920a8daa27e9723913..eac31c3fcc9161711328588ac852fcae
if (!entity.isRemoved()) {
if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
entity.discard();
-@@ -869,7 +870,20 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -897,7 +898,20 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
gameprofilerfiller.push("tick");
@@ -1751,7 +1758,7 @@ index 18aac3da3c88f33b1a71a5920a8daa27e9723913..eac31c3fcc9161711328588ac852fcae
gameprofilerfiller.pop();
}
}
-@@ -934,9 +948,11 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -962,9 +976,11 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
// Paper start - optimise random block ticking
private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos();
@@ -1764,29 +1771,20 @@ index 18aac3da3c88f33b1a71a5920a8daa27e9723913..eac31c3fcc9161711328588ac852fcae
public void tickChunk(LevelChunk chunk, int randomTickSpeed) {
ChunkPos chunkcoordintpair = chunk.getPos();
boolean flag = this.isRaining();
-@@ -947,7 +963,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -975,7 +991,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
gameprofilerfiller.push("thunder");
final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change
- if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - disable thunder
+ if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - disable thunder // Pufferfish - replace random with shouldDoLightning
blockposition.set(this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15))); // Paper
+
if (this.isRainingAt(blockposition)) {
- DifficultyInstance difficultydamagescaler = this.getCurrentDifficultyAt(blockposition);
-@@ -978,7 +994,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
- int l;
- int i1;
-
-- if (!this.paperConfig().environment.disableIceAndSnow && this.random.nextInt(16) == 0) { // Paper - Disable ice and snow
-+ if (!this.paperConfig().environment.disableIceAndSnow && (this.currentIceAndSnowTick++ & 15) == 0) { // Paper - Disable ice and snow // Paper - optimise random ticking // Pufferfish - optimize further random ticking
- // Paper start - optimise chunk ticking
- this.getRandomBlockPosition(j, 0, k, 15, blockposition);
- int normalY = chunk.getHeight(Heightmap.Types.MOTION_BLOCKING, blockposition.getX() & 15, blockposition.getZ() & 15) + 1;
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index ab58827001b3b42e44d7f701c390480fed1fa1f1..6cafc20ce006872bedd28a34db11204c3c1fef58 100644
+index 34fcdeb0f4039f1fc6c4c8c593cc615560af1ba2..ef6d8f787cba0db53270adedd923f9a47d435852 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1233,6 +1233,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1118,6 +1118,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@Override
public void handleEditBook(ServerboundEditBookPacket packet) {
@@ -1794,7 +1792,7 @@ index ab58827001b3b42e44d7f701c390480fed1fa1f1..6cafc20ce006872bedd28a34db11204c
// Paper start
if (!this.cserver.isPrimaryThread()) {
List pageList = packet.getPages();
-@@ -2420,6 +2421,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2273,6 +2274,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
private boolean updateChatOrder(Instant timestamp) {
@@ -1802,18 +1800,6 @@ index ab58827001b3b42e44d7f701c390480fed1fa1f1..6cafc20ce006872bedd28a34db11204c
Instant instant1;
do {
-diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
-index 2ff578e4a953ffcf5176815ba8e3f06f73499989..878001928327d92423d5f7f6d5ce8772d6fa477f 100644
---- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
-+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
-@@ -204,6 +204,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
-
- @Override
- public void onDisconnect(Component reason) {
-+ if (gg.pufferfish.pufferfish.PufferfishConfig.suppressNullIdDisconnections && this.gameProfile != null && this.gameProfile.getId() == null && "Disconnected".equals(reason.getString())) return; // Pufferfish
- ServerLoginPacketListenerImpl.LOGGER.info("{} lost connection: {}", this.getUserName(), reason.getString());
- }
-
diff --git a/src/main/java/net/minecraft/world/CompoundContainer.java b/src/main/java/net/minecraft/world/CompoundContainer.java
index 241fec02e6869c638d3a160819b32173a081467b..6a8f9e8f5bf108674c47018def28906e2d0a729c 100644
--- a/src/main/java/net/minecraft/world/CompoundContainer.java
@@ -1850,7 +1836,7 @@ index 241fec02e6869c638d3a160819b32173a081467b..6a8f9e8f5bf108674c47018def28906e
public int getContainerSize() {
return this.container1.getContainerSize() + this.container2.getContainerSize();
diff --git a/src/main/java/net/minecraft/world/Container.java b/src/main/java/net/minecraft/world/Container.java
-index aee02acd4b2f2fdcb574c37c077fb57013ccb596..5a1c2d62c0e55c5bf16ca3e208dc486bf3b064b2 100644
+index d6cbe98e67fdbf8db46338a88ab1356dd63b50a3..20dd3a63b2f955b05a75eb240e33ae4cf6aef28f 100644
--- a/src/main/java/net/minecraft/world/Container.java
+++ b/src/main/java/net/minecraft/world/Container.java
@@ -3,6 +3,8 @@ package net.minecraft.world;
@@ -1862,7 +1848,7 @@ index aee02acd4b2f2fdcb574c37c077fb57013ccb596..5a1c2d62c0e55c5bf16ca3e208dc486b
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
-@@ -13,6 +15,63 @@ import org.bukkit.craftbukkit.entity.CraftHumanEntity;
+@@ -14,6 +16,63 @@ import org.bukkit.craftbukkit.entity.CraftHumanEntity;
// CraftBukkit end
public interface Container extends Clearable {
@@ -1927,10 +1913,10 @@ index aee02acd4b2f2fdcb574c37c077fb57013ccb596..5a1c2d62c0e55c5bf16ca3e208dc486b
int LARGE_MAX_STACK_SIZE = 64;
int DEFAULT_DISTANCE_LIMIT = 8;
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index e8485fb900b25e911a858678a833852731cb2ace..36795968f4c296f680f79cc5a795391ae13c64e4 100644
+index f20ae9153b7098980ce6c0e75fcbbb4da652661b..505ed0f8f933428192f5fc806ff52d84acea7f99 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -306,7 +306,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -305,7 +305,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
public double yo;
public double zo;
private Vec3 position;
@@ -1939,7 +1925,7 @@ index e8485fb900b25e911a858678a833852731cb2ace..36795968f4c296f680f79cc5a795391a
private ChunkPos chunkPosition;
private Vec3 deltaMovement;
private float yRot;
-@@ -434,6 +434,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -433,6 +433,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
return this.originWorld;
}
// Paper end
@@ -1952,55 +1938,7 @@ index e8485fb900b25e911a858678a833852731cb2ace..36795968f4c296f680f79cc5a795391a
public float getBukkitYaw() {
return this.yRot;
}
-@@ -508,17 +514,36 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
- this.isLegacyTrackingEntity = isLegacyTrackingEntity;
- }
-
-+ private org.spigotmc.TrackingRange.TrackingRangeType getFurthestEntity(Entity entity, net.minecraft.server.level.ChunkMap chunkMap, org.spigotmc.TrackingRange.TrackingRangeType type, int range) {
-+ List passengers = entity.getPassengers();
-+ for (int i = 0, size = passengers.size(); i < size; i++) {
-+ Entity passenger = passengers.get(i);
-+ org.spigotmc.TrackingRange.TrackingRangeType passengerType = passenger.trackingRangeType;
-+ int passengerRange = chunkMap.getEntityTrackerRange(passengerType.ordinal());
-+ if (passengerRange > range) {
-+ type = passengerType;
-+ range = passengerRange;
-+ }
-+
-+ type = this.getFurthestEntity(passenger, chunkMap, type, range);
-+ }
-+
-+ return type;
-+ }
-+
- public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet getPlayersInTrackRange() {
- // determine highest range of passengers
- if (this.passengers.isEmpty()) {
- return ((ServerLevel)this.level).getChunkSource().chunkMap.playerEntityTrackerTrackMaps[this.trackingRangeType.ordinal()]
- .getObjectsInRange(MCUtil.getCoordinateKey(this));
- }
-- Iterable passengers = this.getIndirectPassengers();
-+ //Iterable passengers = this.getIndirectPassengers(); // Pufferfish
- net.minecraft.server.level.ChunkMap chunkMap = ((ServerLevel)this.level).getChunkSource().chunkMap;
- org.spigotmc.TrackingRange.TrackingRangeType type = this.trackingRangeType;
- int range = chunkMap.getEntityTrackerRange(type.ordinal());
-
-+ // Pufferfish start - use getFurthestEntity to skip getIndirectPassengers
-+ /*
- for (Entity passenger : passengers) {
- org.spigotmc.TrackingRange.TrackingRangeType passengerType = passenger.trackingRangeType;
- int passengerRange = chunkMap.getEntityTrackerRange(passengerType.ordinal());
-@@ -527,6 +552,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
- range = passengerRange;
- }
- }
-+ */
-+ type = this.getFurthestEntity(this, chunkMap, type, range);
-+ // Pufferfish end
-
- return chunkMap.playerEntityTrackerTrackMaps[type.ordinal()].getObjectsInRange(MCUtil.getCoordinateKey(this));
- }
-@@ -798,6 +826,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -765,6 +771,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
public void tick() {
@@ -2013,7 +1951,7 @@ index e8485fb900b25e911a858678a833852731cb2ace..36795968f4c296f680f79cc5a795391a
this.baseTick();
}
-@@ -4283,16 +4317,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -4324,16 +4336,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) {
@@ -2039,7 +1977,7 @@ index e8485fb900b25e911a858678a833852731cb2ace..36795968f4c296f680f79cc5a795391a
double d1 = 0.0D;
boolean flag = this.isPushedByFluid();
boolean flag1 = false;
-@@ -4300,14 +4336,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -4341,14 +4355,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
int k1 = 0;
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();
@@ -2107,7 +2045,7 @@ index e8485fb900b25e911a858678a833852731cb2ace..36795968f4c296f680f79cc5a795391a
if (d2 >= axisalignedbb.minY) {
flag1 = true;
-@@ -4329,9 +4412,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -4370,9 +4431,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
// CraftBukkit end
}
}
@@ -2121,10 +2059,10 @@ index e8485fb900b25e911a858678a833852731cb2ace..36795968f4c296f680f79cc5a795391a
if (vec3d.length() > 0.0D) {
if (k1 > 0) {
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
-index 9afc81ccb237c3655d64cdbe8a0db9a4d7791043..aa5cec6d56d7a8e80861aa4c9b4a74ca3e64be8c 100644
+index 73871f456a85bda1e51f54986d0e61fb629822e8..2561e74ffdf595a9b6ae13dcd738662c772db442 100644
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
-@@ -300,6 +300,8 @@ public class EntityType implements FeatureElement, EntityTypeT
+@@ -301,6 +301,8 @@ public class EntityType implements FeatureElement, EntityTypeT
private final boolean canSpawnFarFromPlayer;
private final int clientTrackingRange;
private final int updateInterval;
@@ -2134,7 +2072,7 @@ index 9afc81ccb237c3655d64cdbe8a0db9a4d7791043..aa5cec6d56d7a8e80861aa4c9b4a74ca
private String descriptionId;
@Nullable
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 78c98f38bc263664ea4cd344670243a7d372885c..d265a32bd273beed0e65e224e1c5f9c0bca7b3fb 100644
+index b95f88d5e5b4785ee063695fd81935636a0588d1..2cdc2bd62f0cb62f75365b6b3e6d80d9a2132451 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent;
@@ -2154,7 +2092,7 @@ index 78c98f38bc263664ea4cd344670243a7d372885c..d265a32bd273beed0e65e224e1c5f9c0
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();
-@@ -1369,6 +1368,19 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1401,6 +1400,19 @@ public abstract class LivingEntity extends Entity implements Attackable {
return this.getHealth() <= 0.0F;
}
@@ -2174,7 +2112,7 @@ index 78c98f38bc263664ea4cd344670243a7d372885c..d265a32bd273beed0e65e224e1c5f9c0
@Override
public boolean hurt(DamageSource source, float amount) {
if (this.isInvulnerableTo(source)) {
-@@ -1965,6 +1977,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1999,6 +2011,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
return this.lastClimbablePos;
}
@@ -2196,10 +2134,10 @@ index 78c98f38bc263664ea4cd344670243a7d372885c..d265a32bd273beed0e65e224e1c5f9c0
if (this.isSpectator()) {
return false;
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index a99d737f71277ea3082816c7a7fc47ab3a201d30..7e453b4c49975bb06cb080f3626545286b947ddc 100644
+index d28c477171c1b6888a45175075017d960464b5cd..4cb836dfa7cbd2e634d4a3a567da0305aac0da4d 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
-@@ -218,14 +218,16 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -220,14 +220,16 @@ public abstract class Mob extends LivingEntity implements Targeting {
return this.lookControl;
}
@@ -2218,7 +2156,7 @@ index a99d737f71277ea3082816c7a7fc47ab3a201d30..7e453b4c49975bb06cb080f362654528
this.targetSelector.tick();
}
}
-@@ -910,16 +912,20 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -913,16 +915,20 @@ public abstract class Mob extends LivingEntity implements Targeting {
if (i % 2 != 0 && this.tickCount > 1) {
this.level().getProfiler().push("targetSelector");
@@ -2240,7 +2178,7 @@ index a99d737f71277ea3082816c7a7fc47ab3a201d30..7e453b4c49975bb06cb080f362654528
this.level().getProfiler().pop();
}
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 dd1102d5291ef6f18e82400a6d8a0a376cc071e9..e283eb57c25f7de222f9d09dca851169f5f6e488 100644
+index 7204b973c3ad9239e82355513f6d538107102e48..3087f8359b098682a345399c85395de8a15b6eed 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 {
@@ -2318,7 +2256,7 @@ index 34f319ad09276c6f68dde449c79351de0d7d86f5..a719af0b512d9ef243d0d54f3b744b1b
this.blockPos = mutableBlockPos;
setTargetPosition(mutableBlockPos.immutable()); // Paper
diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
-index 58422f00c7d64dbd1cf6d7211c9838875cbe7778..d25307ae8bbdf10ae067ec70fc2cb957b852a0eb 100644
+index c157309ac78e7af084d3acb6e8b2bcd469a39d5e..ac5e5676b194a2a99e5cf53eb89c1152cac963b8 100644
--- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
+++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
@@ -75,9 +75,18 @@ public class TargetingConditions {
@@ -2371,10 +2309,10 @@ index 5beaa849a250ea005733250ad3edfa8382224667..2c91fe46355c9a201507de5577f693ed
@Override
protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) {
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 339c70f101d026a100a801e66cf514b3329a89d2..1a0eee3b766a5ce5623c32ed9c023a0f80db1d1a 100644
+index 5ad5f22e5aa26445e5eb229958e7bf356bdd460e..d241ca4d0295f9fce39c11197bd435cfac7f6e54 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
-@@ -222,9 +222,11 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
+@@ -221,9 +221,11 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
return 0.4F;
}
@@ -2387,10 +2325,10 @@ index 339c70f101d026a100a801e66cf514b3329a89d2..1a0eee3b766a5ce5623c32ed9c023a0f
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 2682a49cd3948e0f80e2d7e58abcd3e6d8f7ac4e..42e22a4b9cb6841de04862cc81454da3232aa65a 100644
+index aa850cfaa0534d57e83f37360724da2428a48a18..eb1e850f11ed1cd8d2f1f2eb1af55b7fe6352ed4 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
-@@ -285,9 +285,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder {
+@@ -164,9 +164,11 @@ public class Frog extends Animal implements VariantHolder {
return true;
}
@@ -2435,10 +2373,10 @@ index 4aeab90e778629c355189dfe79c39c4b21f5f5ac..6ed4ac06c76b8d0d6e8db778cade15db
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 247aca0b612f5079a0596350e8311c385df8ab1c..7f21d1d400c8a5615ed1a787dcb0680338f8c28d 100644
+index 111a244087e24f25ba8524a46a228da10cd9498a..ff12ba2b79cb2e7e0bfd0e3b58ff6cb9e770092b 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
-@@ -189,9 +189,11 @@ public class Goat extends Animal {
+@@ -191,9 +191,11 @@ public class Goat extends Animal {
return (Brain) super.getBrain(); // CraftBukkit - decompile error
}
@@ -2469,10 +2407,10 @@ index 1e07febcf7a3dfb281728cc5e3e4f15dd776d7e0..c65ab566c6241dd6a44bd11a449ef0c4
protected SoundEvent getAmbientSound() {
return SoundEvents.WITHER_AMBIENT;
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 b62457313a1e30aad0c5313d608667b5d3811455..410f10ad93935d1c078447a4596023f367a8e9b7 100644
+index b0a97679157a18a3c623ce3b2ae315789772c254..9fc3db543a0c9df502df5fb85012c6aa590e887d 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
-@@ -326,11 +326,17 @@ public class EnderMan extends Monster implements NeutralMob {
+@@ -333,11 +333,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);
@@ -2493,10 +2431,10 @@ index b62457313a1e30aad0c5313d608667b5d3811455..410f10ad93935d1c078447a4596023f3
boolean flag1 = iblockdata.getFluidState().is(FluidTags.WATER);
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 e8f6c34ea789136d63c0aa88aec90203ef6282b5..d6d61b91096d28eea1e5af69ea1c07890820ee7f 100644
+index 4257f2282152aee09533c9a2e53018d3e49effa4..e703320717ff620a19ff76d1c10066117c9895d5 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
-@@ -126,9 +126,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
+@@ -128,9 +128,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
return (Brain) super.getBrain(); // Paper - decompile fix
}
@@ -2509,10 +2447,10 @@ index e8f6c34ea789136d63c0aa88aec90203ef6282b5..d6d61b91096d28eea1e5af69ea1c0789
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 27d9145693a772cd1b5d171da303c934101f3be8..e235cc9d1b3ce59ab662ef3cf3ce0267ca78536d 100644
+index 6407ddef8442fce4f310ac4babf3e3de0dd5fc9a..cfdc1650783d6855e0d4f33ec68aab48dbee09f0 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
-@@ -305,9 +305,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
+@@ -300,9 +300,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
return !this.cannotHunt;
}
@@ -2525,10 +2463,10 @@ index 27d9145693a772cd1b5d171da303c934101f3be8..e235cc9d1b3ce59ab662ef3cf3ce0267
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 97b763431bc5015448ee7a26a340635a932c950b..71db8bd6885377d55cfc571fccc21df6d8a57b54 100644
+index b2bc3a832c310448046ccde37a04918aa6d63197..5e43912708f9074dee1bb351efa737a7e6796fc3 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
-@@ -271,11 +271,13 @@ public class Warden extends Monster implements VibrationSystem {
+@@ -272,11 +272,13 @@ public class Warden extends Monster implements VibrationSystem {
}
@@ -2543,10 +2481,10 @@ index 97b763431bc5015448ee7a26a340635a932c950b..71db8bd6885377d55cfc571fccc21df6
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 e30d5ae3e2900f43d7cafde71b8196f26e872841..c4ddf2661bca728d504918171295e10e307b18b4 100644
+index f555e29c7f9ea4ddb243a018bdc93d2bf1950c3c..bbcc0356b4c0470502e893cf2dc2f16936a88bc4 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-@@ -141,6 +141,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -142,6 +142,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
return holder.is(PoiTypes.MEETING);
});
@@ -2555,7 +2493,7 @@ index e30d5ae3e2900f43d7cafde71b8196f26e872841..c4ddf2661bca728d504918171295e10e
public Villager(EntityType extends Villager> entityType, Level world) {
this(entityType, world, VillagerType.PLAINS);
}
-@@ -244,6 +246,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -245,6 +247,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
}
// Spigot End
@@ -2563,7 +2501,7 @@ index e30d5ae3e2900f43d7cafde71b8196f26e872841..c4ddf2661bca728d504918171295e10e
@Override
@Deprecated // Paper
protected void customServerAiStep() {
-@@ -253,7 +256,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -254,7 +257,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
protected void customServerAiStep(final boolean inactive) {
// Paper end
this.level().getProfiler().push("villagerBrain");
@@ -2710,24 +2648,24 @@ index 5a19875cbc603acea95193d969d2e1dc1e0bfd78..3688e9f8c6c6d1239095e3a87060ccca
}
}
diff --git a/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java b/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java
-index 2e60bdc44c33d434bfd9ca5bf8f75de799c6768c..565318c2afaa1661ed9963453a6354dff499f47a 100644
+index 38f7d1ece27ec1a3deda21fb6a6f0e788c8ed718..252fc22844682c0f67dc02a87478e01e49b6430d 100644
--- a/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java
+++ b/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java
-@@ -27,8 +27,13 @@ public class ShapelessRecipe extends io.papermc.paper.inventory.recipe.RecipeBoo
+@@ -26,8 +26,13 @@ public class ShapelessRecipe extends io.papermc.paper.inventory.recipe.RecipeBoo
final CraftingBookCategory category;
final ItemStack result;
final NonNullList ingredients;
+ private final boolean isBukkit; // Pufferfish
+ // Pufferfish start
- public ShapelessRecipe(ResourceLocation id, String group, CraftingBookCategory category, ItemStack output, NonNullList input) {
-+ this(id, group, category, output, input, false);
+ public ShapelessRecipe(String group, CraftingBookCategory category, ItemStack result, NonNullList ingredients) {
++ this(group, category, result, ingredients, false);
+ }
-+ public ShapelessRecipe(ResourceLocation id, String group, CraftingBookCategory category, ItemStack output, NonNullList input, boolean isBukkit) { this.isBukkit = isBukkit; // Pufferfish end
- this.id = id;
++ public ShapelessRecipe(String group, CraftingBookCategory category, ItemStack result, NonNullList ingredients, boolean isBukkit) { this.isBukkit = isBukkit; // Pufferfish end
this.group = group;
this.category = category;
-@@ -83,6 +88,28 @@ public class ShapelessRecipe extends io.papermc.paper.inventory.recipe.RecipeBoo
+ this.result = result;
+@@ -77,6 +82,28 @@ public class ShapelessRecipe extends io.papermc.paper.inventory.recipe.RecipeBoo
}
public boolean matches(CraftingContainer inventory, Level world) {
@@ -2757,42 +2695,19 @@ index 2e60bdc44c33d434bfd9ca5bf8f75de799c6768c..565318c2afaa1661ed9963453a6354df
autorecipestackmanager.initialize(this); // Paper - better exact choice recipes
int i = 0;
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 7d54c79f46f99f5500e9cb1f486037cafb27ee3a..21c11ff8d5ae9bf97dfcf3118cabe678deb4c064 100644
+index ea8a0961190e9aafda4fed6fecd85097c141040a..1e2620338f0b6fd1c160a8f8d6b659e273f2f1c9 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -273,6 +273,17 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -210,6 +210,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
public abstract ResourceKey getTypeKey();
+ protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - move thread unsafe random initialization // Pufferfish - getter
-+
-+ // Pufferfish start - ensure these get inlined
-+ private final int minBuildHeight, minSection, height, maxBuildHeight, maxSection;
-+ @Override public final int getMaxBuildHeight() { return this.maxBuildHeight; }
-+ @Override public final int getMinSection() { return this.minSection; }
-+ @Override public final int getMaxSection() { return this.maxSection; }
-+ @Override public final int getMinBuildHeight() { return this.minBuildHeight; }
-+ @Override public final int getHeight() { return this.height; }
-+ // Pufferfish end
+
protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot
this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper
-@@ -295,6 +306,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
- });
- final DimensionType dimensionmanager = (DimensionType) holder.value();
-
-+ // Pufferfish start
-+ this.minBuildHeight = dimensionmanager.minY();
-+ this.minSection = SectionPos.blockToSectionCoord(this.minBuildHeight);
-+ this.height = dimensionmanager.height();
-+ this.maxBuildHeight = this.minBuildHeight + this.height;
-+ this.maxSection = SectionPos.blockToSectionCoord(this.maxBuildHeight - 1) + 1;
-+ // Pufferfish end
- this.dimension = resourcekey;
- this.isClientSide = flag;
- if (dimensionmanager.coordinateScale() != 1.0D) {
-@@ -1003,13 +1021,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1308,13 +1310,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
try {
tickConsumer.accept(entity);
MinecraftServer.getServer().executeMidTickTasks(); // Paper - execute chunk tasks mid tick
@@ -2808,7 +2723,7 @@ index 7d54c79f46f99f5500e9cb1f486037cafb27ee3a..21c11ff8d5ae9bf97dfcf3118cabe678
// Paper end
}
}
-@@ -1464,6 +1482,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1779,6 +1781,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}
public ProfilerFiller getProfiler() {
@@ -2817,10 +2732,10 @@ index 7d54c79f46f99f5500e9cb1f486037cafb27ee3a..21c11ff8d5ae9bf97dfcf3118cabe678
}
diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
-index e85ddf92b4f6f044e2b5834a172f37d78e702ef3..49de1fca183b2c6a0a5399025abfc0e47f314315 100644
+index 3cdddda9c0618e95288b81b975d499c8dd30c05f..9c2d62feff1816f5729060c6192269a5b2d34153 100644
--- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java
+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
-@@ -431,12 +431,12 @@ public final class NaturalSpawner {
+@@ -429,12 +429,12 @@ public final class NaturalSpawner {
}
}
@@ -2965,7 +2880,7 @@ index a71414397bd45ee7bcacfeef0041d80dfa25f114..d66806565770cb03a21794f99e5c4b0f
@Override
diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
-index b11f51762ca289d99eaa49e66e31e58595bcea4e..f03608a133338b0f5522a07239e06fd2245db1e5 100644
+index 1d9b23c6e458caddc2c738164e6c079cd85d3ce9..1cfacc7dfa4a761c4a4fb28f9bb02e95bace32f4 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
@@ -47,7 +47,10 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -3019,24 +2934,15 @@ index b11f51762ca289d99eaa49e66e31e58595bcea4e..f03608a133338b0f5522a07239e06fd2
if (!this.tryLoadLootTable(nbt)) {
ContainerHelper.loadAllItems(nbt, this.items);
}
-@@ -162,7 +188,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
- flag = HopperBlockEntity.ejectItems(world, pos, state, (Container) blockEntity, blockEntity); // CraftBukkit
- }
-
-- if (!blockEntity.inventoryFull()) {
-+ if (!blockEntity.optimizedItems.hasFullStacks() || !blockEntity.inventoryFull()) { // Pufferfish - use bitset first
- flag |= booleansupplier.getAsBoolean();
- }
-
-@@ -452,11 +478,18 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
+@@ -491,6 +517,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
}
private static boolean isFullContainer(Container inventory, Direction direction) {
-- return allMatch(inventory, direction, STACK_SIZE_TEST); // Paper - no streams
-+ // Pufferfish start - use bitsets
-+ //return allMatch(inventory, direction, STACK_SIZE_TEST); // Paper - no streams
-+ return inventory.isCompletelyFull(direction);
-+ // Pufferfish end
++ if (true) return inventory.isCompletelyFull(direction); // Pufferfish - use bitsets
+ // Paper start - optimize hoppers
+ if (inventory instanceof WorldlyContainer worldlyContainer) {
+ for (final int slot : worldlyContainer.getSlotsForFace(direction)) {
+@@ -513,7 +540,11 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
}
private static boolean isEmptyContainer(Container inv, Direction facing) {
@@ -3049,7 +2955,7 @@ index b11f51762ca289d99eaa49e66e31e58595bcea4e..f03608a133338b0f5522a07239e06fd2
}
public static boolean suckInItems(Level world, Hopper hopper) {
-@@ -637,7 +670,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
+@@ -713,7 +744,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
if (HopperBlockEntity.canPlaceItemInContainer(to, stack, slot, side)) {
boolean flag = false;
@@ -3058,7 +2964,7 @@ index b11f51762ca289d99eaa49e66e31e58595bcea4e..f03608a133338b0f5522a07239e06fd2
if (itemstack1.isEmpty()) {
// Spigot start - SPIGOT-6693, InventorySubcontainer#setItem
-@@ -832,7 +865,10 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
+@@ -908,7 +939,10 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@Override
protected void setItems(NonNullList list) {
@@ -3089,12 +2995,12 @@ index 081691f9710ff1115e4308f79ed49fbc38941193..765ee7f78532a363813286ef7db2a7e4
}
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 4ff0d2fc9fd76e92e64abd69f2c9e299aa08ac32..3eeb1f0eac76efe9b7c24f6d5787018c7842d07a 100644
+index 4abec88caab4116cfa318f7b66c6b1a8346a7401..7edc6f1e642d01299117680edc79c67225c2053c 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
-@@ -85,6 +85,18 @@ public class LevelChunk extends ChunkAccess {
- private final LevelChunkTicks blockTicks;
+@@ -86,6 +86,18 @@ public class LevelChunk extends ChunkAccess {
private final LevelChunkTicks fluidTicks;
+ public volatile FullChunkStatus chunkStatus = FullChunkStatus.INACCESSIBLE; // Paper - rewrite chunk system
+ // Pufferfish start - instead of using a random every time the chunk is ticked, define when lightning strikes preemptively
+ private int lightningTick;
@@ -3111,7 +3017,7 @@ index 4ff0d2fc9fd76e92e64abd69f2c9e299aa08ac32..3eeb1f0eac76efe9b7c24f6d5787018c
public LevelChunk(Level world, ChunkPos pos) {
this(world, pos, UpgradeData.EMPTY, new LevelChunkTicks<>(), new LevelChunkTicks<>(), 0L, (LevelChunkSection[]) null, (LevelChunk.PostLoadProcessor) null, (BlendingData) null);
}
-@@ -112,6 +124,8 @@ public class LevelChunk extends ChunkAccess {
+@@ -113,6 +125,8 @@ public class LevelChunk extends ChunkAccess {
this.postLoad = entityLoader;
this.blockTicks = blockTickScheduler;
this.fluidTicks = fluidTickScheduler;
@@ -3121,7 +3027,7 @@ index 4ff0d2fc9fd76e92e64abd69f2c9e299aa08ac32..3eeb1f0eac76efe9b7c24f6d5787018c
// CraftBukkit start
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 d4477b0dda6a1ef7bd8323c0d11b636bd071d18e..5d3dd6a61366ae2c185b62bc9198440ef6227927 100644
+index f0de72afad4bb571153436399386a6a8a70582a6..45b7527341fcb6d24f35318cedb522646b5ee1c2 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 {
@@ -3130,9 +3036,9 @@ index d4477b0dda6a1ef7bd8323c0d11b636bd071d18e..5d3dd6a61366ae2c185b62bc9198440e
private PalettedContainer> biomes;
+ public short fluidStateCount; // Pufferfish
public final com.destroystokyo.paper.util.maplist.IBlockDataList tickingList = new com.destroystokyo.paper.util.maplist.IBlockDataList(); // Paper
-
- public LevelChunkSection(PalettedContainer datapaletteblock, PalettedContainer> palettedcontainerro) {
-@@ -190,6 +191,7 @@ public class LevelChunkSection {
+ // Paper start - optimise collisions
+ private int specialCollidingBlocks;
+@@ -102,6 +103,7 @@ public class LevelChunkSection {
if (!fluid.isEmpty()) {
--this.tickingFluidCount;
@@ -3140,22 +3046,22 @@ index d4477b0dda6a1ef7bd8323c0d11b636bd071d18e..5d3dd6a61366ae2c185b62bc9198440e
}
if (!state.isAir()) {
-@@ -204,6 +206,7 @@ public class LevelChunkSection {
+@@ -116,6 +118,7 @@ public class LevelChunkSection {
if (!fluid1.isEmpty()) {
++this.tickingFluidCount;
+ ++this.fluidStateCount; // Pufferfish
}
- this.updateKnownBlockInfo(x | (z << 4) | (y << 8), iblockdata1, state); // Paper
-@@ -249,6 +252,7 @@ public class LevelChunkSection {
+ this.updateBlockCallback(x, y, z, iblockdata1, state); // Paper - optimise collisions
+@@ -161,6 +164,7 @@ public class LevelChunkSection {
if (fluid.isRandomlyTicking()) {
this.tickingFluidCount = (short) (this.tickingFluidCount + 1);
}
+ this.fluidStateCount++; // Pufferfish
}
- });
+ // Paper start - optimise collisions
diff --git a/src/main/java/net/minecraft/world/level/entity/EntityTickList.java b/src/main/java/net/minecraft/world/level/entity/EntityTickList.java
index 4cdfc433df67afcd455422e9baf56f167dd712ae..57fcf3910f45ce371ac2e237b277b1034caaac4e 100644
--- a/src/main/java/net/minecraft/world/level/entity/EntityTickList.java
@@ -3170,10 +3076,10 @@ index 4cdfc433df67afcd455422e9baf56f167dd712ae..57fcf3910f45ce371ac2e237b277b103
private void ensureActiveIsNotIterated() {
// Paper - replace with better logic, do not delay removals
diff --git a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
-index 5502ad143fd2575f1346334b5b4fe7846628f54e..7d56693102ee558fe784e3a9b9fdcff4b7ad57b9 100644
+index e21f4c5aff3a8e97101f6efc1349fbecf326b5ea..c55f51e6db55f9fa66f53eef0e7a56af5f81d742 100644
--- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
+++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
-@@ -44,6 +44,8 @@ public abstract class FlowingFluid extends Fluid {
+@@ -45,6 +45,8 @@ public abstract class FlowingFluid extends Fluid {
public static final BooleanProperty FALLING = BlockStateProperties.FALLING;
public static final IntegerProperty LEVEL = BlockStateProperties.LEVEL_FLOWING;
private static final int CACHE_SIZE = 200;
@@ -3182,7 +3088,7 @@ index 5502ad143fd2575f1346334b5b4fe7846628f54e..7d56693102ee558fe784e3a9b9fdcff4
private static final ThreadLocal> OCCLUSION_CACHE = ThreadLocal.withInitial(() -> {
Object2ByteLinkedOpenHashMap object2bytelinkedopenhashmap = new Object2ByteLinkedOpenHashMap(200) {
protected void rehash(int i) {}
-@@ -52,6 +54,14 @@ public abstract class FlowingFluid extends Fluid {
+@@ -53,6 +55,14 @@ public abstract class FlowingFluid extends Fluid {
object2bytelinkedopenhashmap.defaultReturnValue((byte) 127);
return object2bytelinkedopenhashmap;
});
@@ -3197,16 +3103,16 @@ index 5502ad143fd2575f1346334b5b4fe7846628f54e..7d56693102ee558fe784e3a9b9fdcff4
private final Map shapes = Maps.newIdentityHashMap();
public FlowingFluid() {}
-@@ -240,6 +250,8 @@ public abstract class FlowingFluid extends Fluid {
- }
-
- private boolean canPassThroughWall(Direction face, BlockGetter world, BlockPos pos, BlockState state, BlockPos fromPos, BlockState fromState) {
+@@ -252,6 +262,8 @@ public abstract class FlowingFluid extends Fluid {
+ return false;
+ }
+ // Paper end - optimise collisions
+ // Pufferfish start - modify to use our cache
+ /*
Object2ByteLinkedOpenHashMap object2bytelinkedopenhashmap;
if (!state.getBlock().hasDynamicShape() && !fromState.getBlock().hasDynamicShape()) {
-@@ -247,9 +259,16 @@ public abstract class FlowingFluid extends Fluid {
+@@ -259,9 +271,16 @@ public abstract class FlowingFluid extends Fluid {
} else {
object2bytelinkedopenhashmap = null;
}
@@ -3223,7 +3129,7 @@ index 5502ad143fd2575f1346334b5b4fe7846628f54e..7d56693102ee558fe784e3a9b9fdcff4
if (object2bytelinkedopenhashmap != null) {
block_a = new Block.BlockStatePairKey(state, fromState, face);
byte b0 = object2bytelinkedopenhashmap.getAndMoveToFirst(block_a);
-@@ -260,11 +279,22 @@ public abstract class FlowingFluid extends Fluid {
+@@ -272,11 +291,22 @@ public abstract class FlowingFluid extends Fluid {
} else {
block_a = null;
}
@@ -3246,7 +3152,7 @@ index 5502ad143fd2575f1346334b5b4fe7846628f54e..7d56693102ee558fe784e3a9b9fdcff4
if (object2bytelinkedopenhashmap != null) {
if (object2bytelinkedopenhashmap.size() == 200) {
object2bytelinkedopenhashmap.removeLastByte();
-@@ -272,6 +302,11 @@ public abstract class FlowingFluid extends Fluid {
+@@ -284,6 +314,11 @@ public abstract class FlowingFluid extends Fluid {
object2bytelinkedopenhashmap.putAndMoveToFirst(block_a, (byte) (flag ? 1 : 0));
}
@@ -3362,10 +3268,10 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7
@Nullable
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 74d06790de674cbd230a0b14ac9a6b614c9f84ef..0f89716d1131178bd7ac927ef68337357139e2b7 100644
+index b7e7e6ed60f55d2ab5e4fcefb3638ad1768c3b7f..5a95dcc02241d6036ee520a6a7a05e8713c6081f 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -265,7 +265,7 @@ import javax.annotation.Nullable; // Paper
+@@ -267,7 +267,7 @@ import javax.annotation.Nullable; // Paper
import javax.annotation.Nonnull; // Paper
public final class CraftServer implements Server {
@@ -3374,7 +3280,7 @@ index 74d06790de674cbd230a0b14ac9a6b614c9f84ef..0f89716d1131178bd7ac927ef6833735
private final String serverVersion;
private final String bukkitVersion = Versioning.getBukkitVersion();
private final Logger logger = Logger.getLogger("Minecraft");
-@@ -1120,6 +1120,11 @@ public final class CraftServer implements Server {
+@@ -1122,6 +1122,11 @@ public final class CraftServer implements Server {
plugin.getPluginMeta().getDisplayName(),
"This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies."
));
@@ -3387,22 +3293,22 @@ index 74d06790de674cbd230a0b14ac9a6b614c9f84ef..0f89716d1131178bd7ac927ef6833735
}
// Paper end
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java
-index f7ea77dd82d978ad307f99c743efacfb34478b3d..009ab06182359862b8f543030ec4fe4e2572c93c 100644
+index acfe2676b840d4edc70507aa139f7db212ed90b7..ef89684b5e8ab20744ba02a71fe0465d197f627d 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java
-@@ -44,6 +44,6 @@ public class CraftShapelessRecipe extends ShapelessRecipe implements CraftRecipe
+@@ -45,6 +45,6 @@ public class CraftShapelessRecipe extends ShapelessRecipe implements CraftRecipe
data.set(i, toNMS(ingred.get(i), true));
}
-- MinecraftServer.getServer().getRecipeManager().addRecipe(new net.minecraft.world.item.crafting.ShapelessRecipe(CraftNamespacedKey.toMinecraft(this.getKey()), this.getGroup(), CraftRecipe.getCategory(this.getCategory()), CraftItemStack.asNMSCopy(this.getResult()), data));
-+ MinecraftServer.getServer().getRecipeManager().addRecipe(new net.minecraft.world.item.crafting.ShapelessRecipe(CraftNamespacedKey.toMinecraft(this.getKey()), this.getGroup(), CraftRecipe.getCategory(this.getCategory()), CraftItemStack.asNMSCopy(this.getResult()), data, true));
+- MinecraftServer.getServer().getRecipeManager().addRecipe(new RecipeHolder<>(CraftNamespacedKey.toMinecraft(this.getKey()), new net.minecraft.world.item.crafting.ShapelessRecipe(this.getGroup(), CraftRecipe.getCategory(this.getCategory()), CraftItemStack.asNMSCopy(this.getResult()), data)));
++ MinecraftServer.getServer().getRecipeManager().addRecipe(new RecipeHolder<>(CraftNamespacedKey.toMinecraft(this.getKey()), new net.minecraft.world.item.crafting.ShapelessRecipe(this.getGroup(), CraftRecipe.getCategory(this.getCategory()), CraftItemStack.asNMSCopy(this.getResult()), data, true))); // Pufferfish
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 719e7103f7dfdc30f1cefd24a3fa572fa0ac8b1e..2b4581f92543c11f31bcc1417e90d7f90b2aea20 100644
+index 806fb1064a1769d1251f2a2b04372275754d2aeb..3298aac109e08da4801a6f08aa6f7acfc5e6bf16 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-@@ -470,7 +470,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
+@@ -462,7 +462,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
@Override
public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {
@@ -3425,7 +3331,7 @@ index 774556a62eb240da42e84db4502e2ed43495be17..80553face9c70c2a3d897681e7761df8
if (stream != null) {
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
-index eda7f0bb42f7269676d5d2193e1155912ede9920..68557964e27fa1e5ba218178f9bcc0b28e3a78d9 100644
+index 2f9e5a1adf9d67ffe18d95f2822ca3d2288fb27a..14e8e7ad8d742cdc0c50d29d6dade3e338c0463e 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -38,6 +38,10 @@ import co.aikar.timings.MinecraftTimings;
@@ -3439,9 +3345,9 @@ index eda7f0bb42f7269676d5d2193e1155912ede9920..68557964e27fa1e5ba218178f9bcc0b2
public class ActivationRange
{
-@@ -217,6 +221,25 @@ public class ActivationRange
- for (int i = 0; i < entities.size(); i++) {
- Entity entity = entities.get(i);
+@@ -222,6 +226,25 @@ public class ActivationRange
+ }
+ // Paper end - configurable marker ticking
ActivationRange.activateEntity(entity);
+
+ // Pufferfish start
@@ -3465,7 +3371,7 @@ index eda7f0bb42f7269676d5d2193e1155912ede9920..68557964e27fa1e5ba218178f9bcc0b2
}
// Paper end
}
-@@ -233,12 +256,12 @@ public class ActivationRange
+@@ -238,12 +261,12 @@ public class ActivationRange
if ( MinecraftServer.currentTick > entity.activatedTick )
{
if ( entity.defaultActivationState )
@@ -3480,7 +3386,7 @@ index eda7f0bb42f7269676d5d2193e1155912ede9920..68557964e27fa1e5ba218178f9bcc0b2
entity.activatedTick = MinecraftServer.currentTick;
}
}
-@@ -292,7 +315,7 @@ public class ActivationRange
+@@ -297,7 +320,7 @@ public class ActivationRange
if ( entity instanceof LivingEntity )
{
LivingEntity living = (LivingEntity) entity;
diff --git a/patches/unapplied/server/0002-Fix-pufferfish-issues.patch b/patches/server/0002-Fix-pufferfish-issues.patch
similarity index 70%
rename from patches/unapplied/server/0002-Fix-pufferfish-issues.patch
rename to patches/server/0002-Fix-pufferfish-issues.patch
index b72835a19..e74b07687 100644
--- a/patches/unapplied/server/0002-Fix-pufferfish-issues.patch
+++ b/patches/server/0002-Fix-pufferfish-issues.patch
@@ -4,8 +4,21 @@ Date: Sun, 12 Jun 2022 09:18:57 -0500
Subject: [PATCH] Fix pufferfish issues
+diff --git a/build.gradle.kts b/build.gradle.kts
+index 57739f9dd7d045d1a585a9fc1be290a1a007db6a..f8b27b3992f1d59bf0e95bba0961540e88345754 100644
+--- a/build.gradle.kts
++++ b/build.gradle.kts
+@@ -229,5 +229,7 @@ val runtimeClasspathForRunDev = sourceSets.main.flatMap { src ->
+ }
+ tasks.registerRunTask("runDev") {
+ description = "Spin up a non-relocated Mojang-mapped test server"
+- classpath(sourceSets.main.map { it.runtimeClasspath })
++ classpath(tasks.filterProjectDir.flatMap { it.outputJar })
++ classpath(runtimeClasspathForRunDev)
++ jvmArgs("-DPaper.isRunDev=true")
+ }
diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
-index 0dd3374468e05f7a312ba5856b9cf8a4787dfa59..960c0555a001fe63de78d77d5ea47d08a520d029 100644
+index cc66657cb4f978aa2df3ca1be6c683759952cc7a..26f08b7fb16484c39135ed172c246f76c9e089c7 100644
--- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
+++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
@@ -224,7 +224,7 @@ public class PufferfishConfig {
@@ -27,10 +40,10 @@ index 0dd3374468e05f7a312ba5856b9cf8a4787dfa59..960c0555a001fe63de78d77d5ea47d08
"This can improve performance by a few percent, but has minor gameplay implications.");
}
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index eac31c3fcc9161711328588ac852fcae1116d8ef..dbb59969cf55eda997588f4c3ef7dc899ea619bb 100644
+index c1b03e4c37ea85ddf283479682d0eb2eca57ee3c..cf2fd8eba6aa4cf15cac924577507a700f7f72b5 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -948,7 +948,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -976,7 +976,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
// Paper start - optimise random block ticking
private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos();
@@ -40,23 +53,23 @@ index eac31c3fcc9161711328588ac852fcae1116d8ef..dbb59969cf55eda997588f4c3ef7dc89
private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.randomTickRandom.nextInt(16); } // Pufferfish
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 30d8ec75203adc677e5fb91d9538baf52a0684ad..5eca99fbd23ff0d35607bd185b011d6f9a30d0f0 100644
+index 1e2620338f0b6fd1c160a8f8d6b659e273f2f1c9..6c0e33323922de72dcb941a10883a07c72808b5f 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -273,7 +273,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -210,7 +210,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
public abstract ResourceKey getTypeKey();
- protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - move thread unsafe random initialization // Pufferfish - getter
+ //protected final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(java.util.concurrent.ThreadLocalRandom.current().nextLong()); public net.minecraft.util.RandomSource getThreadUnsafeRandom() { return this.randomTickRandom; } // Pufferfish - move thread unsafe random initialization // Pufferfish - getter // Purpur - dont break ABI
- // Pufferfish start - ensure these get inlined
- private final int minBuildHeight, minSection, height, maxBuildHeight, maxSection;
+ protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor
+ this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot
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 3eeb1f0eac76efe9b7c24f6d5787018c7842d07a..dbb0593a6feb60216379bde6720ca16f3ca827ae 100644
+index 7edc6f1e642d01299117680edc79c67225c2053c..2d4586859bd19a5094619d8abd62e466b822d293 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
-@@ -125,7 +125,7 @@ public class LevelChunk extends ChunkAccess {
+@@ -126,7 +126,7 @@ public class LevelChunk extends ChunkAccess {
this.blockTicks = blockTickScheduler;
this.fluidTicks = fluidTickScheduler;
diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0003-Rebrand.patch
similarity index 96%
rename from patches/server/0001-Rebrand.patch
rename to patches/server/0003-Rebrand.patch
index a5a8e34ca..334447aa1 100644
--- a/patches/server/0001-Rebrand.patch
+++ b/patches/server/0003-Rebrand.patch
@@ -5,27 +5,29 @@ Subject: [PATCH] Rebrand
diff --git a/build.gradle.kts b/build.gradle.kts
-index c187641f0ec6444a10e0e1583e1697d07e8f0267..9511ffbc88a374c4c7945da79af42433fd532d8c 100644
+index f8b27b3992f1d59bf0e95bba0961540e88345754..e372110a189857056e4fae3cd1d996ce8cb69493 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
-@@ -13,8 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) {
+@@ -13,12 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) {
val alsoShade: Configuration by configurations.creating
dependencies {
-- implementation(project(":paper-api"))
-- implementation(project(":paper-mojangapi"))
+- implementation(project(":pufferfish-api")) // Pufferfish // Paper
+- // Pufferfish start
+- implementation("io.papermc.paper:paper-mojangapi:1.19.2-R0.1-SNAPSHOT") {
+ // Purpur start
+ implementation(project(":purpur-api"))
+ implementation("io.papermc.paper:paper-mojangapi:${project.version}") {
-+ exclude("io.papermc.paper", "paper-api")
-+ }
+ exclude("io.papermc.paper", "paper-api")
+ }
+- // Pufferfish end
+ // Purpur end
// Paper start
implementation("org.jline:jline-terminal-jansi:3.21.0")
implementation("net.minecrell:terminalconsoleappender:1.3.0")
-@@ -52,6 +56,10 @@ dependencies {
- runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3")
- runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3")
+@@ -63,6 +63,10 @@ dependencies {
+ }
+ // Pufferfish end
+ implementation("org.mozilla:rhino-runtime:1.7.14") // Purpur
+ implementation("org.mozilla:rhino-engine:1.7.14") // Purpur
@@ -34,16 +36,16 @@ index c187641f0ec6444a10e0e1583e1697d07e8f0267..9511ffbc88a374c4c7945da79af42433
testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test
testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
testImplementation("org.hamcrest:hamcrest:2.2")
-@@ -72,7 +80,7 @@ tasks.jar {
+@@ -89,7 +93,7 @@ tasks.jar {
attributes(
"Main-Class" to "org.bukkit.craftbukkit.Main",
"Implementation-Title" to "CraftBukkit",
-- "Implementation-Version" to "git-Paper-$implementationVersion",
-+ "Implementation-Version" to "git-Purpur-$implementationVersion", // Purpur
+- "Implementation-Version" to "git-Pufferfish-$implementationVersion", // Pufferfish
++ "Implementation-Version" to "git-Purpur-$implementationVersion", // Pufferfish // Purpur
"Implementation-Vendor" to date, // Paper
"Specification-Title" to "Bukkit",
"Specification-Version" to project.version,
-@@ -156,7 +164,7 @@ fun TaskContainer.registerRunTask(
+@@ -173,7 +177,7 @@ fun TaskContainer.registerRunTask(
name: String,
block: JavaExec.() -> Unit
): TaskProvider = register(name) {
@@ -175,10 +177,10 @@ index 1d714d3eff11ed14f218656008190017494d4830..ed3527612315e6e0649182ce4e1ae283
stringbuilder.append(CrashReport.getErrorComment());
stringbuilder.append("\n\n");
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 97745f0bab8d82d397c6c2a5775aed92bca0a034..707a02804db563d94360b65d156c40be3aa30aeb 100644
+index 371049c1236c6443384c0ce184e99d5b9f8e57c2..ebcd6c821379f4feb3b2c094266645ae552972db 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -908,7 +908,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop // Spigot - Spigot > // CraftBukkit - cb > vanilla!
-+ return "Purpur"; // Purpur - Purpur > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
+- return "Pufferfish"; // Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
++ return "Purpur"; // Purpur - Purpur > Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
}
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 b7e7e6ed60f55d2ab5e4fcefb3638ad1768c3b7f..d69b765678f94eacf171841be47a8ff4f37fd405 100644
+index 5a95dcc02241d6036ee520a6a7a05e8713c6081f..ff9a2122fa26a1238660dcb1bc64e3fc778ddd8d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -267,7 +267,7 @@ import javax.annotation.Nullable; // Paper
import javax.annotation.Nonnull; // Paper
public final class CraftServer implements Server {
-- private final String serverName = "Paper"; // Paper
-+ private final String serverName = "Purpur"; // Paper // Purpur
+- private final String serverName = "Pufferfish"; // Paper // Pufferfish
++ private final String serverName = "Purpur"; // Paper // Pufferfish // Purpur
private final String serverVersion;
private final String bukkitVersion = Versioning.getBukkitVersion();
private final Logger logger = Logger.getLogger("Minecraft");
@@ -237,7 +239,7 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..9607675e6c5bff2183c4420d11fc63ee
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
-index fe2124694eb080cab685a1ce1f6a66e2fcdf6a17..feb5f25886889710d51ab2a88192727c948322ca 100644
+index daadfec2d86f7957072a639e1e36d4082448f35f..3579715faa33a722cccb13d8d7c86a3de740d6fc 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -912,7 +912,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
@@ -263,28 +265,28 @@ index d7ce4971d9271dbeff4adb9d852e4e7bdf60bf03..5a47a8785bc2e251d041f80a79295c43
// (async tasks must live with race-conditions if they attempt to cancel between these few lines of code)
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 806fb1064a1769d1251f2a2b04372275754d2aeb..717b1f797d28129a0f5c7c9c7b01691aa4f14317 100644
+index 3298aac109e08da4801a6f08aa6f7acfc5e6bf16..33ea5172bb7fe1018bc39acc16963f4998ac52b2 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -462,7 +462,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
@Override
public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {
-- return new com.destroystokyo.paper.PaperVersionFetcher();
-+ return new com.destroystokyo.paper.PaperVersionFetcher(); // Purpur - TODO: Pufferfish
+- return new gg.pufferfish.pufferfish.PufferfishVersionFetcher(); // Pufferfish
++ return new com.destroystokyo.paper.PaperVersionFetcher(); // Pufferfish // Purpur
}
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
-index 774556a62eb240da42e84db4502e2ed43495be17..fb87620c742ff7912f5e8ccd2a7930dd605576d9 100644
+index 80553face9c70c2a3d897681e7761df85b22d464..99597258e8e88cd9e2c901c4ac3ff7faeeabee2b 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
@@ -11,7 +11,7 @@ public final class Versioning {
public static String getBukkitVersion() {
String result = "Unknown-Version";
-- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/io.papermc.paper/paper-api/pom.properties");
-+ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.purpurmc.purpur/purpur-api/pom.properties"); // Purpur
+- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/gg.pufferfish.pufferfish/pufferfish-api/pom.properties"); // Pufferfish
++ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.purpurmc.purpur/purpur-api/pom.properties"); // Pufferfish // Purpur
Properties properties = new Properties();
if (stream != null) {
diff --git a/patches/server/0002-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch
similarity index 93%
rename from patches/server/0002-Purpur-config-files.patch
rename to patches/server/0004-Purpur-config-files.patch
index 22636f5d2..47fa0eb0e 100644
--- a/patches/server/0002-Purpur-config-files.patch
+++ b/patches/server/0004-Purpur-config-files.patch
@@ -5,28 +5,37 @@ Subject: [PATCH] Purpur config files
diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java
-index 4b002e8b75d117b726b0de274a76d3596fce015b..07665c89af795d76fab5fb70b4ecc7e8be68cab2 100644
+index 692c962193cf9fcc6801fc93f3220bdc673d527b..8cde30544e14f8fc2dac32966ae3c21f8cf3a551 100644
--- a/src/main/java/com/destroystokyo/paper/Metrics.java
+++ b/src/main/java/com/destroystokyo/paper/Metrics.java
@@ -593,7 +593,7 @@ public class Metrics {
boolean logFailedRequests = config.getBoolean("logFailedRequests", false);
// Only start Metrics, if it's enabled in the config
if (config.getBoolean("enabled", true)) {
-- Metrics metrics = new Metrics("Paper", serverUUID, logFailedRequests, Bukkit.getLogger());
-+ Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Purpur
+- Metrics metrics = new Metrics("Pufferfish", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish
++ Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur
metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> {
String minecraftVersion = Bukkit.getVersion();
-@@ -602,7 +602,8 @@ public class Metrics {
+@@ -602,16 +602,8 @@ public class Metrics {
}));
metrics.addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size()));
- metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online" : "offline"));
+- final String paperVersion;
+- final String implVersion = org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion();
+- if (implVersion != null) {
+- final String buildOrHash = implVersion.substring(implVersion.lastIndexOf('-') + 1);
+- paperVersion = "git-Pufferfish-%s-%s".formatted(Bukkit.getServer().getMinecraftVersion(), buildOrHash); // Pufferfish
+- } else {
+- paperVersion = "unknown";
+- }
+- metrics.addCustomChart(new Metrics.SimplePie("pufferfish_version", () -> paperVersion)); // Pufferfish
+ metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online" : (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() ? "bungee" : "offline"))); // Purpur
+ metrics.addCustomChart(new Metrics.SimplePie("purpur_version", () -> (org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() != null) ? org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() : "unknown")); // Purpur
- final String paperVersion;
- final String implVersion = org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion();
- if (implVersion != null) {
+
+ metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> {
+ Map> map = new HashMap<>();
diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java
index 56ae02aab93b9a698e9d2f07a0448aa4767169d9..756651db912068c837197a972e95bc66ab9d4a70 100644
--- a/src/main/java/net/minecraft/commands/CommandSourceStack.java
@@ -63,7 +72,7 @@ index 56ae02aab93b9a698e9d2f07a0448aa4767169d9..756651db912068c837197a972e95bc66
boolean flag1 = this.source.acceptsSuccess() && !this.silent;
boolean flag2 = broadcastToOps && this.source.shouldInformAdmins() && !this.silent;
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
-index dbccbcb9b44e4efacdf53c2d161115cc20b36cff..aa85cb619315b327469e6aea92876f47235ce725 100644
+index 66aeb0ea388a8c8a08cf33728921061a0c74552f..6908e2165c4e4b43408a93963b4585d7cabf41dd 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -218,6 +218,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -83,7 +92,7 @@ index dbccbcb9b44e4efacdf53c2d161115cc20b36cff..aa85cb619315b327469e6aea92876f47
io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider
// Paper end
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index ea8a0961190e9aafda4fed6fecd85097c141040a..4aa00bd0f7a2ec277fdfa1c107a75d1c5276493c 100644
+index 6c0e33323922de72dcb941a10883a07c72808b5f..eccc55372a7a52a92dd9418a47ece0fd2adcd6ed 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -176,6 +176,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -94,7 +103,7 @@ index ea8a0961190e9aafda4fed6fecd85097c141040a..4aa00bd0f7a2ec277fdfa1c107a75d1c
public final co.aikar.timings.WorldTimingsHandler timings; // Paper
public static BlockPos lastPhysicsProblem; // Spigot
private org.spigotmc.TickLimiter entityLimiter;
-@@ -213,6 +214,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -215,6 +216,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot
this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper
@@ -103,7 +112,7 @@ index ea8a0961190e9aafda4fed6fecd85097c141040a..4aa00bd0f7a2ec277fdfa1c107a75d1c
this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 00997982aa478aba822b288f4f18779d8dbcf3cc..c4c4d18b333479062f27841ed21d827e4c2096cf 100644
+index ff9a2122fa26a1238660dcb1bc64e3fc778ddd8d..2674aede815f8c6d0fbaf22895ccb7ed05f9a714 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1039,6 +1039,7 @@ public final class CraftServer implements Server {
@@ -130,7 +139,7 @@ index 00997982aa478aba822b288f4f18779d8dbcf3cc..c4c4d18b333479062f27841ed21d827e
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");
-@@ -2914,6 +2917,18 @@ public final class CraftServer implements Server {
+@@ -2919,6 +2922,18 @@ public final class CraftServer implements Server {
return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console);
}
@@ -150,7 +159,7 @@ index 00997982aa478aba822b288f4f18779d8dbcf3cc..c4c4d18b333479062f27841ed21d827e
public void restart() {
org.spigotmc.RestartCommand.restart();
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
-index e7746952417a3ca4ea97103e38568db42039f717..754a47528fb675ceae7020d7ae26d1f9d951d27c 100644
+index e4cacb17f56c618bef19e1165c07aac86af61150..a6b1c83e289bd0a9ad59288ed2da88ac3e607c0f 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -173,6 +173,14 @@ public class Main {
diff --git a/patches/server/0003-Purpur-client-support.patch b/patches/server/0005-Purpur-client-support.patch
similarity index 97%
rename from patches/server/0003-Purpur-client-support.patch
rename to patches/server/0005-Purpur-client-support.patch
index 59f226cd2..d2813bee5 100644
--- a/patches/server/0003-Purpur-client-support.patch
+++ b/patches/server/0005-Purpur-client-support.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Purpur client support
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 76157319b79d7fefe38cb2cc10b2d79c12667e3d..5d7c5f1a8a71f476d25c457e8858cf9b7221f0e2 100644
+index ba972d1661426d7e30f6f61bad3b9608e66ea721..5fe10d6d8590ef5997a4f8f6af01ec16bf20e00a 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -274,6 +274,7 @@ public class ServerPlayer extends Player {
diff --git a/patches/server/0004-Fix-decompile-errors.patch b/patches/server/0006-Fix-decompile-errors.patch
similarity index 100%
rename from patches/server/0004-Fix-decompile-errors.patch
rename to patches/server/0006-Fix-decompile-errors.patch
diff --git a/patches/server/0005-Component-related-conveniences.patch b/patches/server/0007-Component-related-conveniences.patch
similarity index 94%
rename from patches/server/0005-Component-related-conveniences.patch
rename to patches/server/0007-Component-related-conveniences.patch
index b9da451f9..97d3e4a1c 100644
--- a/patches/server/0005-Component-related-conveniences.patch
+++ b/patches/server/0007-Component-related-conveniences.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Component related conveniences
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 5d7c5f1a8a71f476d25c457e8858cf9b7221f0e2..337084b28d282a5f6b03244ad14d4028477d735d 100644
+index 5fe10d6d8590ef5997a4f8f6af01ec16bf20e00a..75faac7c8009672c733033c5aabb4e1974ce5790 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1784,6 +1784,26 @@ public class ServerPlayer extends Player {
@@ -81,10 +81,10 @@ index 25a5a3b949a0eb632611355e74ccd4865be108ca..14fcfd7c1d3a62833978e163f4e0d6f9
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 f20ae9153b7098980ce6c0e75fcbbb4da652661b..78ba2e50abc3b5575bead1b51f37b530f5a7c4d7 100644
+index 505ed0f8f933428192f5fc806ff52d84acea7f99..8bc26cc6af27ba4c13940d61154786d47cb5aaf3 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -4054,6 +4054,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -4066,6 +4066,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
return SlotAccess.NULL;
}
diff --git a/patches/server/0006-Ridables.patch b/patches/server/0008-Ridables.patch
similarity index 98%
rename from patches/server/0006-Ridables.patch
rename to patches/server/0008-Ridables.patch
index 76e092954..a6e75dc7f 100644
--- a/patches/server/0006-Ridables.patch
+++ b/patches/server/0008-Ridables.patch
@@ -22,10 +22,10 @@ index 83cab746d1d6fe25c043c8aee28c39412b90c127..ec6b58dae525c81bbb1c0e2d96fbded6
super(x, y, z);
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 707a02804db563d94360b65d156c40be3aa30aeb..5534a881d0c716fd4280017c0c21cb7c5a95d269 100644
+index ebcd6c821379f4feb3b2c094266645ae552972db..edd53077098cfaaa5987dc7df7163b83a5ed3b26 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1529,6 +1529,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper
net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper
worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper
@@ -34,7 +34,7 @@ index 707a02804db563d94360b65d156c40be3aa30aeb..5534a881d0c716fd4280017c0c21cb7c
this.profiler.push(() -> {
return worldserver + " " + worldserver.dimension().location();
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 17610196db7a1c6feb2cf74a02479a8691aa323f..ffa9e5672c9c416fbf0a7412c6cdaedce566aa5a 100644
+index cf2fd8eba6aa4cf15cac924577507a700f7f72b5..19698f13530183b3580a7a6ad720d078b6c791ba 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -223,6 +223,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -66,10 +66,10 @@ index 75faac7c8009672c733033c5aabb4e1974ce5790..3f5d87ccdee1309ae8240a3d181e268d
public void doTick() {
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 8bd243a8d5a4be54f907af2b02e96ea833cee62f..85996c66e1e1ab761629a558cebf5b2f60d09dbd 100644
+index ef6d8f787cba0db53270adedd923f9a47d435852..675e6e7246d84195dc027c0209744896bd2b7224 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2711,6 +2711,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2713,6 +2713,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
cserver.getPluginManager().callEvent(event);
@@ -79,7 +79,7 @@ index 8bd243a8d5a4be54f907af2b02e96ea833cee62f..85996c66e1e1ab761629a558cebf5b2f
if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) {
entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it.
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 78ba2e50abc3b5575bead1b51f37b530f5a7c4d7..7f97cbb040e9d81ee3cccfddbed682bebaa4bda3 100644
+index 8bc26cc6af27ba4c13940d61154786d47cb5aaf3..5eb10b5f75b55f66a002745d016b88e0366d1301 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -375,7 +375,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -91,7 +91,7 @@ index 78ba2e50abc3b5575bead1b51f37b530f5a7c4d7..7f97cbb040e9d81ee3cccfddbed682be
private float eyeHeight;
public boolean isInPowderSnow;
public boolean wasInPowderSnow;
-@@ -2934,6 +2934,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -2946,6 +2946,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
this.passengers = ImmutableList.copyOf(list);
}
@@ -105,7 +105,7 @@ index 78ba2e50abc3b5575bead1b51f37b530f5a7c4d7..7f97cbb040e9d81ee3cccfddbed682be
this.gameEvent(GameEvent.ENTITY_MOUNT, passenger);
}
}
-@@ -2974,6 +2981,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -2986,6 +2993,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
return false;
}
// Spigot end
@@ -120,7 +120,7 @@ index 78ba2e50abc3b5575bead1b51f37b530f5a7c4d7..7f97cbb040e9d81ee3cccfddbed682be
if (this.passengers.size() == 1 && this.passengers.get(0) == entity) {
this.passengers = ImmutableList.of();
} else {
-@@ -4850,4 +4865,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -4914,4 +4929,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this);
}
// Paper end
@@ -191,10 +191,10 @@ index 1bb8b6e91c44cd13411d96d749fa64835c75a267..75c278b67ad2b78766efd8f89c4c2ca7
protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK;
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index b95f88d5e5b4785ee063695fd81935636a0588d1..6a09fe2e6557800bed82a19c0f6f8bce688c510c 100644
+index 2cdc2bd62f0cb62f75365b6b3e6d80d9a2132451..cc82a506e0da0bf4318a37326924d71ca3340d5e 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -219,9 +219,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -218,9 +218,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
protected int deathScore;
public float lastHurt;
public boolean jumping;
@@ -207,7 +207,7 @@ index b95f88d5e5b4785ee063695fd81935636a0588d1..6a09fe2e6557800bed82a19c0f6f8bce
protected int lerpSteps;
protected double lerpX;
protected double lerpY;
-@@ -287,7 +287,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -286,7 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.effectsDirty = true;
this.useItem = ItemStack.EMPTY;
this.lastClimbablePos = Optional.empty();
@@ -216,7 +216,7 @@ index b95f88d5e5b4785ee063695fd81935636a0588d1..6a09fe2e6557800bed82a19c0f6f8bce
this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit
// CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor
this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue());
-@@ -338,6 +338,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -337,6 +337,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
public static AttributeSupplier.Builder createLivingAttributes() {
return AttributeSupplier.builder().add(Attributes.MAX_HEALTH).add(Attributes.KNOCKBACK_RESISTANCE).add(Attributes.MOVEMENT_SPEED).add(Attributes.ARMOR).add(Attributes.ARMOR_TOUGHNESS).add(Attributes.MAX_ABSORPTION);
}
@@ -224,7 +224,7 @@ index b95f88d5e5b4785ee063695fd81935636a0588d1..6a09fe2e6557800bed82a19c0f6f8bce
@Override
protected void checkFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) {
-@@ -2699,7 +2700,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -2725,7 +2726,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
protected long lastJumpTime = 0L; // Paper
@@ -233,7 +233,7 @@ index b95f88d5e5b4785ee063695fd81935636a0588d1..6a09fe2e6557800bed82a19c0f6f8bce
Vec3 vec3d = this.getDeltaMovement();
// Paper start
long time = System.nanoTime();
-@@ -3472,8 +3473,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3498,8 +3499,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.pushEntities();
this.level().getProfiler().pop();
// Paper start
@@ -246,7 +246,7 @@ index b95f88d5e5b4785ee063695fd81935636a0588d1..6a09fe2e6557800bed82a19c0f6f8bce
Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO);
Location to = new Location (this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone());
-@@ -3483,6 +3486,21 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3509,6 +3512,21 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch());
}
}
@@ -269,7 +269,7 @@ index b95f88d5e5b4785ee063695fd81935636a0588d1..6a09fe2e6557800bed82a19c0f6f8bce
// Paper end
if (!this.level().isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) {
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index d28c477171c1b6888a45175075017d960464b5cd..439506a5916662c1976283da9834d6f19cfa7165 100644
+index 4cb836dfa7cbd2e634d4a3a567da0305aac0da4d..785421bc26d86c91983ab501fbc7484bbb389112 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -147,8 +147,8 @@ public abstract class Mob extends LivingEntity implements Targeting {
@@ -283,7 +283,7 @@ index d28c477171c1b6888a45175075017d960464b5cd..439506a5916662c1976283da9834d6f1
this.jumpControl = new JumpControl(this);
this.bodyRotationControl = this.createBodyControl();
this.navigation = this.createNavigation(world);
-@@ -1385,7 +1385,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -1391,7 +1391,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
protected void onOffspringSpawnedFromEgg(Player player, Mob child) {}
protected InteractionResult mobInteract(Player player, InteractionHand hand) {
@@ -292,7 +292,7 @@ index d28c477171c1b6888a45175075017d960464b5cd..439506a5916662c1976283da9834d6f1
}
public boolean isWithinRestriction() {
-@@ -1769,4 +1769,56 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -1775,4 +1775,56 @@ public abstract class Mob extends LivingEntity implements Targeting {
return itemmonsteregg == null ? null : new ItemStack(itemmonsteregg);
}
@@ -350,13 +350,13 @@ index d28c477171c1b6888a45175075017d960464b5cd..439506a5916662c1976283da9834d6f1
+ // Purpur end
}
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 7204b973c3ad9239e82355513f6d538107102e48..ffd1ae235e6602e73c6585f60c6ef5dd21844a12 100644
+index 3087f8359b098682a345399c85395de8a15b6eed..6b0855cffb901dbc7dcc5fd44506275206bc9a2d 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,13 +23,20 @@ public class AttributeMap {
- private final Map attributes = Maps.newHashMap();
+@@ -24,14 +24,21 @@ public class AttributeMap {
private final Set dirtyAttributes = Sets.newHashSet();
private final AttributeSupplier supplier;
+ private final java.util.function.Function createInstance; // Pufferfish
+ private final net.minecraft.world.entity.LivingEntity entity; // Purpur
public AttributeMap(AttributeSupplier defaultAttributes) {
@@ -367,6 +367,7 @@ index 7204b973c3ad9239e82355513f6d538107102e48..ffd1ae235e6602e73c6585f60c6ef5dd
+ this.entity = entity;
+ // Purpur end
this.supplier = defaultAttributes;
+ this.createInstance = attribute -> this.supplier.createInstance(this::onAttributeModified, attribute); // Pufferfish
}
private void onAttributeModified(AttributeInstance instance) {
@@ -375,7 +376,7 @@ index 7204b973c3ad9239e82355513f6d538107102e48..ffd1ae235e6602e73c6585f60c6ef5dd
this.dirtyAttributes.add(instance);
}
-@@ -41,7 +48,7 @@ public class AttributeMap {
+@@ -43,7 +50,7 @@ public class AttributeMap {
public Collection getSyncableAttributes() {
return this.attributes.values().stream().filter((attribute) -> {
@@ -526,7 +527,7 @@ index 7df56705a4a0de2dc4ff7ab133fc26612c219162..384bed4505b6cabb1ae151cd2c4eb5e5
--this.lookAtCooldown;
this.getYRotD().ifPresent((yaw) -> {
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 5beaa849a250ea005733250ad3edfa8382224667..2ee2097ebf7753d63a99fdf492da374849a345eb 100644
+index 2c91fe46355c9a201507de5577f693ed4f5fb974..e184d2a89a89d4bf77a32a2d610175c5bbd38a03 100644
--- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java
+++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
@@ -18,6 +18,7 @@ import net.minecraft.world.entity.EntityDimensions;
@@ -2136,7 +2137,7 @@ index eecb7511582e5e316b71fa4a4734881424be5ca7..2efa2e19485f9d959a55115ab62f9854
this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this));
this.targetSelector.addGoal(3, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers());
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..80ff5b8b2041afd7ffef99c33ecd4f5252e827fe 100644
+index d241ca4d0295f9fce39c11197bd435cfac7f6e54..09f796ec491f21520e1fcc454249e4696dad3b1b 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
@@ -100,10 +100,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
@@ -2193,16 +2194,17 @@ index 5ad5f22e5aa26445e5eb229958e7bf356bdd460e..80ff5b8b2041afd7ffef99c33ecd4f52
@Override
protected Brain.Provider brainProvider() {
return Brain.provider(Allay.MEMORY_TYPES, Allay.SENSOR_TYPES);
-@@ -224,6 +259,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
+@@ -225,7 +260,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
@Override
protected void customServerAiStep() {
this.level().getProfiler().push("allayBrain");
-+ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish
+- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish
++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider
this.getBrain().tick((ServerLevel) this.level(), this);
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 aa850cfaa0534d57e83f37360724da2428a48a18..74ea2d9fbd4967f666ac469ff4067fe0c597c655 100644
+index eb1e850f11ed1cd8d2f1f2eb1af55b7fe6352ed4..4dfe6a909ac3d553bd1cd4cfc131ac8bfb5a0b02 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
@@ -98,6 +98,23 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder getModelRotationValues() {
return this.modelRotationValues;
-@@ -283,6 +300,7 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder {
@@ -2361,15 +2365,16 @@ index 5000ebc5f19dee72a86360062b822aecd60beb47..fe54027f5ec0f88077bf95d3c4cd9a29
@Override
protected Brain.Provider brainProvider() {
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
-@@ -167,6 +216,7 @@ public class Frog extends Animal implements VariantHolder {
+@@ -168,7 +217,7 @@ public class Frog extends Animal implements VariantHolder {
@Override
protected void customServerAiStep() {
this.level().getProfiler().push("frogBrain");
-+ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish
+- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish
++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider
this.getBrain().tick((ServerLevel)this.level(), this);
this.level().getProfiler().pop();
this.level().getProfiler().push("frogActivityUpdate");
-@@ -352,7 +402,7 @@ public class Frog extends Animal implements VariantHolder {
+@@ -354,7 +403,7 @@ public class Frog extends Animal implements VariantHolder {
return world.getBlockState(pos.below()).is(BlockTags.FROGS_SPAWNABLE_ON) && isBrightEnoughToSpawn(world, pos);
}
@@ -2379,7 +2384,7 @@ index 5000ebc5f19dee72a86360062b822aecd60beb47..fe54027f5ec0f88077bf95d3c4cd9a29
super(entity);
}
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 4aeab90e778629c355189dfe79c39c4b21f5f5ac..b3533626fd12686d6ebb3330874f805c99a1f5f2 100644
+index 6ed4ac06c76b8d0d6e8db778cade15dbd1e3e5f5..af8438ae8c805d3276ef2d82eb39b08880fcc8a1 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
@@ -45,13 +45,50 @@ public class Tadpole extends AbstractFish {
@@ -2434,16 +2439,17 @@ index 4aeab90e778629c355189dfe79c39c4b21f5f5ac..b3533626fd12686d6ebb3330874f805c
@Override
protected PathNavigation createNavigation(Level world) {
return new WaterBoundPathNavigation(this, world);
-@@ -80,6 +117,7 @@ public class Tadpole extends AbstractFish {
+@@ -81,7 +118,7 @@ public class Tadpole extends AbstractFish {
@Override
protected void customServerAiStep() {
this.level().getProfiler().push("tadpoleBrain");
-+ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish
+- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish
++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider
this.getBrain().tick((ServerLevel) this.level(), this);
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 111a244087e24f25ba8524a46a228da10cd9498a..e82904142e32fe2da62e2cd00b8436b94de8c048 100644
+index ff12ba2b79cb2e7e0bfd0e3b58ff6cb9e770092b..fef3b7d193d20c4fdd50b38c6a0371f05165a49d 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
@@ -92,6 +92,23 @@ public class Goat extends Animal {
@@ -2470,11 +2476,12 @@ index 111a244087e24f25ba8524a46a228da10cd9498a..e82904142e32fe2da62e2cd00b8436b9
@Override
protected Brain.Provider brainProvider() {
return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES);
-@@ -194,6 +211,7 @@ public class Goat extends Animal {
+@@ -195,7 +212,7 @@ public class Goat extends Animal {
@Override
protected void customServerAiStep() {
this.level().getProfiler().push("goatBrain");
-+ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish
+- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish
++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider
this.getBrain().tick((ServerLevel) this.level(), this);
this.level().getProfiler().pop();
this.level().getProfiler().push("goatActivityUpdate");
@@ -2940,7 +2947,7 @@ index f8cdc76561852fd32d9c079ceb3567e6d49c892e..52920b603ef88f9f6e3dd7935292fe82
this.dragonFight.updateDragon(this);
}
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 1e07febcf7a3dfb281728cc5e3e4f15dd776d7e0..6c86411658ef0bf64cb8cf4f213112b65f2d1d90 100644
+index c65ab566c6241dd6a44bd11a449ef0c4b2f6dc65..6674d1b184246ecce5270a6826b153903e4a5a88 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
@@ -84,16 +84,30 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -3089,7 +3096,7 @@ index 1e07febcf7a3dfb281728cc5e3e4f15dd776d7e0..6c86411658ef0bf64cb8cf4f213112b6
this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0]));
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 0, false, false, WitherBoss.LIVING_ENTITY_SELECTOR));
}
-@@ -256,6 +370,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
+@@ -263,6 +377,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@Override
protected void customServerAiStep() {
@@ -3106,7 +3113,7 @@ index 1e07febcf7a3dfb281728cc5e3e4f15dd776d7e0..6c86411658ef0bf64cb8cf4f213112b6
int i;
if (this.getInvulnerableTicks() > 0) {
-@@ -576,11 +700,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
+@@ -583,11 +707,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
}
public int getAlternativeTarget(int headIndex) {
@@ -3451,7 +3458,7 @@ index efc1d49c5bfea7d1674b8a9de2c8b617657eda0f..37afe706c5c453003ea96e62f376f45d
return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D);
}
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 b0a97679157a18a3c623ce3b2ae315789772c254..bc2b436b03548effa821311d35433bc328d54a91 100644
+index 9fc3db543a0c9df502df5fb85012c6aa590e887d..a838a35be772dffc38c84c4f352598cd75dc3f33 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -98,9 +98,27 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -3499,7 +3506,7 @@ index b0a97679157a18a3c623ce3b2ae315789772c254..bc2b436b03548effa821311d35433bc3
float f = this.getLightLevelDependentMagicValue();
if (f > 0.5F && this.level().canSeeSky(this.blockPosition()) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.RUNAWAY)) { // Paper
-@@ -409,6 +428,7 @@ public class EnderMan extends Monster implements NeutralMob {
+@@ -415,6 +434,7 @@ public class EnderMan extends Monster implements NeutralMob {
public boolean hurt(DamageSource source, float amount) {
if (this.isInvulnerableTo(source)) {
return false;
@@ -4842,7 +4849,7 @@ index 1afe8a8694c1fd0bf43ce3c0c36a83fda9aec141..252d2994fac423ea1fef36bdc7c09778
public void setPersistentAngerTarget(@Nullable UUID angryAt) {
this.persistentAngerTarget = angryAt;
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 4257f2282152aee09533c9a2e53018d3e49effa4..fda37baf4afef5e51265833166767b7ae8fccb96 100644
+index e703320717ff620a19ff76d1c10066117c9895d5..d040198ce528293ed95adcdb17ddf0acbc5a93e0 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
@@ -69,6 +69,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
@@ -4869,16 +4876,17 @@ index 4257f2282152aee09533c9a2e53018d3e49effa4..fda37baf4afef5e51265833166767b7a
@Override
public boolean canBeLeashed(Player player) {
return !this.isLeashed();
-@@ -131,6 +148,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
+@@ -132,7 +149,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
@Override
protected void customServerAiStep() {
this.level().getProfiler().push("hoglinBrain");
-+ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - Pufferfish
+- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish
++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider
this.getBrain().tick((ServerLevel)this.level(), this);
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 6407ddef8442fce4f310ac4babf3e3de0dd5fc9a..4c47457aba8e85770b204b0b2a27e21e11371277 100644
+index cfdc1650783d6855e0d4f33ec68aab48dbee09f0..f57d7fee1ece00aba9bc7b07dda8398e7acc73c3 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
@@ -96,6 +96,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
@@ -4905,11 +4913,12 @@ index 6407ddef8442fce4f310ac4babf3e3de0dd5fc9a..4c47457aba8e85770b204b0b2a27e21e
@Override
public void addAdditionalSaveData(CompoundTag nbt) {
super.addAdditionalSaveData(nbt);
-@@ -303,6 +320,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
+@@ -304,7 +321,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
@Override
protected void customServerAiStep() {
this.level().getProfiler().push("piglinBrain");
-+ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish
+- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish
++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider
this.getBrain().tick((ServerLevel) this.level(), this);
this.level().getProfiler().pop();
PiglinAi.updateActivity(this);
@@ -4950,7 +4959,7 @@ index e1be4a77fae0b9120781f460079269b85c993930..2d842c0dfce1c7e7229bd42b2a92c024
this.level().getProfiler().pop();
PiglinBruteAi.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 b2bc3a832c310448046ccde37a04918aa6d63197..c31a23faa07e3261d609bbecae0c2f3b15a382c6 100644
+index 5e43912708f9074dee1bb351efa737a7e6796fc3..250af1ce7a93c2d2897f35c68fae319c9ba7d55d 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
@@ -122,8 +122,32 @@ public class Warden extends Monster implements VibrationSystem {
@@ -4986,7 +4995,7 @@ index b2bc3a832c310448046ccde37a04918aa6d63197..c31a23faa07e3261d609bbecae0c2f3b
@Override
public Packet getAddEntityPacket() {
return new ClientboundAddEntityPacket(this, this.hasPose(Pose.EMERGING) ? 1 : 0);
-@@ -395,19 +419,16 @@ public class Warden extends Monster implements VibrationSystem {
+@@ -397,19 +421,16 @@ public class Warden extends Monster implements VibrationSystem {
@Contract("null->false")
public boolean canTargetEntity(@Nullable Entity entity) {
@@ -5010,10 +5019,10 @@ index b2bc3a832c310448046ccde37a04918aa6d63197..c31a23faa07e3261d609bbecae0c2f3b
public static void applyDarknessAround(ServerLevel world, Vec3 pos, @Nullable Entity entity, int range) {
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 f555e29c7f9ea4ddb243a018bdc93d2bf1950c3c..ee4892919763e10c7b2072851bfbbccda00c89ac 100644
+index bbcc0356b4c0470502e893cf2dc2f16936a88bc4..f7b81f14cd069da83c25ca6b063289c0fad07952 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-@@ -155,6 +155,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -157,6 +157,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
this.setVillagerData(this.getVillagerData().setType(type).setProfession(VillagerProfession.NONE));
}
@@ -5042,15 +5051,16 @@ index f555e29c7f9ea4ddb243a018bdc93d2bf1950c3c..ee4892919763e10c7b2072851bfbbccd
@Override
public Brain getBrain() {
return (Brain) super.getBrain(); // CraftBukkit - decompile error
-@@ -254,6 +276,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
- protected void customServerAiStep(final boolean inactive) {
+@@ -258,7 +280,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
// Paper end
this.level().getProfiler().push("villagerBrain");
-+ //if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish
- if (!inactive) this.getBrain().tick((ServerLevel) this.level(), this); // Paper
- this.level().getProfiler().pop();
- if (this.assignProfessionWhenSpawned) {
-@@ -311,7 +334,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+ // Pufferfish start
+- if (!inactive && this.behaviorTick++ % this.activatedPriority == 0) {
++ if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider
+ this.getBrain().tick((ServerLevel) this.level(), this); // Paper
+ }
+ // Pufferfish end
+@@ -318,7 +340,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
if (!itemstack.is(Items.VILLAGER_SPAWN_EGG) && this.isAlive() && !this.isTrading() && !this.isSleeping()) {
if (this.isBaby()) {
this.setUnhappy();
@@ -5059,7 +5069,7 @@ index f555e29c7f9ea4ddb243a018bdc93d2bf1950c3c..ee4892919763e10c7b2072851bfbbccd
} else {
boolean flag = this.getOffers().isEmpty();
-@@ -324,8 +347,9 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -331,8 +353,9 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
}
if (flag) {
diff --git a/patches/server/0007-Configurable-entity-base-attributes.patch b/patches/server/0009-Configurable-entity-base-attributes.patch
similarity index 99%
rename from patches/server/0007-Configurable-entity-base-attributes.patch
rename to patches/server/0009-Configurable-entity-base-attributes.patch
index fc2ecce4e..9af1d204d 100644
--- a/patches/server/0007-Configurable-entity-base-attributes.patch
+++ b/patches/server/0009-Configurable-entity-base-attributes.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 7f97cbb040e9d81ee3cccfddbed682bebaa4bda3..f859e05ddc13b4d27f73fbd2abd331f3c8804363 100644
+index 5eb10b5f75b55f66a002745d016b88e0366d1301..b4edc2ab9d831c3c81677544cbd1cd7369591ff5 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -155,7 +155,7 @@ import org.bukkit.plugin.PluginManager;
@@ -34,10 +34,10 @@ index 75c278b67ad2b78766efd8f89c4c2ca7eb7cdcb2..dc99e7f0e6f173c1313c0d5e9ea5dd6b
protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK;
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 4f6ec3e2dcdb4a316cf58a9044a8cacdd982bba3..9330c6a55eb5503f7d58d94424491f46416392f4 100644
+index cc82a506e0da0bf4318a37326924d71ca3340d5e..7471edf871522543cb49afef63d2c539b7e871a3 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -288,6 +288,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -287,6 +287,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.useItem = ItemStack.EMPTY;
this.lastClimbablePos = Optional.empty();
this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type), this); // Purpur
@@ -45,7 +45,7 @@ index 4f6ec3e2dcdb4a316cf58a9044a8cacdd982bba3..9330c6a55eb5503f7d58d94424491f46
this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit
// CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor
this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue());
-@@ -303,6 +304,8 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -302,6 +303,8 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.brain = this.makeBrain(new Dynamic(dynamicopsnbt, (Tag) dynamicopsnbt.createMap((Map) ImmutableMap.of(dynamicopsnbt.createString("memories"), (Tag) dynamicopsnbt.emptyMap()))));
}
@@ -55,7 +55,7 @@ index 4f6ec3e2dcdb4a316cf58a9044a8cacdd982bba3..9330c6a55eb5503f7d58d94424491f46
return this.brain;
}
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 2ee2097ebf7753d63a99fdf492da374849a345eb..41ac8d2cb5424aecb58158122009b5dca9b51b55 100644
+index e184d2a89a89d4bf77a32a2d610175c5bbd38a03..c283900e6c43fda62428a6e6d8b70e512458e779 100644
--- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java
+++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
@@ -264,6 +264,18 @@ public class Bat extends AmbientCreature {
@@ -459,7 +459,7 @@ index 2efa2e19485f9d959a55115ab62f985454689379..eecdb1f1d49951cb8a294d176afd12c6
protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
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 74ea2d9fbd4967f666ac469ff4067fe0c597c655..ab04ea644615d2118d6fb1da95968cbb3139a6a2 100644
+index 4dfe6a909ac3d553bd1cd4cfc131ac8bfb5a0b02..882c8fe0d9dc2e34eed2f1b11bb2c1b4d72319d2 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
@@ -115,6 +115,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
-+ return org.purpurmc.purpur.PurpurConfig.serverModName; // Purpur - Purpur > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
+- return "Purpur"; // Purpur - Purpur > Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
++ return org.purpurmc.purpur.PurpurConfig.serverModName; // Purpur - Purpur > Pufferfish - Pufferfish > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla!
}
public SystemReport fillSystemReport(SystemReport details) {
diff --git a/patches/server/0013-LivingEntity-safeFallDistance.patch b/patches/server/0015-LivingEntity-safeFallDistance.patch
similarity index 90%
rename from patches/server/0013-LivingEntity-safeFallDistance.patch
rename to patches/server/0015-LivingEntity-safeFallDistance.patch
index 4142cd1e3..a666d56c7 100644
--- a/patches/server/0013-LivingEntity-safeFallDistance.patch
+++ b/patches/server/0015-LivingEntity-safeFallDistance.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity safeFallDistance
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 91f8f6c918ab5bc8a456b924b9b02b03905841aa..e2a09ca6fca5aa9623eae152e9861f81f7371811 100644
+index 7471edf871522543cb49afef63d2c539b7e871a3..960e6ae3e7ceb981459b87343cacb7458d51eecf 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -254,6 +254,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -253,6 +253,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
private boolean skipDropExperience;
// CraftBukkit start
public int expToDrop;
@@ -16,7 +16,7 @@ index 91f8f6c918ab5bc8a456b924b9b02b03905841aa..e2a09ca6fca5aa9623eae152e9861f81
public boolean forceDrops;
public ArrayList drops = new ArrayList();
public final org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes;
-@@ -354,7 +355,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -353,7 +354,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.tryAddSoulSpeed();
}
@@ -25,7 +25,7 @@ index 91f8f6c918ab5bc8a456b924b9b02b03905841aa..e2a09ca6fca5aa9623eae152e9861f81
double d1 = this.getX();
double d2 = this.getY();
double d3 = this.getZ();
-@@ -369,7 +370,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -368,7 +369,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
d3 = (double) landedPosition.getZ() + 0.5D + d5 / d6 * 0.5D;
}
@@ -34,7 +34,7 @@ index 91f8f6c918ab5bc8a456b924b9b02b03905841aa..e2a09ca6fca5aa9623eae152e9861f81
double d7 = Math.min((double) (0.2F + f / 15.0F), 2.5D);
int i = (int) (150.0D * d7);
-@@ -2066,7 +2067,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -2092,7 +2093,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
MobEffectInstance mobeffect = this.getEffect(MobEffects.JUMP);
float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1);
@@ -69,7 +69,7 @@ index 2a30499fd6f4a1340f6911f0f7f079bcbe8576a3..c3c0fbe71c9af1125c80698865cb9eaf
// Purpur start
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
-index feb5f25886889710d51ab2a88192727c948322ca..92f17bc1631e13bf025cf7b867f6c13ccdacc4e7 100644
+index 3579715faa33a722cccb13d8d7c86a3de740d6fc..3c65041eed148fe30be3c73e423433e37ae58cc5 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -1099,4 +1099,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
diff --git a/patches/server/0014-Lagging-threshold.patch b/patches/server/0016-Lagging-threshold.patch
similarity index 88%
rename from patches/server/0014-Lagging-threshold.patch
rename to patches/server/0016-Lagging-threshold.patch
index ba2b77952..0c9e4c45b 100644
--- a/patches/server/0014-Lagging-threshold.patch
+++ b/patches/server/0016-Lagging-threshold.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Lagging threshold
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index d0f0b17f4071ca716a3f3361bf1080b9607e4e04..b064e88913e932d070f36dd3f4832f63ac5843ad 100644
+index a22dbc34cfd9de6e996eb925c47abfccef13b0e7..4eeb7a43c8cdcd81fd9f8da4792ab27f54595d14 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -301,6 +301,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements FeatureElement, EntityTypeT
+@@ -316,6 +316,16 @@ public class EntityType implements FeatureElement, EntityTypeT
return (EntityType) Registry.register(BuiltInRegistries.ENTITY_TYPE, id, (EntityType) type.build(id)); // CraftBukkit - decompile error
}
@@ -25,7 +25,7 @@ index 73871f456a85bda1e51f54986d0e61fb629822e8..74499ac528becad47565c87e49a8e0b6
public static ResourceLocation getKey(EntityType> type) {
return BuiltInRegistries.ENTITY_TYPE.getKey(type);
}
-@@ -529,6 +539,16 @@ public class EntityType implements FeatureElement, EntityTypeT
+@@ -531,6 +541,16 @@ public class EntityType implements FeatureElement, EntityTypeT
return this.category;
}
diff --git a/patches/server/0016-Anvil-API.patch b/patches/server/0018-Anvil-API.patch
similarity index 100%
rename from patches/server/0016-Anvil-API.patch
rename to patches/server/0018-Anvil-API.patch
diff --git a/patches/server/0017-Alternative-Keepalive-Handling.patch b/patches/server/0019-Alternative-Keepalive-Handling.patch
similarity index 100%
rename from patches/server/0017-Alternative-Keepalive-Handling.patch
rename to patches/server/0019-Alternative-Keepalive-Handling.patch
diff --git a/patches/server/0018-Silk-touch-spawners.patch b/patches/server/0020-Silk-touch-spawners.patch
similarity index 100%
rename from patches/server/0018-Silk-touch-spawners.patch
rename to patches/server/0020-Silk-touch-spawners.patch
diff --git a/patches/server/0019-Add-turtle-egg-block-options.patch b/patches/server/0021-Add-turtle-egg-block-options.patch
similarity index 100%
rename from patches/server/0019-Add-turtle-egg-block-options.patch
rename to patches/server/0021-Add-turtle-egg-block-options.patch
diff --git a/patches/server/0020-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0022-Logger-settings-suppressing-pointless-logs.patch
similarity index 100%
rename from patches/server/0020-Logger-settings-suppressing-pointless-logs.patch
rename to patches/server/0022-Logger-settings-suppressing-pointless-logs.patch
diff --git a/patches/server/0021-Disable-outdated-build-check.patch b/patches/server/0023-Disable-outdated-build-check.patch
similarity index 92%
rename from patches/server/0021-Disable-outdated-build-check.patch
rename to patches/server/0023-Disable-outdated-build-check.patch
index 42dc74d4a..703cb32e7 100644
--- a/patches/server/0021-Disable-outdated-build-check.patch
+++ b/patches/server/0023-Disable-outdated-build-check.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Disable outdated build check
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
-index 754a47528fb675ceae7020d7ae26d1f9d951d27c..d0372aa58214019b0b24a84eb8afdec6aec975a6 100644
+index a6b1c83e289bd0a9ad59288ed2da88ac3e607c0f..45f63f2fedee7bcab9cd3ebc3117cecd225b89d2 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -300,7 +300,7 @@ public class Main {
diff --git a/patches/server/0022-Giants-AI-settings.patch b/patches/server/0024-Giants-AI-settings.patch
similarity index 100%
rename from patches/server/0022-Giants-AI-settings.patch
rename to patches/server/0024-Giants-AI-settings.patch
diff --git a/patches/server/0023-Zombie-horse-naturally-spawn.patch b/patches/server/0025-Zombie-horse-naturally-spawn.patch
similarity index 95%
rename from patches/server/0023-Zombie-horse-naturally-spawn.patch
rename to patches/server/0025-Zombie-horse-naturally-spawn.patch
index 43119ee83..d989763f1 100644
--- a/patches/server/0023-Zombie-horse-naturally-spawn.patch
+++ b/patches/server/0025-Zombie-horse-naturally-spawn.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 8768ad8207ded2dfca532c69238dbd3cf68e2b97..83616ffe1c2698418a79bbcc34995ac80becc02e 100644
+index 19698f13530183b3580a7a6ad720d078b6c791ba..c0f11d06e077c41d65b25396a14a4d81a39993e2 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -984,10 +984,18 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1000,10 +1000,18 @@ public class ServerLevel extends Level implements WorldGenLevel {
boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper
if (flag1) {
diff --git a/patches/server/0024-Charged-creeper-naturally-spawn.patch b/patches/server/0026-Charged-creeper-naturally-spawn.patch
similarity index 100%
rename from patches/server/0024-Charged-creeper-naturally-spawn.patch
rename to patches/server/0026-Charged-creeper-naturally-spawn.patch
diff --git a/patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0027-Rabbit-naturally-spawn-toast-and-killer.patch
similarity index 100%
rename from patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch
rename to patches/server/0027-Rabbit-naturally-spawn-toast-and-killer.patch
diff --git a/patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch
similarity index 100%
rename from patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch
rename to patches/server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch
diff --git a/patches/server/0027-Tulips-change-fox-type.patch b/patches/server/0029-Tulips-change-fox-type.patch
similarity index 100%
rename from patches/server/0027-Tulips-change-fox-type.patch
rename to patches/server/0029-Tulips-change-fox-type.patch
diff --git a/patches/server/0028-Breedable-Polar-Bears.patch b/patches/server/0030-Breedable-Polar-Bears.patch
similarity index 100%
rename from patches/server/0028-Breedable-Polar-Bears.patch
rename to patches/server/0030-Breedable-Polar-Bears.patch
diff --git a/patches/server/0029-Chickens-can-retaliate.patch b/patches/server/0031-Chickens-can-retaliate.patch
similarity index 100%
rename from patches/server/0029-Chickens-can-retaliate.patch
rename to patches/server/0031-Chickens-can-retaliate.patch
diff --git a/patches/server/0030-Add-option-to-set-armorstand-step-height.patch b/patches/server/0032-Add-option-to-set-armorstand-step-height.patch
similarity index 92%
rename from patches/server/0030-Add-option-to-set-armorstand-step-height.patch
rename to patches/server/0032-Add-option-to-set-armorstand-step-height.patch
index fac05f34a..2e70c706f 100644
--- a/patches/server/0030-Add-option-to-set-armorstand-step-height.patch
+++ b/patches/server/0032-Add-option-to-set-armorstand-step-height.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add option to set armorstand step height
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index f859e05ddc13b4d27f73fbd2abd331f3c8804363..61183cfcff5f4c706d0491b844531596caa1080d 100644
+index b4edc2ab9d831c3c81677544cbd1cd7369591ff5..a5f54e2c17f618b99c76281b45d005280e4e31f9 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -333,7 +333,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -18,7 +18,7 @@ index f859e05ddc13b4d27f73fbd2abd331f3c8804363..61183cfcff5f4c706d0491b844531596
protected final RandomSource random;
public int tickCount;
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
-index 9b19cca3b8231b8fbda674f080922673503b1260..41d6127ef781a2119dc41f18b4831d9e150ba0fa 100644
+index 1c7702a5c888846f93f8f80d3b854a26c11499be..14424afdb708df7f93caf6df45412ec721b5e1dd 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -690,6 +690,7 @@ public class ArmorStand extends LivingEntity {
diff --git a/patches/server/0031-Cat-spawning-options.patch b/patches/server/0033-Cat-spawning-options.patch
similarity index 100%
rename from patches/server/0031-Cat-spawning-options.patch
rename to patches/server/0033-Cat-spawning-options.patch
diff --git a/patches/server/0032-Cows-eat-mushrooms.patch b/patches/server/0034-Cows-eat-mushrooms.patch
similarity index 100%
rename from patches/server/0032-Cows-eat-mushrooms.patch
rename to patches/server/0034-Cows-eat-mushrooms.patch
diff --git a/patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch
similarity index 100%
rename from patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch
rename to patches/server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch
diff --git a/patches/server/0034-Pigs-give-saddle-back.patch b/patches/server/0036-Pigs-give-saddle-back.patch
similarity index 100%
rename from patches/server/0034-Pigs-give-saddle-back.patch
rename to patches/server/0036-Pigs-give-saddle-back.patch
diff --git a/patches/server/0035-Snowman-drop-and-put-back-pumpkin.patch b/patches/server/0037-Snowman-drop-and-put-back-pumpkin.patch
similarity index 100%
rename from patches/server/0035-Snowman-drop-and-put-back-pumpkin.patch
rename to patches/server/0037-Snowman-drop-and-put-back-pumpkin.patch
diff --git a/patches/server/0036-Ender-dragon-always-drop-full-exp.patch b/patches/server/0038-Ender-dragon-always-drop-full-exp.patch
similarity index 100%
rename from patches/server/0036-Ender-dragon-always-drop-full-exp.patch
rename to patches/server/0038-Ender-dragon-always-drop-full-exp.patch
diff --git a/patches/server/0037-Allow-soil-to-moisten-from-water-directly-under-it.patch b/patches/server/0039-Allow-soil-to-moisten-from-water-directly-under-it.patch
similarity index 100%
rename from patches/server/0037-Allow-soil-to-moisten-from-water-directly-under-it.patch
rename to patches/server/0039-Allow-soil-to-moisten-from-water-directly-under-it.patch
diff --git a/patches/server/0038-Minecart-settings-and-WASD-controls.patch b/patches/server/0040-Minecart-settings-and-WASD-controls.patch
similarity index 99%
rename from patches/server/0038-Minecart-settings-and-WASD-controls.patch
rename to patches/server/0040-Minecart-settings-and-WASD-controls.patch
index 36ed07378..de1ad7255 100644
--- a/patches/server/0038-Minecart-settings-and-WASD-controls.patch
+++ b/patches/server/0040-Minecart-settings-and-WASD-controls.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Minecart settings and WASD controls
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 1520defef5010fb1cad0cb919497ad9ebc772dc1..97bba09ee186963f44380f2fbffa10a0b33d513e 100644
+index 9918f6ac1066ccadd3eb2635450faaf5a4350523..85383b6a9d16b7cf7e928c4d9aaf7af932540091 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1109,6 +1109,7 @@ public class ServerPlayer extends Player {
diff --git a/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch
similarity index 91%
rename from patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch
rename to patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch
index ec472048b..02ec25159 100644
--- a/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch
+++ b/patches/server/0041-Disable-loot-drops-on-death-by-cramming.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Disable loot drops on death by cramming
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index e2a09ca6fca5aa9623eae152e9861f81f7371811..23c6ec58ab4bbd1807e3f05779258a9fd0e5133e 100644
+index 960e6ae3e7ceb981459b87343cacb7458d51eecf..c22b07728dde5807873004e4037ce3b738792689 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -1826,6 +1826,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1838,6 +1838,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.dropEquipment(); // CraftBukkit - from below
if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
@@ -16,7 +16,7 @@ index e2a09ca6fca5aa9623eae152e9861f81f7371811..23c6ec58ab4bbd1807e3f05779258a9f
this.dropFromLootTable(source, flag);
// Paper start
final boolean prev = this.clearEquipmentSlots;
-@@ -1834,6 +1835,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1846,6 +1847,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
// Paper end
this.dropCustomDeathLoot(source, i, flag);
this.clearEquipmentSlots = prev; // Paper
diff --git a/patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0042-Option-to-toggle-milk-curing-bad-omen.patch
similarity index 100%
rename from patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch
rename to patches/server/0042-Option-to-toggle-milk-curing-bad-omen.patch
diff --git a/patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/server/0043-End-gateway-should-check-if-entity-can-use-portal.patch
similarity index 100%
rename from patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch
rename to patches/server/0043-End-gateway-should-check-if-entity-can-use-portal.patch
diff --git a/patches/server/0042-Skip-events-if-there-s-no-listeners.patch b/patches/server/0044-Skip-events-if-there-s-no-listeners.patch
similarity index 100%
rename from patches/server/0042-Skip-events-if-there-s-no-listeners.patch
rename to patches/server/0044-Skip-events-if-there-s-no-listeners.patch
diff --git a/patches/server/0043-Add-permission-for-F3-N-debug.patch b/patches/server/0045-Add-permission-for-F3-N-debug.patch
similarity index 89%
rename from patches/server/0043-Add-permission-for-F3-N-debug.patch
rename to patches/server/0045-Add-permission-for-F3-N-debug.patch
index cbed37776..d01f4d38b 100644
--- a/patches/server/0043-Add-permission-for-F3-N-debug.patch
+++ b/patches/server/0045-Add-permission-for-F3-N-debug.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add permission for F3+N debug
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index 94e55c34084a8bccac95b8e5d108760758e4d61a..c6adced2551977dff3000dce8f6c0b35c295e85e 100644
+index cf03faf3207f886b03b0e90ad6f4ce5310db428c..1eafc1854d47002d683f625f4c164290eee59181 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1156,6 +1156,7 @@ public abstract class PlayerList {
diff --git a/patches/server/0044-Configurable-TPS-Catchup.patch b/patches/server/0046-Configurable-TPS-Catchup.patch
similarity index 93%
rename from patches/server/0044-Configurable-TPS-Catchup.patch
rename to patches/server/0046-Configurable-TPS-Catchup.patch
index 5b17d091e..d380a71f6 100644
--- a/patches/server/0044-Configurable-TPS-Catchup.patch
+++ b/patches/server/0046-Configurable-TPS-Catchup.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable TPS Catchup
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index b064e88913e932d070f36dd3f4832f63ac5843ad..0e04be813e7e0b11de4de08004c166d1fe74bedd 100644
+index 4eeb7a43c8cdcd81fd9f8da4792ab27f54595d14..57f2b54ad36d33e76e538895df691987c869a043 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1158,7 +1158,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop {
return Component.Serializer.toJson(Component.literal(s));
-@@ -1245,10 +1248,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -1246,10 +1249,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
private void updateBookPages(List list, UnaryOperator unaryoperator, ItemStack itemstack, int slot, ItemStack handItem) { // CraftBukkit
ListTag nbttaglist = new ListTag();
@@ -44,7 +44,7 @@ index 4d81437253e5a66fb46cad979edfcf987f455477..68ed6821876e0ee310854b7f6436dd34
Objects.requireNonNull(nbttaglist);
stream.forEach(nbttaglist::add);
-@@ -1258,11 +1264,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -1259,11 +1265,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
for (int j = list.size(); i < j; ++i) {
FilteredText filteredtext = (FilteredText) list.get(i);
@@ -58,7 +58,7 @@ index 4d81437253e5a66fb46cad979edfcf987f455477..68ed6821876e0ee310854b7f6436dd34
}
}
-@@ -1275,6 +1281,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -1276,6 +1282,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent)
}
diff --git a/patches/server/0070-Entity-lifespan.patch b/patches/server/0072-Entity-lifespan.patch
similarity index 89%
rename from patches/server/0070-Entity-lifespan.patch
rename to patches/server/0072-Entity-lifespan.patch
index b9fd28840..85faf5c1c 100644
--- a/patches/server/0070-Entity-lifespan.patch
+++ b/patches/server/0072-Entity-lifespan.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Entity lifespan
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 68ed6821876e0ee310854b7f6436dd341712a92c..2976ddef7292f3cdf14353d20b1e4e2085dbb1a8 100644
+index fb887cbbd5d5ca0a29bd31672b38a18db2f2e8db..14f6abe6e7eeaf5d3053bf3ecb540b898813c267 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2738,6 +2738,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2740,6 +2740,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
AABB axisalignedbb = entity.getBoundingBox();
if (axisalignedbb.distanceToSqr(this.player.getEyePosition()) < ServerGamePacketListenerImpl.MAX_INTERACTION_DISTANCE) {
@@ -17,7 +17,7 @@ index 68ed6821876e0ee310854b7f6436dd341712a92c..2976ddef7292f3cdf14353d20b1e4e20
private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit
ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand);
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index 1c457561399b4a531ca7cb616a4bde69b30a4bc6..574ef1a38fa65b2eb92c9168de27279efd4dd81c 100644
+index 92e74dd04e715650b435537014bb89f15a112e19..3e954a04e3ccdfcd495d0c56535c951eeaa2b5ce 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -135,6 +135,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
@@ -28,7 +28,7 @@ index 1c457561399b4a531ca7cb616a4bde69b30a4bc6..574ef1a38fa65b2eb92c9168de27279e
public boolean aware = true; // CraftBukkit
protected Mob(EntityType extends Mob> type, Level world) {
-@@ -322,6 +323,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -324,6 +325,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
entityliving = null;
}
}
@@ -36,7 +36,7 @@ index 1c457561399b4a531ca7cb616a4bde69b30a4bc6..574ef1a38fa65b2eb92c9168de27279e
this.target = entityliving;
return true;
// CraftBukkit end
-@@ -369,8 +371,28 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -371,8 +373,28 @@ public abstract class Mob extends LivingEntity implements Targeting {
}
this.level().getProfiler().pop();
@@ -65,7 +65,7 @@ index 1c457561399b4a531ca7cb616a4bde69b30a4bc6..574ef1a38fa65b2eb92c9168de27279e
@Override
protected void playHurtSound(DamageSource source) {
this.resetAmbientSoundTime();
-@@ -560,6 +582,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -562,6 +584,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
}
nbt.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit
@@ -73,7 +73,7 @@ index 1c457561399b4a531ca7cb616a4bde69b30a4bc6..574ef1a38fa65b2eb92c9168de27279e
}
@Override
-@@ -630,6 +653,11 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -632,6 +655,11 @@ public abstract class Mob extends LivingEntity implements Targeting {
this.aware = nbt.getBoolean("Bukkit.Aware");
}
// CraftBukkit end
@@ -85,7 +85,7 @@ index 1c457561399b4a531ca7cb616a4bde69b30a4bc6..574ef1a38fa65b2eb92c9168de27279e
}
@Override
-@@ -1704,6 +1732,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -1710,6 +1738,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
this.setLastHurtMob(target);
}
diff --git a/patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch
similarity index 96%
rename from patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch
rename to patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch
index e70842432..79ac1dd33 100644
--- a/patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch
+++ b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch
@@ -36,10 +36,10 @@ index 85383b6a9d16b7cf7e928c4d9aaf7af932540091..8b05588b480af39d25bfcb84a5241e9e
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 395cfab75f313be3921952bc570fd53194ad37d6..47ae4785f08e7d0a51e2ddd01f8cc06aadb46cb0 100644
+index ee41bfa1a851340f291182f520c9cf1925a355af..3fe857ddd4dbaa73f9556f547f03e9f747a52c40 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -428,6 +428,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -427,6 +427,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
double d1 = this.level().getWorldBorder().getDamagePerBlock();
if (d1 > 0.0D) {
diff --git a/patches/server/0072-Squid-EAR-immunity.patch b/patches/server/0074-Squid-EAR-immunity.patch
similarity index 94%
rename from patches/server/0072-Squid-EAR-immunity.patch
rename to patches/server/0074-Squid-EAR-immunity.patch
index c57a9aa13..cdad4e39d 100644
--- a/patches/server/0072-Squid-EAR-immunity.patch
+++ b/patches/server/0074-Squid-EAR-immunity.patch
@@ -25,7 +25,7 @@ index 8cc7e83e6272ed9c3f005c76aa3432fb2d3c76a6..b9ba53461de687070dda3c0bcccbee24
public boolean spiderRidable = false;
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
-index 882541c570fa9d2bf0e03df30e112c84fa075c35..bc98504b9eacd41994c234e6385f37c5d681383b 100644
+index d1448f50a9c03bd779f4bcd6b4fc896365316b78..925cd6e07efc3a42ff5787823b046726ce863104 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -15,6 +15,7 @@ import net.minecraft.world.entity.ambient.AmbientCreature;
@@ -36,7 +36,7 @@ index 882541c570fa9d2bf0e03df30e112c84fa075c35..bc98504b9eacd41994c234e6385f37c5
import net.minecraft.world.entity.animal.WaterAnimal;
import net.minecraft.world.entity.animal.horse.Llama;
import net.minecraft.world.entity.boss.EnderDragonPart;
-@@ -379,6 +380,7 @@ public class ActivationRange
+@@ -402,6 +403,7 @@ public class ActivationRange
*/
public static boolean checkIfActive(Entity entity)
{
diff --git a/patches/server/0073-Phantoms-burn-in-light.patch b/patches/server/0075-Phantoms-burn-in-light.patch
similarity index 100%
rename from patches/server/0073-Phantoms-burn-in-light.patch
rename to patches/server/0075-Phantoms-burn-in-light.patch
diff --git a/patches/server/0074-Configurable-villager-breeding.patch b/patches/server/0076-Configurable-villager-breeding.patch
similarity index 93%
rename from patches/server/0074-Configurable-villager-breeding.patch
rename to patches/server/0076-Configurable-villager-breeding.patch
index e39498f1e..fa7119344 100644
--- a/patches/server/0074-Configurable-villager-breeding.patch
+++ b/patches/server/0076-Configurable-villager-breeding.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable villager breeding
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 8f65901bc4e189e2ac2686ca17233b9166e7b870..a3064132c1ecdbff0414d1c3048a400cef6bad59 100644
+index 616a6c78a056839575b4dabfeebb7cb2dce25026..1754c88d9b3bdbce721062c564a5f61c2ad14e86 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-@@ -780,7 +780,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -786,7 +786,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@Override
public boolean canBreed() {
diff --git a/patches/server/0075-Redstone-deactivates-spawners.patch b/patches/server/0077-Redstone-deactivates-spawners.patch
similarity index 100%
rename from patches/server/0075-Redstone-deactivates-spawners.patch
rename to patches/server/0077-Redstone-deactivates-spawners.patch
diff --git a/patches/server/0076-Totems-work-in-inventory.patch b/patches/server/0078-Totems-work-in-inventory.patch
similarity index 94%
rename from patches/server/0076-Totems-work-in-inventory.patch
rename to patches/server/0078-Totems-work-in-inventory.patch
index 9b961c59f..ba2fd9de8 100644
--- a/patches/server/0076-Totems-work-in-inventory.patch
+++ b/patches/server/0078-Totems-work-in-inventory.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Totems work in inventory
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index de20531092b5a053e36ce9469ba5db40b1cf9381..de704fea146a758f27dc5c476ef08b58b4524e53 100644
+index 3fe857ddd4dbaa73f9556f547f03e9f747a52c40..3271c1a14fba90ab2e6467d907dfaf8cf5c12b65 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -1614,6 +1614,18 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1626,6 +1626,18 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
}
diff --git a/patches/server/0077-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch
similarity index 100%
rename from patches/server/0077-Add-vindicator-johnny-spawn-chance.patch
rename to patches/server/0079-Add-vindicator-johnny-spawn-chance.patch
diff --git a/patches/server/0078-Dispensers-place-anvils-option.patch b/patches/server/0080-Dispensers-place-anvils-option.patch
similarity index 100%
rename from patches/server/0078-Dispensers-place-anvils-option.patch
rename to patches/server/0080-Dispensers-place-anvils-option.patch
diff --git a/patches/server/0079-Allow-anvil-colors.patch b/patches/server/0081-Allow-anvil-colors.patch
similarity index 100%
rename from patches/server/0079-Allow-anvil-colors.patch
rename to patches/server/0081-Allow-anvil-colors.patch
diff --git a/patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch
similarity index 100%
rename from patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch
rename to patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch
diff --git a/patches/server/0081-Short-enderman-height.patch b/patches/server/0083-Short-enderman-height.patch
similarity index 90%
rename from patches/server/0081-Short-enderman-height.patch
rename to patches/server/0083-Short-enderman-height.patch
index 236c56772..4088fc200 100644
--- a/patches/server/0081-Short-enderman-height.patch
+++ b/patches/server/0083-Short-enderman-height.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Short enderman height
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
-index 74499ac528becad47565c87e49a8e0b6646a0612..55fced3e70c7bc49306af00dcc1d92ffb83a799b 100644
+index 518b927dac087000b5049bc61d43a46a7379e256..5d703e322bd220665c3ce3a41e40129b238ae150 100644
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
-@@ -307,7 +307,8 @@ public class EntityType implements FeatureElement, EntityTypeT
+@@ -309,7 +309,8 @@ public class EntityType implements FeatureElement, EntityTypeT
private Component description;
@Nullable
private ResourceLocation lootTable;
@@ -19,10 +19,10 @@ index 74499ac528becad47565c87e49a8e0b6646a0612..55fced3e70c7bc49306af00dcc1d92ff
private static EntityType register(String id, EntityType.Builder type) { // CraftBukkit - decompile error
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 587eaef37a5acff8c13e7256b9b90fea5e7a6310..8b4129b8f0f6a368ae6b168aac404316f12797bb 100644
+index 86581579aed4d8bd18c7b7ea58e2dc4fee5315ba..ebef4f39af4928ed5bd206a82aa0e3992e67db78 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
-@@ -434,6 +434,7 @@ public class EnderMan extends Monster implements NeutralMob {
+@@ -440,6 +440,7 @@ public class EnderMan extends Monster implements NeutralMob {
if (this.isInvulnerableTo(source)) {
return false;
} else if (getRider() != null && this.isControllable()) { return super.hurt(source, amount); // Purpur - no teleporting on damage
diff --git a/patches/server/0082-Stop-squids-floating-on-top-of-water.patch b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch
similarity index 92%
rename from patches/server/0082-Stop-squids-floating-on-top-of-water.patch
rename to patches/server/0084-Stop-squids-floating-on-top-of-water.patch
index cc162141a..f59c727ff 100644
--- a/patches/server/0082-Stop-squids-floating-on-top-of-water.patch
+++ b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Stop squids floating on top of water
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 46098a03d6993db7509f351aa302d0e62a29078e..cb4d428a4edfcfcd7b6750487620cfc9d613f561 100644
+index ea1ecc287a75860fd8275d604fb9b130d355894b..267e3ddaed711ee275bf64855c0382df81d1f12c 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -4356,6 +4356,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -4368,6 +4368,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
this.yRotO = this.getYRot();
}
@@ -19,7 +19,7 @@ index 46098a03d6993db7509f351aa302d0e62a29078e..cb4d428a4edfcfcd7b6750487620cfc9
+ // Purpur end
+
public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) {
- if (this.touchingUnloadedChunk()) {
+ if (false && this.touchingUnloadedChunk()) { // Pufferfish - cost of a lookup here is the same cost as below, so skip
return false;
diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java
index 913b66be2111da862e706d4978825c64cfe8b00b..f68c18b6645981126329b58379946308bbb8ccf8 100644
diff --git a/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch
similarity index 100%
rename from patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch
rename to patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch
diff --git a/patches/server/0084-Entities-can-use-portals-configuration.patch b/patches/server/0086-Entities-can-use-portals-configuration.patch
similarity index 93%
rename from patches/server/0084-Entities-can-use-portals-configuration.patch
rename to patches/server/0086-Entities-can-use-portals-configuration.patch
index ee6c285f4..be3efe2f7 100644
--- a/patches/server/0084-Entities-can-use-portals-configuration.patch
+++ b/patches/server/0086-Entities-can-use-portals-configuration.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index cb4d428a4edfcfcd7b6750487620cfc9d613f561..7a7f6368eae5cdad69d2ad4e2b8bcc547fb3853c 100644
+index 267e3ddaed711ee275bf64855c0382df81d1f12c..f2b06c4930c39a3e47f0ea35dfa5997f21654674 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -3075,7 +3075,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -3087,7 +3087,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
public void handleInsidePortal(BlockPos pos) {
if (this.isOnPortalCooldown()) {
this.setPortalCooldown();
@@ -17,7 +17,7 @@ index cb4d428a4edfcfcd7b6750487620cfc9d613f561..7a7f6368eae5cdad69d2ad4e2b8bcc54
if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) {
this.portalEntrancePos = pos.immutable();
}
-@@ -3780,7 +3780,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -3792,7 +3792,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
public boolean canChangeDimensions() {
diff --git a/patches/server/0085-LivingEntity-broadcastItemBreak.patch b/patches/server/0087-LivingEntity-broadcastItemBreak.patch
similarity index 91%
rename from patches/server/0085-LivingEntity-broadcastItemBreak.patch
rename to patches/server/0087-LivingEntity-broadcastItemBreak.patch
index c2b764c2c..a65c9a12b 100644
--- a/patches/server/0085-LivingEntity-broadcastItemBreak.patch
+++ b/patches/server/0087-LivingEntity-broadcastItemBreak.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
-index 92f17bc1631e13bf025cf7b867f6c13ccdacc4e7..1001beea3538a9723074421047dc3fbecf063d02 100644
+index 3c65041eed148fe30be3c73e423433e37ae58cc5..07cbcb7f5a77b75ba10ccb470502c73fab17784e 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -1110,5 +1110,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
diff --git a/patches/server/0086-Customizable-wither-health-and-healing.patch b/patches/server/0088-Customizable-wither-health-and-healing.patch
similarity index 94%
rename from patches/server/0086-Customizable-wither-health-and-healing.patch
rename to patches/server/0088-Customizable-wither-health-and-healing.patch
index 2d5ef91fe..0fdfe7eb6 100644
--- a/patches/server/0086-Customizable-wither-health-and-healing.patch
+++ b/patches/server/0088-Customizable-wither-health-and-healing.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Customizable wither health and healing
Adds the ability to customize the health of the wither, as well as the amount that it heals, and how often.
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 6f7ef64612d6229179545d56093efdf58a2d7978..b395d5c85f26ca4252d3f8f886b2ee5a7892af5f 100644
+index e6d6341f895c763fee05db3a7a7e05a68b9d36e9..8796b779ac0550e32c7313b1280278de48070baf 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
-@@ -518,8 +518,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
+@@ -525,8 +525,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
}
}
diff --git a/patches/server/0087-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch
similarity index 98%
rename from patches/server/0087-Allow-toggling-special-MobSpawners-per-world.patch
rename to patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch
index 226c1075d..98a341d23 100644
--- a/patches/server/0087-Allow-toggling-special-MobSpawners-per-world.patch
+++ b/patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Allow toggling special MobSpawners per world
In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this.
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 83616ffe1c2698418a79bbcc34995ac80becc02e..fe4f830eec3b4798588303574c45813d74623aed 100644
+index c0f11d06e077c41d65b25396a14a4d81a39993e2..8824d5e4b6d0ab504dd80b0cceef743b456d7e2e 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -707,7 +707,24 @@ public class ServerLevel extends Level implements WorldGenLevel {
diff --git a/patches/server/0088-Raid-cooldown-setting.patch b/patches/server/0090-Raid-cooldown-setting.patch
similarity index 100%
rename from patches/server/0088-Raid-cooldown-setting.patch
rename to patches/server/0090-Raid-cooldown-setting.patch
diff --git a/patches/server/0089-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0091-Despawn-rate-config-options-per-projectile-type.patch
similarity index 100%
rename from patches/server/0089-Despawn-rate-config-options-per-projectile-type.patch
rename to patches/server/0091-Despawn-rate-config-options-per-projectile-type.patch
diff --git a/patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch
similarity index 98%
rename from patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch
rename to patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch
index 31cc26fed..ccfdea160 100644
--- a/patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch
+++ b/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch
@@ -45,7 +45,7 @@ index 6ec7d0f5e525f9e04b6fa0fb6d4da5fcc22fe653..64acb2e81ef65acb0d41db8b5f7c924c
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Axolotl.class, true, false));
this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR));
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
-index 1efcafd736c1dbd057d5bfe7abbfcb1fb2d6f7b3..d9caaa16e4d62bdfbc3106a63c1b4bef06727bad 100644
+index 971abbfdff555a569ad54b9db5947c3ec50408d2..46fec497e411e3160d9ae9553ae52654d10a9dd3 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -157,7 +157,19 @@ public class Zombie extends Monster {
diff --git a/patches/server/0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch
similarity index 100%
rename from patches/server/0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch
rename to patches/server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch
diff --git a/patches/server/0092-Flying-squids-Oh-my.patch b/patches/server/0094-Flying-squids-Oh-my.patch
similarity index 100%
rename from patches/server/0092-Flying-squids-Oh-my.patch
rename to patches/server/0094-Flying-squids-Oh-my.patch
diff --git a/patches/server/0093-Infinity-bow-settings.patch b/patches/server/0095-Infinity-bow-settings.patch
similarity index 100%
rename from patches/server/0093-Infinity-bow-settings.patch
rename to patches/server/0095-Infinity-bow-settings.patch
diff --git a/patches/server/0094-Configurable-daylight-cycle.patch b/patches/server/0096-Configurable-daylight-cycle.patch
similarity index 93%
rename from patches/server/0094-Configurable-daylight-cycle.patch
rename to patches/server/0096-Configurable-daylight-cycle.patch
index e734fb4f6..18b7454d5 100644
--- a/patches/server/0094-Configurable-daylight-cycle.patch
+++ b/patches/server/0096-Configurable-daylight-cycle.patch
@@ -18,10 +18,10 @@ index 9ec6145fe04ec64bbee8ec6a837719caebdbc6f5..358d610ad020cada1bb83e393deeeaae
public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) {
this.gameTime = time;
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 0c3ac30bb0b932aee211857cf0c8bf7eadaf00aa..8a09a1950e3f4b1d0cb121b369f8753fee238253 100644
+index c29f8291b43a2e92e3444ab72dd23065a006f11f..cdf770adf641844caf0290a8354046aeb8e00cb3 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1521,7 +1521,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop {
@@ -346,7 +346,7 @@ index fe54027f5ec0f88077bf95d3c4cd9a291c4dfa73..7ac51b7c53c89f15661a1fe0b00d07de
protected Brain.Provider brainProvider() {
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
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 e82904142e32fe2da62e2cd00b8436b94de8c048..09489e5e736eb296d0361fd4ea4530e4869864b3 100644
+index fef3b7d193d20c4fdd50b38c6a0371f05165a49d..93295d9683293121f2267350194f18e97b2421c2 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
@@ -109,6 +109,11 @@ public class Goat extends Animal {
@@ -506,7 +506,7 @@ index 9b853fd05a3a851cb08d7f849b51f2b220780982..10136a5062d154456c962e7d1a99c2de
BlockPos.MutableBlockPos blockposition_mutableblockposition = pos.mutable();
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 0365afdc6188d155f9d44812055fa8310114e06a..2c3a5b36e8fa1b5cfd5774296d5a9ca0c69b4db7 100644
+index 22788892f7286f3fa6b40059b2bedaf0c6ec5ef3..80f91a11c04763c1c9ed2bd242b88b5a473560d7 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
@@ -91,6 +91,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
diff --git a/patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch
similarity index 99%
rename from patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch
rename to patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch
index 39dda45f3..08750963b 100644
--- a/patches/server/0101-Apply-display-names-from-item-forms-of-entities-to-e.patch
+++ b/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Apply display names from item forms of entities to entities
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
-index 41d6127ef781a2119dc41f18b4831d9e150ba0fa..111b8ffab08b7a3b20cee2533586c19cf89518d7 100644
+index 14424afdb708df7f93caf6df45412ec721b5e1dd..a164e13ddfe64b212fc5937b455096287d3151d8 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -619,7 +619,7 @@ public class ArmorStand extends LivingEntity {
diff --git a/patches/server/0102-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch
similarity index 100%
rename from patches/server/0102-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch
rename to patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch
diff --git a/patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch
similarity index 93%
rename from patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch
rename to patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch
index 2f65ff7a4..fb4ad129e 100644
--- a/patches/server/0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch
+++ b/patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch
@@ -8,10 +8,10 @@ This should help to reduce the amount of dirt, gravel, grass, and etc.
that Endermen like to randomly place all over the world.
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 8b4129b8f0f6a368ae6b168aac404316f12797bb..1985461125defcc2ce40c44408f223ab479e0525 100644
+index ebef4f39af4928ed5bd206a82aa0e3992e67db78..aecccc96a1ea7fbd774a4ccbd45c11be1da1b43b 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
-@@ -495,7 +495,7 @@ public class EnderMan extends Monster implements NeutralMob {
+@@ -501,7 +501,7 @@ public class EnderMan extends Monster implements NeutralMob {
@Override
public boolean requiresCustomPersistence() {
diff --git a/patches/server/0104-Add-configurable-snowball-damage.patch b/patches/server/0106-Add-configurable-snowball-damage.patch
similarity index 100%
rename from patches/server/0104-Add-configurable-snowball-damage.patch
rename to patches/server/0106-Add-configurable-snowball-damage.patch
diff --git a/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch
similarity index 91%
rename from patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch
rename to patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch
index 90692be93..81f8b8df1 100644
--- a/patches/server/0105-Changeable-Mob-Left-Handed-Chance.patch
+++ b/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Changeable Mob Left Handed Chance
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index 574ef1a38fa65b2eb92c9168de27279efd4dd81c..a6dc66e4e6d53146fff3f7c6af10d9c743343568 100644
+index 3e954a04e3ccdfcd495d0c56535c951eeaa2b5ce..1ce3ba7f703b5627e2761865c0e133dbf5df8712 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
-@@ -1299,7 +1299,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -1305,7 +1305,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
RandomSource randomsource = world.getRandom();
this.getAttribute(Attributes.FOLLOW_RANGE).addPermanentModifier(new AttributeModifier("Random spawn bonus", randomsource.triangle(0.0D, 0.11485000000000001D), AttributeModifier.Operation.MULTIPLY_BASE));
diff --git a/patches/server/0106-Add-boat-fall-damage-config.patch b/patches/server/0108-Add-boat-fall-damage-config.patch
similarity index 97%
rename from patches/server/0106-Add-boat-fall-damage-config.patch
rename to patches/server/0108-Add-boat-fall-damage-config.patch
index 5a94c3986..69b7d65be 100644
--- a/patches/server/0106-Add-boat-fall-damage-config.patch
+++ b/patches/server/0108-Add-boat-fall-damage-config.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add boat fall damage config
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 97fcc122278c5b0f88e7f18eeb601a75753ae209..dd83aa83e8d4da4d16e9731f8527cd0f470848e0 100644
+index 8b05588b480af39d25bfcb84a5241e9e055c81f8..48337c143a825c2107b9f1c4b086050ad02e553a 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1109,7 +1109,16 @@ public class ServerPlayer extends Player {
diff --git a/patches/server/0107-Snow-Golem-rate-of-fire-config.patch b/patches/server/0109-Snow-Golem-rate-of-fire-config.patch
similarity index 100%
rename from patches/server/0107-Snow-Golem-rate-of-fire-config.patch
rename to patches/server/0109-Snow-Golem-rate-of-fire-config.patch
diff --git a/patches/server/0108-EMC-Configurable-disable-give-dropping.patch b/patches/server/0110-EMC-Configurable-disable-give-dropping.patch
similarity index 100%
rename from patches/server/0108-EMC-Configurable-disable-give-dropping.patch
rename to patches/server/0110-EMC-Configurable-disable-give-dropping.patch
diff --git a/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch
similarity index 98%
rename from patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch
rename to patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch
index 9cae01760..eed70111d 100644
--- a/patches/server/0109-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch
+++ b/patches/server/0111-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch
@@ -136,10 +136,10 @@ index cb1d91f9fe98f21c2afbe3894dfd9bca3bdd3ba6..d2703432af207c74ea8d298a784329c3
brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list);
} else {
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 a3064132c1ecdbff0414d1c3048a400cef6bad59..b2d3fbe3574069691e6ee3718a095163bac9fc5f 100644
+index 1754c88d9b3bdbce721062c564a5f61c2ad14e86..7fcf3cf145828b610dec15dcc2cf469a48de9317 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-@@ -222,7 +222,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -224,7 +224,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
brain.addActivity(Activity.PLAY, VillagerGoalPackages.getPlayPackage(0.5F));
} else {
brain.setSchedule(Schedule.VILLAGER_DEFAULT);
@@ -148,7 +148,7 @@ index a3064132c1ecdbff0414d1c3048a400cef6bad59..b2d3fbe3574069691e6ee3718a095163
}
brain.addActivity(Activity.CORE, VillagerGoalPackages.getCorePackage(villagerprofession, 0.5F));
-@@ -973,6 +973,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -979,6 +979,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
public boolean hasFarmSeeds() {
return this.getInventory().hasAnyMatching((itemstack) -> {
diff --git a/patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch
similarity index 100%
rename from patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch
rename to patches/server/0112-Toggle-for-Zombified-Piglin-death-always-counting-as.patch
diff --git a/patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch
similarity index 100%
rename from patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch
rename to patches/server/0113-Configurable-chance-for-wolves-to-spawn-rabid.patch
diff --git a/patches/server/0112-Configurable-default-collar-color.patch b/patches/server/0114-Configurable-default-collar-color.patch
similarity index 100%
rename from patches/server/0112-Configurable-default-collar-color.patch
rename to patches/server/0114-Configurable-default-collar-color.patch
diff --git a/patches/server/0113-Phantom-flames-on-swoop.patch b/patches/server/0115-Phantom-flames-on-swoop.patch
similarity index 100%
rename from patches/server/0113-Phantom-flames-on-swoop.patch
rename to patches/server/0115-Phantom-flames-on-swoop.patch
diff --git a/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch
similarity index 100%
rename from patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch
rename to patches/server/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch
diff --git a/patches/server/0115-Implement-TPSBar.patch b/patches/server/0117-Implement-TPSBar.patch
similarity index 97%
rename from patches/server/0115-Implement-TPSBar.patch
rename to patches/server/0117-Implement-TPSBar.patch
index 9f9a29548..35d4c5d72 100644
--- a/patches/server/0115-Implement-TPSBar.patch
+++ b/patches/server/0117-Implement-TPSBar.patch
@@ -17,10 +17,10 @@ index 637648e03985868c1fe420f84fa778b06deb23ee..e1887523b0b6a0479544385932f54ab1
if (environment.includeIntegrated) {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 8a09a1950e3f4b1d0cb121b369f8753fee238253..eab0fc7a6e6104e541479da98037e3ddfb37de03 100644
+index cdf770adf641844caf0290a8354046aeb8e00cb3..a3675f1ef2317c1a0e9addd9280fe928a45b2736 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1006,6 +1006,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause
return;
}
-@@ -1174,6 +1176,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -1175,6 +1177,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
if (byteTotal > byteAllowed) {
ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size());
diff --git a/patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch
similarity index 100%
rename from patches/server/0118-Full-netherite-armor-grants-fire-resistance.patch
rename to patches/server/0120-Full-netherite-armor-grants-fire-resistance.patch
diff --git a/patches/server/0119-Fix-rotating-UP-DOWN-CW-and-CCW.patch b/patches/server/0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch
similarity index 100%
rename from patches/server/0119-Fix-rotating-UP-DOWN-CW-and-CCW.patch
rename to patches/server/0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch
diff --git a/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch
similarity index 97%
rename from patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch
rename to patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch
index b10570b5d..c20818174 100644
--- a/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch
+++ b/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index de704fea146a758f27dc5c476ef08b58b4524e53..73f3853b4e554fc75b9f49f11df1060bd6340261 100644
+index 3271c1a14fba90ab2e6467d907dfaf8cf5c12b65..82a8b3d6392fffae9ad3440045129c77119e3e84 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -1793,7 +1793,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1805,7 +1805,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
boolean flag = false;
if (this.dead && adversary instanceof WitherBoss) { // Paper
@@ -18,10 +18,10 @@ index de704fea146a758f27dc5c476ef08b58b4524e53..73f3853b4e554fc75b9f49f11df1060b
BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState();
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index a6dc66e4e6d53146fff3f7c6af10d9c743343568..6766e78c961d17a6f380f6814c9ddb120b374d5f 100644
+index 1ce3ba7f703b5627e2761865c0e133dbf5df8712..4454241862598048abd4e8bf321f9a066be15067 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
-@@ -702,7 +702,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -704,7 +704,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
public void aiStep() {
super.aiStep();
this.level().getProfiler().push("looting");
@@ -144,10 +144,10 @@ index 4149a7aea12cac04a2dfe29e071047de461eb3f4..0d16d486c7efc9a8c4c0db648175cace
// flag1 = this.level().removeBlock(blockposition, false) || flag1;
flag1 = true;
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 b395d5c85f26ca4252d3f8f886b2ee5a7892af5f..17432b434c899a4d075e4619b4a2bfe3d5761b49 100644
+index 8796b779ac0550e32c7313b1280278de48070baf..97be7061d3cccac7b64f4b1a234ccbd83e2b7407 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
-@@ -485,7 +485,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
+@@ -492,7 +492,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
if (this.destroyBlocksTick > 0) {
--this.destroyBlocksTick;
@@ -157,10 +157,10 @@ index b395d5c85f26ca4252d3f8f886b2ee5a7892af5f..17432b434c899a4d075e4619b4a2bfe3
j = Mth.floor(this.getX());
int i1 = Mth.floor(this.getZ());
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 1985461125defcc2ce40c44408f223ab479e0525..58b3163898cf75c5e8bff020e65e8abe4af92000 100644
+index aecccc96a1ea7fbd774a4ccbd45c11be1da1b43b..580e7c149e24f0bcbb8c21284869f78e485d091d 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
-@@ -543,7 +543,15 @@ public class EnderMan extends Monster implements NeutralMob {
+@@ -549,7 +549,15 @@ public class EnderMan extends Monster implements NeutralMob {
@Override
public boolean canUse() {
if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur
@@ -177,7 +177,7 @@ index 1985461125defcc2ce40c44408f223ab479e0525..58b3163898cf75c5e8bff020e65e8abe
}
@Override
-@@ -589,7 +597,15 @@ public class EnderMan extends Monster implements NeutralMob {
+@@ -595,7 +603,15 @@ public class EnderMan extends Monster implements NeutralMob {
@Override
public boolean canUse() {
if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur
@@ -243,10 +243,10 @@ index 1738f0a251e4cab2eb3f122e83366afb02201765..49a37d294bac8205ac0a795daa300ccc
BlockPos blockposition = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5D, this.mob.getZ()).relative(this.selectedDirection);
BlockState iblockdata = this.mob.level().getBlockState(blockposition);
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 7507b22e4ec079f359974d7e05eff3b29e59c8e6..f7ea134aa7ea4d783e3bbe53eefd04d62d7e732a 100644
+index d9b1bde3ce458b7e50f7645d07ee578d13006a0a..d133820c47ecda733aa8242acdb2cd3ba0f0b677 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
-@@ -423,7 +423,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
+@@ -424,7 +424,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
@Override
public boolean wantsToPickUp(ItemStack stack) {
@@ -284,10 +284,10 @@ index 251e6bc87eb02ec4372062ef22b21249ac5164ff..6b60597a0e837054b0d1891c1e6e5e7c
// CraftBukkit start - fire ExplosionPrimeEvent
ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity());
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 a90317100d32974e481e14476843f66997a2cf3a..6b9236704d063b09b7948f378670e35b4ab98ffb 100644
+index cd0629581bae5f805842157af36c2d838e01bee3..b0a559dfefac693bda8692a30fbaa5ac8062ef27 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
-@@ -296,6 +296,6 @@ public abstract class Projectile extends Entity implements TraceableEntity {
+@@ -326,6 +326,6 @@ public abstract class Projectile extends Entity implements TraceableEntity {
public boolean mayInteract(Level world, BlockPos pos) {
Entity entity = this.getOwner();
diff --git a/patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch
similarity index 100%
rename from patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch
rename to patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch
diff --git a/patches/server/0122-Add-EntityTeleportHinderedEvent.patch b/patches/server/0124-Add-EntityTeleportHinderedEvent.patch
similarity index 98%
rename from patches/server/0122-Add-EntityTeleportHinderedEvent.patch
rename to patches/server/0124-Add-EntityTeleportHinderedEvent.patch
index 861ad12d4..df0ec7cfa 100644
--- a/patches/server/0122-Add-EntityTeleportHinderedEvent.patch
+++ b/patches/server/0124-Add-EntityTeleportHinderedEvent.patch
@@ -74,7 +74,7 @@ index 9717b37aef9f487502e696c209ae209ab3b8f000..7291e4056b8e46ab59b71818388ac55f
blockEntity.teleportCooldown = 100;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
-index 083bc0c2cdab2d1d54e66bb41f12f92fbc176d19..2ed4e15e6fcd0d00556f772f6fa48e5817a2de2d 100644
+index 6092004f91e1a4a143df1a82bcad9c16760f5096..d1a550aa5905d26e5b0f534338b3f30f1f2db67c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -600,6 +600,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -89,7 +89,7 @@ index 083bc0c2cdab2d1d54e66bb41f12f92fbc176d19..2ed4e15e6fcd0d00556f772f6fa48e58
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index b2fa6e8316a13a27a01a42bb8943472ca12d9249..a0523c36af5a2e33f8f46663794a8df68409f80f 100644
+index 12012dd42a9c1faffcad55c9786a9f99e426600a..4895293d3dfd294d278c79932d354bf9fe780361 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1357,6 +1357,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
diff --git a/patches/server/0123-Farmland-trampling-changes.patch b/patches/server/0125-Farmland-trampling-changes.patch
similarity index 100%
rename from patches/server/0123-Farmland-trampling-changes.patch
rename to patches/server/0125-Farmland-trampling-changes.patch
diff --git a/patches/server/0124-Movement-options-for-armor-stands.patch b/patches/server/0126-Movement-options-for-armor-stands.patch
similarity index 94%
rename from patches/server/0124-Movement-options-for-armor-stands.patch
rename to patches/server/0126-Movement-options-for-armor-stands.patch
index 6cc1d9d91..307a2e99a 100644
--- a/patches/server/0124-Movement-options-for-armor-stands.patch
+++ b/patches/server/0126-Movement-options-for-armor-stands.patch
@@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 7a7f6368eae5cdad69d2ad4e2b8bcc547fb3853c..98aabe27bdac88cd7a533e0bb4dcf3f70d49e738 100644
+index f2b06c4930c39a3e47f0ea35dfa5997f21654674..b7a619f93c7d48633dffea58204e135547778ab3 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -1825,7 +1825,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -1837,7 +1837,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
return this.isInWater() || flag;
}
@@ -30,7 +30,7 @@ index 7a7f6368eae5cdad69d2ad4e2b8bcc547fb3853c..98aabe27bdac88cd7a533e0bb4dcf3f7
if (entity instanceof Boat) {
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
-index 111b8ffab08b7a3b20cee2533586c19cf89518d7..5a50423c64e2b9d0a213e769dafd8930cfacbf66 100644
+index a164e13ddfe64b212fc5937b455096287d3151d8..ba2fe129aaf25c54b624f282f8994c6a884abad8 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -99,10 +99,12 @@ public class ArmorStand extends LivingEntity {
diff --git a/patches/server/0125-Fix-stuck-in-portals.patch b/patches/server/0127-Fix-stuck-in-portals.patch
similarity index 93%
rename from patches/server/0125-Fix-stuck-in-portals.patch
rename to patches/server/0127-Fix-stuck-in-portals.patch
index 618f5abe5..e618f4796 100644
--- a/patches/server/0125-Fix-stuck-in-portals.patch
+++ b/patches/server/0127-Fix-stuck-in-portals.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Fix stuck in portals
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 9d6733c426c823cfac4da542fd83c5e6832312e1..e009832899cc8e765342fee8718f30562edfcca6 100644
+index baf508a942b02d94dfe2c1fffc3cde930a492367..4c68d45f481d97d9fba7ac2eee44ca9c9261591e 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1268,6 +1268,7 @@ public class ServerPlayer extends Player {
@@ -17,10 +17,10 @@ index 9d6733c426c823cfac4da542fd83c5e6832312e1..e009832899cc8e765342fee8718f3056
// CraftBukkit end
this.setServerLevel(worldserver);
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 98aabe27bdac88cd7a533e0bb4dcf3f70d49e738..f30846c16cad822a08093572dc429b13d32b9e41 100644
+index b7a619f93c7d48633dffea58204e135547778ab3..c5b89e797f614bf388c7ec2ae3e6751180425ba2 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -3072,12 +3072,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -3084,12 +3084,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
return Vec3.directionFromRotation(this.getRotationVector());
}
diff --git a/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch
similarity index 99%
rename from patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch
rename to patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch
index 7b7e394d8..e4cb0c56d 100644
--- a/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch
+++ b/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch
@@ -21,7 +21,7 @@ index 19f95ddb2fa9dd264947a8b0033dd7437ee66c7f..d04e48d6a0a6dc7825a3e3d4cf854e29
protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK;
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 41ac8d2cb5424aecb58158122009b5dca9b51b55..91c7295b75cee5b9fc18434b94a67cb8db0151e3 100644
+index c283900e6c43fda62428a6e6d8b70e512458e779..c3d1d77a5703db4e1e3eb38fdd0b8903f691bf25 100644
--- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java
+++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
@@ -276,6 +276,11 @@ public class Bat extends AmbientCreature {
@@ -37,7 +37,7 @@ index 41ac8d2cb5424aecb58158122009b5dca9b51b55..91c7295b75cee5b9fc18434b94a67cb8
public void readAdditionalSaveData(CompoundTag nbt) {
super.readAdditionalSaveData(nbt);
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
-index fd917f72b4b4d4af1ae36feab38deac2657c95d4..bfafbc90c710514e1a5699f76381f593c8790c3b 100644
+index cd53ac9806f80409082f394e978295fd414d745d..baeea251e8f6a23bbd41987fffeb60bac157c363 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -180,7 +180,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -411,7 +411,7 @@ index bbecb3894d0f4a24442e8833f4d828e6173287da..f79dff635b09300f8d2cff0562f71587
protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
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 9faac858cc33895e6e7458b0deb72f225b158246..3ada2ed68d66253d38641fd23b455484bae02684 100644
+index c217a4b78eb53af8b8c011bfabbbddcc31c88df4..8aae4bda1c39853c972bf17cd2ed5b940ef7ba27 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
@@ -125,6 +125,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder getModelRotationValues() {
return this.modelRotationValues;
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 09489e5e736eb296d0361fd4ea4530e4869864b3..bcba99876662e2e96a107d84da02c2366ed338e2 100644
+index 93295d9683293121f2267350194f18e97b2421c2..26062173d137e26abdc452f7b2e0be0ee6dddfa3 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
@@ -114,6 +114,11 @@ public class Goat extends Animal {
@@ -571,7 +571,7 @@ index 0d16d486c7efc9a8c4c0db648175cacee5aa3a04..1588c4ec1ff1d9f1eca8b6c7971a2cdd
return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0D);
}
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 17432b434c899a4d075e4619b4a2bfe3d5761b49..6056180cf792534b450cb00977b5f7bc011d0ae4 100644
+index 97be7061d3cccac7b64f4b1a234ccbd83e2b7407..76f88b96e4965e61a620d8e8809411a0711bf02e 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
@@ -117,6 +117,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -673,7 +673,7 @@ index 971210c1199ec48f28446e75d8d796a1f3f9a734..cd1f830bf28b1c68e2b9cc7daa77f696
return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D);
}
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 58b3163898cf75c5e8bff020e65e8abe4af92000..5678d1026053e12c332b27a95c83d5de01116922 100644
+index 580e7c149e24f0bcbb8c21284869f78e485d091d..4fe5b9babd51a2123a76384c2fd9ec0147cac785 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -95,7 +95,7 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -1069,7 +1069,7 @@ index 1d862dd019b2d024f61cfc8956430d18d94b1ebf..8cd6012b00dd5b307fd76ef0fd9c2cd9
protected Brain.Provider brainProvider() {
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
-index d9caaa16e4d62bdfbc3106a63c1b4bef06727bad..cb4a50f0259465eff425aac468cb409976b4de13 100644
+index 46fec497e411e3160d9ae9553ae52654d10a9dd3..63c0f86469182de482b04a27741e4b6fe29f0e79 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -141,6 +141,11 @@ public class Zombie extends Monster {
@@ -1117,7 +1117,7 @@ index b2d77117309e81db60e7e50911247793fa829755..3574a1e641d8af34a0ff7ea8dcfb0864
public boolean jockeyOnlyBaby() {
return level().purpurConfig.zombifiedPiglinJockeyOnlyBaby;
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 2c3a5b36e8fa1b5cfd5774296d5a9ca0c69b4db7..e60b3ccc703c36ab37e084c21811d43717aaa226 100644
+index 80f91a11c04763c1c9ed2bd242b88b5a473560d7..d0144c99cf5c755c81fc0f9457b462c98ff3e804 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
@@ -96,6 +96,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
@@ -1133,7 +1133,7 @@ index 2c3a5b36e8fa1b5cfd5774296d5a9ca0c69b4db7..e60b3ccc703c36ab37e084c21811d437
public boolean canBeLeashed(Player player) {
return !this.isLeashed();
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 f7ea134aa7ea4d783e3bbe53eefd04d62d7e732a..022e58de15a359eb8e91d1d6007b19251b7e1a63 100644
+index d133820c47ecda733aa8242acdb2cd3ba0f0b677..e506dcf390ecb5cce8ae6993df7ec91b3ebc125e 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
@@ -118,6 +118,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
@@ -1165,10 +1165,10 @@ index 04e54c241078e6cd6419a21ba1bf913fd3b413d1..b63d87df0f48dd63c89118f91b31dc4e
return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D);
}
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 b2d3fbe3574069691e6ee3718a095163bac9fc5f..a41dc80579375eb3fd8be9b2169c4affd134f6fa 100644
+index 7fcf3cf145828b610dec15dcc2cf469a48de9317..2215bd386a617996095f24192f05825d0201b2ec 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-@@ -188,6 +188,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -190,6 +190,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
return level().purpurConfig.villagerCanBeLeashed && !this.isLeashed();
}
diff --git a/patches/server/0127-Config-to-always-tame-in-Creative.patch b/patches/server/0129-Config-to-always-tame-in-Creative.patch
similarity index 100%
rename from patches/server/0127-Config-to-always-tame-in-Creative.patch
rename to patches/server/0129-Config-to-always-tame-in-Creative.patch
diff --git a/patches/server/0128-End-crystal-explosion-options.patch b/patches/server/0130-End-crystal-explosion-options.patch
similarity index 100%
rename from patches/server/0128-End-crystal-explosion-options.patch
rename to patches/server/0130-End-crystal-explosion-options.patch
diff --git a/patches/server/0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch
similarity index 96%
rename from patches/server/0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch
rename to patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch
index 6e6f354b3..f9596e176 100644
--- a/patches/server/0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch
+++ b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch
@@ -17,10 +17,10 @@ index 1588c4ec1ff1d9f1eca8b6c7971a2cdd1f98efb3..82d81fd2edff9df0bb4ff116d9274887
}
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 6056180cf792534b450cb00977b5f7bc011d0ae4..257cd3ea1830b46d1c51242cd639c4f0e21c8774 100644
+index 76f88b96e4965e61a620d8e8809411a0711bf02e..8d882e6ef4e199258866f30f5548a6feae4582da 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
-@@ -731,6 +731,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
+@@ -738,6 +738,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@Override
protected boolean canRide(Entity entity) {
diff --git a/patches/server/0130-Dont-run-with-scissors.patch b/patches/server/0132-Dont-run-with-scissors.patch
similarity index 97%
rename from patches/server/0130-Dont-run-with-scissors.patch
rename to patches/server/0132-Dont-run-with-scissors.patch
index e58271ca6..d8ca75471 100644
--- a/patches/server/0130-Dont-run-with-scissors.patch
+++ b/patches/server/0132-Dont-run-with-scissors.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Dont run with scissors!
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 4b48e20b88724ef7253c11ffd0f5787d40b37217..fe4f8517f1d3614568be697720908609776f353e 100644
+index 65c9e83063c84ccff38d52049160bb093a7a50e7..90561a2fb7c353bedb62b200689d8c73b3534033 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1609,6 +1609,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -1610,6 +1610,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.player.resetFallDistance();
}
@@ -22,7 +22,7 @@ index 4b48e20b88724ef7253c11ffd0f5787d40b37217..fe4f8517f1d3614568be697720908609
this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5);
this.lastGoodX = this.player.getX();
this.lastGoodY = this.player.getY();
-@@ -1660,6 +1667,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -1661,6 +1668,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
return false;
}
// Paper end - optimise out extra getCubes
diff --git a/patches/server/0131-One-Punch-Man.patch b/patches/server/0133-One-Punch-Man.patch
similarity index 94%
rename from patches/server/0131-One-Punch-Man.patch
rename to patches/server/0133-One-Punch-Man.patch
index 199bee04b..673ac8f5e 100644
--- a/patches/server/0131-One-Punch-Man.patch
+++ b/patches/server/0133-One-Punch-Man.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] One Punch Man!
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 73f3853b4e554fc75b9f49f11df1060bd6340261..4af38169c6b541cb5087542f0c49420db5c9a7b9 100644
+index 82a8b3d6392fffae9ad3440045129c77119e3e84..b13757a20b04634c26d741e27df75be28089dc37 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -2305,6 +2305,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -2331,6 +2331,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
}
diff --git a/patches/server/0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch
similarity index 100%
rename from patches/server/0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch
rename to patches/server/0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch
diff --git a/patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch
similarity index 96%
rename from patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch
rename to patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch
index 5f5fb1a03..fad795247 100644
--- a/patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch
+++ b/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index e009832899cc8e765342fee8718f30562edfcca6..d7550ce8236b87f89d8d479ced0fc1550179230a 100644
+index 4c68d45f481d97d9fba7ac2eee44ca9c9261591e..b5de1fc5d352de4ba978cb718e57a913431a7c9a 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1425,7 +1425,7 @@ public class ServerPlayer extends Player {
diff --git a/patches/server/0134-Add-back-player-spawned-endermite-API.patch b/patches/server/0136-Add-back-player-spawned-endermite-API.patch
similarity index 100%
rename from patches/server/0134-Add-back-player-spawned-endermite-API.patch
rename to patches/server/0136-Add-back-player-spawned-endermite-API.patch
diff --git a/patches/server/0135-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch
similarity index 97%
rename from patches/server/0135-Config-Enderman-aggressiveness-towards-Endermites.patch
rename to patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch
index 24b6d5874..52cc9b418 100644
--- a/patches/server/0135-Config-Enderman-aggressiveness-towards-Endermites.patch
+++ b/patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Config Enderman aggressiveness towards Endermites
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 5678d1026053e12c332b27a95c83d5de01116922..442355953084513b148083d80783ee3bc815dee9 100644
+index 4fe5b9babd51a2123a76384c2fd9ec0147cac785..787d57f18568b8c2fd4694fc29492345dbe43564 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -134,7 +134,7 @@ public class EnderMan extends Monster implements NeutralMob {
diff --git a/patches/server/0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch
similarity index 96%
rename from patches/server/0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch
rename to patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch
index 9b971c22e..f252c2fbb 100644
--- a/patches/server/0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch
+++ b/patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch
@@ -7,7 +7,7 @@ Prevents Enderman from becoming aggresive towards players that are wearing a Dra
Adds functionality to a useless item!
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 442355953084513b148083d80783ee3bc815dee9..a1c0109ee60de59674f0014557ae401b7d5f479d 100644
+index 787d57f18568b8c2fd4694fc29492345dbe43564..db05006ca159a91165a7392cb57d0905e3732fe1 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -271,7 +271,7 @@ public class EnderMan extends Monster implements NeutralMob {
diff --git a/patches/server/0137-Tick-fluids-config.patch b/patches/server/0139-Tick-fluids-config.patch
similarity index 100%
rename from patches/server/0137-Tick-fluids-config.patch
rename to patches/server/0139-Tick-fluids-config.patch
diff --git a/patches/server/0138-Config-to-disable-Llama-caravans.patch b/patches/server/0140-Config-to-disable-Llama-caravans.patch
similarity index 100%
rename from patches/server/0138-Config-to-disable-Llama-caravans.patch
rename to patches/server/0140-Config-to-disable-Llama-caravans.patch
diff --git a/patches/server/0139-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0141-Config-to-make-Creepers-explode-on-death.patch
similarity index 100%
rename from patches/server/0139-Config-to-make-Creepers-explode-on-death.patch
rename to patches/server/0141-Config-to-make-Creepers-explode-on-death.patch
diff --git a/patches/server/0140-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0142-Configurable-ravager-griefable-blocks-list.patch
similarity index 100%
rename from patches/server/0140-Configurable-ravager-griefable-blocks-list.patch
rename to patches/server/0142-Configurable-ravager-griefable-blocks-list.patch
diff --git a/patches/server/0141-Sneak-to-bulk-process-composter.patch b/patches/server/0143-Sneak-to-bulk-process-composter.patch
similarity index 100%
rename from patches/server/0141-Sneak-to-bulk-process-composter.patch
rename to patches/server/0143-Sneak-to-bulk-process-composter.patch
diff --git a/patches/server/0142-Config-for-skipping-night.patch b/patches/server/0144-Config-for-skipping-night.patch
similarity index 96%
rename from patches/server/0142-Config-for-skipping-night.patch
rename to patches/server/0144-Config-for-skipping-night.patch
index 12c528bd7..7e23cf748 100644
--- a/patches/server/0142-Config-for-skipping-night.patch
+++ b/patches/server/0144-Config-for-skipping-night.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Config for skipping night
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 3c50b83608d5f714b97aa7e7ca5f893c7d13053c..cf14ddbe97dd16972dc2830a722f7ac23b1badd0 100644
+index 0535faa8d95e75e3848ece4d756428a50b6c19f3..02bd86d25223e0c53d0515f91d0b7677011e9f24 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -833,7 +833,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
diff --git a/patches/server/0143-Add-config-for-villager-trading.patch b/patches/server/0145-Add-config-for-villager-trading.patch
similarity index 96%
rename from patches/server/0143-Add-config-for-villager-trading.patch
rename to patches/server/0145-Add-config-for-villager-trading.patch
index 719d18f7f..2edc663a1 100644
--- a/patches/server/0143-Add-config-for-villager-trading.patch
+++ b/patches/server/0145-Add-config-for-villager-trading.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add config for villager trading
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 a41dc80579375eb3fd8be9b2169c4affd134f6fa..d24f970c50c1a4937b66e7eb6e3edc1d3b61a07e 100644
+index 2215bd386a617996095f24192f05825d0201b2ec..c7047bacce4851956e3732f0a73be423cc46ee54 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-@@ -366,7 +366,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -372,7 +372,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
return tryRide(player, hand, InteractionResult.sidedSuccess(this.level().isClientSide)); // Purpur
} else {
if (level().purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur
diff --git a/patches/server/0144-Allow-infinity-on-crossbows.patch b/patches/server/0146-Allow-infinity-on-crossbows.patch
similarity index 100%
rename from patches/server/0144-Allow-infinity-on-crossbows.patch
rename to patches/server/0146-Allow-infinity-on-crossbows.patch
diff --git a/patches/server/0145-Drowning-Settings.patch b/patches/server/0147-Drowning-Settings.patch
similarity index 89%
rename from patches/server/0145-Drowning-Settings.patch
rename to patches/server/0147-Drowning-Settings.patch
index 99d3e7041..97f2a4fb9 100644
--- a/patches/server/0145-Drowning-Settings.patch
+++ b/patches/server/0147-Drowning-Settings.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index f30846c16cad822a08093572dc429b13d32b9e41..dcfa461492623e70b65dfb090c8a078fe88613cd 100644
+index c5b89e797f614bf388c7ec2ae3e6751180425ba2..9204b119a038868e63a345f2a8cd175cba96b090 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -3321,7 +3321,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -3333,7 +3333,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
public int getMaxAirSupply() {
@@ -18,10 +18,10 @@ index f30846c16cad822a08093572dc429b13d32b9e41..dcfa461492623e70b65dfb090c8a078f
public int getAirSupply() {
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 4af38169c6b541cb5087542f0c49420db5c9a7b9..b6a17432cf41a686df2449dc260fdc3941698c9b 100644
+index b13757a20b04634c26d741e27df75be28089dc37..6f6f6610c27c738db440d7be747f0be2296f2815 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -440,7 +440,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -439,7 +439,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (flag1) {
this.setAirSupply(this.decreaseAirSupply(this.getAirSupply()));
@@ -30,7 +30,7 @@ index 4af38169c6b541cb5087542f0c49420db5c9a7b9..b6a17432cf41a686df2449dc260fdc39
this.setAirSupply(0);
Vec3 vec3d = this.getDeltaMovement();
-@@ -452,7 +452,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -451,7 +451,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.level().addParticle(ParticleTypes.BUBBLE, this.getX() + d2, this.getY() + d3, this.getZ() + d4, vec3d.x, vec3d.y, vec3d.z);
}
diff --git a/patches/server/0146-Break-individual-slabs-when-sneaking.patch b/patches/server/0148-Break-individual-slabs-when-sneaking.patch
similarity index 100%
rename from patches/server/0146-Break-individual-slabs-when-sneaking.patch
rename to patches/server/0148-Break-individual-slabs-when-sneaking.patch
diff --git a/patches/server/0147-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0149-Config-to-disable-hostile-mob-spawn-on-ice.patch
similarity index 96%
rename from patches/server/0147-Config-to-disable-hostile-mob-spawn-on-ice.patch
rename to patches/server/0149-Config-to-disable-hostile-mob-spawn-on-ice.patch
index 1932da59f..5ca467a70 100644
--- a/patches/server/0147-Config-to-disable-hostile-mob-spawn-on-ice.patch
+++ b/patches/server/0149-Config-to-disable-hostile-mob-spawn-on-ice.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Config to disable hostile mob spawn on ice
diff --git a/src/main/java/net/minecraft/world/entity/monster/Monster.java b/src/main/java/net/minecraft/world/entity/monster/Monster.java
-index 55c245d0dfa369dc6de2197ae37335fba4fae4ae..c9b40515f4c2ff1eedfc9510930c3baebc078ebd 100644
+index e4218acaaf7d3aef0fb31f5597fb1af32aa2c8b5..01977550309451cda795583ba4122143b140b9b7 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Monster.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Monster.java
@@ -89,6 +89,14 @@ public abstract class Monster extends PathfinderMob implements Enemy {
diff --git a/patches/server/0148-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0150-Config-to-show-Armor-Stand-arms-on-spawn.patch
similarity index 96%
rename from patches/server/0148-Config-to-show-Armor-Stand-arms-on-spawn.patch
rename to patches/server/0150-Config-to-show-Armor-Stand-arms-on-spawn.patch
index e62cc7d6f..2f0e537c3 100644
--- a/patches/server/0148-Config-to-show-Armor-Stand-arms-on-spawn.patch
+++ b/patches/server/0150-Config-to-show-Armor-Stand-arms-on-spawn.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Config to show Armor Stand arms on spawn
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
-index 5a50423c64e2b9d0a213e769dafd8930cfacbf66..b735c8029685bc4cca5998b36b52249dc51df1a2 100644
+index ba2fe129aaf25c54b624f282f8994c6a884abad8..2f64267d780fdbba1248398094bed39ed619740c 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -114,6 +114,7 @@ public class ArmorStand extends LivingEntity {
diff --git a/patches/server/0149-Option-to-make-doors-require-redstone.patch b/patches/server/0151-Option-to-make-doors-require-redstone.patch
similarity index 100%
rename from patches/server/0149-Option-to-make-doors-require-redstone.patch
rename to patches/server/0151-Option-to-make-doors-require-redstone.patch
diff --git a/patches/server/0150-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch
similarity index 98%
rename from patches/server/0150-Config-to-allow-for-unsafe-enchants.patch
rename to patches/server/0152-Config-to-allow-for-unsafe-enchants.patch
index bac4921d4..eccba460e 100644
--- a/patches/server/0150-Config-to-allow-for-unsafe-enchants.patch
+++ b/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch
@@ -74,7 +74,7 @@ index 8a7c30e316db4960b0b62ca0e366c19febead214..fdf2bf10a533c3d4ee145880e6949dad
((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get()));
}
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index c9d1e2af3afd7a9320b589ede8ff29ffbaf9297d..5f80eceb805c22c58ce19ab371abfd90feada854 100644
+index 6e6f60554b36117a833949ef2f9a4b68f6518a1d..048151dd863692b41721c063d9a287f11cb2a0df 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -1213,6 +1213,12 @@ public final class ItemStack {
diff --git a/patches/server/0151-Configurable-sponge-absorption.patch b/patches/server/0153-Configurable-sponge-absorption.patch
similarity index 100%
rename from patches/server/0151-Configurable-sponge-absorption.patch
rename to patches/server/0153-Configurable-sponge-absorption.patch
diff --git a/patches/server/0152-Projectile-offset-config.patch b/patches/server/0154-Projectile-offset-config.patch
similarity index 100%
rename from patches/server/0152-Projectile-offset-config.patch
rename to patches/server/0154-Projectile-offset-config.patch
diff --git a/patches/server/0153-Config-for-powered-rail-activation-distance.patch b/patches/server/0155-Config-for-powered-rail-activation-distance.patch
similarity index 100%
rename from patches/server/0153-Config-for-powered-rail-activation-distance.patch
rename to patches/server/0155-Config-for-powered-rail-activation-distance.patch
diff --git a/patches/server/0154-Piglin-portal-spawn-modifier.patch b/patches/server/0156-Piglin-portal-spawn-modifier.patch
similarity index 100%
rename from patches/server/0154-Piglin-portal-spawn-modifier.patch
rename to patches/server/0156-Piglin-portal-spawn-modifier.patch
diff --git a/patches/server/0155-Config-to-change-max-number-of-bees.patch b/patches/server/0157-Config-to-change-max-number-of-bees.patch
similarity index 100%
rename from patches/server/0155-Config-to-change-max-number-of-bees.patch
rename to patches/server/0157-Config-to-change-max-number-of-bees.patch
diff --git a/patches/server/0156-Config-for-wither-explosion-radius.patch b/patches/server/0158-Config-for-wither-explosion-radius.patch
similarity index 100%
rename from patches/server/0156-Config-for-wither-explosion-radius.patch
rename to patches/server/0158-Config-for-wither-explosion-radius.patch
diff --git a/patches/server/0157-Gamemode-extra-permissions.patch b/patches/server/0159-Gamemode-extra-permissions.patch
similarity index 98%
rename from patches/server/0157-Gamemode-extra-permissions.patch
rename to patches/server/0159-Gamemode-extra-permissions.patch
index ac3c741ba..8ae9938b5 100644
--- a/patches/server/0157-Gamemode-extra-permissions.patch
+++ b/patches/server/0159-Gamemode-extra-permissions.patch
@@ -52,7 +52,7 @@ index 5cb15e2209d7b315904a1fc6d650ce1e75584271..7e21db60f3ace2a19686d6ea04b994ec
for(ServerPlayer serverPlayer : targets) {
diff --git a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java b/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java
-index 2959f713ce75a1df9c6c7cf5e021690cfcb6e1e7..3fa9539cfb2c35beeba6d44fa05cee971444b7d0 100644
+index 74ffea16027ba8eaa26716c3b6b78a8e83c9ed79..30567935db66eaa23614ad143cd8a45c596cae26 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java
@@ -23,7 +23,15 @@ public final class CommandPermissions {
diff --git a/patches/server/0158-Configurable-piston-push-limit.patch b/patches/server/0160-Configurable-piston-push-limit.patch
similarity index 100%
rename from patches/server/0158-Configurable-piston-push-limit.patch
rename to patches/server/0160-Configurable-piston-push-limit.patch
diff --git a/patches/server/0159-Configurable-broadcast-settings.patch b/patches/server/0161-Configurable-broadcast-settings.patch
similarity index 97%
rename from patches/server/0159-Configurable-broadcast-settings.patch
rename to patches/server/0161-Configurable-broadcast-settings.patch
index b5ab09c12..3e505c718 100644
--- a/patches/server/0159-Configurable-broadcast-settings.patch
+++ b/patches/server/0161-Configurable-broadcast-settings.patch
@@ -17,7 +17,7 @@ index 0b3a06027f2c600960cd88159803be187c4d0317..533a348acb53c8e7590f3d81c19e53a6
// 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 d7550ce8236b87f89d8d479ced0fc1550179230a..6fb889015ba1a1a7fa5ed54f8a202e2cc5e879a1 100644
+index b5de1fc5d352de4ba978cb718e57a913431a7c9a..04394c0b122d646ce35c259de41f97e93461955f 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1006,6 +1006,7 @@ public class ServerPlayer extends Player {
diff --git a/patches/server/0160-Configurable-mob-blindness.patch b/patches/server/0162-Configurable-mob-blindness.patch
similarity index 95%
rename from patches/server/0160-Configurable-mob-blindness.patch
rename to patches/server/0162-Configurable-mob-blindness.patch
index 7facd6c75..3ad49a35b 100644
--- a/patches/server/0160-Configurable-mob-blindness.patch
+++ b/patches/server/0162-Configurable-mob-blindness.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Configurable mob blindness
Ported from https://github.com/raltsmc/mobblindness
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index b6a17432cf41a686df2449dc260fdc3941698c9b..2e89a05402dd895eee4a27a345318baeabbd1f96 100644
+index 6f6f6610c27c738db440d7be747f0be2296f2815..f7bd53e548ea2f57f697b143b58b6d2e21371366 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -1037,6 +1037,17 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1036,6 +1036,17 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (entitytypes == EntityType.SKELETON && itemstack.is(Items.SKELETON_SKULL) || entitytypes == EntityType.ZOMBIE && itemstack.is(Items.ZOMBIE_HEAD) || entitytypes == EntityType.PIGLIN && itemstack.is(Items.PIGLIN_HEAD) || entitytypes == EntityType.PIGLIN_BRUTE && itemstack.is(Items.PIGLIN_HEAD) || entitytypes == EntityType.CREEPER && itemstack.is(Items.CREEPER_HEAD)) {
d0 *= 0.5D;
}
diff --git a/patches/server/0161-Hide-hidden-players-from-entity-selector.patch b/patches/server/0163-Hide-hidden-players-from-entity-selector.patch
similarity index 100%
rename from patches/server/0161-Hide-hidden-players-from-entity-selector.patch
rename to patches/server/0163-Hide-hidden-players-from-entity-selector.patch
diff --git a/patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch
similarity index 100%
rename from patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch
rename to patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch
diff --git a/patches/server/0163-Iron-golem-calm-anger-options.patch b/patches/server/0165-Iron-golem-calm-anger-options.patch
similarity index 100%
rename from patches/server/0163-Iron-golem-calm-anger-options.patch
rename to patches/server/0165-Iron-golem-calm-anger-options.patch
diff --git a/patches/server/0164-Breedable-parrots.patch b/patches/server/0166-Breedable-parrots.patch
similarity index 100%
rename from patches/server/0164-Breedable-parrots.patch
rename to patches/server/0166-Breedable-parrots.patch
diff --git a/patches/server/0165-Configurable-powered-rail-boost-modifier.patch b/patches/server/0167-Configurable-powered-rail-boost-modifier.patch
similarity index 100%
rename from patches/server/0165-Configurable-powered-rail-boost-modifier.patch
rename to patches/server/0167-Configurable-powered-rail-boost-modifier.patch
diff --git a/patches/server/0166-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0168-Add-config-change-multiplier-critical-damage-value.patch
similarity index 100%
rename from patches/server/0166-Add-config-change-multiplier-critical-damage-value.patch
rename to patches/server/0168-Add-config-change-multiplier-critical-damage-value.patch
diff --git a/patches/server/0167-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0169-Option-to-disable-dragon-egg-teleporting.patch
similarity index 100%
rename from patches/server/0167-Option-to-disable-dragon-egg-teleporting.patch
rename to patches/server/0169-Option-to-disable-dragon-egg-teleporting.patch
diff --git a/patches/server/0168-Config-for-unverified-username-message.patch b/patches/server/0170-Config-for-unverified-username-message.patch
similarity index 100%
rename from patches/server/0168-Config-for-unverified-username-message.patch
rename to patches/server/0170-Config-for-unverified-username-message.patch
diff --git a/patches/server/0169-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0171-Make-anvil-cumulative-cost-configurable.patch
similarity index 100%
rename from patches/server/0169-Make-anvil-cumulative-cost-configurable.patch
rename to patches/server/0171-Make-anvil-cumulative-cost-configurable.patch
diff --git a/patches/server/0170-ShulkerBox-allow-oversized-stacks.patch b/patches/server/0172-ShulkerBox-allow-oversized-stacks.patch
similarity index 100%
rename from patches/server/0170-ShulkerBox-allow-oversized-stacks.patch
rename to patches/server/0172-ShulkerBox-allow-oversized-stacks.patch
diff --git a/patches/server/0171-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0173-Bee-can-work-when-raining-or-at-night.patch
similarity index 97%
rename from patches/server/0171-Bee-can-work-when-raining-or-at-night.patch
rename to patches/server/0173-Bee-can-work-when-raining-or-at-night.patch
index e4d7fe2bf..51a004388 100644
--- a/patches/server/0171-Bee-can-work-when-raining-or-at-night.patch
+++ b/patches/server/0173-Bee-can-work-when-raining-or-at-night.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Bee can work when raining or at night
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
-index bfafbc90c710514e1a5699f76381f593c8790c3b..0ee62562d36292d48226a3b20ac54aafe6d12394 100644
+index baeea251e8f6a23bbd41987fffeb60bac157c363..d969a4bb3522faa5f88cae92fcd0bad375b7b0f2 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -399,7 +399,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
diff --git a/patches/server/0172-API-for-any-mob-to-burn-daylight.patch b/patches/server/0174-API-for-any-mob-to-burn-daylight.patch
similarity index 96%
rename from patches/server/0172-API-for-any-mob-to-burn-daylight.patch
rename to patches/server/0174-API-for-any-mob-to-burn-daylight.patch
index a75cc4a8a..a37713e97 100644
--- a/patches/server/0172-API-for-any-mob-to-burn-daylight.patch
+++ b/patches/server/0174-API-for-any-mob-to-burn-daylight.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight
Co-authored by: Encode42
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index dcfa461492623e70b65dfb090c8a078fe88613cd..70625c6337d3a68c27c046115186fbf76196588d 100644
+index 9204b119a038868e63a345f2a8cd175cba96b090..2570fb81e94f7169a54a8e0b2dce5a2c24fcd00e 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -490,6 +490,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -496,6 +496,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
return true;
}
@@ -32,10 +32,10 @@ index dcfa461492623e70b65dfb090c8a078fe88613cd..70625c6337d3a68c27c046115186fbf7
return this.hardCollides;
}
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index f2c3c587fdb7fbb42c91437226e6228df5a03c51..711fc212034601008449b9aa9fa83aee363ebe55 100644
+index f7bd53e548ea2f57f697b143b58b6d2e21371366..b4c00ea434f73ff59d6171fd010d4e76d6dc08dd 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -264,6 +264,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -263,6 +263,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
public org.bukkit.craftbukkit.entity.CraftLivingEntity getBukkitLivingEntity() { return (org.bukkit.craftbukkit.entity.CraftLivingEntity) super.getBukkitEntity(); } // Paper
public boolean silentDeath = false; // Paper - mark entity as dying silently for cancellable death event
public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper
@@ -43,7 +43,7 @@ index f2c3c587fdb7fbb42c91437226e6228df5a03c51..711fc212034601008449b9aa9fa83aee
@Override
public float getBukkitYaw() {
-@@ -805,6 +806,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -804,6 +805,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
dataresult.resultOrPartial(logger::error).ifPresent((nbtbase) -> {
nbt.put("Brain", nbtbase);
});
@@ -51,7 +51,7 @@ index f2c3c587fdb7fbb42c91437226e6228df5a03c51..711fc212034601008449b9aa9fa83aee
}
@Override
-@@ -889,6 +891,11 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -888,6 +890,11 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.brain = this.makeBrain(new Dynamic(NbtOps.INSTANCE, nbt.get("Brain")));
}
@@ -63,7 +63,7 @@ index f2c3c587fdb7fbb42c91437226e6228df5a03c51..711fc212034601008449b9aa9fa83aee
}
// CraftBukkit start
-@@ -3551,6 +3558,27 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3577,6 +3584,27 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.hurt(this.damageSources().drown(), 1.0F);
}
@@ -92,10 +92,10 @@ index f2c3c587fdb7fbb42c91437226e6228df5a03c51..711fc212034601008449b9aa9fa83aee
public boolean isSensitiveToWater() {
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index 6766e78c961d17a6f380f6814c9ddb120b374d5f..eafc2eb59616fa4a310a5eee0844a9957cd9f4de 100644
+index 4454241862598048abd4e8bf321f9a066be15067..547279a379190c2339d6335e00faf7730be6d0f0 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
-@@ -1749,17 +1749,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -1755,17 +1755,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
}
public boolean isSunBurnTick() {
diff --git a/patches/server/0173-Config-MobEffect-by-world.patch b/patches/server/0175-Config-MobEffect-by-world.patch
similarity index 100%
rename from patches/server/0173-Config-MobEffect-by-world.patch
rename to patches/server/0175-Config-MobEffect-by-world.patch
diff --git a/patches/server/0174-Beacon-Activation-Range-Configurable.patch b/patches/server/0176-Beacon-Activation-Range-Configurable.patch
similarity index 100%
rename from patches/server/0174-Beacon-Activation-Range-Configurable.patch
rename to patches/server/0176-Beacon-Activation-Range-Configurable.patch
diff --git a/patches/server/0175-Add-toggle-for-sand-duping-fix.patch b/patches/server/0177-Add-toggle-for-sand-duping-fix.patch
similarity index 95%
rename from patches/server/0175-Add-toggle-for-sand-duping-fix.patch
rename to patches/server/0177-Add-toggle-for-sand-duping-fix.patch
index ff6cbdf4c..915276d71 100644
--- a/patches/server/0175-Add-toggle-for-sand-duping-fix.patch
+++ b/patches/server/0177-Add-toggle-for-sand-duping-fix.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add toggle for sand duping fix
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
-index 9105418b29c89f092378da11b14e3d324332a2ba..cf99a4c45bd9cdd886bd7b220d8f95dd64d79227 100644
+index e6f75a9cac46c8e3ddba664a9d5b27b665a94cb4..958e7684440fcc209fe33e882bf259d92a6814b1 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -133,7 +133,7 @@ public class FallingBlockEntity extends Entity {
diff --git a/patches/server/0176-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0178-Add-toggle-for-end-portal-safe-teleporting.patch
similarity index 95%
rename from patches/server/0176-Add-toggle-for-end-portal-safe-teleporting.patch
rename to patches/server/0178-Add-toggle-for-end-portal-safe-teleporting.patch
index 682623398..b12418646 100644
--- a/patches/server/0176-Add-toggle-for-end-portal-safe-teleporting.patch
+++ b/patches/server/0178-Add-toggle-for-end-portal-safe-teleporting.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for end portal safe teleporting
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 70625c6337d3a68c27c046115186fbf76196588d..e78d85a313f585ec9c7fe9895402591b7b10d6b9 100644
+index 2570fb81e94f7169a54a8e0b2dce5a2c24fcd00e..12f0da455f174c5a0652ac87f62c159808fbf7d3 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -3146,7 +3146,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -3158,7 +3158,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
this.processPortalCooldown();
diff --git a/patches/server/0177-Make-lightning-rod-range-configurable.patch b/patches/server/0179-Make-lightning-rod-range-configurable.patch
similarity index 93%
rename from patches/server/0177-Make-lightning-rod-range-configurable.patch
rename to patches/server/0179-Make-lightning-rod-range-configurable.patch
index bfb3fdb42..cf76027bf 100644
--- a/patches/server/0177-Make-lightning-rod-range-configurable.patch
+++ b/patches/server/0179-Make-lightning-rod-range-configurable.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 891ce72b7596bb81bda982c5c48148c0b565bc95..9ae770ef03d31d1ffefd7181d9bbf2d861a7f2a0 100644
+index 02bd86d25223e0c53d0515f91d0b7677011e9f24..4edea5ea0964bc054b76b1c6635c5b719721e202 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -1154,7 +1154,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1170,7 +1170,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
return holder.is(PoiTypes.LIGHTNING_ROD);
}, (blockposition1) -> {
return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1;
diff --git a/patches/server/0178-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0180-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch
similarity index 100%
rename from patches/server/0178-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch
rename to patches/server/0180-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch
diff --git a/patches/server/0179-Allow-player-join-full-server-by-permission.patch b/patches/server/0181-Allow-player-join-full-server-by-permission.patch
similarity index 93%
rename from patches/server/0179-Allow-player-join-full-server-by-permission.patch
rename to patches/server/0181-Allow-player-join-full-server-by-permission.patch
index 99f55d8d6..551d1a790 100644
--- a/patches/server/0179-Allow-player-join-full-server-by-permission.patch
+++ b/patches/server/0181-Allow-player-join-full-server-by-permission.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Allow player join full server by permission
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index d711decc32169f662818d8db60d3dd8182efbc00..ad4f678de4aeeb7bb3d624f44dacc2c1d5200b1e 100644
+index 265889514d2959731440ec180f6e47b19bb83cfb..cf721106b861a8c166244efc2114e22d038aa3a7 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -736,7 +736,7 @@ public abstract class PlayerList {
diff --git a/patches/server/0180-Add-portal-waiting-option-permission-bypass.patch b/patches/server/0182-Add-portal-waiting-option-permission-bypass.patch
similarity index 100%
rename from patches/server/0180-Add-portal-waiting-option-permission-bypass.patch
rename to patches/server/0182-Add-portal-waiting-option-permission-bypass.patch
diff --git a/patches/server/0181-Shulker-spawn-from-bullet-options.patch b/patches/server/0183-Shulker-spawn-from-bullet-options.patch
similarity index 100%
rename from patches/server/0181-Shulker-spawn-from-bullet-options.patch
rename to patches/server/0183-Shulker-spawn-from-bullet-options.patch
diff --git a/patches/server/0182-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0184-Eating-glow-berries-adds-glow-effect.patch
similarity index 100%
rename from patches/server/0182-Eating-glow-berries-adds-glow-effect.patch
rename to patches/server/0184-Eating-glow-berries-adds-glow-effect.patch
diff --git a/patches/server/0183-Option-to-make-drowned-break-doors.patch b/patches/server/0185-Option-to-make-drowned-break-doors.patch
similarity index 100%
rename from patches/server/0183-Option-to-make-drowned-break-doors.patch
rename to patches/server/0185-Option-to-make-drowned-break-doors.patch
diff --git a/patches/server/0184-Configurable-hunger-starvation-damage.patch b/patches/server/0186-Configurable-hunger-starvation-damage.patch
similarity index 100%
rename from patches/server/0184-Configurable-hunger-starvation-damage.patch
rename to patches/server/0186-Configurable-hunger-starvation-damage.patch
diff --git a/patches/server/0185-Enhance-SysoutCatcher.patch b/patches/server/0187-Enhance-SysoutCatcher.patch
similarity index 100%
rename from patches/server/0185-Enhance-SysoutCatcher.patch
rename to patches/server/0187-Enhance-SysoutCatcher.patch
diff --git a/patches/server/0186-Add-uptime-command.patch b/patches/server/0188-Add-uptime-command.patch
similarity index 98%
rename from patches/server/0186-Add-uptime-command.patch
rename to patches/server/0188-Add-uptime-command.patch
index e1a5984bc..127da6da0 100644
--- a/patches/server/0186-Add-uptime-command.patch
+++ b/patches/server/0188-Add-uptime-command.patch
@@ -17,7 +17,7 @@ index e1887523b0b6a0479544385932f54ab1de0295ae..e254f7c498c5a1608afe130b2dd4d3d0
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 43bd000ff6e91e23198799f74fd0895f0a02fcc1..caaa154082fef69c6bf3ff6101242de5b037c583 100644
+index a3675f1ef2317c1a0e9addd9280fe928a45b2736..615de0c4baf7797d03c43e5e164b198ebb70b341 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -288,6 +288,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0.0F) {
this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F);
diff --git a/patches/server/0197-Add-Option-for-disable-observer-clocks.patch b/patches/server/0199-Add-Option-for-disable-observer-clocks.patch
similarity index 100%
rename from patches/server/0197-Add-Option-for-disable-observer-clocks.patch
rename to patches/server/0199-Add-Option-for-disable-observer-clocks.patch
diff --git a/patches/server/0198-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0200-Customizeable-Zombie-Villager-curing-times.patch
similarity index 100%
rename from patches/server/0198-Customizeable-Zombie-Villager-curing-times.patch
rename to patches/server/0200-Customizeable-Zombie-Villager-curing-times.patch
diff --git a/patches/server/0199-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0201-Option-for-sponges-to-work-on-lava-and-mud.patch
similarity index 100%
rename from patches/server/0199-Option-for-sponges-to-work-on-lava-and-mud.patch
rename to patches/server/0201-Option-for-sponges-to-work-on-lava-and-mud.patch
diff --git a/patches/server/0200-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0202-Toggle-for-Wither-s-spawn-sound.patch
similarity index 93%
rename from patches/server/0200-Toggle-for-Wither-s-spawn-sound.patch
rename to patches/server/0202-Toggle-for-Wither-s-spawn-sound.patch
index 08b88bf4c..d771ca331 100644
--- a/patches/server/0200-Toggle-for-Wither-s-spawn-sound.patch
+++ b/patches/server/0202-Toggle-for-Wither-s-spawn-sound.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for Wither's spawn sound
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 86b06182616fe07f1a5ef2b1799c434884cba149..9abc47eb3d0c1a0ee0868ec223431f4de4925c77 100644
+index ff5d08f0cf323606ca2eb8bef3f487c7a86029e2..5bf7a6ecd58612c8502ed747263b6c0edd445294 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
-@@ -418,7 +418,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
+@@ -425,7 +425,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
}
// CraftBukkit end
diff --git a/patches/server/0201-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0203-Cactus-breaks-from-solid-neighbors-config.patch
similarity index 100%
rename from patches/server/0201-Cactus-breaks-from-solid-neighbors-config.patch
rename to patches/server/0203-Cactus-breaks-from-solid-neighbors-config.patch
diff --git a/patches/server/0202-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0204-Config-to-remove-curse-of-binding-with-weakness.patch
similarity index 100%
rename from patches/server/0202-Config-to-remove-curse-of-binding-with-weakness.patch
rename to patches/server/0204-Config-to-remove-curse-of-binding-with-weakness.patch
diff --git a/patches/server/0203-Conduit-behavior-configuration.patch b/patches/server/0205-Conduit-behavior-configuration.patch
similarity index 100%
rename from patches/server/0203-Conduit-behavior-configuration.patch
rename to patches/server/0205-Conduit-behavior-configuration.patch
diff --git a/patches/server/0204-Cauldron-fill-chances.patch b/patches/server/0206-Cauldron-fill-chances.patch
similarity index 100%
rename from patches/server/0204-Cauldron-fill-chances.patch
rename to patches/server/0206-Cauldron-fill-chances.patch
diff --git a/patches/server/0205-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0207-Config-to-allow-mobs-to-pathfind-over-rails.patch
similarity index 100%
rename from patches/server/0205-Config-to-allow-mobs-to-pathfind-over-rails.patch
rename to patches/server/0207-Config-to-allow-mobs-to-pathfind-over-rails.patch
diff --git a/patches/server/0206-Shulker-change-color-with-dye.patch b/patches/server/0208-Shulker-change-color-with-dye.patch
similarity index 100%
rename from patches/server/0206-Shulker-change-color-with-dye.patch
rename to patches/server/0208-Shulker-change-color-with-dye.patch
diff --git a/patches/server/0207-Extended-OfflinePlayer-API.patch b/patches/server/0209-Extended-OfflinePlayer-API.patch
similarity index 99%
rename from patches/server/0207-Extended-OfflinePlayer-API.patch
rename to patches/server/0209-Extended-OfflinePlayer-API.patch
index 433db3633..04f2fece9 100644
--- a/patches/server/0207-Extended-OfflinePlayer-API.patch
+++ b/patches/server/0209-Extended-OfflinePlayer-API.patch
@@ -223,7 +223,7 @@ index 03fc90a470c0f63d44161843cac88bea09166858..88640ac32d70ced6e8b1984663e1c492
+ // Purpur end - OfflinePlayer API
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index a0523c36af5a2e33f8f46663794a8df68409f80f..19f6bad1b81c5a5c249631b43e1f6c159dc994e0 100644
+index 4895293d3dfd294d278c79932d354bf9fe780361..a03f60665059f96fc546e880c29d3bb7b04ca67c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2521,6 +2521,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
diff --git a/patches/server/0208-Added-the-ability-to-add-combustible-items.patch b/patches/server/0210-Added-the-ability-to-add-combustible-items.patch
similarity index 96%
rename from patches/server/0208-Added-the-ability-to-add-combustible-items.patch
rename to patches/server/0210-Added-the-ability-to-add-combustible-items.patch
index 4bdf58b0b..8bb5df6d0 100644
--- a/patches/server/0208-Added-the-ability-to-add-combustible-items.patch
+++ b/patches/server/0210-Added-the-ability-to-add-combustible-items.patch
@@ -51,10 +51,10 @@ index b0afc384907bb75dfa26e432a2328fe080660019..92e58d9503daf4cc9bc1f4c7785e159e
private int maxStack = MAX_STACK;
public List transaction = new java.util.ArrayList();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 3f06e418e1322b966f19b488beb2780e7168b45b..cb912efba182aff9e8f080aa473f78115eae8a47 100644
+index da114737b3515b3f39aaa36c23a0d76699eb4239..6e8cd10ec919e9c42c214a9a9c78a51794731fb6 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1532,6 +1532,19 @@ public final class CraftServer implements Server {
+@@ -1537,6 +1537,19 @@ public final class CraftServer implements Server {
return true;
}
diff --git a/patches/server/0209-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0211-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch
similarity index 93%
rename from patches/server/0209-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch
rename to patches/server/0211-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch
index 2c5e77b0e..5d2e91e3a 100644
--- a/patches/server/0209-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch
+++ b/patches/server/0211-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 7b6acf4e2b2ec4964fbb296f1e66f2a86faba426..fc5444f5ae0f293266548bb30f9861da9f25d265 100644
+index f7d9398c9a73c8a02a2515b9d43b49433e5f883c..492a50f3b619753f8a353c739a3f10c44dfa7861 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -1362,6 +1362,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1378,6 +1378,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
private void resetWeatherCycle() {
// CraftBukkit start
@@ -16,7 +16,7 @@ index 7b6acf4e2b2ec4964fbb296f1e66f2a86faba426..fc5444f5ae0f293266548bb30f9861da
this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - when passing the night
// If we stop due to everyone sleeping we should reset the weather duration to some other random value.
// Not that everyone ever manages to get the whole server to sleep at the same time....
-@@ -1369,6 +1370,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1385,6 +1386,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.serverLevelData.setRainTime(0);
}
// CraftBukkit end
diff --git a/patches/server/0210-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0212-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch
similarity index 100%
rename from patches/server/0210-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch
rename to patches/server/0212-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch
diff --git a/patches/server/0211-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch
similarity index 96%
rename from patches/server/0211-Shift-right-click-to-use-exp-for-mending.patch
rename to patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch
index 9b18c0a34..3e03aa2e6 100644
--- a/patches/server/0211-Shift-right-click-to-use-exp-for-mending.patch
+++ b/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch
@@ -36,10 +36,10 @@ index 0838b3c612c832276afa1edc090ef7771e8bf2fc..3250c21eded7872336d349a7a93c2c17
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index fe4f8517f1d3614568be697720908609776f353e..70eaf9347d49924841f2cfa23932b3eadfe49c82 100644
+index 90561a2fb7c353bedb62b200689d8c73b3534033..9e4100ed797cfbafbb9c0b658f2a19c1c9a57ffc 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2019,6 +2019,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2020,6 +2020,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
boolean cancelled;
if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) {
diff --git a/patches/server/0212-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0214-Dolphins-naturally-aggressive-to-players-chance.patch
similarity index 100%
rename from patches/server/0212-Dolphins-naturally-aggressive-to-players-chance.patch
rename to patches/server/0214-Dolphins-naturally-aggressive-to-players-chance.patch
diff --git a/patches/server/0213-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0215-Cows-naturally-aggressive-to-players-chance.patch
similarity index 100%
rename from patches/server/0213-Cows-naturally-aggressive-to-players-chance.patch
rename to patches/server/0215-Cows-naturally-aggressive-to-players-chance.patch
diff --git a/patches/server/0214-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0216-Option-for-beds-to-explode-on-villager-sleep.patch
similarity index 94%
rename from patches/server/0214-Option-for-beds-to-explode-on-villager-sleep.patch
rename to patches/server/0216-Option-for-beds-to-explode-on-villager-sleep.patch
index 8b75a44e7..2a48fdd4f 100644
--- a/patches/server/0214-Option-for-beds-to-explode-on-villager-sleep.patch
+++ b/patches/server/0216-Option-for-beds-to-explode-on-villager-sleep.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Option for beds to explode on villager sleep
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 d24f970c50c1a4937b66e7eb6e3edc1d3b61a07e..bae27f98d3deaa855da9bc2dc6e8bd7d80fea786 100644
+index c7047bacce4851956e3732f0a73be423cc46ee54..04ccb0562e01ea5b9fcc4a14346fb0767ae44639 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-@@ -1113,6 +1113,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -1119,6 +1119,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@Override
public void startSleeping(BlockPos pos) {
diff --git a/patches/server/0215-Halloween-options-and-optimizations.patch b/patches/server/0217-Halloween-options-and-optimizations.patch
similarity index 92%
rename from patches/server/0215-Halloween-options-and-optimizations.patch
rename to patches/server/0217-Halloween-options-and-optimizations.patch
index e538407b4..4df7eb178 100644
--- a/patches/server/0215-Halloween-options-and-optimizations.patch
+++ b/patches/server/0217-Halloween-options-and-optimizations.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Halloween options and optimizations
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 91c7295b75cee5b9fc18434b94a67cb8db0151e3..fb3fff24d0146711faf1cd5eba706004ce203618 100644
+index c3d1d77a5703db4e1e3eb38fdd0b8903f691bf25..c103c3da165ec4a9717400fdf278de2a667edd2a 100644
--- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java
+++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
@@ -300,7 +300,7 @@ public class Bat extends AmbientCreature {
@@ -17,14 +17,14 @@ index 91c7295b75cee5b9fc18434b94a67cb8db0151e3..fb3fff24d0146711faf1cd5eba706004
b0 = 7;
} else if (random.nextBoolean()) {
return false;
-@@ -310,6 +310,7 @@ public class Bat extends AmbientCreature {
- }
- }
-
+@@ -314,6 +314,7 @@ public class Bat extends AmbientCreature {
+ private static boolean isSpookySeason = false;
+ private static final int ONE_HOUR = 20 * 60 * 60;
+ private static int lastSpookyCheck = -ONE_HOUR;
+ public static boolean isHalloweenSeason(Level level) { return level.purpurConfig.forceHalloweenSeason || isHalloween(); } // Purpur
private static boolean isHalloween() {
+ if (net.minecraft.server.MinecraftServer.currentTick - lastSpookyCheck > ONE_HOUR) {
LocalDate localdate = LocalDate.now();
- int i = localdate.get(ChronoField.DAY_OF_MONTH);
diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
index f35637a105d5aa12fb57c2456f2b2a7db12a49f0..f3e1fa62d9f067c0fe8aacb88bf30b01ee0562c1 100644
--- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
diff --git a/patches/server/0216-Config-for-grindstones.patch b/patches/server/0218-Config-for-grindstones.patch
similarity index 100%
rename from patches/server/0216-Config-for-grindstones.patch
rename to patches/server/0218-Config-for-grindstones.patch
diff --git a/patches/server/0217-UPnP-Port-Forwarding.patch b/patches/server/0219-UPnP-Port-Forwarding.patch
similarity index 92%
rename from patches/server/0217-UPnP-Port-Forwarding.patch
rename to patches/server/0219-UPnP-Port-Forwarding.patch
index 42c313ca5..a6ed332a2 100644
--- a/patches/server/0217-UPnP-Port-Forwarding.patch
+++ b/patches/server/0219-UPnP-Port-Forwarding.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] UPnP Port Forwarding
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index ca5a3c0e7b8aa1c419b63f5f38126f2377272299..e51df1613f2c379694a0a3a73fd9603ae063a621 100644
+index 615de0c4baf7797d03c43e5e164b198ebb70b341..ef25e6f4a36e98279061a8f066b37be956b92d49 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -303,6 +303,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop getModelRotationValues() {
return this.modelRotationValues;
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 bcba99876662e2e96a107d84da02c2366ed338e2..d8e6208b9238c6840fa6990866e64c830566bf0e 100644
+index 26062173d137e26abdc452f7b2e0be0ee6dddfa3..fba00cab2c4b234dd2e85b5f4dcd0db34183c1a2 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
@@ -119,6 +119,11 @@ public class Goat extends Animal {
@@ -549,7 +549,7 @@ index 4a7c1ba529261e57acd01f83796ee8faa17d3a2f..9e13a0c5ba2e31182c76df06380055a0
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F);
}
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 9abc47eb3d0c1a0ee0868ec223431f4de4925c77..71f8cea4a33b30fdafa41714a424b3092a3a7cd0 100644
+index 5bf7a6ecd58612c8502ed747263b6c0edd445294..c94a1b75593ad01e7f79fdc84818ea8ec269e124 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
@@ -132,6 +132,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -645,7 +645,7 @@ index cd1f830bf28b1c68e2b9cc7daa77f696234a22c9..df8d1b34078031001c50325b8cf5bfa9
return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D);
}
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 cdee97c300cf14ed44e59080f67db485615fa7fb..824392d0df782e3dd1555c0ac8687d5054e5cd25 100644
+index 463a01305cc76ffd8018d2227f5f6dc1ecf24c5f..0be47e96b2bb6bb66e7905e255e5f6009d6e0a97 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -120,6 +120,11 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -1029,7 +1029,7 @@ index 8cd6012b00dd5b307fd76ef0fd9c2cd92342a92a..15fd1af0773ba1254a429240444f48e6
protected Brain.Provider brainProvider() {
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
-index c265d2abd36857f6a25f8e0584e7cf939637b7a9..97ed65885f43c712953d6d8b3c231bac6f031390 100644
+index 79f791188a14a319a19b55674c891384fcb750c9..3f00634dd8d426f4578a3d6362f7a52f57e09d3b 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -147,6 +147,11 @@ public class Zombie extends Monster {
@@ -1077,7 +1077,7 @@ index 3574a1e641d8af34a0ff7ea8dcfb08641cf6ace0..df8c7a45eb49a8c667030eb67d6d49dc
public void setPersistentAngerTarget(@Nullable UUID angryAt) {
this.persistentAngerTarget = angryAt;
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 e60b3ccc703c36ab37e084c21811d43717aaa226..d709178522abd982de78946e859a14cab50e9818 100644
+index d0144c99cf5c755c81fc0f9457b462c98ff3e804..e326e753cc6bca1bd00287d16c9796b9f3dd4d14 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
@@ -101,6 +101,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
@@ -1093,7 +1093,7 @@ index e60b3ccc703c36ab37e084c21811d43717aaa226..d709178522abd982de78946e859a14ca
public boolean canBeLeashed(Player player) {
return !this.isLeashed();
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 022e58de15a359eb8e91d1d6007b19251b7e1a63..4169e11a3ad40f5b11fd9ab69ee85ae5be31265b 100644
+index e506dcf390ecb5cce8ae6993df7ec91b3ebc125e..9ca1618ab945ad834c5fc221ada49058f806e79c 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
@@ -123,6 +123,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
@@ -1125,10 +1125,10 @@ index b63d87df0f48dd63c89118f91b31dc4e3622e3b8..61e8f2d030fc50840c3f80dfb6fc8107
return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D);
}
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 bae27f98d3deaa855da9bc2dc6e8bd7d80fea786..1e054e727243b9d47cc913f82cf8e026a9f4af44 100644
+index 04ccb0562e01ea5b9fcc4a14346fb0767ae44639..1ad37f05e37551c72f780c56ff0c01ccc4907ed4 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-@@ -193,6 +193,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -195,6 +195,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
return this.level().purpurConfig.villagerTakeDamageFromWater;
}
diff --git a/patches/server/0225-Potion-NamespacedKey.patch b/patches/server/0227-Potion-NamespacedKey.patch
similarity index 99%
rename from patches/server/0225-Potion-NamespacedKey.patch
rename to patches/server/0227-Potion-NamespacedKey.patch
index 3e435ec2f..6093ea8d8 100644
--- a/patches/server/0225-Potion-NamespacedKey.patch
+++ b/patches/server/0227-Potion-NamespacedKey.patch
@@ -160,7 +160,7 @@ index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
-index a6934034c9fc8e3f04365d7595fccbe68fc093b6..ba960a4e551b46ec14204e09808a1b699d76aaf7 100644
+index 42b336a96e5c786b95356200da7d02bfd8b584dc..f79d79d7c9ca18ac711b81c8c3d94e2145aa5bf0 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -465,7 +465,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
diff --git a/patches/server/0226-Grindstone-API.patch b/patches/server/0228-Grindstone-API.patch
similarity index 100%
rename from patches/server/0226-Grindstone-API.patch
rename to patches/server/0228-Grindstone-API.patch
diff --git a/patches/server/0227-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0229-Ability-for-hoe-to-replant-crops-and-nether-warts.patch
similarity index 100%
rename from patches/server/0227-Ability-for-hoe-to-replant-crops-and-nether-warts.patch
rename to patches/server/0229-Ability-for-hoe-to-replant-crops-and-nether-warts.patch
diff --git a/patches/server/0228-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0230-Shearing-jeb-produces-random-color-wool.patch
similarity index 100%
rename from patches/server/0228-Shearing-jeb-produces-random-color-wool.patch
rename to patches/server/0230-Shearing-jeb-produces-random-color-wool.patch
diff --git a/patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0231-Turtle-eggs-random-tick-crack-chance.patch
similarity index 100%
rename from patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch
rename to patches/server/0231-Turtle-eggs-random-tick-crack-chance.patch
diff --git a/patches/server/0230-Mob-head-visibility-percent.patch b/patches/server/0232-Mob-head-visibility-percent.patch
similarity index 97%
rename from patches/server/0230-Mob-head-visibility-percent.patch
rename to patches/server/0232-Mob-head-visibility-percent.patch
index cbd81d506..29b22fe15 100644
--- a/patches/server/0230-Mob-head-visibility-percent.patch
+++ b/patches/server/0232-Mob-head-visibility-percent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Mob head visibility percent
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 7c91aa226517d9d574f102e3e4976904b419e657..11761085514d54e23fece41a408b74a2bde3effc 100644
+index cf997f8811aacd32946d81de87b1683910374e42..7a5b7e2d50c98774d8bc50a9c83d15a67996fc90 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -1041,9 +1041,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1040,9 +1040,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD);
EntityType> entitytypes = entity.getType();
diff --git a/patches/server/0231-Configurable-valid-characters-for-usernames.patch b/patches/server/0233-Configurable-valid-characters-for-usernames.patch
similarity index 100%
rename from patches/server/0231-Configurable-valid-characters-for-usernames.patch
rename to patches/server/0233-Configurable-valid-characters-for-usernames.patch
diff --git a/patches/server/0232-Shears-can-have-looting-enchantment.patch b/patches/server/0234-Shears-can-have-looting-enchantment.patch
similarity index 100%
rename from patches/server/0232-Shears-can-have-looting-enchantment.patch
rename to patches/server/0234-Shears-can-have-looting-enchantment.patch
diff --git a/patches/server/0233-Stop-bees-from-dying-after-stinging.patch b/patches/server/0235-Stop-bees-from-dying-after-stinging.patch
similarity index 95%
rename from patches/server/0233-Stop-bees-from-dying-after-stinging.patch
rename to patches/server/0235-Stop-bees-from-dying-after-stinging.patch
index 4f22108b7..35a96f6c4 100644
--- a/patches/server/0233-Stop-bees-from-dying-after-stinging.patch
+++ b/patches/server/0235-Stop-bees-from-dying-after-stinging.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Stop bees from dying after stinging
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
-index ac4ca4de2be18a08268b24dfe259cfd136b1a4da..e837500019157129007841c847d807ebae10db04 100644
+index 1ddd4ad531e1c536bc3769dc84007d3a3c0350df..02e95af3c18b3da5a6a32a7536e903ca9c426249 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -439,6 +439,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
diff --git a/patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0236-Give-bee-counts-in-beehives-to-Purpur-clients.patch
similarity index 92%
rename from patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch
rename to patches/server/0236-Give-bee-counts-in-beehives-to-Purpur-clients.patch
index 58e0dce21..6930dc878 100644
--- a/patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch
+++ b/patches/server/0236-Give-bee-counts-in-beehives-to-Purpur-clients.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Give bee counts in beehives to Purpur clients
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index e51df1613f2c379694a0a3a73fd9603ae063a621..397cb4577f7110178ec63feef114f5eb5d206524 100644
+index ef25e6f4a36e98279061a8f066b37be956b92d49..7951d617accb093e650d0ca30e2088b5a795d2a2 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1017,6 +1017,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> {
diff --git a/patches/server/0241-Configurable-minimum-demand-for-trades.patch b/patches/server/0243-Configurable-minimum-demand-for-trades.patch
similarity index 95%
rename from patches/server/0241-Configurable-minimum-demand-for-trades.patch
rename to patches/server/0243-Configurable-minimum-demand-for-trades.patch
index c3b276586..5b7a62303 100644
--- a/patches/server/0241-Configurable-minimum-demand-for-trades.patch
+++ b/patches/server/0243-Configurable-minimum-demand-for-trades.patch
@@ -9,10 +9,10 @@ This patch adds a config option to allow the minimum demand to instead
be configurable.
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 1e054e727243b9d47cc913f82cf8e026a9f4af44..46a3f321e4673401ee597f779d5f61441e7c3598 100644
+index 1ad37f05e37551c72f780c56ff0c01ccc4907ed4..54c96e3e2a0b7efe082a0cb48492c0605d0db51b 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-@@ -540,7 +540,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -546,7 +546,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
while (iterator.hasNext()) {
MerchantOffer merchantrecipe = (MerchantOffer) iterator.next();
diff --git a/patches/server/0242-Lobotomize-stuck-villagers.patch b/patches/server/0244-Lobotomize-stuck-villagers.patch
similarity index 87%
rename from patches/server/0242-Lobotomize-stuck-villagers.patch
rename to patches/server/0244-Lobotomize-stuck-villagers.patch
index 78f13e719..45e66ed8e 100644
--- a/patches/server/0242-Lobotomize-stuck-villagers.patch
+++ b/patches/server/0244-Lobotomize-stuck-villagers.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Lobotomize stuck villagers
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 46a3f321e4673401ee597f779d5f61441e7c3598..d70639fef24b6a8a3b504723992a050edbc16f61 100644
+index 54c96e3e2a0b7efe082a0cb48492c0605d0db51b..6760c9cc9ee244b7adca379d7e34696c48b65dbf 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -141,6 +141,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -15,9 +15,9 @@ index 46a3f321e4673401ee597f779d5f61441e7c3598..d70639fef24b6a8a3b504723992a050e
+ private boolean isLobotomized = false; public boolean isLobotomized() { return this.isLobotomized; } // Purpur
+ private int notLobotomizedCount = 0; // Purpur
- public Villager(EntityType extends Villager> entityType, Level world) {
- this(entityType, world, VillagerType.PLAINS);
-@@ -198,6 +200,47 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+ public long nextGolemPanic = -1; // Pufferfish
+
+@@ -200,6 +202,47 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
return this.level().purpurConfig.villagerAlwaysDropExp;
}
@@ -65,7 +65,7 @@ index 46a3f321e4673401ee597f779d5f61441e7c3598..d70639fef24b6a8a3b504723992a050e
@Override
public Brain getBrain() {
return (Brain) super.getBrain(); // CraftBukkit - decompile error
-@@ -294,10 +337,21 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -297,14 +340,21 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
// Paper start
this.customServerAiStep(false);
}
@@ -73,7 +73,9 @@ index 46a3f321e4673401ee597f779d5f61441e7c3598..d70639fef24b6a8a3b504723992a050e
+ protected void customServerAiStep(boolean inactive) { // Purpur - not final
// Paper end
this.level().getProfiler().push("villagerBrain");
-- //if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish
+- // Pufferfish start
+- if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider
+- this.getBrain().tick((ServerLevel) this.level(), this); // Paper
+ // Purpur start
+ if (this.level().purpurConfig.villagerLobotomizeEnabled) {
+ // treat as inactive if lobotomized
@@ -81,14 +83,15 @@ index 46a3f321e4673401ee597f779d5f61441e7c3598..d70639fef24b6a8a3b504723992a050e
+ } else {
+ // clean up state for API
+ this.isLobotomized = false;
-+ }
-+ /*if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish
+ }
+- // Pufferfish end
++ if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Purpur - only use brain if no rider
+ this.getBrain().tick((ServerLevel) this.level(), this); // Paper
-+ else */if (this.isLobotomized && shouldRestock()) restock();
++ else if (this.isLobotomized && shouldRestock()) restock();
+ // Purpur end
- if (!inactive) this.getBrain().tick((ServerLevel) this.level(), this); // Paper
this.level().getProfiler().pop();
if (this.assignProfessionWhenSpawned) {
+ this.assignProfessionWhenSpawned = false;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
index a67b5d20b956e0bf801c9eeb9330567c21927010..15c7dd5ae4ea040b91b665e5ce05c0d35ab1604e 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
diff --git a/patches/server/0243-Option-for-villager-display-trade-item.patch b/patches/server/0245-Option-for-villager-display-trade-item.patch
similarity index 100%
rename from patches/server/0243-Option-for-villager-display-trade-item.patch
rename to patches/server/0245-Option-for-villager-display-trade-item.patch
diff --git a/patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0246-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch
similarity index 100%
rename from patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch
rename to patches/server/0246-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch
diff --git a/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0247-Config-for-mob-last-hurt-by-player-time.patch
similarity index 93%
rename from patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch
rename to patches/server/0247-Config-for-mob-last-hurt-by-player-time.patch
index 6947d95e5..4752bad87 100644
--- a/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch
+++ b/patches/server/0247-Config-for-mob-last-hurt-by-player-time.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Config for mob last hurt by player time
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 11761085514d54e23fece41a408b74a2bde3effc..9e07866c6597b62eb02985770c1fcffe6fb3f601 100644
+index 7a5b7e2d50c98774d8bc50a9c83d15a67996fc90..ffc25a5f8e8ec479a7454920ccf66ef1e4ce4f71 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -1526,13 +1526,13 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -1538,13 +1538,13 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (entity1 instanceof net.minecraft.world.entity.player.Player) {
net.minecraft.world.entity.player.Player entityhuman = (net.minecraft.world.entity.player.Player) entity1;
@@ -25,7 +25,7 @@ index 11761085514d54e23fece41a408b74a2bde3effc..9e07866c6597b62eb02985770c1fcffe
if (entityliving2 instanceof net.minecraft.world.entity.player.Player) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
-index 5ca34447926510f1d4c5c5ba9eb3c7c6369a85de..4e11a5eb37998deba9eea2663ac2c7fb92de8acc 100644
+index f79d79d7c9ca18ac711b81c8c3d94e2145aa5bf0..2dbc48d7d5912c46f4d1edaa55047215b123d1ed 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -453,7 +453,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
diff --git a/patches/server/0246-Anvil-repair-damage-options.patch b/patches/server/0248-Anvil-repair-damage-options.patch
similarity index 100%
rename from patches/server/0246-Anvil-repair-damage-options.patch
rename to patches/server/0248-Anvil-repair-damage-options.patch
diff --git a/patches/server/0247-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0249-Option-to-disable-turtle-egg-trampling-with-feather-.patch
similarity index 100%
rename from patches/server/0247-Option-to-disable-turtle-egg-trampling-with-feather-.patch
rename to patches/server/0249-Option-to-disable-turtle-egg-trampling-with-feather-.patch
diff --git a/patches/server/0248-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0250-Add-toggle-for-enchant-level-clamping.patch
similarity index 97%
rename from patches/server/0248-Add-toggle-for-enchant-level-clamping.patch
rename to patches/server/0250-Add-toggle-for-enchant-level-clamping.patch
index 0fb43035d..4556e3b5a 100644
--- a/patches/server/0248-Add-toggle-for-enchant-level-clamping.patch
+++ b/patches/server/0250-Add-toggle-for-enchant-level-clamping.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add toggle for enchant level clamping
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
-index dfb2852a4fa1a8b8ffe7817c3cf63d87abaf1a82..6c7f0db683101e12ae48dc3f28d5d00ac9569e35 100644
+index c0588e87f6f0ec3d642eacac41a3060abc08e33d..fc481f26368f4d823379921573a05ac5b91f39e6 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -1207,7 +1207,7 @@ public final class ItemStack {
diff --git a/patches/server/0249-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0251-Skip-junit-tests-for-purpur-commands.patch
similarity index 95%
rename from patches/server/0249-Skip-junit-tests-for-purpur-commands.patch
rename to patches/server/0251-Skip-junit-tests-for-purpur-commands.patch
index 039ecea43..bd9cfd575 100644
--- a/patches/server/0249-Skip-junit-tests-for-purpur-commands.patch
+++ b/patches/server/0251-Skip-junit-tests-for-purpur-commands.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Skip junit tests for purpur commands
diff --git a/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java b/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java
-index 4f43882d930ab8816e75b216d9a61a06b79df265..40fc8b6579cc29e68720a99ac12f8adacc1d95be 100644
+index afeb4271fffb7546209f1e651214065187c88302..81bc3af856b8af019fd13e1da1f7cccd526b7cf0 100644
--- a/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java
+++ b/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java
@@ -45,6 +45,7 @@ public class MinecraftCommandPermissionsTest extends AbstractTestingBase {
diff --git a/patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch
similarity index 94%
rename from patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch
rename to patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch
index 0077f8c06..8838fe09e 100644
--- a/patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch
+++ b/patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn
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 d70639fef24b6a8a3b504723992a050edbc16f61..99928a3a8954be0d5b1f7736c12dbbb10d4c508c 100644
+index 6760c9cc9ee244b7adca379d7e34696c48b65dbf..9682676aa68cf5927facd60ef061006579c1f893 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-@@ -1099,6 +1099,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -1101,6 +1101,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
}
public void spawnGolemIfNeeded(ServerLevel world, long time, int requiredCount) {
diff --git a/patches/server/0251-Stonecutter-damage.patch b/patches/server/0253-Stonecutter-damage.patch
similarity index 100%
rename from patches/server/0251-Stonecutter-damage.patch
rename to patches/server/0253-Stonecutter-damage.patch
diff --git a/patches/server/0252-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0254-Configurable-damage-settings-for-magma-blocks.patch
similarity index 100%
rename from patches/server/0252-Configurable-damage-settings-for-magma-blocks.patch
rename to patches/server/0254-Configurable-damage-settings-for-magma-blocks.patch
diff --git a/patches/server/0253-Add-config-for-snow-on-blue-ice.patch b/patches/server/0255-Add-config-for-snow-on-blue-ice.patch
similarity index 100%
rename from patches/server/0253-Add-config-for-snow-on-blue-ice.patch
rename to patches/server/0255-Add-config-for-snow-on-blue-ice.patch
diff --git a/patches/server/0254-Skeletons-eat-wither-roses.patch b/patches/server/0256-Skeletons-eat-wither-roses.patch
similarity index 100%
rename from patches/server/0254-Skeletons-eat-wither-roses.patch
rename to patches/server/0256-Skeletons-eat-wither-roses.patch
diff --git a/patches/server/0255-Enchantment-Table-Persists-Lapis.patch b/patches/server/0257-Enchantment-Table-Persists-Lapis.patch
similarity index 100%
rename from patches/server/0255-Enchantment-Table-Persists-Lapis.patch
rename to patches/server/0257-Enchantment-Table-Persists-Lapis.patch
diff --git a/patches/server/0256-Spark-Profiler.patch b/patches/server/0258-Spark-Profiler.patch
similarity index 100%
rename from patches/server/0256-Spark-Profiler.patch
rename to patches/server/0258-Spark-Profiler.patch
diff --git a/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch
similarity index 92%
rename from patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch
rename to patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch
index d9048e1a4..0bd304798 100644
--- a/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch
+++ b/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable kick for out of order chat
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 70eaf9347d49924841f2cfa23932b3eadfe49c82..87e064670d336f1c3a86cdc524e2686c7ee5af72 100644
+index 9e4100ed797cfbafbb9c0b658f2a19c1c9a57ffc..018a3597c7132ba1f5972fef74b6a32837a31cb3 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2336,7 +2336,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2338,7 +2338,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
do {
instant1 = (Instant) this.lastChatTimeStamp.get();
if (timestamp.isBefore(instant1)) {
diff --git a/patches/server/0258-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0260-Config-for-sculk-shrieker-can_summon-state.patch
similarity index 100%
rename from patches/server/0258-Config-for-sculk-shrieker-can_summon-state.patch
rename to patches/server/0260-Config-for-sculk-shrieker-can_summon-state.patch
diff --git a/patches/server/0259-Config-to-not-let-coral-die.patch b/patches/server/0261-Config-to-not-let-coral-die.patch
similarity index 100%
rename from patches/server/0259-Config-to-not-let-coral-die.patch
rename to patches/server/0261-Config-to-not-let-coral-die.patch
diff --git a/patches/server/0260-Add-local-difficulty-api.patch b/patches/server/0262-Add-local-difficulty-api.patch
similarity index 100%
rename from patches/server/0260-Add-local-difficulty-api.patch
rename to patches/server/0262-Add-local-difficulty-api.patch
diff --git a/patches/server/0261-Add-toggle-for-RNG-manipulation.patch b/patches/server/0263-Add-toggle-for-RNG-manipulation.patch
similarity index 94%
rename from patches/server/0261-Add-toggle-for-RNG-manipulation.patch
rename to patches/server/0263-Add-toggle-for-RNG-manipulation.patch
index 440e70c07..5cccb4d7b 100644
--- a/patches/server/0261-Add-toggle-for-RNG-manipulation.patch
+++ b/patches/server/0263-Add-toggle-for-RNG-manipulation.patch
@@ -7,10 +7,10 @@ Paper patches RNG maniplulation by using a shared (and locked) random source.
This comes with a performance gain, but technical players may prefer the ability to manipulate RNG.
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index e78d85a313f585ec9c7fe9895402591b7b10d6b9..28cac00d496cc6e37648dbe96ba4aea2b834cedd 100644
+index 12f0da455f174c5a0652ac87f62c159808fbf7d3..307eac4114192a7f0e6633e3df5a5e7a54ad22ba 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -555,7 +555,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -561,7 +561,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
this.bb = Entity.INITIAL_AABB;
this.stuckSpeedMultiplier = Vec3.ZERO;
this.nextStep = 1.0F;
diff --git a/patches/server/0262-Send-client-custom-name-of-BE.patch b/patches/server/0264-Send-client-custom-name-of-BE.patch
similarity index 100%
rename from patches/server/0262-Send-client-custom-name-of-BE.patch
rename to patches/server/0264-Send-client-custom-name-of-BE.patch
diff --git a/patches/server/0263-Allow-custom-ChatDecorators.patch b/patches/server/0265-Allow-custom-ChatDecorators.patch
similarity index 90%
rename from patches/server/0263-Allow-custom-ChatDecorators.patch
rename to patches/server/0265-Allow-custom-ChatDecorators.patch
index 54568d0da..7ff5882b7 100644
--- a/patches/server/0263-Allow-custom-ChatDecorators.patch
+++ b/patches/server/0265-Allow-custom-ChatDecorators.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Allow custom ChatDecorators
Requires NMS to utilize. I'll write an API for this once our upstreams calm down with the changes.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 397cb4577f7110178ec63feef114f5eb5d206524..8ae7a35a84f055c982db1bb04697dfebd0512430 100644
+index 7951d617accb093e650d0ca30e2088b5a795d2a2..219f4c9ca2dfa1f55d7c5f4443dab9844ebec4b9 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -2668,6 +2668,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop {
entityplayer.connection.suspendFlushing();
});
@@ -111,7 +111,7 @@ index 8ae7a35a84f055c982db1bb04697dfebd0512430..66b528364bbd5baea08511eb8d10fbd3
// Paper start - Folia scheduler API
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick();
getAllLevels().forEach(level -> {
-@@ -1510,21 +1510,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop {
return ichunkaccess1;
-@@ -447,17 +447,17 @@ public class ServerChunkCache extends ChunkSource {
+@@ -450,17 +450,17 @@ public class ServerChunkCache extends ChunkSource {
public void save(boolean flush) {
this.runDistanceManagerUpdates();
@@ -341,7 +341,7 @@ index 17b6925b46f8386dcfc561483693de516465ec12..9dc3dec2bdf2e503fe10364dd4bb5cf6
}
// Paper end
-@@ -487,22 +487,22 @@ public class ServerChunkCache extends ChunkSource {
+@@ -490,22 +490,22 @@ public class ServerChunkCache extends ChunkSource {
@Override
public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) {
this.level.getProfiler().push("purge");
@@ -370,7 +370,7 @@ index 17b6925b46f8386dcfc561483693de516465ec12..9dc3dec2bdf2e503fe10364dd4bb5cf6
this.level.getProfiler().pop();
this.clearCache();
}
-@@ -525,7 +525,7 @@ public class ServerChunkCache extends ChunkSource {
+@@ -529,7 +529,7 @@ public class ServerChunkCache extends ChunkSource {
boolean flag1 = level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit
gameprofilerfiller.push("naturalSpawnCount");
@@ -379,14 +379,14 @@ index 17b6925b46f8386dcfc561483693de516465ec12..9dc3dec2bdf2e503fe10364dd4bb5cf6
int l = this.distanceManager.getNaturalSpawnChunkCount();
// Paper start - per player mob spawning
NaturalSpawner.SpawnState spawnercreature_d; // moved down
-@@ -549,13 +549,13 @@ public class ServerChunkCache extends ChunkSource {
- spawnercreature_d = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false);
+@@ -560,13 +560,13 @@ public class ServerChunkCache extends ChunkSource {
+ // Pufferfish end
}
// Paper end
- this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings
+ //this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur
- this.lastSpawnState = spawnercreature_d;
+ //this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously
gameprofilerfiller.popPush("filteringLoadedChunks");
// Paper - optimise chunk tick iteration
// Paper - optimise chunk tick iteration
@@ -395,7 +395,7 @@ index 17b6925b46f8386dcfc561483693de516465ec12..9dc3dec2bdf2e503fe10364dd4bb5cf6
// Paper - optimise chunk tick iteration
-@@ -661,17 +661,17 @@ public class ServerChunkCache extends ChunkSource {
+@@ -672,17 +672,17 @@ public class ServerChunkCache extends ChunkSource {
}
}
// Paper end - optimise chunk tick iteration
@@ -417,7 +417,7 @@ index 17b6925b46f8386dcfc561483693de516465ec12..9dc3dec2bdf2e503fe10364dd4bb5cf6
// Paper start - optimise chunk tick iteration
if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) {
it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet copy = this.chunkMap.needsChangeBroadcasting.clone();
-@@ -685,7 +685,7 @@ public class ServerChunkCache extends ChunkSource {
+@@ -696,7 +696,7 @@ public class ServerChunkCache extends ChunkSource {
}
}
// Paper end - optimise chunk tick iteration
@@ -427,7 +427,7 @@ index 17b6925b46f8386dcfc561483693de516465ec12..9dc3dec2bdf2e503fe10364dd4bb5cf6
gameprofilerfiller.pop();
gameprofilerfiller.pop();
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 158e690713204ad2d0b6ff3d0daa1f13a8100f1e..b1f5ccd309f84f7b53d16ad6241bb4cb1bdd0726 100644
+index 3c8585976bbfcb33c26ee5fde8448805e0f97e1a..68a29b818db34ef0263704d7b6d71b9a44d905e5 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -856,7 +856,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -483,9 +483,9 @@ index 158e690713204ad2d0b6ff3d0daa1f13a8100f1e..b1f5ccd309f84f7b53d16ad6241bb4cb
- timings.entityTick.startTiming(); // Spigot
+ //timings.entityTick.startTiming(); // Spigot // Purpur
this.entityTickList.forEach((entity) -> {
+ entity.activatedPriorityReset = false; // Pufferfish - DAB
if (!entity.isRemoved()) {
- if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
-@@ -924,8 +924,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -938,8 +938,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
}
});
@@ -496,7 +496,7 @@ index 158e690713204ad2d0b6ff3d0daa1f13a8100f1e..b1f5ccd309f84f7b53d16ad6241bb4cb
gameprofilerfiller.pop();
this.tickBlockEntities();
}
-@@ -1066,7 +1066,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1082,7 +1082,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
// Paper start - optimise random block ticking
gameprofilerfiller.popPush("tickBlocks");
@@ -505,7 +505,7 @@ index 158e690713204ad2d0b6ff3d0daa1f13a8100f1e..b1f5ccd309f84f7b53d16ad6241bb4cb
if (randomTickSpeed > 0) {
LevelChunkSection[] sections = chunk.getSections();
final int minSection = io.papermc.paper.util.WorldUtil.getMinSection(this);
-@@ -1099,7 +1099,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1115,7 +1115,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
// Paper end - optimise random block ticking
@@ -514,7 +514,7 @@ index 158e690713204ad2d0b6ff3d0daa1f13a8100f1e..b1f5ccd309f84f7b53d16ad6241bb4cb
gameprofilerfiller.pop();
}
-@@ -1438,8 +1438,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1454,8 +1454,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
// Spigot end
// Paper start- timings
final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity);
@@ -525,7 +525,7 @@ index 158e690713204ad2d0b6ff3d0daa1f13a8100f1e..b1f5ccd309f84f7b53d16ad6241bb4cb
// Paper end - timings
entity.setOldPosAndRot();
ProfilerFiller gameprofilerfiller = this.getProfiler();
-@@ -1455,7 +1455,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1471,7 +1471,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
entity.postTick(); // CraftBukkit
} else { entity.inactiveTick(); } // Paper - EAR 2
this.getProfiler().pop();
@@ -534,7 +534,7 @@ index 158e690713204ad2d0b6ff3d0daa1f13a8100f1e..b1f5ccd309f84f7b53d16ad6241bb4cb
Iterator iterator = entity.getPassengers().iterator();
while (iterator.hasNext()) {
-@@ -1478,8 +1478,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1494,8 +1494,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (passenger instanceof Player || this.entityTickList.contains(passenger)) {
// Paper - EAR 2
final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger);
@@ -545,7 +545,7 @@ index 158e690713204ad2d0b6ff3d0daa1f13a8100f1e..b1f5ccd309f84f7b53d16ad6241bb4cb
// Paper end
passenger.setOldPosAndRot();
++passenger.tickCount;
-@@ -1509,7 +1509,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1525,7 +1525,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.tickPassenger(passenger, entity2);
}
@@ -554,7 +554,7 @@ index 158e690713204ad2d0b6ff3d0daa1f13a8100f1e..b1f5ccd309f84f7b53d16ad6241bb4cb
}
} else {
passenger.stopRiding();
-@@ -1529,14 +1529,14 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1545,14 +1545,14 @@ public class ServerLevel extends Level implements WorldGenLevel {
org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld()));
}
@@ -572,7 +572,7 @@ index 158e690713204ad2d0b6ff3d0daa1f13a8100f1e..b1f5ccd309f84f7b53d16ad6241bb4cb
// Copied from save()
// CraftBukkit start - moved from MinecraftServer.saveChunks
-@@ -1548,7 +1548,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1564,7 +1564,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.convertable.saveDataTag(this.server.registryAccess(), this.serverLevelData, this.server.getPlayerList().getSingleplayerData());
}
// CraftBukkit end
@@ -581,7 +581,7 @@ index 158e690713204ad2d0b6ff3d0daa1f13a8100f1e..b1f5ccd309f84f7b53d16ad6241bb4cb
}
// Paper end
-@@ -1562,7 +1562,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1578,7 +1578,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (!savingDisabled) {
org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit
@@ -590,7 +590,7 @@ index 158e690713204ad2d0b6ff3d0daa1f13a8100f1e..b1f5ccd309f84f7b53d16ad6241bb4cb
if (progressListener != null) {
progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel"));
}
-@@ -1572,11 +1572,11 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1588,11 +1588,11 @@ public class ServerLevel extends Level implements WorldGenLevel {
progressListener.progressStage(Component.translatable("menu.savingChunks"));
}
@@ -606,10 +606,10 @@ index 158e690713204ad2d0b6ff3d0daa1f13a8100f1e..b1f5ccd309f84f7b53d16ad6241bb4cb
} else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index d5f4e95fe5d796c419e5b76042dda638c26d15ed..d01116aa7b547e5020b69df36cdf035af2cae882 100644
+index 018a3597c7132ba1f5972fef74b6a32837a31cb3..0c56b90dbcb4aaf904eeb1773a1aa82e9e018c50 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2446,7 +2446,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2448,7 +2448,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
public void handleCommand(String s) { // Paper - private -> public
org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher
@@ -618,7 +618,7 @@ index d5f4e95fe5d796c419e5b76042dda638c26d15ed..d01116aa7b547e5020b69df36cdf035a
if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot
this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s);
-@@ -2456,7 +2456,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2458,7 +2458,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.cserver.getPluginManager().callEvent(event);
if (event.isCancelled()) {
@@ -627,7 +627,7 @@ index d5f4e95fe5d796c419e5b76042dda638c26d15ed..d01116aa7b547e5020b69df36cdf035a
return;
}
-@@ -2469,7 +2469,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2471,7 +2471,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
return;
} finally {
@@ -708,10 +708,10 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1
}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 7773f9ce65a45388ee5fb2c472de784be00b1899..10276a6b2b311f9cf45b030e4dbb46e44faa04a5 100644
+index b486008e2ef64648064aa365fb98bd5878f9c379..fc27f690d302559dd534e9f4ede7a7bd6422837a 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -1302,15 +1302,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1304,15 +1304,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
ProfilerFiller gameprofilerfiller = this.getProfiler();
gameprofilerfiller.push("blockEntities");
@@ -730,7 +730,7 @@ index 7773f9ce65a45388ee5fb2c472de784be00b1899..10276a6b2b311f9cf45b030e4dbb46e4
// Spigot start
// Iterator iterator = this.blockEntityTickers.iterator();
int tilesThisCycle = 0;
-@@ -1343,7 +1343,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1345,7 +1345,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}
this.blockEntityTickers.removeAll(toRemove);
@@ -740,7 +740,7 @@ index 7773f9ce65a45388ee5fb2c472de784be00b1899..10276a6b2b311f9cf45b030e4dbb46e4
co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper
gameprofilerfiller.pop();
diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
-index 3cdddda9c0618e95288b81b975d499c8dd30c05f..6a5dddfd120760b3334d8a4c4ebde84744083392 100644
+index 9c2d62feff1816f5729060c6192269a5b2d34153..1e3349690d00c7889a381f7c65a3b5bf3de2ac5b 100644
--- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java
+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
@@ -133,7 +133,7 @@ public final class NaturalSpawner {
@@ -762,10 +762,10 @@ index 3cdddda9c0618e95288b81b975d499c8dd30c05f..6a5dddfd120760b3334d8a4c4ebde847
}
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 4abec88caab4116cfa318f7b66c6b1a8346a7401..7d60f8a4e3fa15d81628bba0f6b3c1fc9040535b 100644
+index 2d4586859bd19a5094619d8abd62e466b822d293..ad9f63e80975b816f71e12f3801ba9e10c1c0cff 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
-@@ -790,7 +790,7 @@ public class LevelChunk extends ChunkAccess {
+@@ -804,7 +804,7 @@ public class LevelChunk extends ChunkAccess {
this.chunkHolder.getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system
if (this.needsDecoration) {
@@ -774,7 +774,7 @@ index 4abec88caab4116cfa318f7b66c6b1a8346a7401..7d60f8a4e3fa15d81628bba0f6b3c1fc
this.needsDecoration = false;
java.util.Random random = new java.util.Random();
random.setSeed(this.level.getSeed());
-@@ -810,7 +810,7 @@ public class LevelChunk extends ChunkAccess {
+@@ -824,7 +824,7 @@ public class LevelChunk extends ChunkAccess {
}
}
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk));
@@ -783,7 +783,7 @@ index 4abec88caab4116cfa318f7b66c6b1a8346a7401..7d60f8a4e3fa15d81628bba0f6b3c1fc
}
}
}
-@@ -1168,7 +1168,7 @@ public class LevelChunk extends ChunkAccess {
+@@ -1182,7 +1182,7 @@ public class LevelChunk extends ChunkAccess {
ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler();
gameprofilerfiller.push(this::getType);
@@ -792,7 +792,7 @@ index 4abec88caab4116cfa318f7b66c6b1a8346a7401..7d60f8a4e3fa15d81628bba0f6b3c1fc
BlockState iblockdata = LevelChunk.this.getBlockState(blockposition);
if (this.blockEntity.getType().isValid(iblockdata)) {
-@@ -1190,7 +1190,7 @@ public class LevelChunk extends ChunkAccess {
+@@ -1204,7 +1204,7 @@ public class LevelChunk extends ChunkAccess {
// Paper end
// Spigot start
} finally {
@@ -879,10 +879,10 @@ index 7a2f46579352870cfbb32c343d7c68919758ffe3..60b8331a4327cc276b88420254495455
// Paper end - add timings for scoreboard search
}
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
-index bc98504b9eacd41994c234e6385f37c5d681383b..f2e7e3501ca9d1664039468b5e7dece47986fd29 100644
+index 925cd6e07efc3a42ff5787823b046726ce863104..eae9bf47521ded2a4b7972978f3bd801c685d56a 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java
-@@ -166,7 +166,7 @@ public class ActivationRange
+@@ -170,7 +170,7 @@ public class ActivationRange
*/
public static void activateEntities(Level world)
{
@@ -891,7 +891,7 @@ index bc98504b9eacd41994c234e6385f37c5d681383b..f2e7e3501ca9d1664039468b5e7dece4
final int miscActivationRange = world.spigotConfig.miscActivationRange;
final int raiderActivationRange = world.spigotConfig.raiderActivationRange;
final int animalActivationRange = world.spigotConfig.animalActivationRange;
-@@ -227,7 +227,7 @@ public class ActivationRange
+@@ -250,7 +250,7 @@ public class ActivationRange
}
// Paper end
}
diff --git a/patches/server/0265-Remove-Mojang-Profiler.patch b/patches/server/0267-Remove-Mojang-Profiler.patch
similarity index 89%
rename from patches/server/0265-Remove-Mojang-Profiler.patch
rename to patches/server/0267-Remove-Mojang-Profiler.patch
index 8bfd75b0c..c9eb60b70 100644
--- a/patches/server/0265-Remove-Mojang-Profiler.patch
+++ b/patches/server/0267-Remove-Mojang-Profiler.patch
@@ -39,10 +39,10 @@ index af712f089e7919fa0bd3946866fd3486fab19f76..9caab6541a224dc8f729a7d720eccda7
return b0;
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 66b528364bbd5baea08511eb8d10fbd37bd1cef7..189c904a3b0ac2d2b889e118bfd7c75e6ec5da3e 100644
+index 2ea0db79e2a4b23455b2b2bc345621b4a58629ab..306195a8a57dc62379ffd856b214a651fd60e483 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -336,13 +336,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0;
try {
this.isSaving = true;
-@@ -1427,7 +1427,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper
worldserver.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur
@@ -192,7 +192,7 @@ index 66b528364bbd5baea08511eb8d10fbd37bd1cef7..189c904a3b0ac2d2b889e118bfd7c75e
try {
//worldserver.timings.doTick.startTiming(); // Spigot // Purpur
-@@ -1593,17 +1593,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop {
this.executeBlocking(() -> {
this.saveDebugReport(path.resolve("server"));
-@@ -2547,40 +2548,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> completablefuture = this.getChunkFutureMainThread(x, z, leastStatus, create, true); // Paper
ServerChunkCache.MainThreadExecutor chunkproviderserver_b = this.mainThreadProcessor;
-@@ -474,24 +474,24 @@ public class ServerChunkCache extends ChunkSource {
+@@ -477,24 +477,24 @@ public class ServerChunkCache extends ChunkSource {
// CraftBukkit start - modelled on below
public void purgeUnload() {
if (true) return; // Paper - tickets will be removed later, this behavior isn't really well accounted for by the chunk system
@@ -479,7 +480,7 @@ index 9dc3dec2bdf2e503fe10364dd4bb5cf662288260..4ab448842dcbf7f0f45d4443d0bb007e
if (tickChunks) {
//this.level.timings.chunks.startTiming(); // Paper - timings // Purpur
this.chunkMap.level.playerChunkLoader.tick(); // Paper - replace player chunk loader - this is mostly required to account for view distance changes
-@@ -500,10 +500,10 @@ public class ServerChunkCache extends ChunkSource {
+@@ -503,10 +503,10 @@ public class ServerChunkCache extends ChunkSource {
}
//this.level.timings.doChunkUnload.startTiming(); // Spigot // Purpur
@@ -492,7 +493,7 @@ index 9dc3dec2bdf2e503fe10364dd4bb5cf662288260..4ab448842dcbf7f0f45d4443d0bb007e
this.clearCache();
}
-@@ -518,13 +518,13 @@ public class ServerChunkCache extends ChunkSource {
+@@ -521,14 +521,14 @@ public class ServerChunkCache extends ChunkSource {
this.chunkMap.tick();
} else {
LevelData worlddata = this.level.getLevelData();
@@ -501,6 +502,7 @@ index 9dc3dec2bdf2e503fe10364dd4bb5cf662288260..4ab448842dcbf7f0f45d4443d0bb007e
- gameprofilerfiller.push("pollingChunks");
+ //gameprofilerfiller.push("pollingChunks"); // Purpur
+ this.level.resetIceAndSnowTick(); // Pufferfish - reset ice & snow tick random
int k = this.level.getGameRules().getInt(GameRules.RULE_RANDOMTICKING);
boolean flag1 = level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit
@@ -509,10 +511,10 @@ index 9dc3dec2bdf2e503fe10364dd4bb5cf662288260..4ab448842dcbf7f0f45d4443d0bb007e
//this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur
int l = this.distanceManager.getNaturalSpawnChunkCount();
// Paper start - per player mob spawning
-@@ -552,14 +552,14 @@ public class ServerChunkCache extends ChunkSource {
+@@ -563,14 +563,14 @@ public class ServerChunkCache extends ChunkSource {
//this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur
- this.lastSpawnState = spawnercreature_d;
+ //this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously
- gameprofilerfiller.popPush("filteringLoadedChunks");
+ //gameprofilerfiller.popPush("filteringLoadedChunks"); // Purpur
// Paper - optimise chunk tick iteration
@@ -526,7 +528,7 @@ index 9dc3dec2bdf2e503fe10364dd4bb5cf662288260..4ab448842dcbf7f0f45d4443d0bb007e
boolean flag2 = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit
// Paper start - optimise chunk tick iteration
-@@ -662,14 +662,14 @@ public class ServerChunkCache extends ChunkSource {
+@@ -673,14 +673,14 @@ public class ServerChunkCache extends ChunkSource {
}
// Paper end - optimise chunk tick iteration
//this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur
@@ -543,7 +545,7 @@ index 9dc3dec2bdf2e503fe10364dd4bb5cf662288260..4ab448842dcbf7f0f45d4443d0bb007e
// Paper - optimise chunk tick iteration
//this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur
// Paper start - optimise chunk tick iteration
-@@ -687,8 +687,8 @@ public class ServerChunkCache extends ChunkSource {
+@@ -698,8 +698,8 @@ public class ServerChunkCache extends ChunkSource {
// Paper end - optimise chunk tick iteration
//this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur
// Paper - optimise chunk tick iteration
@@ -553,8 +555,8 @@ index 9dc3dec2bdf2e503fe10364dd4bb5cf662288260..4ab448842dcbf7f0f45d4443d0bb007e
+ //gameprofilerfiller.pop(); // Purpur
this.chunkMap.tick();
}
- }
-@@ -861,7 +861,7 @@ public class ServerChunkCache extends ChunkSource {
+
+@@ -906,7 +906,7 @@ public class ServerChunkCache extends ChunkSource {
@Override
protected void doRunTask(Runnable task) {
@@ -564,7 +566,7 @@ index 9dc3dec2bdf2e503fe10364dd4bb5cf662288260..4ab448842dcbf7f0f45d4443d0bb007e
}
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index b1f5ccd309f84f7b53d16ad6241bb4cb1bdd0726..db3c7b914a301005ba7fa92c7c042777b2fbda72 100644
+index 68a29b818db34ef0263704d7b6d71b9a44d905e5..f86d6d6625f2ea6c4fce02fd19ffb9ac7cd64925 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -823,12 +823,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -640,7 +642,7 @@ index b1f5ccd309f84f7b53d16ad6241bb4cb1bdd0726..db3c7b914a301005ba7fa92c7c042777
}
org.spigotmc.ActivationRange.activateEntities(this); // Spigot
-@@ -903,9 +903,9 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -904,9 +904,9 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
entity.discard();
} else {
@@ -652,13 +654,19 @@ index b1f5ccd309f84f7b53d16ad6241bb4cb1bdd0726..db3c7b914a301005ba7fa92c7c042777
if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - now always true if in the ticking list
Entity entity1 = entity.getVehicle();
-@@ -917,22 +917,21 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -918,7 +918,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
entity.stopRiding();
}
- gameprofilerfiller.push("tick");
+ //gameprofilerfiller.push("tick"); // Purpur
- this.guardEntityTick(this::tickNonPassenger, entity);
+ // Pufferfish start - copied from this.guardEntityTick
+ try {
+ this.tickNonPassenger(entity); // Pufferfish - changed
+@@ -933,20 +933,19 @@ public class ServerLevel extends Level implements WorldGenLevel {
+ // Paper end
+ }
+ // Pufferfish end
- gameprofilerfiller.pop();
+ //gameprofilerfiller.pop(); // Purpur
}
@@ -679,7 +687,7 @@ index b1f5ccd309f84f7b53d16ad6241bb4cb1bdd0726..db3c7b914a301005ba7fa92c7c042777
}
@Override
-@@ -1012,9 +1011,9 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1028,9 +1027,9 @@ public class ServerLevel extends Level implements WorldGenLevel {
boolean flag = this.isRaining();
int j = chunkcoordintpair.getMinBlockX();
int k = chunkcoordintpair.getMinBlockZ();
@@ -690,8 +698,8 @@ index b1f5ccd309f84f7b53d16ad6241bb4cb1bdd0726..db3c7b914a301005ba7fa92c7c042777
+ //gameprofilerfiller.push("thunder"); // Purpur
final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change
- if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - disable thunder
-@@ -1053,7 +1052,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+ if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - disable thunder // Pufferfish - replace random with shouldDoLightning
+@@ -1069,7 +1068,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
}
@@ -700,7 +708,7 @@ index b1f5ccd309f84f7b53d16ad6241bb4cb1bdd0726..db3c7b914a301005ba7fa92c7c042777
if (!this.paperConfig().environment.disableIceAndSnow) { // Paper
for (int l = 0; l < randomTickSpeed; ++l) {
-@@ -1065,7 +1064,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1081,7 +1080,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
} // Paper
// Paper start - optimise random block ticking
@@ -709,7 +717,7 @@ index b1f5ccd309f84f7b53d16ad6241bb4cb1bdd0726..db3c7b914a301005ba7fa92c7c042777
//timings.chunkTicksBlocks.startTiming(); // Paper // Purpur
if (randomTickSpeed > 0) {
LevelChunkSection[] sections = chunk.getSections();
-@@ -1100,7 +1099,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1116,7 +1115,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
// Paper end - optimise random block ticking
//timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur
@@ -718,7 +726,7 @@ index b1f5ccd309f84f7b53d16ad6241bb4cb1bdd0726..db3c7b914a301005ba7fa92c7c042777
}
private void tickIceAndSnow(boolean raining, BlockPos.MutableBlockPos blockposition1, final LevelChunk chunk) { // Paper - optimise chunk ticking
-@@ -1442,19 +1441,19 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1458,19 +1457,19 @@ public class ServerLevel extends Level implements WorldGenLevel {
//try { // Purpur
// Paper end - timings
entity.setOldPosAndRot();
@@ -743,7 +751,7 @@ index b1f5ccd309f84f7b53d16ad6241bb4cb1bdd0726..db3c7b914a301005ba7fa92c7c042777
//} finally { timer.stopTiming(); } // Paper - timings // Purpur
Iterator iterator = entity.getPassengers().iterator();
-@@ -1483,12 +1482,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1499,12 +1498,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
// Paper end
passenger.setOldPosAndRot();
++passenger.tickCount;
@@ -760,7 +768,7 @@ index b1f5ccd309f84f7b53d16ad6241bb4cb1bdd0726..db3c7b914a301005ba7fa92c7c042777
// Paper start - EAR 2
if (isActive) {
passenger.rideTick();
-@@ -1500,7 +1499,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1516,7 +1515,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
vehicle.positionRider(passenger);
}
// Paper end - EAR 2
@@ -1029,10 +1037,10 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47
};
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 28cac00d496cc6e37648dbe96ba4aea2b834cedd..6e0331818ef68fa355e3c27dc3e362b82d1c6e3a 100644
+index 307eac4114192a7f0e6633e3df5a5e7a54ad22ba..b4255bf0fbf5599ae86cd372e5c9f1ad4fde00d4 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -797,7 +797,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -809,7 +809,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
// CraftBukkit end
public void baseTick() {
@@ -1041,7 +1049,7 @@ index 28cac00d496cc6e37648dbe96ba4aea2b834cedd..6e0331818ef68fa355e3c27dc3e362b8
if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Update last hurt when ticking
this.feetBlockState = null;
if (this.isPassenger() && this.getVehicle().isRemoved()) {
-@@ -858,7 +858,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -870,7 +870,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
this.firstTick = false;
@@ -1050,7 +1058,7 @@ index 28cac00d496cc6e37648dbe96ba4aea2b834cedd..6e0331818ef68fa355e3c27dc3e362b8
}
public void setSharedFlagOnFire(boolean onFire) {
-@@ -1077,7 +1077,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -1089,7 +1089,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
}
@@ -1059,7 +1067,7 @@ index 28cac00d496cc6e37648dbe96ba4aea2b834cedd..6e0331818ef68fa355e3c27dc3e362b8
if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) {
movement = movement.multiply(this.stuckSpeedMultiplier);
this.stuckSpeedMultiplier = Vec3.ZERO;
-@@ -1086,7 +1086,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -1098,7 +1098,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
// Paper start - ignore movement changes while inactive.
if (isTemporarilyActive && !(this instanceof ItemEntity || this instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) && movement == getDeltaMovement() && movementType == MoverType.SELF) {
setDeltaMovement(Vec3.ZERO);
@@ -1068,7 +1076,7 @@ index 28cac00d496cc6e37648dbe96ba4aea2b834cedd..6e0331818ef68fa355e3c27dc3e362b8
return;
}
// Paper end
-@@ -1107,8 +1107,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -1119,8 +1119,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z);
}
@@ -1079,7 +1087,7 @@ index 28cac00d496cc6e37648dbe96ba4aea2b834cedd..6e0331818ef68fa355e3c27dc3e362b8
boolean flag = !Mth.equal(movement.x, vec3d1.x);
boolean flag1 = !Mth.equal(movement.z, vec3d1.z);
-@@ -1127,7 +1127,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -1139,7 +1139,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition);
if (this.isRemoved()) {
@@ -1088,7 +1096,7 @@ index 28cac00d496cc6e37648dbe96ba4aea2b834cedd..6e0331818ef68fa355e3c27dc3e362b8
} else {
if (this.horizontalCollision) {
Vec3 vec3d2 = this.getDeltaMovement();
-@@ -1265,7 +1265,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -1277,7 +1277,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
this.setRemainingFireTicks(-this.getFireImmuneTicks());
}
@@ -1097,7 +1105,7 @@ index 28cac00d496cc6e37648dbe96ba4aea2b834cedd..6e0331818ef68fa355e3c27dc3e362b8
}
}
// Paper start - detailed watchdog information
-@@ -3113,7 +3113,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -3125,7 +3125,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
ServerLevel worldserver1 = minecraftserver.getLevel(resourcekey);
if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit
@@ -1106,7 +1114,7 @@ index 28cac00d496cc6e37648dbe96ba4aea2b834cedd..6e0331818ef68fa355e3c27dc3e362b8
this.portalTime = i;
// Paper start
io.papermc.paper.event.entity.EntityPortalReadyEvent event = new io.papermc.paper.event.entity.EntityPortalReadyEvent(this.getBukkitEntity(), worldserver1 == null ? null : worldserver1.getWorld(), org.bukkit.PortalType.NETHER);
-@@ -3131,7 +3131,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -3143,7 +3143,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
} // Paper
// CraftBukkit end
@@ -1115,7 +1123,7 @@ index 28cac00d496cc6e37648dbe96ba4aea2b834cedd..6e0331818ef68fa355e3c27dc3e362b8
}
this.isInsidePortal = false;
-@@ -3606,14 +3606,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -3618,14 +3618,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
// Paper end
if (this.level() instanceof ServerLevel && !this.isRemoved()) {
@@ -1132,7 +1140,7 @@ index 28cac00d496cc6e37648dbe96ba4aea2b834cedd..6e0331818ef68fa355e3c27dc3e362b8
PortalInfo shapedetectorshape = (location == null) ? this.findDimensionEntryPoint(worldserver) : new PortalInfo(new Vec3(location.x(), location.y(), location.z()), Vec3.ZERO, this.yRot, this.xRot, worldserver, null); // CraftBukkit
if (shapedetectorshape == null) {
-@@ -3652,7 +3652,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -3664,7 +3664,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
this.unRide();
// CraftBukkit end
@@ -1141,7 +1149,7 @@ index 28cac00d496cc6e37648dbe96ba4aea2b834cedd..6e0331818ef68fa355e3c27dc3e362b8
// Paper start - Change lead drop timing to prevent dupe
if (this instanceof Mob) {
((Mob) this).dropLeash(true, true); // Paper drop lead
-@@ -3675,10 +3675,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -3687,10 +3687,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
this.removeAfterChangingDimensions();
@@ -1155,10 +1163,10 @@ index 28cac00d496cc6e37648dbe96ba4aea2b834cedd..6e0331818ef68fa355e3c27dc3e362b8
}
} else {
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 3380ffce121b3e4d503021c7f8a47501d3f50811..78841e0280680c720cd05ac75cbe6f70a330cad0 100644
+index ffc25a5f8e8ec479a7454920ccf66ef1e4ce4f71..7a5f51c9585c280c51b4dbe5e6848d7e07fa7386 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -411,7 +411,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -410,7 +410,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
super.baseTick();
@@ -1167,7 +1175,7 @@ index 3380ffce121b3e4d503021c7f8a47501d3f50811..78841e0280680c720cd05ac75cbe6f70
if (this.fireImmune() || this.level().isClientSide) {
this.clearFire();
}
-@@ -514,7 +514,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -513,7 +513,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.yHeadRotO = this.yHeadRot;
this.yRotO = this.getYRot();
this.xRotO = this.getXRot();
@@ -1176,7 +1184,7 @@ index 3380ffce121b3e4d503021c7f8a47501d3f50811..78841e0280680c720cd05ac75cbe6f70
}
public boolean canSpawnSoulSpeedParticle() {
-@@ -3136,10 +3136,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3162,10 +3162,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
this.run += (f3 - this.run) * 0.3F;
@@ -1190,7 +1198,7 @@ index 3380ffce121b3e4d503021c7f8a47501d3f50811..78841e0280680c720cd05ac75cbe6f70
// Paper start - stop large pitch and yaw changes from crashing the server
this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F;
-@@ -3151,7 +3151,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3177,7 +3177,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F;
// Paper end
@@ -1199,7 +1207,7 @@ index 3380ffce121b3e4d503021c7f8a47501d3f50811..78841e0280680c720cd05ac75cbe6f70
this.animStep += f2;
if (this.isFallFlying()) {
++this.fallFlyTicks;
-@@ -3441,19 +3441,19 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3467,19 +3467,19 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
this.setDeltaMovement(d0, d1, d2);
@@ -1224,7 +1232,7 @@ index 3380ffce121b3e4d503021c7f8a47501d3f50811..78841e0280680c720cd05ac75cbe6f70
if (this.jumping && this.isAffectedByFluids()) {
double d3;
-@@ -3480,8 +3480,8 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3506,8 +3506,8 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.noJumpDelay = 0;
}
@@ -1235,7 +1243,7 @@ index 3380ffce121b3e4d503021c7f8a47501d3f50811..78841e0280680c720cd05ac75cbe6f70
this.xxa *= 0.98F;
this.zza *= 0.98F;
this.updateFallFlying();
-@@ -3508,8 +3508,8 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3534,8 +3534,8 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.travel(vec3d1);
}
@@ -1246,7 +1254,7 @@ index 3380ffce121b3e4d503021c7f8a47501d3f50811..78841e0280680c720cd05ac75cbe6f70
if (!this.level().isClientSide && !this.isDeadOrDying() && !freezeLocked) { // Paper - Freeze Tick Lock API
int i = this.getTicksFrozen();
-@@ -3526,15 +3526,15 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3552,15 +3552,15 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.hurt(this.damageSources().freeze(), 1.0F);
}
@@ -1266,10 +1274,10 @@ index 3380ffce121b3e4d503021c7f8a47501d3f50811..78841e0280680c720cd05ac75cbe6f70
// Purpur start
if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) {
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index eafc2eb59616fa4a310a5eee0844a9957cd9f4de..2d2fa961648d36d3fab4d3b8da4e2cd6e1cf9dc7 100644
+index 547279a379190c2339d6335e00faf7730be6d0f0..599094f231787db475882c38721b724a2e3bf41c 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
-@@ -364,13 +364,13 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -366,13 +366,13 @@ public abstract class Mob extends LivingEntity implements Targeting {
@Override
public void baseTick() {
super.baseTick();
@@ -1285,7 +1293,7 @@ index eafc2eb59616fa4a310a5eee0844a9957cd9f4de..2d2fa961648d36d3fab4d3b8da4e2cd6
incrementTicksSinceLastInteraction(); // Purpur
}
-@@ -701,7 +701,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -703,7 +703,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
@Override
public void aiStep() {
super.aiStep();
@@ -1294,7 +1302,7 @@ index eafc2eb59616fa4a310a5eee0844a9957cd9f4de..2d2fa961648d36d3fab4d3b8da4e2cd6
if (!this.level().isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && (this.level().purpurConfig.entitiesPickUpLootBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) {
Vec3i baseblockposition = this.getPickupReach();
List list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ()));
-@@ -721,7 +721,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -723,7 +723,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
}
}
@@ -1303,7 +1311,7 @@ index eafc2eb59616fa4a310a5eee0844a9957cd9f4de..2d2fa961648d36d3fab4d3b8da4e2cd6
}
protected Vec3i getPickupReach() {
-@@ -935,42 +935,42 @@ public abstract class Mob extends LivingEntity implements Targeting {
+@@ -937,46 +937,46 @@ public abstract class Mob extends LivingEntity implements Targeting {
return;
}
// Paper end
@@ -1317,22 +1325,26 @@ index eafc2eb59616fa4a310a5eee0844a9957cd9f4de..2d2fa961648d36d3fab4d3b8da4e2cd6
if (i % 2 != 0 && this.tickCount > 1) {
- this.level().getProfiler().push("targetSelector");
+ //this.level().getProfiler().push("targetSelector"); // Purpur
+ 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");
+ //this.level().getProfiler().pop(); // Purpur
+ //this.level().getProfiler().push("goalSelector"); // Purpur
+ if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking
this.goalSelector.tickRunningGoals(false);
- this.level().getProfiler().pop();
+ //this.level().getProfiler().pop(); // Purpur
} else {
- this.level().getProfiler().push("targetSelector");
+ //this.level().getProfiler().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");
+ //this.level().getProfiler().pop(); // Purpur
+ //this.level().getProfiler().push("goalSelector"); // Purpur
+ if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking
this.goalSelector.tick();
- this.level().getProfiler().pop();
+ //this.level().getProfiler().pop(); // Purpur
@@ -1367,10 +1379,10 @@ index eafc2eb59616fa4a310a5eee0844a9957cd9f4de..2d2fa961648d36d3fab4d3b8da4e2cd6
}
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 b738ee2d3801fadfd09313f05ae24593e56b0ec6..8a70bc63e12838f45fa3eade74f2899438715886 100644
+index 1635818fc4b1788c0d397085239df6dd75b210ab..02978315bc2b828cc603ce7478408f3f82c249c2 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
-@@ -102,8 +102,8 @@ public class GoalSelector {
+@@ -105,8 +105,8 @@ public class GoalSelector {
}
public void tick() {
@@ -1381,7 +1393,7 @@ index b738ee2d3801fadfd09313f05ae24593e56b0ec6..8a70bc63e12838f45fa3eade74f28994
for(WrappedGoal wrappedGoal : this.availableGoals) {
if (wrappedGoal.isRunning() && (goalContainsAnyFlags(wrappedGoal, this.goalTypes) || !wrappedGoal.canContinueToUse())) {
-@@ -120,8 +120,8 @@ public class GoalSelector {
+@@ -123,8 +123,8 @@ public class GoalSelector {
}
}
@@ -1392,7 +1404,7 @@ index b738ee2d3801fadfd09313f05ae24593e56b0ec6..8a70bc63e12838f45fa3eade74f28994
for(WrappedGoal wrappedGoal2 : this.availableGoals) {
// Paper start
-@@ -141,13 +141,13 @@ public class GoalSelector {
+@@ -144,13 +144,13 @@ public class GoalSelector {
}
}
@@ -1409,7 +1421,7 @@ index b738ee2d3801fadfd09313f05ae24593e56b0ec6..8a70bc63e12838f45fa3eade74f28994
for(WrappedGoal wrappedGoal : this.availableGoals) {
if (wrappedGoal.isRunning() && (tickAll || wrappedGoal.requiresUpdateEveryTick())) {
-@@ -155,7 +155,7 @@ public class GoalSelector {
+@@ -158,7 +158,7 @@ public class GoalSelector {
}
}
@@ -1454,16 +1466,16 @@ index 51772f03a3469b11e7166ec6f3a1b9c64a606221..02f2f46ccc48bb4d9bd08555818b0489
this.seen.add(i);
} else {
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 80ff5b8b2041afd7ffef99c33ecd4f5252e827fe..f9af021350df28f286028099d857f034bc03913b 100644
+index 09f796ec491f21520e1fcc454249e4696dad3b1b..9bf06cf7b3706f8883e1a0ceac8b1aebb52ba475 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
-@@ -258,13 +258,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
-
+@@ -259,13 +259,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
+ private int behaviorTick = 0; // Pufferfish
@Override
protected void customServerAiStep() {
- this.level().getProfiler().push("allayBrain");
+ //this.level().getProfiler().push("allayBrain"); // Purpur
- //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish
+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider
this.getBrain().tick((ServerLevel) this.level(), this);
- this.level().getProfiler().pop();
- this.level().getProfiler().push("allayActivityUpdate");
@@ -1476,16 +1488,15 @@ index 80ff5b8b2041afd7ffef99c33ecd4f5252e827fe..f9af021350df28f286028099d857f034
}
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 38bd4f2325320b63407e5537a8e8744b96abfe95..943bda9f2767c4a4bcb57fb57e1bfaf4093fa0b9 100644
+index 7223528b4fb2885e0f6c0df2238cada16dbed35e..61cd0e050a2784f1d59ed3c9493e2386ef5fc3bb 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
-@@ -319,13 +319,13 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder {
-
+@@ -220,13 +220,13 @@ public class Frog extends Animal implements VariantHolder {
+ private int behaviorTick = 0; // Pufferfish
@Override
protected void customServerAiStep() {
- this.level().getProfiler().push("frogBrain");
+ //this.level().getProfiler().push("frogBrain"); // Purpur
- //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish
+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider
this.getBrain().tick((ServerLevel)this.level(), this);
- this.level().getProfiler().pop();
- this.level().getProfiler().push("frogActivityUpdate");
@@ -1542,16 +1553,16 @@ index 7ac51b7c53c89f15661a1fe0b00d07de40f64d81..420ece09271aa745b1b7123d5a72bcc6
}
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 b3533626fd12686d6ebb3330874f805c99a1f5f2..d34718fcde19c8bace0fe9d44f4f97b7a156dae4 100644
+index af8438ae8c805d3276ef2d82eb39b08880fcc8a1..6b012bea26e8ef0c04571f43da67f6e108188830 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
-@@ -116,13 +116,13 @@ public class Tadpole extends AbstractFish {
-
+@@ -117,13 +117,13 @@ public class Tadpole extends AbstractFish {
+ private int behaviorTick = 0; // Pufferfish
@Override
protected void customServerAiStep() {
- this.level().getProfiler().push("tadpoleBrain");
+ //this.level().getProfiler().push("tadpoleBrain"); // Purpur
- //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish
+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider
this.getBrain().tick((ServerLevel) this.level(), this);
- this.level().getProfiler().pop();
- this.level().getProfiler().push("tadpoleActivityUpdate");
@@ -1564,16 +1575,16 @@ index b3533626fd12686d6ebb3330874f805c99a1f5f2..d34718fcde19c8bace0fe9d44f4f97b7
}
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 d8e6208b9238c6840fa6990866e64c830566bf0e..976834b381a629b026e42ac0dcb3a8885d24b113 100644
+index fba00cab2c4b234dd2e85b5f4dcd0db34183c1a2..806b207e5246db7daa03bebabd7aa574d8b0dab7 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
-@@ -225,13 +225,13 @@ public class Goat extends Animal {
-
+@@ -226,13 +226,13 @@ public class Goat extends Animal {
+ private int behaviorTick = 0; // Pufferfish
@Override
protected void customServerAiStep() {
- this.level().getProfiler().push("goatBrain");
+ //this.level().getProfiler().push("goatBrain"); // Purpur
- //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish
+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider
this.getBrain().tick((ServerLevel) this.level(), this);
- this.level().getProfiler().pop();
- this.level().getProfiler().push("goatActivityUpdate");
@@ -1622,16 +1633,16 @@ index 15fd1af0773ba1254a429240444f48e68e29ee74..1d36459ee10da702d65b4a6d139a05fd
}
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 d709178522abd982de78946e859a14cab50e9818..70f88aed0a19a875a3ab2cd0880d51bcfd24126b 100644
+index e326e753cc6bca1bd00287d16c9796b9f3dd4d14..9d6c4f13c4a444c6c815c6c4f2114142f166b9bb 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
-@@ -167,10 +167,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
-
+@@ -168,10 +168,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
+ private int behaviorTick; // Pufferfish
@Override
protected void customServerAiStep() {
- this.level().getProfiler().push("hoglinBrain");
+ //this.level().getProfiler().push("hoglinBrain"); // Purpur
- //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - Pufferfish
+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider
this.getBrain().tick((ServerLevel)this.level(), this);
- this.level().getProfiler().pop();
+ //this.level().getProfiler().pop(); // Purpur
@@ -1639,16 +1650,16 @@ index d709178522abd982de78946e859a14cab50e9818..70f88aed0a19a875a3ab2cd0880d51bc
if (this.isConverting()) {
++this.timeInOverworld;
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 4169e11a3ad40f5b11fd9ab69ee85ae5be31265b..a667b327935efd15318f9f27d81fe73aabc93484 100644
+index 9ca1618ab945ad834c5fc221ada49058f806e79c..8e829d522a6012f409161ad5a9a06721a942d7e4 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
-@@ -334,10 +334,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
-
+@@ -335,10 +335,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
+ private int behaviorTick; // Pufferfish
@Override
protected void customServerAiStep() {
- this.level().getProfiler().push("piglinBrain");
+ //this.level().getProfiler().push("piglinBrain"); // Purpur
- //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish
+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider
this.getBrain().tick((ServerLevel) this.level(), this);
- this.level().getProfiler().pop();
+ //this.level().getProfiler().pop(); // Purpur
@@ -1673,15 +1684,16 @@ index 61e8f2d030fc50840c3f80dfb6fc810797ec440f..856e6e02c9424a6c06e310262cb4f5bd
PiglinBruteAi.maybePlayActivitySound(this);
super.customServerAiStep();
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 c31a23faa07e3261d609bbecae0c2f3b15a382c6..b7a2edd9fb90931bb89d4f3004f1bdc051aeb053 100644
+index 250af1ce7a93c2d2897f35c68fae319c9ba7d55d..5e66c2bd3807619cadee5b7081d93d21886e2806 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
-@@ -300,9 +300,9 @@ public class Warden extends Monster implements VibrationSystem {
+@@ -301,10 +301,10 @@ public class Warden extends Monster implements VibrationSystem {
protected void customServerAiStep() {
ServerLevel worldserver = (ServerLevel) this.level();
- worldserver.getProfiler().push("wardenBrain");
+ //worldserver.getProfiler().push("wardenBrain"); // Purpur
+ if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish
this.getBrain().tick(worldserver, this);
- this.level().getProfiler().pop();
+ //this.level().getProfiler().pop(); // Purpur
@@ -1689,10 +1701,10 @@ index c31a23faa07e3261d609bbecae0c2f3b15a382c6..b7a2edd9fb90931bb89d4f3004f1bdc0
if ((this.tickCount + this.getId()) % 120 == 0) {
Warden.applyDarknessAround(worldserver, this.position(), this, 20);
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 99928a3a8954be0d5b1f7736c12dbbb10d4c508c..b9c964a4f9a89259605a09e2a8eb0f7ae94ae24f 100644
+index 9682676aa68cf5927facd60ef061006579c1f893..81bb48853acb34ad2f26da43b4d81620a9bfcc4f 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-@@ -339,7 +339,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -342,7 +342,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
}
protected void customServerAiStep(boolean inactive) { // Purpur - not final
// Paper end
@@ -1701,10 +1713,10 @@ index 99928a3a8954be0d5b1f7736c12dbbb10d4c508c..b9c964a4f9a89259605a09e2a8eb0f7a
// Purpur start
if (this.level().purpurConfig.villagerLobotomizeEnabled) {
// treat as inactive if lobotomized
-@@ -353,7 +353,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
- else */if (this.isLobotomized && shouldRestock()) restock();
+@@ -355,7 +355,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+ this.getBrain().tick((ServerLevel) this.level(), this); // Paper
+ else if (this.isLobotomized && shouldRestock()) restock();
// Purpur end
- if (!inactive) this.getBrain().tick((ServerLevel) this.level(), this); // Paper
- this.level().getProfiler().pop();
+ //this.level().getProfiler().pop(); // Purpur
if (this.assignProfessionWhenSpawned) {
@@ -1733,10 +1745,10 @@ index 45243249a561440512ef2a620c60b02e159c80e2..b26cea981a876fd42c9ab91923d507b3
}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index 10276a6b2b311f9cf45b030e4dbb46e44faa04a5..4e8738531ea388733c41dbb408eb43c1e3c88fad 100644
+index fc27f690d302559dd534e9f4ede7a7bd6422837a..a90288a86b022b4f9682befcb1478671e861ca41 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -1299,9 +1299,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1301,9 +1301,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}
protected void tickBlockEntities() {
@@ -1748,7 +1760,7 @@ index 10276a6b2b311f9cf45b030e4dbb46e44faa04a5..4e8738531ea388733c41dbb408eb43c1
//timings.tileEntityPending.startTiming(); // Spigot // Purpur
this.tickingBlockEntities = true;
if (!this.pendingBlockEntityTickers.isEmpty()) {
-@@ -1346,7 +1346,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1348,7 +1348,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
//timings.tileEntityTick.stopTiming(); // Spigot // Purpur
this.tickingBlockEntities = false;
co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper
@@ -1757,7 +1769,7 @@ index 10276a6b2b311f9cf45b030e4dbb46e44faa04a5..4e8738531ea388733c41dbb408eb43c1
spigotConfig.currentPrimedTnt = 0; // Spigot
}
-@@ -1549,7 +1549,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1551,7 +1551,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@Override
public List getEntities(@Nullable Entity except, AABB box, Predicate super Entity> predicate) {
@@ -1766,7 +1778,7 @@ index 10276a6b2b311f9cf45b030e4dbb46e44faa04a5..4e8738531ea388733c41dbb408eb43c1
List list = Lists.newArrayList();
((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call
return list;
-@@ -1568,7 +1568,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1570,7 +1570,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}
public void getEntities(EntityTypeTest filter, AABB box, Predicate super T> predicate, List super T> result, int limit) {
@@ -1775,16 +1787,17 @@ index 10276a6b2b311f9cf45b030e4dbb46e44faa04a5..4e8738531ea388733c41dbb408eb43c1
// Paper start - optimise this call
//TODO use limit
if (filter instanceof net.minecraft.world.entity.EntityType entityTypeTest) {
-@@ -1825,6 +1825,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+@@ -1827,7 +1827,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}
public ProfilerFiller getProfiler() {
-+ //if (true || gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish // Purpur // Purpur - TODO: Pufferfish
+- if (gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish
++ if (true || gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish // Purpur
return (ProfilerFiller) this.profiler.get();
}
diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
-index 6a5dddfd120760b3334d8a4c4ebde84744083392..f3ff965e641f561dbc1b5194353e75dc17e9a0ba 100644
+index 1e3349690d00c7889a381f7c65a3b5bf3de2ac5b..524301e2438ee2938b59eb2b2e9fc4e0eb727a87 100644
--- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java
+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
@@ -132,7 +132,7 @@ public final class NaturalSpawner {
@@ -1806,10 +1819,10 @@ index 6a5dddfd120760b3334d8a4c4ebde84744083392..f3ff965e641f561dbc1b5194353e75dc
// Paper start
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 7d60f8a4e3fa15d81628bba0f6b3c1fc9040535b..8d385708df97d47881929d4352f1b90286aad1a2 100644
+index ad9f63e80975b816f71e12f3801ba9e10c1c0cff..6e9b9028f4ea2ff6ecb9398e36a30d70890bdfc5 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
-@@ -447,11 +447,11 @@ public class LevelChunk extends ChunkAccess {
+@@ -461,11 +461,11 @@ public class LevelChunk extends ChunkAccess {
if (LightEngine.hasDifferentLightProperties(this, blockposition, iblockdata1, iblockdata)) {
ProfilerFiller gameprofilerfiller = this.level.getProfiler();
@@ -1824,7 +1837,7 @@ index 7d60f8a4e3fa15d81628bba0f6b3c1fc9040535b..8d385708df97d47881929d4352f1b902
}
boolean flag3 = iblockdata1.hasBlockEntity();
-@@ -1165,9 +1165,9 @@ public class LevelChunk extends ChunkAccess {
+@@ -1179,9 +1179,9 @@ public class LevelChunk extends ChunkAccess {
if (LevelChunk.this.isTicking(blockposition)) {
try {
@@ -1836,7 +1849,7 @@ index 7d60f8a4e3fa15d81628bba0f6b3c1fc9040535b..8d385708df97d47881929d4352f1b902
//this.blockEntity.tickTimer.startTiming(); // Spigot // Purpur
BlockState iblockdata = LevelChunk.this.getBlockState(blockposition);
-@@ -1179,7 +1179,7 @@ public class LevelChunk extends ChunkAccess {
+@@ -1193,7 +1193,7 @@ public class LevelChunk extends ChunkAccess {
LevelChunk.LOGGER.warn("Block entity {} @ {} state {} invalid for ticking:", new Object[]{LogUtils.defer(this::getType), LogUtils.defer(this::getPos), iblockdata});
}
diff --git a/patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch
similarity index 94%
rename from patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch
rename to patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch
index b5762e1f8..720b95303 100644
--- a/patches/server/0266-Add-more-logger-output-for-invalid-movement-kicks.patch
+++ b/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add more logger output for invalid movement kicks
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index d01116aa7b547e5020b69df36cdf035af2cae882..0ee059162e65a95db2f2e3473d2dbf0de38859da 100644
+index 0c56b90dbcb4aaf904eeb1773a1aa82e9e018c50..165623f5abc237e63b236489af6375bb43daeaca 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -736,6 +736,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -16,7 +16,7 @@ index d01116aa7b547e5020b69df36cdf035af2cae882..0ee059162e65a95db2f2e3473d2dbf0d
return;
}
-@@ -1323,8 +1324,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -1324,8 +1325,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@Override
public void handleMovePlayer(ServerboundMovePlayerPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
diff --git a/patches/server/0267-Add-Bee-API.patch b/patches/server/0269-Add-Bee-API.patch
similarity index 100%
rename from patches/server/0267-Add-Bee-API.patch
rename to patches/server/0269-Add-Bee-API.patch
diff --git a/patches/server/0268-Debug-Marker-API.patch b/patches/server/0270-Debug-Marker-API.patch
similarity index 97%
rename from patches/server/0268-Debug-Marker-API.patch
rename to patches/server/0270-Debug-Marker-API.patch
index d82144f1a..d25180481 100644
--- a/patches/server/0268-Debug-Marker-API.patch
+++ b/patches/server/0270-Debug-Marker-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 2ec27193ea3444de71c05949952cc129eed4ea0c..207b502c8df60357971e69263c1d1496b83391ba 100644
+index 6e8cd10ec919e9c42c214a9a9c78a51794731fb6..2b3b9be41930a73886735394e12f6e3eab800fb2 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-@@ -1543,6 +1543,42 @@ public final class CraftServer implements Server {
+@@ -1548,6 +1548,42 @@ public final class CraftServer implements Server {
public void removeFuel(org.bukkit.Material material) {
net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity.removeFuel(net.minecraft.world.item.ItemStack.fromBukkitCopy(new ItemStack(material)));
}
diff --git a/patches/server/0269-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0271-mob-spawning-option-to-ignore-creative-players.patch
similarity index 96%
rename from patches/server/0269-mob-spawning-option-to-ignore-creative-players.patch
rename to patches/server/0271-mob-spawning-option-to-ignore-creative-players.patch
index 567d4d6b6..dd1268f05 100644
--- a/patches/server/0269-mob-spawning-option-to-ignore-creative-players.patch
+++ b/patches/server/0271-mob-spawning-option-to-ignore-creative-players.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] mob spawning option to ignore creative players
diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
-index f3ff965e641f561dbc1b5194353e75dc17e9a0ba..51a4d0b212278a20363fd0d3cb253f0e3047e961 100644
+index 524301e2438ee2938b59eb2b2e9fc4e0eb727a87..a2a59dd2e515bf4dca84a442703c122fd36f05e0 100644
--- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java
+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
@@ -258,7 +258,7 @@ public final class NaturalSpawner {
diff --git a/patches/server/0270-Add-skeleton-bow-accuracy-option.patch b/patches/server/0272-Add-skeleton-bow-accuracy-option.patch
similarity index 100%
rename from patches/server/0270-Add-skeleton-bow-accuracy-option.patch
rename to patches/server/0272-Add-skeleton-bow-accuracy-option.patch
diff --git a/patches/server/0271-Allay-respect-item-NBT.patch b/patches/server/0273-Allay-respect-item-NBT.patch
similarity index 94%
rename from patches/server/0271-Allay-respect-item-NBT.patch
rename to patches/server/0273-Allay-respect-item-NBT.patch
index a538e1abd..f0b8b115c 100644
--- a/patches/server/0271-Allay-respect-item-NBT.patch
+++ b/patches/server/0273-Allay-respect-item-NBT.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Allay respect item NBT
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 f9af021350df28f286028099d857f034bc03913b..b3e92d3fb6fbadfc6df236754123bc12ad9bc7e7 100644
+index 9bf06cf7b3706f8883e1a0ceac8b1aebb52ba475..c783ce59ea766e6c46a3313628b961f27e01ee8b 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
-@@ -405,9 +405,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
+@@ -406,9 +406,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
@Override
public boolean wantsToPickUp(ItemStack stack) {
diff --git a/patches/server/0272-Add-death-screen-API.patch b/patches/server/0274-Add-death-screen-API.patch
similarity index 100%
rename from patches/server/0272-Add-death-screen-API.patch
rename to patches/server/0274-Add-death-screen-API.patch
diff --git a/patches/unapplied/server/0277-Make-pufferfish-config-relocatable.patch b/patches/server/0275-Make-pufferfish-config-relocatable.patch
similarity index 90%
rename from patches/unapplied/server/0277-Make-pufferfish-config-relocatable.patch
rename to patches/server/0275-Make-pufferfish-config-relocatable.patch
index 3970a76c1..6ae92addc 100644
--- a/patches/unapplied/server/0277-Make-pufferfish-config-relocatable.patch
+++ b/patches/server/0275-Make-pufferfish-config-relocatable.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Make pufferfish config relocatable
diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
-index 219fc5bbe7dfade0b3576e6e1e7e60e361fdee0f..3e36958365bc136516bafbaad0c168f7956406f1 100644
+index 26f08b7fb16484c39135ed172c246f76c9e089c7..9ca1494497ae53e56b1f81fda51b0b8bd02a6d03 100644
--- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
+++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
@@ -28,6 +28,7 @@ public class PufferfishConfig {
@@ -26,7 +26,7 @@ index 219fc5bbe7dfade0b3576e6e1e7e60e361fdee0f..3e36958365bc136516bafbaad0c168f7
if (configFile.exists()) {
try {
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
-index fa258f1a15a93db0c3401397433b184938412a9b..41db72915baa4c02b11a701dfdde09b66ba72476 100644
+index 207a76f91758a8643976414a8732573d488bf1df..813a3c0172f1152665b95104d155e5de40589b39 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -230,6 +230,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -38,7 +38,7 @@ index fa258f1a15a93db0c3401397433b184938412a9b..41db72915baa4c02b11a701dfdde09b6
gg.pufferfish.pufferfish.PufferfishCommand.init(); // Pufferfish
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
-index 75e10acdab366deea1ff47274424aeae11173c8c..9a3374a1236164194ef0df43ed639296cbe1c731 100644
+index 45f63f2fedee7bcab9cd3ebc3117cecd225b89d2..67c621fdc994b392dc961f79e1e3b97c2977adc4 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -179,6 +179,12 @@ public class Main {
diff --git a/patches/server/0273-Implement-ram-and-rambar-commands.patch b/patches/server/0276-Implement-ram-and-rambar-commands.patch
similarity index 100%
rename from patches/server/0273-Implement-ram-and-rambar-commands.patch
rename to patches/server/0276-Implement-ram-and-rambar-commands.patch
diff --git a/patches/server/0274-Add-item-packet-serialize-event.patch b/patches/server/0277-Add-item-packet-serialize-event.patch
similarity index 92%
rename from patches/server/0274-Add-item-packet-serialize-event.patch
rename to patches/server/0277-Add-item-packet-serialize-event.patch
index be390eb73..af1c75a4d 100644
--- a/patches/server/0274-Add-item-packet-serialize-event.patch
+++ b/patches/server/0277-Add-item-packet-serialize-event.patch
@@ -36,10 +36,10 @@ index 2e395962b555bef0ce1a98e1d768e7738f011535..40f51062624161892c780ddae05e2285
this.writeId(BuiltInRegistries.ITEM, item);
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 189c904a3b0ac2d2b889e118bfd7c75e6ec5da3e..9c4cec7cf323f6768a89358fa1a11b53ce335cd4 100644
+index 306195a8a57dc62379ffd856b214a651fd60e483..bc0dfdad161936d1881066f61de02e6c9a7ed8a7 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1547,6 +1547,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop this.getY() >= v)
&& (!(this instanceof Player player) || !player.getAbilities().invulnerable))) {
// Paper end
diff --git a/patches/server/0285-Added-got-ram-event.patch b/patches/server/0288-Added-got-ram-event.patch
similarity index 86%
rename from patches/server/0285-Added-got-ram-event.patch
rename to patches/server/0288-Added-got-ram-event.patch
index f98adaa1b..b9275a0e9 100644
--- a/patches/server/0285-Added-got-ram-event.patch
+++ b/patches/server/0288-Added-got-ram-event.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Added got ram event
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 976834b381a629b026e42ac0dcb3a8885d24b113..7e36739ce44656f859bf63d0a07f10c8090d0839 100644
+index 806b207e5246db7daa03bebabd7aa574d8b0dab7..5d7b20c30bc5e3be8511b300c318d12a1e4a49d0 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
-@@ -428,6 +428,7 @@ public class Goat extends Animal {
+@@ -429,6 +429,7 @@ public class Goat extends Animal {
// Paper start - Goat ram API
public void ram(net.minecraft.world.entity.LivingEntity entity) {
diff --git a/patches/server/0286-Log-skipped-entity-s-position.patch b/patches/server/0289-Log-skipped-entity-s-position.patch
similarity index 86%
rename from patches/server/0286-Log-skipped-entity-s-position.patch
rename to patches/server/0289-Log-skipped-entity-s-position.patch
index f61af3ce4..eca731a8b 100644
--- a/patches/server/0286-Log-skipped-entity-s-position.patch
+++ b/patches/server/0289-Log-skipped-entity-s-position.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Log skipped entity's position
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
-index 55fced3e70c7bc49306af00dcc1d92ffb83a799b..a9f69e4f880711c21ef28bd079960ef8f12da25c 100644
+index 5d703e322bd220665c3ce3a41e40129b238ae150..5930e45bae5aa86b3cedb811c4c9bb92099bc1b5 100644
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
-@@ -611,6 +611,12 @@ public class EntityType implements FeatureElement, EntityTypeT
+@@ -613,6 +613,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/0287-End-Crystal-Cramming.patch b/patches/server/0290-End-Crystal-Cramming.patch
similarity index 100%
rename from patches/server/0287-End-Crystal-Cramming.patch
rename to patches/server/0290-End-Crystal-Cramming.patch
diff --git a/patches/server/0288-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0291-Option-to-allow-beacon-effects-when-covered-by-tinte.patch
similarity index 100%
rename from patches/server/0288-Option-to-allow-beacon-effects-when-covered-by-tinte.patch
rename to patches/server/0291-Option-to-allow-beacon-effects-when-covered-by-tinte.patch
diff --git a/patches/server/0289-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0292-Add-attribute-clamping-and-armor-limit-config.patch
similarity index 100%
rename from patches/server/0289-Add-attribute-clamping-and-armor-limit-config.patch
rename to patches/server/0292-Add-attribute-clamping-and-armor-limit-config.patch
diff --git a/patches/server/0290-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0293-Config-to-remove-explosion-radius-clamp.patch
similarity index 100%
rename from patches/server/0290-Config-to-remove-explosion-radius-clamp.patch
rename to patches/server/0293-Config-to-remove-explosion-radius-clamp.patch
diff --git a/patches/server/0291-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0294-bonemealable-sugarcane-cactus-and-netherwart.patch
similarity index 100%
rename from patches/server/0291-bonemealable-sugarcane-cactus-and-netherwart.patch
rename to patches/server/0294-bonemealable-sugarcane-cactus-and-netherwart.patch
diff --git a/patches/server/0292-Add-PreExplodeEvents.patch b/patches/server/0295-Add-PreExplodeEvents.patch
similarity index 100%
rename from patches/server/0292-Add-PreExplodeEvents.patch
rename to patches/server/0295-Add-PreExplodeEvents.patch
diff --git a/patches/server/0293-Improve-output-of-plugins-command.patch b/patches/server/0296-Improve-output-of-plugins-command.patch
similarity index 100%
rename from patches/server/0293-Improve-output-of-plugins-command.patch
rename to patches/server/0296-Improve-output-of-plugins-command.patch
diff --git a/patches/server/0294-Add-mending-multiplier.patch b/patches/server/0297-Add-mending-multiplier.patch
similarity index 100%
rename from patches/server/0294-Add-mending-multiplier.patch
rename to patches/server/0297-Add-mending-multiplier.patch
diff --git a/patches/server/0295-Make-GUI-Great-Again.patch b/patches/server/0298-Make-GUI-Great-Again.patch
similarity index 99%
rename from patches/server/0295-Make-GUI-Great-Again.patch
rename to patches/server/0298-Make-GUI-Great-Again.patch
index 7d4daeed2..7d12c943f 100644
--- a/patches/server/0295-Make-GUI-Great-Again.patch
+++ b/patches/server/0298-Make-GUI-Great-Again.patch
@@ -96,7 +96,7 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a
+ }
+}
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
-index da64482a95892dd06ef975767d68bab454ae1dc8..e2c74460d149360f01c4d0577054879f2601a58f 100644
+index 813a3c0172f1152665b95104d155e5de40589b39..21da8b6b0df40b6b88a325ced5d6553ad5912d31 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -99,6 +99,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
diff --git a/patches/server/0296-Stored-Bee-API.patch b/patches/server/0299-Stored-Bee-API.patch
similarity index 100%
rename from patches/server/0296-Stored-Bee-API.patch
rename to patches/server/0299-Stored-Bee-API.patch
diff --git a/patches/server/0297-Shears-can-defuse-TNT.patch b/patches/server/0300-Shears-can-defuse-TNT.patch
similarity index 100%
rename from patches/server/0297-Shears-can-defuse-TNT.patch
rename to patches/server/0300-Shears-can-defuse-TNT.patch
diff --git a/patches/server/0298-Explorer-Map-API.patch b/patches/server/0301-Explorer-Map-API.patch
similarity index 100%
rename from patches/server/0298-Explorer-Map-API.patch
rename to patches/server/0301-Explorer-Map-API.patch
diff --git a/patches/server/0299-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0302-Option-Ocelot-Spawn-Under-Sea-Level.patch
similarity index 100%
rename from patches/server/0299-Option-Ocelot-Spawn-Under-Sea-Level.patch
rename to patches/server/0302-Option-Ocelot-Spawn-Under-Sea-Level.patch
diff --git a/patches/server/0300-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0303-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch
similarity index 100%
rename from patches/server/0300-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch
rename to patches/server/0303-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch
diff --git a/patches/server/0301-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0304-Add-option-for-always-showing-item-in-player-death-m.patch
similarity index 100%
rename from patches/server/0301-Add-option-for-always-showing-item-in-player-death-m.patch
rename to patches/server/0304-Add-option-for-always-showing-item-in-player-death-m.patch
diff --git a/patches/server/0302-place-end-crystal-on-any-block.patch b/patches/server/0305-place-end-crystal-on-any-block.patch
similarity index 96%
rename from patches/server/0302-place-end-crystal-on-any-block.patch
rename to patches/server/0305-place-end-crystal-on-any-block.patch
index 628ad2c79..617d26409 100644
--- a/patches/server/0302-place-end-crystal-on-any-block.patch
+++ b/patches/server/0305-place-end-crystal-on-any-block.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] place end crystal on any block
diff --git a/src/main/java/net/minecraft/world/item/EndCrystalItem.java b/src/main/java/net/minecraft/world/item/EndCrystalItem.java
-index 5a19875cbc603acea95193d969d2e1dc1e0bfd78..a9ee4a382118294b43d0ff13ffd5fbe9463316a3 100644
+index 3688e9f8c6c6d1239095e3a87060ccca90386d0c..34254eec36d34ae343733fa1abbaaba60be41a3b 100644
--- a/src/main/java/net/minecraft/world/item/EndCrystalItem.java
+++ b/src/main/java/net/minecraft/world/item/EndCrystalItem.java
@@ -26,7 +26,7 @@ public class EndCrystalItem extends Item {
diff --git a/patches/server/0303-Add-hover-lines-API.patch b/patches/server/0306-Add-hover-lines-API.patch
similarity index 100%
rename from patches/server/0303-Add-hover-lines-API.patch
rename to patches/server/0306-Add-hover-lines-API.patch