diff --git a/PATCHES.md b/PATCHES.md index 2caa99f3..980ffc2f 100644 --- a/PATCHES.md +++ b/PATCHES.md @@ -102,6 +102,8 @@ This is an overview over all patches that are currently used. | server | Breedable Polar Bears | William Blake Galbreath | | | server | Bring back server name | William Blake Galbreath | | | api | Bring back server name | William Blake Galbreath | | +| server | Cache climbing check for activation | Paul Sauve | | +| server | Cache coordinate key for micro opt | Paul Sauve | | | server | Cache entityhuman display name | Paul Sauve | | | server | Cache palette array | Paul Sauve | | | server | Cat spawning options | William Blake Galbreath | | @@ -120,6 +122,7 @@ This is an overview over all patches that are currently used. | server | Config to always tame in Creative | Encode42 | | | server | Config to disable Llama caravans | Encode42 | | | server | Config to disable hostile mob spawn on ice | Encode42 | | +| server | Config to disable method profiler | Paul Sauve | | | server | Config to ignore Dragon Head wearers and stare aggro | Encode42 | | | server | Config to ignore nearby mobs when sleeping | Encode42 | | | server | Config to make Creepers explode on death | Encode42 | | @@ -175,11 +178,9 @@ This is an overview over all patches that are currently used. | server | Do not retain playerchunkmap instance in light thread factory | Spottedleaf | | | server | Do not run close logic for inventories on chunk unload | Spottedleaf | | | server | Do not run raytrace logic for AIR | Spottedleaf | | -| server | Do not schedule poi task for each block write on chunk gen | Spottedleaf | | | server | Do not update TE's in generating chunks | Spottedleaf | | | server | Don't allow StructureLocateEvent to change worlds | Spottedleaf | | | server | Don't get entity equipment if not needed | Paul Sauve | | -| server | Don't load chunk with seed based feature search | Phoenix616 | | | server | Don't lookup fluid state when raytracing | Spottedleaf | | | server | Don't read neighbour chunk data off disk when converting | Spottedleaf | | | server | Don't trigger Lootable Refresh for non player interaction | Aikar | | @@ -282,8 +283,6 @@ This is an overview over all patches that are currently used. | server | Movement options for armor stands | Mariell Hoversholm | | | server | Multi-Threaded Server Ticking Vanilla | Spottedleaf | | | server | Multi-Threaded ticking CraftBukkit | Spottedleaf | | -| server | Multithreaded Entity Tracker fixup | Simon Gardling | | -| server | Multithreaded entity tracking | Paul Sauve | | | server | Name craft scheduler threads according to the plugin using | Spottedleaf | | | server | New nbt cache | Hugo Planque | ishland | | server | Nuke streams off BlockPosition | Ivan Pekov | | @@ -307,6 +306,7 @@ This is an overview over all patches that are currently used. | server | Optimize advancement loading | Ivan Pekov | | | server | Optimize inventory API item handling | Phoenix616 | | | server | Optimize random calls in chunk ticking | Paul Sauve | | +| server | Optimize redundant calls | Paul Sauve | | | server | Optimize some stuff in WorldServer ticking | MrIvanPlays | | | server | Optimize whitelist command for multiple additions / removals | Ivan Pekov | | | server | Option for Villager Clerics to farm Nether Wart | jmp | | @@ -356,7 +356,7 @@ This is an overview over all patches that are currently used. | server | Reduce allocation rate from crammed entities | Spottedleaf | | | server | Reduce allocs & improve perf of StructureManager | Paul Sauve | | | server | Reduce chunk loading & lookups | Paul Sauve | | -| server | Reduce entity chunk ticking checks from 3 to 1 | Paul Sauve | | +| server | Reduce frequency of checking for entity despawn | Paul Sauve | | | server | Reduce iterator allocation from chunk gen | Spottedleaf | | | server | Reduce pathfinder branches | Spottedleaf | | | server | Reduce projectile chunk loading | Paul Sauve | | @@ -384,6 +384,7 @@ This is an overview over all patches that are currently used. | server | Simpler ShapelessRecipes comparison for Vanilla | Paul Sauve | | | server | Skip POI finding if stuck in vehicle | Paul Sauve | | | server | Skip copying unloading tile entities | Paul Sauve | | +| server | Skip creating hashset for entity track range | Paul Sauve | | | server | Skip events if there's no listeners | William Blake Galbreath | | | server | Smarter statistics ticking | Mykyta Komarnytskyy | | | server | Smol entity optimisations | Ivan Pekov | | diff --git a/Paper b/Paper index 39bf5b52..b8020379 160000 --- a/Paper +++ b/Paper @@ -1 +1 @@ -Subproject commit 39bf5b525d819e50a18a241f3ebaf388a571619c +Subproject commit b8020379c6af10417bb8836398fa9460cf316f9c diff --git a/buildSrc/src/main/kotlin/ConfigureSubprojects.kt b/buildSrc/src/main/kotlin/ConfigureSubprojects.kt index ed02bf92..869055f3 100644 --- a/buildSrc/src/main/kotlin/ConfigureSubprojects.kt +++ b/buildSrc/src/main/kotlin/ConfigureSubprojects.kt @@ -4,7 +4,6 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import transformer.ModifiedLog4j2PluginsCacheFileTransformer import relocation.ToothpickRelocator import kotlinx.dom.elements -import kotlinx.dom.parseXml import kotlinx.dom.search import org.gradle.api.Project import org.gradle.api.Task @@ -184,9 +183,7 @@ private fun Project.configureServerProject() { relocationSet.add(PatchesMetadata.Relocation("", "net.minecraft.server.v${toothpick.nmsPackage}", false)) // Make sure we relocate deps the same as Paper et al. - val pomFile = project.projectDir.resolve("pom.xml") - if (!pomFile.exists()) return@getting - val dom = parseXml(pomFile) + val dom = project.parsePom() ?: return@getting val buildSection = dom.search("build").first() val plugins = buildSection.search("plugins").first() plugins.elements("plugin").filter { diff --git a/buildSrc/src/main/kotlin/DependencyLoading.kt b/buildSrc/src/main/kotlin/DependencyLoading.kt index ba216ee0..35f1c852 100644 --- a/buildSrc/src/main/kotlin/DependencyLoading.kt +++ b/buildSrc/src/main/kotlin/DependencyLoading.kt @@ -1,5 +1,4 @@ import kotlinx.dom.elements -import kotlinx.dom.parseXml import kotlinx.dom.search import org.gradle.api.Project import org.gradle.api.artifacts.dsl.RepositoryHandler @@ -9,9 +8,7 @@ import org.gradle.kotlin.dsl.project import org.w3c.dom.Element fun RepositoryHandler.loadRepositories(project: Project) { - val pomFile = project.projectDir.resolve("pom.xml") - if (!pomFile.exists()) return - val dom = parseXml(pomFile) + val dom = project.parsePom() ?: return val repositoriesBlock = dom.search("repositories").firstOrNull() ?: return // Load repositories @@ -22,9 +19,7 @@ fun RepositoryHandler.loadRepositories(project: Project) { } fun DependencyHandlerScope.loadDependencies(project: Project) { - val pomFile = project.projectDir.resolve("pom.xml") - if (!pomFile.exists()) return - val dom = parseXml(pomFile) + val dom = project.parsePom() ?: return // Load dependencies dom.search("dependencies").forEach { @@ -36,10 +31,7 @@ private fun DependencyHandlerScope.loadDependencies(project: Project, dependenci dependenciesBlock.elements("dependency").forEach { dependencyElem -> val groupId = dependencyElem.search("groupId").first().textContent val artifactId = dependencyElem.search("artifactId").first().textContent - val version = dependencyElem.search("version").firstOrNull()?.textContent?.applyReplacements( - "project.version" to "${project.rootProject.toothpick.minecraftVersion}-${project.rootProject.toothpick.nmsRevision}", - "minecraft.version" to project.toothpick.minecraftVersion - ) + val version = dependencyElem.search("version").firstOrNull()?.textContent val scope = dependencyElem.search("scope").firstOrNull()?.textContent val classifier = dependencyElem.search("classifier").firstOrNull()?.textContent diff --git a/buildSrc/src/main/kotlin/PomParsing.kt b/buildSrc/src/main/kotlin/PomParsing.kt new file mode 100644 index 00000000..933155f0 --- /dev/null +++ b/buildSrc/src/main/kotlin/PomParsing.kt @@ -0,0 +1,55 @@ +/* + * This file is part of Toothpick, licensed under the MIT License. + * + * Copyright (c) 2020-2021 Jason Penilla & Contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +import kotlinx.dom.elements +import kotlinx.dom.parseXml +import kotlinx.dom.search +import org.gradle.api.Project +import org.w3c.dom.Document + +internal fun Project.parsePom(): Document? { + val file = file("pom.xml") + if (!file.exists()) { + return null + } + val contents = file.readText() + val dom = parseXml(contents.byteInputStream()) + val properties = dom.search("properties").firstOrNull()?.elements() ?: emptyList() + val propertiesMap = properties.associateBy({ it.nodeName }, { it.textContent }).toMutableMap() + + propertiesMap["project.version"] = project.version.toString() + propertiesMap["minecraft.version"] = toothpick.minecraftVersion + propertiesMap["minecraft_version"] = toothpick.nmsPackage + + return parseXml(contents.replaceProperties(propertiesMap).byteInputStream()) +} + +private fun String.replaceProperties( + properties: Map +): String { + var result = this + for ((key, value) in properties) { + result = result.replace("\${$key}", value) + } + return result +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/ToothpickExtension.kt b/buildSrc/src/main/kotlin/ToothpickExtension.kt index 87ab20d3..50fbf476 100644 --- a/buildSrc/src/main/kotlin/ToothpickExtension.kt +++ b/buildSrc/src/main/kotlin/ToothpickExtension.kt @@ -37,7 +37,7 @@ open class ToothpickExtension(objects: ObjectFactory) { val currentBranchDisplayName get() = currentBranch.replace("/${minecraftVersion}", "") val calcVersionString - get() = if(!currentBranch.startsWith("ver/")) { "${minecraftVersion}-${nmsRevision}-${currentBranchDisplayName.replace('/', '_')}" } else "${minecraftVersion}-${nmsRevision}" + get() = "${minecraftVersion}-${nmsRevision}" fun server(receiver: ToothpickSubproject.() -> Unit) { serverProject = ToothpickSubproject() diff --git a/patches/Airplane/patches/server/0002-Airplane-Branding-Changes.patch b/patches/Airplane/patches/server/0002-Airplane-Branding-Changes.patch index d974008d..ca32dc7d 100644 --- a/patches/Airplane/patches/server/0002-Airplane-Branding-Changes.patch +++ b/patches/Airplane/patches/server/0002-Airplane-Branding-Changes.patch @@ -72,7 +72,7 @@ index 7063f1da3654b382e26b0093ad5d0ff04a2b38c2..b9c5479e5561f8fe68ea8f94fbf4e64d return history != null ? TextComponent.ofChildren(updateMessage, Component.newline(), history) : updateMessage; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 7b0b416c73c8914f3c8c570f2020490ef2babf64..246fcc9b40152964810ceef356ecb2eee3551135 100644 +index 2767a9369ddc922f1d9c7cb6c7acc8270545535a..7b4b9f54510b3a05aad3f7e50e32ee0bf977244a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1646,7 +1646,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant. diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index e3481eb71972c82edd892a99d1136c8248fb0f8c..9e71e6c331c60d55220399cee4381367113f596a 100644 +index a42d3c6c227a74d691278a65a9c516f6507b6865..ef368c38fbbf26cc2f6cf4159707d3d581e85be4 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -1212,7 +1212,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Airplane/patches/server/0010-Optimize-random-calls-in-chunk-ticking.patch b/patches/Airplane/patches/server/0010-Optimize-random-calls-in-chunk-ticking.patch index b684f5ed..080fe8b6 100644 --- a/patches/Airplane/patches/server/0010-Optimize-random-calls-in-chunk-ticking.patch +++ b/patches/Airplane/patches/server/0010-Optimize-random-calls-in-chunk-ticking.patch @@ -46,7 +46,7 @@ index fe040615ff03478a20cdf8376f89a6b7d100ba61..207a9c3928aad7c6e89a120b54d87e00 boolean flag2 = world.ticksPerAnimalSpawns != 0L && worlddata.getTime() % world.ticksPerAnimalSpawns == 0L; // CraftBukkit diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 9e71e6c331c60d55220399cee4381367113f596a..ab1cf52d7faa93feba9dd2efd9479b2d72771778 100644 +index ef368c38fbbf26cc2f6cf4159707d3d581e85be4..ce428fd701fe4a0505a629edb322f19d730f8132 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -1202,6 +1202,8 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Airplane/patches/server/0019-Reduce-entity-chunk-ticking-checks-from-3-to-1.patch b/patches/Airplane/patches/server/0019-Reduce-entity-chunk-ticking-checks-from-3-to-1.patch deleted file mode 100644 index fad1e925..00000000 --- a/patches/Airplane/patches/server/0019-Reduce-entity-chunk-ticking-checks-from-3-to-1.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Paul Sauve -Date: Sat, 13 Mar 2021 10:40:22 -0600 -Subject: [PATCH] Reduce entity chunk ticking checks from 3 to 1 - - -diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index ab1cf52d7faa93feba9dd2efd9479b2d72771778..e2bfb1423f6b24514cf7ea364be8bf5f554e0a5f 100644 ---- a/src/main/java/net/minecraft/server/level/WorldServer.java -+++ b/src/main/java/net/minecraft/server/level/WorldServer.java -@@ -1083,11 +1083,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { - // CraftBukkit end */ - - gameprofilerfiller.enter("checkDespawn"); -+ boolean entityTickingChunk = false; if (!entity.dead) entityTickingChunk = this.getChunkProvider().isInEntityTickingChunk(entity); // Airplane - check once, chunks won't unload ticking entities - if (!entity.dead) { - entity.checkDespawn(); - // Tuinity start - optimise notify() - if (entity.inChunk && entity.valid) { -- if (this.getChunkProvider().isInEntityTickingChunk(entity)) { -+ if (entityTickingChunk) { // Airplane - reuse - this.updateNavigatorsInRegion(entity); - } - } else { -@@ -1117,7 +1118,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { - this.entitiesById.remove(entity.getId()); // Tuinity - this.unregisterEntity(entity); - } else if (entity.inChunk && entity.valid) { // Tuinity start - optimise notify() -- if (this.getChunkProvider().isInEntityTickingChunk(entity)) { -+ if (entityTickingChunk) { // Airplane - reuse - this.updateNavigatorsInRegion(entity); - } - } else { -@@ -1417,7 +1418,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { - } - // Tuinity end - log detailed entity tick information - -- public void entityJoinedWorld(Entity entity) { -+ // Airplane start - reuse check for in entity ticking chunk -+ public void entityJoinedWorld(Entity entity) { entityJoinedWorld(entity, this.getChunkProvider().isInEntityTickingChunk(entity)); } -+ public void entityJoinedWorld(Entity entity, boolean entityTickingChunk) { // Airplane end - // Tuinity start - log detailed entity tick information - com.tuinity.tuinity.util.TickThread.ensureTickThread("Cannot tick an entity off-main"); - try { -@@ -1425,7 +1428,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { - currentlyTickingEntity.lazySet(entity); - } - // Tuinity end - log detailed entity tick information -- if (!(entity instanceof EntityHuman) && !this.getChunkProvider().a(entity)) { -+ if (!(entity instanceof EntityHuman) && !entityTickingChunk) { // Airplane - reuse - this.chunkCheck(entity); - } else { - ++TimingHistory.entityTicks; // Paper - timings diff --git a/patches/Airplane/patches/server/0020-Remove-iterators-from-inventory-contains.patch b/patches/Airplane/patches/server/0019-Remove-iterators-from-inventory-contains.patch similarity index 100% rename from patches/Airplane/patches/server/0020-Remove-iterators-from-inventory-contains.patch rename to patches/Airplane/patches/server/0019-Remove-iterators-from-inventory-contains.patch diff --git a/patches/Airplane/patches/server/0021-Cache-entityhuman-display-name.patch b/patches/Airplane/patches/server/0020-Cache-entityhuman-display-name.patch similarity index 90% rename from patches/Airplane/patches/server/0021-Cache-entityhuman-display-name.patch rename to patches/Airplane/patches/server/0020-Cache-entityhuman-display-name.patch index 1f04ae79..a43a425c 100644 --- a/patches/Airplane/patches/server/0021-Cache-entityhuman-display-name.patch +++ b/patches/Airplane/patches/server/0020-Cache-entityhuman-display-name.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cache entityhuman display name diff --git a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java -index 44038dd278b988508047023107683e5370af54ad..ad85dda5c50b797904824a08513fbcec042128ea 100644 +index 5bce47fa8f191bc1d33c04c9865cb0efd492a9a2..5f9e64df007ebc40f7bcb50be495b10e51d5b87a 100644 --- a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java +++ b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java @@ -162,7 +162,8 @@ public abstract class EntityHuman extends EntityLiving { @@ -18,7 +18,7 @@ index 44038dd278b988508047023107683e5370af54ad..ad85dda5c50b797904824a08513fbcec private ItemStack bL; private final ItemCooldown bM; @Nullable -@@ -1828,7 +1829,12 @@ public abstract class EntityHuman extends EntityLiving { +@@ -1840,7 +1841,12 @@ public abstract class EntityHuman extends EntityLiving { @Override public IChatBaseComponent getDisplayName() { diff --git a/patches/Airplane/patches/server/0022-Early-return-optimization-for-target-finding.patch b/patches/Airplane/patches/server/0021-Early-return-optimization-for-target-finding.patch similarity index 100% rename from patches/Airplane/patches/server/0022-Early-return-optimization-for-target-finding.patch rename to patches/Airplane/patches/server/0021-Early-return-optimization-for-target-finding.patch diff --git a/patches/Airplane/patches/server/0023-More-debug-for-plugins-not-shutting-down-tasks.patch b/patches/Airplane/patches/server/0022-More-debug-for-plugins-not-shutting-down-tasks.patch similarity index 100% rename from patches/Airplane/patches/server/0023-More-debug-for-plugins-not-shutting-down-tasks.patch rename to patches/Airplane/patches/server/0022-More-debug-for-plugins-not-shutting-down-tasks.patch diff --git a/patches/Airplane/patches/server/0024-Improve-fluid-direction-caching.patch b/patches/Airplane/patches/server/0023-Improve-fluid-direction-caching.patch similarity index 100% rename from patches/Airplane/patches/server/0024-Improve-fluid-direction-caching.patch rename to patches/Airplane/patches/server/0023-Improve-fluid-direction-caching.patch diff --git a/patches/Airplane/patches/server/0024-Optimize-redundant-calls.patch b/patches/Airplane/patches/server/0024-Optimize-redundant-calls.patch new file mode 100644 index 00000000..ec3ca684 --- /dev/null +++ b/patches/Airplane/patches/server/0024-Optimize-redundant-calls.patch @@ -0,0 +1,22 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Paul Sauve +Date: Fri, 23 Apr 2021 15:00:30 -0500 +Subject: [PATCH] Optimize redundant calls + +Just pushing this because I want numbers on it, according to both CPU +tracking and async sampling this is something that causes a discernable +(1.5%) impact on performance. + +diff --git a/src/main/java/net/minecraft/server/level/ChunkMapDistance.java b/src/main/java/net/minecraft/server/level/ChunkMapDistance.java +index a5fc023312c99e591fc269999c28a766a46f8849..fb4d006f86229fd093f1a9ea8cab2add0a4cacfa 100644 +--- a/src/main/java/net/minecraft/server/level/ChunkMapDistance.java ++++ b/src/main/java/net/minecraft/server/level/ChunkMapDistance.java +@@ -215,7 +215,7 @@ public abstract class ChunkMapDistance { + public boolean a(PlayerChunkMap playerchunkmap) { + com.tuinity.tuinity.util.TickThread.softEnsureTickThread("Cannot tick ChunkMapDistance off of the main-thread");// Tuinity + //this.f.a(); // Paper - no longer used +- AsyncCatcher.catchOp("DistanceManagerTick"); // Paper ++ //AsyncCatcher.catchOp("DistanceManagerTick"); // Paper // Airplane - leave up to softEnsures + //this.g.a(); // Tuinity - no longer used + boolean flag = this.ticketLevelPropagator.propagateUpdates(); // Tuinity - replace ticket level propagator + diff --git a/patches/Airplane/patches/server/0025-Skip-creating-hashset-for-entity-track-range.patch b/patches/Airplane/patches/server/0025-Skip-creating-hashset-for-entity-track-range.patch new file mode 100644 index 00000000..c69f96f7 --- /dev/null +++ b/patches/Airplane/patches/server/0025-Skip-creating-hashset-for-entity-track-range.patch @@ -0,0 +1,62 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Paul Sauve +Date: Fri, 23 Apr 2021 18:12:08 -0500 +Subject: [PATCH] Skip creating hashset for entity track range + + +diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java +index c6b4af810fe3bda7797ab94316b2357178c9cd49..99c93d48726b4b92a341ba98721173df8b4ff30a 100644 +--- a/src/main/java/net/minecraft/world/entity/Entity.java ++++ b/src/main/java/net/minecraft/world/entity/Entity.java +@@ -319,10 +319,39 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne + this.isLegacyTrackingEntity = isLegacyTrackingEntity; + } + ++ // Airplane start - behavior of getAllPassengers + getting bigger range ++ private org.spigotmc.TrackingRange.TrackingRangeType getBiggestRangeOfPassengers(net.minecraft.server.level.PlayerChunkMap chunkMap, int[] range, Entity entity) { ++ org.spigotmc.TrackingRange.TrackingRangeType type = null; ++ ++ for (int i = 0; i < entity.passengers.size(); i++) { ++ Entity passenger = entity.passengers.get(i); ++ org.spigotmc.TrackingRange.TrackingRangeType passengerType = passenger.trackingRangeType; ++ int passengerRange = chunkMap.getEntityTrackerRange(passengerType.ordinal()); ++ if (passengerRange > range[0]) { ++ type = passengerType; ++ range[0] = passengerRange; ++ } ++ ++ org.spigotmc.TrackingRange.TrackingRangeType childType = this.getBiggestRangeOfPassengers(chunkMap, range, passenger); ++ if (childType != null) { ++ type = childType; ++ } ++ } ++ ++ return type; ++ } ++ // Airplane end ++ + public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet getPlayersInTrackRange() { ++ // Airplane start - replicate behavior of getAllPassengers to skip creating hashset ++ /* + Collection passengers = this.getAllPassengers(); ++ */ + net.minecraft.server.level.PlayerChunkMap chunkMap = ((WorldServer)this.world).getChunkProvider().playerChunkMap; + org.spigotmc.TrackingRange.TrackingRangeType type = this.trackingRangeType; ++ type = this.getBiggestRangeOfPassengers(chunkMap, new int[]{chunkMap.getEntityTrackerRange(type.ordinal())}, this); ++ if (type == null) type = this.trackingRangeType; ++ /* + int range = chunkMap.getEntityTrackerRange(type.ordinal()); + + for (Entity passenger : passengers) { +@@ -333,8 +362,10 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne + range = passengerRange; + } + } ++ */ ++ // Airplane end + +- return chunkMap.playerEntityTrackerTrackMaps[type.ordinal()].getObjectsInRange(MCUtil.getCoordinateKey(this)); ++ return chunkMap.playerEntityTrackerTrackMaps[type.ordinal()].getObjectsInRange(MCUtil.getCoordinateKey(this.chunkX, this.chunkZ)); // Airplane - don't convert doubles to ints here + } + // Paper end - optimise entity tracking + diff --git a/patches/Airplane/patches/server/0026-Cache-climbing-check-for-activation.patch b/patches/Airplane/patches/server/0026-Cache-climbing-check-for-activation.patch new file mode 100644 index 00000000..8e1d4779 --- /dev/null +++ b/patches/Airplane/patches/server/0026-Cache-climbing-check-for-activation.patch @@ -0,0 +1,43 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Paul Sauve +Date: Mon, 26 Apr 2021 10:52:56 -0500 +Subject: [PATCH] Cache climbing check for activation + + +diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java +index 74f80b6af18c0b91d9613384ca6bafd9c89f23a4..003e1f6dc8efbabcb2e0f7a6b379196f02203903 100644 +--- a/src/main/java/net/minecraft/world/entity/EntityLiving.java ++++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java +@@ -1745,6 +1745,19 @@ public abstract class EntityLiving extends Entity { + } + } + ++ // Airplane start ++ private boolean cachedIsClimbing = false; ++ private BlockPosition lastClimbingPosition = null; ++ ++ public boolean isClimbingCached() { ++ if (!this.getChunkCoordinates().equals(this.lastClimbingPosition)) { ++ this.cachedIsClimbing = this.isClimbing(); ++ this.lastClimbingPosition = this.getChunkCoordinates(); ++ } ++ return this.cachedIsClimbing; ++ } ++ // Airplane end ++ + public IBlockData ds() { + return this.world.getType(this.getChunkCoordinates()); + } +diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java +index 8b36ca5062f8e0e8bd58aa506e91704a747de81b..94910bf0c53c79588c55b89e4a023273d6c859ef 100644 +--- a/src/main/java/org/spigotmc/ActivationRange.java ++++ b/src/main/java/org/spigotmc/ActivationRange.java +@@ -309,7 +309,7 @@ public class ActivationRange + if ( entity instanceof EntityLiving ) + { + EntityLiving living = (EntityLiving) entity; +- if ( living.isClimbing() || living.jumping || living.hurtTicks > 0 || living.effects.size() > 0 ) // Paper ++ if ( living.isClimbingCached() || living.jumping || living.hurtTicks > 0 || living.effects.size() > 0 ) // Paper // Airplane - use cached climbing + { + return 1; // Paper + } diff --git a/patches/Airplane/patches/server/0027-Reduce-frequency-of-checking-for-entity-despawn.patch b/patches/Airplane/patches/server/0027-Reduce-frequency-of-checking-for-entity-despawn.patch new file mode 100644 index 00000000..d7050db0 --- /dev/null +++ b/patches/Airplane/patches/server/0027-Reduce-frequency-of-checking-for-entity-despawn.patch @@ -0,0 +1,47 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Paul Sauve +Date: Mon, 26 Apr 2021 11:20:12 -0500 +Subject: [PATCH] Reduce frequency of checking for entity despawn + +This isn't a great way to deal with this, but at a high number of +entities this starts adding up more than it should, and it's already +fairly optimized. Just starts being slow when you have 30k entities. + +diff --git a/src/main/java/gg/airplane/AirplaneConfig.java b/src/main/java/gg/airplane/AirplaneConfig.java +index 7ec84ef1d1cbb1fabf4c590a2f2c1da3cc181010..c9e00334655ccd273ba108a541ed1cb0633f69b7 100644 +--- a/src/main/java/gg/airplane/AirplaneConfig.java ++++ b/src/main/java/gg/airplane/AirplaneConfig.java +@@ -102,4 +102,13 @@ public class AirplaneConfig { + } + + ++ public static byte entityDespawnCheckFrequency; ++ ++ private static void entitySettings() { ++ config.setComment("entities", "Configures settings for generic entities"); ++ ++ entityDespawnCheckFrequency = (byte) Math.max(config.getInt("entities.despawn-check-freq", 8), Byte.MAX_VALUE); ++ } ++ ++ + } +diff --git a/src/main/java/net/minecraft/world/entity/EntityInsentient.java b/src/main/java/net/minecraft/world/entity/EntityInsentient.java +index f4440a5c4aedb1d7d303517f86a07c856dd1309b..dc78bafeddf6b584181c818b90efa7ff531377a3 100644 +--- a/src/main/java/net/minecraft/world/entity/EntityInsentient.java ++++ b/src/main/java/net/minecraft/world/entity/EntityInsentient.java +@@ -774,8 +774,15 @@ public abstract class EntityInsentient extends EntityLiving { + return false; + } + ++ // Airplane start - just reduce frequency of checking for despawn ++ private byte despawnCheck = 0; + @Override + public void checkDespawn() { ++ if (++despawnCheck < gg.airplane.AirplaneConfig.entityDespawnCheckFrequency) { ++ return; ++ } ++ this.despawnCheck = 0; ++ // Airplane end + if (this.world.getDifficulty() == EnumDifficulty.PEACEFUL && this.L()) { + this.die(); + } else if (!this.isPersistent() && !this.isSpecialPersistence()) { diff --git a/patches/Airplane/patches/server/0028-Cache-coordinate-key-for-micro-opt.patch b/patches/Airplane/patches/server/0028-Cache-coordinate-key-for-micro-opt.patch new file mode 100644 index 00000000..8f49b2ba --- /dev/null +++ b/patches/Airplane/patches/server/0028-Cache-coordinate-key-for-micro-opt.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Paul Sauve +Date: Mon, 26 Apr 2021 11:26:37 -0500 +Subject: [PATCH] Cache coordinate key for micro opt + + +diff --git a/src/main/java/net/minecraft/server/level/PlayerChunk.java b/src/main/java/net/minecraft/server/level/PlayerChunk.java +index 86f156587a0939b28c5cf6f64907255c1c4f8b35..06157bb07cce3ba24087ceaca7138b5609b37b5b 100644 +--- a/src/main/java/net/minecraft/server/level/PlayerChunk.java ++++ b/src/main/java/net/minecraft/server/level/PlayerChunk.java +@@ -58,6 +58,7 @@ public class PlayerChunk { + private int ticketLevel; public final void setTicketLevel(final int level) { this.ticketLevel = level; } // Tuinity - OBFHELPER + volatile int n; public final int getCurrentPriority() { return n; } // Paper - OBFHELPER - make volatile since this is concurrently accessed + public final ChunkCoordIntPair location; // Paper - private -> public ++ private final long coordinateKey; // Airplane - cache key for location + private boolean p; + private final ShortSet[] dirtyBlocks; + private int r; +@@ -80,7 +81,7 @@ public class PlayerChunk { + com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet playersInChunkTickRange; + + void updateRanges() { +- long key = net.minecraft.server.MCUtil.getCoordinateKey(this.location); ++ long key = this.coordinateKey; //net.minecraft.server.MCUtil.getCoordinateKey(this.location); // Airplane - use cached key + this.playersInMobSpawnRange = this.chunkMap.playerMobSpawnMap.getObjectsInRange(key); + this.playersInChunkTickRange = this.chunkMap.playerChunkTickRangeMap.getObjectsInRange(key); + // Tuinity start - optimise checkDespawn +@@ -232,7 +233,7 @@ public class PlayerChunk { + this.entityTickingFuture = PlayerChunk.UNLOADED_CHUNK_FUTURE; + this.chunkSave = CompletableFuture.completedFuture(null); // CraftBukkit - decompile error + this.dirtyBlocks = new ShortSet[16]; +- this.location = chunkcoordintpair; ++ this.location = chunkcoordintpair; this.coordinateKey = net.minecraft.server.MCUtil.getCoordinateKey(this.location); // Airplane + this.lightEngine = lightengine; + this.u = playerchunk_c; + this.players = playerchunk_d; diff --git a/patches/Airplane/patches/server/0029-Config-to-disable-method-profiler.patch b/patches/Airplane/patches/server/0029-Config-to-disable-method-profiler.patch new file mode 100644 index 00000000..cd39d1e2 --- /dev/null +++ b/patches/Airplane/patches/server/0029-Config-to-disable-method-profiler.patch @@ -0,0 +1,40 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Paul Sauve +Date: Mon, 26 Apr 2021 11:34:29 -0500 +Subject: [PATCH] Config to disable method profiler + + +diff --git a/src/main/java/gg/airplane/AirplaneConfig.java b/src/main/java/gg/airplane/AirplaneConfig.java +index c9e00334655ccd273ba108a541ed1cb0633f69b7..65adf3ceda012c8cfdea675c40e2bb27d34ebac7 100644 +--- a/src/main/java/gg/airplane/AirplaneConfig.java ++++ b/src/main/java/gg/airplane/AirplaneConfig.java +@@ -111,4 +111,13 @@ public class AirplaneConfig { + } + + ++ public static boolean disableMethodProfiler; ++ ++ private static void miscSettings() { ++ config.setComment("misc", "Settings for things that don't belong elsewhere"); ++ ++ disableMethodProfiler = config.getBoolean("misc.disable-method-profiler", true); ++ } ++ ++ + } +diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java +index 7b4b9f54510b3a05aad3f7e50e32ee0bf977244a..2bb00a42492b08036e984d3e1d9a564d4b4226c2 100644 +--- a/src/main/java/net/minecraft/server/MinecraftServer.java ++++ b/src/main/java/net/minecraft/server/MinecraftServer.java +@@ -2196,7 +2196,11 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant resourcekey, final DimensionManager dimensionmanager, Supplier supplier, boolean flag, boolean flag1, long i, org.bukkit.generator.ChunkGenerator gen, org.bukkit.World.Environment env, java.util.concurrent.Executor executor) { // Paper + this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.WorldDataServer) worlddatamutable).getName()); // Spigot + this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((net.minecraft.world.level.storage.WorldDataServer) worlddatamutable).getName(), this.spigotConfig); // Paper ++ this.origamiConfig = new de.minebench.origami.OrigamiConfig.WorldConfig(((net.minecraft.world.level.storage.WorldDataServer) worlddatamutable).getName()); // Origami - World Config this.chunkPacketBlockController = this.paperConfig.antiXray ? new ChunkPacketBlockControllerAntiXray(this, executor) : ChunkPacketBlockController.NO_OPERATION_INSTANCE; // Paper - Anti-Xray this.tuinityConfig = new com.tuinity.tuinity.config.TuinityConfig.WorldConfig(((net.minecraft.world.level.storage.WorldDataServer)worlddatamutable).getName()); // Tuinity - Server Config this.purpurConfig = new net.pl3x.purpur.PurpurWorldConfig((((net.minecraft.world.level.storage.WorldDataServer)worlddatamutable).getName()), env); // Purpur -+ this.origamiConfig = new de.minebench.origami.OrigamiConfig.WorldConfig(((net.minecraft.world.level.storage.WorldDataServer)worlddatamutable).getName()); // Origami - World Config - this.playerBreedingCooldowns = this.getNewBreedingCooldownCache(); // Purpur - this.generator = gen; - this.world = new CraftWorld((WorldServer) this, gen, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index d57292e524cad6306c99c1cf6c5790fe1d07d815..298b0dfc67906a96d61b4d40919d3363cede0401 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/patches/Origami/patches/server/0003-Don-t-load-chunk-with-seed-based-feature-search.patch b/patches/Origami/patches/server/0003-Don-t-load-chunk-with-seed-based-feature-search.patch deleted file mode 100644 index 2e7600cb..00000000 --- a/patches/Origami/patches/server/0003-Don-t-load-chunk-with-seed-based-feature-search.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Phoenix616 -Date: Mon, 13 Jan 2020 01:00:49 +0100 -Subject: [PATCH] Don't load chunk with seed based feature search - - -diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java -index fe7330fabe386966c2d203a190a00a785ea21be0..a1a585f5b4b2c10c41b184636149c8dde2a3ae51 100644 ---- a/src/main/java/de/minebench/origami/OrigamiConfig.java -+++ b/src/main/java/de/minebench/origami/OrigamiConfig.java -@@ -112,6 +112,14 @@ public final class OrigamiConfig { - config.addDefault("worlds.default." + path, Double.valueOf(dfl)); - return config.getDouble("worlds." + worldName + "." + path, config.getDouble("worlds.default." + path, dfl)); - } -+ -+ public boolean fastFeatureSearchDontLoad = false; -+ private void fastFeatureSearch() { -+ fastFeatureSearchDontLoad = getBoolean("fast-feature-search-dont-load-chunk", fastFeatureSearchDontLoad); -+ if (fastFeatureSearchDontLoad) { -+ Bukkit.getLogger().info("Returning matching chunk rom fast search directly instead of loading it."); -+ } -+ } - } - - } -\ No newline at end of file -diff --git a/src/main/java/net/minecraft/world/level/levelgen/feature/StructureGenerator.java b/src/main/java/net/minecraft/world/level/levelgen/feature/StructureGenerator.java -index 917d147b06b7045ea69917c81f35fcafdd5098dd..5400fcae620912df1dd2c30667cbc4a764252308 100644 ---- a/src/main/java/net/minecraft/world/level/levelgen/feature/StructureGenerator.java -+++ b/src/main/java/net/minecraft/world/level/levelgen/feature/StructureGenerator.java -@@ -184,6 +184,11 @@ public abstract class StructureGenerator - } - } - // Paper end -+ // Origami start - seed based feature search doesn't load -+ if (iworldreader instanceof net.minecraft.world.level.World && ((net.minecraft.world.level.World) iworldreader).origamiConfig.fastFeatureSearchDontLoad) { -+ return chunkcoordintpair.l(); -+ } -+ // Origami end - IChunkAccess ichunkaccess = iworldreader.getChunkAt(chunkcoordintpair.x, chunkcoordintpair.z, ChunkStatus.STRUCTURE_STARTS); - StructureStart structurestart = structuremanager.a(SectionPosition.a(ichunkaccess.getPos(), 0), this, ichunkaccess); - diff --git a/patches/Origami/patches/server/0004-Remove-some-streams-and-object-allocations.patch b/patches/Origami/patches/server/0003-Remove-some-streams-and-object-allocations.patch similarity index 100% rename from patches/Origami/patches/server/0004-Remove-some-streams-and-object-allocations.patch rename to patches/Origami/patches/server/0003-Remove-some-streams-and-object-allocations.patch diff --git a/patches/Origami/patches/server/0005-Hopper-Optimizations.patch b/patches/Origami/patches/server/0004-Hopper-Optimizations.patch similarity index 93% rename from patches/Origami/patches/server/0005-Hopper-Optimizations.patch rename to patches/Origami/patches/server/0004-Hopper-Optimizations.patch index 562d2712..699a65c4 100644 --- a/patches/Origami/patches/server/0005-Hopper-Optimizations.patch +++ b/patches/Origami/patches/server/0004-Hopper-Optimizations.patch @@ -9,12 +9,12 @@ chain. - Only set check cooldown if it's bigger than already set cooldown diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java -index a1a585f5b4b2c10c41b184636149c8dde2a3ae51..f02eb8478cef4ffccee83a1ec4ae5ffbfb0591c1 100644 +index fe7330fabe386966c2d203a190a00a785ea21be0..adee28db7c3eecae30b2b05f3eef3fb1bcc1cfbd 100644 --- a/src/main/java/de/minebench/origami/OrigamiConfig.java +++ b/src/main/java/de/minebench/origami/OrigamiConfig.java -@@ -120,6 +120,12 @@ public final class OrigamiConfig { - Bukkit.getLogger().info("Returning matching chunk rom fast search directly instead of loading it."); - } +@@ -112,6 +112,12 @@ public final class OrigamiConfig { + config.addDefault("worlds.default." + path, Double.valueOf(dfl)); + return config.getDouble("worlds." + worldName + "." + path, config.getDouble("worlds.default." + path, dfl)); } + public boolean tickEmptyHoppers = false; + public int fullHopperCooldown = 128; @@ -84,10 +84,18 @@ index 0166d11cb540a536390f486e1069d6119d8d23d6..b688ff6534e069bc631e2cb84bb1deb3 @Override public boolean a(EntityHuman entityhuman) { diff --git a/src/main/java/net/minecraft/world/level/block/BlockComposter.java b/src/main/java/net/minecraft/world/level/block/BlockComposter.java -index c0b235d5edf3cd14021696d1b4f76ce3de41f5d5..2d6abc0b8b3c9860110f0b5f1df1b3b3bbf30673 100644 +index c0b235d5edf3cd14021696d1b4f76ce3de41f5d5..802139cf4e15191be0e4afddda12a01079e9ce35 100644 --- a/src/main/java/net/minecraft/world/level/block/BlockComposter.java +++ b/src/main/java/net/minecraft/world/level/block/BlockComposter.java -@@ -302,6 +302,7 @@ public class BlockComposter extends Block implements IInventoryHolder { +@@ -23,6 +23,7 @@ import net.minecraft.world.level.GeneratorAccess; + import net.minecraft.world.level.IBlockAccess; + import net.minecraft.world.level.IMaterial; + import net.minecraft.world.level.World; ++import net.minecraft.world.level.block.entity.TileEntityHopper; + import net.minecraft.world.level.block.state.BlockBase; + import net.minecraft.world.level.block.state.BlockStateList; + import net.minecraft.world.level.block.state.IBlockData; +@@ -302,6 +303,7 @@ public class BlockComposter extends Block implements IInventoryHolder { if ((Integer) iblockdata.get(BlockComposter.a) == 7) { worldserver.setTypeAndData(blockposition, (IBlockData) iblockdata.a((IBlockState) BlockComposter.a), 3); worldserver.playSound((EntityHuman) null, blockposition, SoundEffects.BLOCK_COMPOSTER_READY, SoundCategory.BLOCKS, 1.0F, 1.0F); diff --git a/patches/Origami/patches/server/0006-Add-option-to-disable-observer-clocks.patch b/patches/Origami/patches/server/0005-Add-option-to-disable-observer-clocks.patch similarity index 93% rename from patches/Origami/patches/server/0006-Add-option-to-disable-observer-clocks.patch rename to patches/Origami/patches/server/0005-Add-option-to-disable-observer-clocks.patch index 1297b351..333ef00b 100644 --- a/patches/Origami/patches/server/0006-Add-option-to-disable-observer-clocks.patch +++ b/patches/Origami/patches/server/0005-Add-option-to-disable-observer-clocks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to disable observer clocks diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java -index f02eb8478cef4ffccee83a1ec4ae5ffbfb0591c1..047e7d42ce54aa1cb28cfe8b194bf5c6c75824ad 100644 +index adee28db7c3eecae30b2b05f3eef3fb1bcc1cfbd..bd81abc4dc17491c9c4bb10c2edb4e1ca103c8f8 100644 --- a/src/main/java/de/minebench/origami/OrigamiConfig.java +++ b/src/main/java/de/minebench/origami/OrigamiConfig.java -@@ -126,6 +126,11 @@ public final class OrigamiConfig { +@@ -118,6 +118,11 @@ public final class OrigamiConfig { tickEmptyHoppers = getBoolean("tick-empty-hoppers", tickEmptyHoppers); fullHopperCooldown = getInt("ticks-per.full-hopper-cooldown", fullHopperCooldown); } diff --git a/patches/Origami/patches/server/0007-Add-timings-for-Behavior.patch b/patches/Origami/patches/server/0006-Add-timings-for-Behavior.patch similarity index 100% rename from patches/Origami/patches/server/0007-Add-timings-for-Behavior.patch rename to patches/Origami/patches/server/0006-Add-timings-for-Behavior.patch diff --git a/patches/Origami/patches/server/0008-Don-t-wake-up-entities-when-damage-event-is-cancelle.patch b/patches/Origami/patches/server/0007-Don-t-wake-up-entities-when-damage-event-is-cancelle.patch similarity index 90% rename from patches/Origami/patches/server/0008-Don-t-wake-up-entities-when-damage-event-is-cancelle.patch rename to patches/Origami/patches/server/0007-Don-t-wake-up-entities-when-damage-event-is-cancelle.patch index 027b92df..6992eb6a 100644 --- a/patches/Origami/patches/server/0008-Don-t-wake-up-entities-when-damage-event-is-cancelle.patch +++ b/patches/Origami/patches/server/0007-Don-t-wake-up-entities-when-damage-event-is-cancelle.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Don't wake up entities when damage event is cancelled diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index be709c961cd85c1db32fb49c71c63814cbe6bd23..890326cf415a7c5b0d62e9597895d3060ba12d7a 100644 +index 8db61c8b392c8e95f6896b6e48e4d74ddd6b8708..624156bce4968c6d630f71f1e723771ccc94303c 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -1214,9 +1214,12 @@ public abstract class EntityLiving extends Entity { @@ -24,7 +24,7 @@ index be709c961cd85c1db32fb49c71c63814cbe6bd23..890326cf415a7c5b0d62e9597895d306 this.ticksFarFromPlayer = 0; float f1 = f; -@@ -1969,6 +1972,11 @@ public abstract class EntityLiving extends Entity { +@@ -1982,6 +1985,11 @@ public abstract class EntityLiving extends Entity { if (event.isCancelled()) { return false; } diff --git a/patches/Origami/patches/server/0009-Fix-exp-drop-of-zombie-pigmen-MC-56653.patch b/patches/Origami/patches/server/0008-Fix-exp-drop-of-zombie-pigmen-MC-56653.patch similarity index 84% rename from patches/Origami/patches/server/0009-Fix-exp-drop-of-zombie-pigmen-MC-56653.patch rename to patches/Origami/patches/server/0008-Fix-exp-drop-of-zombie-pigmen-MC-56653.patch index 66b70990..02381aee 100644 --- a/patches/Origami/patches/server/0009-Fix-exp-drop-of-zombie-pigmen-MC-56653.patch +++ b/patches/Origami/patches/server/0008-Fix-exp-drop-of-zombie-pigmen-MC-56653.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix exp drop of zombie pigmen (MC-56653) diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java -index 047e7d42ce54aa1cb28cfe8b194bf5c6c75824ad..27599f422be266ad2fdbda49617661801c2c1991 100644 +index bd81abc4dc17491c9c4bb10c2edb4e1ca103c8f8..e72be36d860630afb879b40bf028c5e456169634 100644 --- a/src/main/java/de/minebench/origami/OrigamiConfig.java +++ b/src/main/java/de/minebench/origami/OrigamiConfig.java -@@ -131,6 +131,10 @@ public final class OrigamiConfig { +@@ -123,6 +123,10 @@ public final class OrigamiConfig { private void observerClock() { disableObserverClocks = getBoolean("disable-observer-clocks", disableObserverClocks); } @@ -21,10 +21,10 @@ index 047e7d42ce54aa1cb28cfe8b194bf5c6c75824ad..27599f422be266ad2fdbda4961766180 } \ No newline at end of file diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java b/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java -index 736c45bae020158866514bc760c05a929f47c531..bf72577af3c5631116fbcf086a2c681ea4a4e0a2 100644 +index dfe65943b3a2f744f06b4669590cc203e8419e60..190e37a1b3b5fdbc8bfaaeabb621311503bbc303 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java -@@ -123,7 +123,7 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { +@@ -124,7 +124,7 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { protected void mobTick() { AttributeModifiable attributemodifiable = this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED); diff --git a/patches/Purpur/patches/api/0031-Fix-javadoc-warnings-missing-param-and-return.patch b/patches/Purpur/patches/api/0031-Fix-javadoc-warnings-missing-param-and-return.patch index 829add68..e4ccaba8 100644 --- a/patches/Purpur/patches/api/0031-Fix-javadoc-warnings-missing-param-and-return.patch +++ b/patches/Purpur/patches/api/0031-Fix-javadoc-warnings-missing-param-and-return.patch @@ -534,10 +534,10 @@ index 28a1fe3af1546daa779df46468e0ff8ad823f9ca..7a3be414ef9d54d7a852ba92d704011f @NotNull diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index ba899198be49f9e95c3fb64759313662f75c4567..db4b94f8a4dd49fffdcb0cd9bf0690f0770653d9 100644 +index 3bf6e58b2351cee935e23abec1cea289e31943dc..5f2d5e12f11b471662943680b2012c99a8466306 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java -@@ -81,6 +81,8 @@ public interface UnsafeValues { +@@ -87,6 +87,8 @@ public interface UnsafeValues { /** * Called once by the version command on first use, then cached. @@ -546,7 +546,7 @@ index ba899198be49f9e95c3fb64759313662f75c4567..db4b94f8a4dd49fffdcb0cd9bf0690f0 */ default com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { return new com.destroystokyo.paper.util.VersionFetcher.DummyVersionFetcher(); -@@ -99,6 +101,8 @@ public interface UnsafeValues { +@@ -105,6 +107,8 @@ public interface UnsafeValues { /** * Return the translation key for the Material, so the client can translate it into the active * locale when using a TranslatableComponent. @@ -555,7 +555,7 @@ index ba899198be49f9e95c3fb64759313662f75c4567..db4b94f8a4dd49fffdcb0cd9bf0690f0 * @return the translation key */ String getTranslationKey(Material mat); -@@ -106,6 +110,8 @@ public interface UnsafeValues { +@@ -112,6 +116,8 @@ public interface UnsafeValues { /** * Return the translation key for the Block, so the client can translate it into the active * locale when using a TranslatableComponent. @@ -564,7 +564,7 @@ index ba899198be49f9e95c3fb64759313662f75c4567..db4b94f8a4dd49fffdcb0cd9bf0690f0 * @return the translation key */ String getTranslationKey(org.bukkit.block.Block block); -@@ -114,6 +120,8 @@ public interface UnsafeValues { +@@ -120,6 +126,8 @@ public interface UnsafeValues { * Return the translation key for the EntityType, so the client can translate it into the active * locale when using a TranslatableComponent.
* This is null, when the EntityType isn't known to NMS (custom entities) @@ -573,7 +573,7 @@ index ba899198be49f9e95c3fb64759313662f75c4567..db4b94f8a4dd49fffdcb0cd9bf0690f0 * @return the translation key */ String getTranslationKey(org.bukkit.entity.EntityType type); -@@ -122,6 +130,8 @@ public interface UnsafeValues { +@@ -128,6 +136,8 @@ public interface UnsafeValues { * Creates and returns the next EntityId available. *

* Use this when sending custom packets, so that there are no collisions on the client or server. diff --git a/patches/Purpur/patches/api/0036-Add-unsafe-Entity-serialization-API.patch b/patches/Purpur/patches/api/0036-Add-unsafe-Entity-serialization-API.patch index b701cb16..11af12ed 100644 --- a/patches/Purpur/patches/api/0036-Add-unsafe-Entity-serialization-API.patch +++ b/patches/Purpur/patches/api/0036-Add-unsafe-Entity-serialization-API.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/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index db4b94f8a4dd49fffdcb0cd9bf0690f0770653d9..bca389b75ed072ec95beb7a5c5eb5ac93ce42ecd 100644 +index 5f2d5e12f11b471662943680b2012c99a8466306..7395fe0261da696d1b16c845d244ad5d6957d92a 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java -@@ -159,4 +159,28 @@ public interface UnsafeValues { +@@ -165,4 +165,28 @@ public interface UnsafeValues { */ int getProtocolVersion(); // Paper end diff --git a/patches/Purpur/patches/server/0001-Multithreaded-entity-tracking.patch b/patches/Purpur/patches/server/0001-Multithreaded-entity-tracking.patch deleted file mode 100644 index 963c6fa7..00000000 --- a/patches/Purpur/patches/server/0001-Multithreaded-entity-tracking.patch +++ /dev/null @@ -1,463 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Paul Sauve -Date: Fri, 12 Feb 2021 16:29:41 -0600 -Subject: [PATCH] Multithreaded entity tracking - -Adds a configuration option to run the tracker on multiple threads. -This will generally be faster than the single threaded approach, -unless you don't have a lot of entities/players. - -Airplane -Copyright (C) 2020 Technove LLC - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -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/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java b/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java -index be408aebbccbda46e8aa82ef337574137cfa0096..739839314fd8a88b5fca8b9678e1df07a166c35d 100644 ---- a/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java -+++ b/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java -@@ -16,11 +16,11 @@ public final class IteratorSafeOrderedReferenceSet { - - /* list impl */ - protected E[] listElements; -- protected int listSize; -+ protected int listSize; public int getListSize() { return this.listSize; } // Airplane - getter - - protected final double maxFragFactor; - -- protected int iteratorCount; -+ public int iteratorCount; // Airplane - public for debug - - private final boolean threadRestricted; - -diff --git a/src/main/java/gg/airplane/AirplaneConfig.java b/src/main/java/gg/airplane/AirplaneConfig.java -index 7ec84ef1d1cbb1fabf4c590a2f2c1da3cc181010..b9118cc08ac38e0813d0677700d3d7dcf9b74159 100644 ---- a/src/main/java/gg/airplane/AirplaneConfig.java -+++ b/src/main/java/gg/airplane/AirplaneConfig.java -@@ -102,4 +102,17 @@ public class AirplaneConfig { - } - - -+ public static boolean multithreadedEntityTracker = false; -+ public static boolean entityTrackerAsyncPackets = false; -+ -+ private static void entityTracker() { -+ config.setComment("tracker", "Options to improve the performance of the entity tracker"); -+ -+ multithreadedEntityTracker = config.getBoolean("tracker.multithreaded", multithreadedEntityTracker, -+ "This enables the multithreading of the tracker."); -+ entityTrackerAsyncPackets = config.getBoolean("tracker.unsafe-async-packets", entityTrackerAsyncPackets, -+ "This option can break plugins that assume packets from the", -+ "entity tracker will be sent sync."); -+ } -+ - } -diff --git a/src/main/java/gg/airplane/commands/AirplaneCommands.java b/src/main/java/gg/airplane/commands/AirplaneCommands.java -index 66b20250a26d005427601b1cdee43bdd9eba70cc..f84e26b2d8ab9a9b2d9e92e18002483127121135 100644 ---- a/src/main/java/gg/airplane/commands/AirplaneCommands.java -+++ b/src/main/java/gg/airplane/commands/AirplaneCommands.java -@@ -2,11 +2,13 @@ package gg.airplane.commands; - - import gg.airplane.AirplaneCommand; - import gg.airplane.flare.FlareCommand; -+import gg.airplane.structs.TrackQueue; - import net.minecraft.server.MinecraftServer; - - public class AirplaneCommands { - public static void init() { - MinecraftServer.getServer().server.getCommandMap().register("airplane", "Airplane", new AirplaneCommand()); - MinecraftServer.getServer().server.getCommandMap().register("flare", "Airplane", new FlareCommand()); -+ TrackQueue.TrackQueueDebugCommand.register(); - } - } -diff --git a/src/main/java/gg/airplane/structs/TrackQueue.java b/src/main/java/gg/airplane/structs/TrackQueue.java -new file mode 100644 -index 0000000000000000000000000000000000000000..4419fbe94041f4b8a0ea848880798289d063b8e2 ---- /dev/null -+++ b/src/main/java/gg/airplane/structs/TrackQueue.java -@@ -0,0 +1,109 @@ -+package gg.airplane.structs; -+ -+import com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet; -+import net.minecraft.server.level.WorldServer; -+import net.minecraft.world.level.chunk.Chunk; -+import net.minecraft.server.MinecraftServer; -+import org.apache.logging.log4j.Level; -+import org.bukkit.command.Command; -+import org.bukkit.command.CommandSender; -+ -+import java.util.concurrent.ConcurrentLinkedQueue; -+import java.util.concurrent.ForkJoinPool; -+import java.util.concurrent.atomic.AtomicInteger; -+ -+/** -+ * Helper class to handle processing a track queue. -+ */ -+public class TrackQueue { -+ -+ public static class TrackQueueDebugCommand extends Command { -+ protected TrackQueueDebugCommand() { -+ super("trackqueuedebug"); -+ } -+ -+ public static void register() { -+ MinecraftServer.getServer().server.getCommandMap().register("trackqueuedebug", "Airplane", new TrackQueueDebugCommand()); -+ } -+ -+ @Override -+ public boolean execute(CommandSender sender, String commandLabel, String[] args) { -+ if (!sender.isOp()) { -+ return false; -+ } -+ for (WorldServer world : MinecraftServer.getServer().getWorlds()) { -+ IteratorSafeOrderedReferenceSet chunks = world.getChunkProvider().entityTickingChunks; -+ sender.sendMessage(world.getWorld().getName() + ": " + chunks.size() + " / " + chunks.getListSize() + " (iterators: " + chunks.iteratorCount + ")"); -+ } -+ return true; -+ } -+ } -+ -+ private final IteratorSafeOrderedReferenceSet chunks; -+ private final ForkJoinPool pool = new ForkJoinPool(Math.max(4, Runtime.getRuntime().availableProcessors() >> 2)); -+ private final AtomicInteger taskIndex = new AtomicInteger(); -+ -+ private final ConcurrentLinkedQueue mainThreadTasks; -+ -+ public TrackQueue(IteratorSafeOrderedReferenceSet chunks, ConcurrentLinkedQueue mainThreadTasks) { -+ this.chunks = chunks; -+ this.mainThreadTasks = mainThreadTasks; -+ } -+ -+ public void start() { -+ int iterator = this.chunks.createRawIterator(); -+ if (iterator == -1) { -+ return; -+ } -+ try { -+ this.taskIndex.set(iterator); -+ -+ for (int i = 0; i < this.pool.getParallelism(); i++) { -+ this.pool.execute(this::run); -+ } -+ -+ while (this.taskIndex.get() < this.chunks.getListSize()) { -+ this.runMainThreadTasks(); -+ this.handleTask(); // assist -+ } -+ this.runMainThreadTasks(); // finish tasks -+ } finally { -+ this.chunks.finishRawIterator(); -+ } -+ } -+ -+ private void runMainThreadTasks() { -+ Runnable task; -+ while ((task = this.mainThreadTasks.poll()) != null) { -+ try { -+ task.run(); -+ } catch (Throwable t) { -+ MinecraftServer.LOGGER.log(Level.WARN, "Tasks failed while ticking track queue", t); -+ } -+ } -+ -+ } -+ -+ private void run() { -+ while (handleTask()); -+ } -+ -+ private boolean handleTask() { -+ int index; -+ while ((index = this.taskIndex.getAndIncrement()) < this.chunks.getListSize()) { -+ Chunk chunk = this.chunks.rawGet(index); -+ if (chunk != null) { -+ try { -+ chunk.entityTracker.run(); -+ } catch (Throwable t) { -+ MinecraftServer.LOGGER.log(Level.WARN, "Ticking tracker failed", t); -+ } -+ -+ return true; -+ } -+ } -+ -+ return false; -+ } -+ -+} -diff --git a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -index 207a9c3928aad7c6e89a120b54d87e003ebd232c..424cd048f905cd0ed3f7a4545a26ffde8da1f91f 100644 ---- a/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -+++ b/src/main/java/net/minecraft/server/level/ChunkProviderServer.java -@@ -388,7 +388,7 @@ public class ChunkProviderServer extends IChunkProvider { - } - - final com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet tickingChunks = new com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet<>(4096, 0.75f, 4096, 0.15, true); -- final com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet entityTickingChunks = new com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet<>(4096, 0.75f, 4096, 0.15, true); -+ public final com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet entityTickingChunks = new com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet<>(4096, 0.75f, 4096, 0.15, true); // Airplane - public for debug - // Tuinity end - - public ChunkProviderServer(WorldServer worldserver, Convertable.ConversionSession convertable_conversionsession, DataFixer datafixer, DefinedStructureManager definedstructuremanager, Executor executor, ChunkGenerator chunkgenerator, int i, boolean flag, WorldLoadListener worldloadlistener, Supplier supplier) { -diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java -index 62b95dcba8606330fbb3239e74c5eaf8baa3c51d..fd6dbbf619b828c4ef3d00f8dc30d3893007db7b 100644 ---- a/src/main/java/net/minecraft/server/level/EntityPlayer.java -+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java -@@ -182,7 +182,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { - public NetworkManager networkManager; // Paper - public final MinecraftServer server; - public final PlayerInteractManager playerInteractManager; -- public final Deque removeQueue = new ArrayDeque<>(); // Paper -+ public final Deque removeQueue = new java.util.concurrent.ConcurrentLinkedDeque<>(); // Paper // Airplane concurrent deque - private final AdvancementDataPlayer advancementDataPlayer; - private final ServerStatisticManager serverStatisticManager; - private float lastHealthScored = Float.MIN_VALUE; -diff --git a/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java -index 67ca28463f5add7c18f7f16b918c3f36f8feeeda..37e64e24ca3a90370cdf12e5ff9cd1fceede796b 100644 ---- a/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java -+++ b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java -@@ -75,6 +75,10 @@ public class EntityTrackerEntry { - * Requested in https://github.com/PaperMC/Paper/issues/1537 to allow intercepting packets - */ - public void sendPlayerPacket(EntityPlayer player, Packet packet) { -+ if (!gg.airplane.AirplaneConfig.entityTrackerAsyncPackets && !org.bukkit.Bukkit.isPrimaryThread()) { -+ this.b.chunkProvider.playerChunkMap.trackerEnsureMain(() -> sendPlayerPacket(player, packet)); -+ return; -+ } - player.playerConnection.sendPacket(packet); - } - -@@ -103,7 +107,7 @@ public class EntityTrackerEntry { - - public final void tick() { this.a(); } // Paper - OBFHELPER - public void a() { -- com.tuinity.tuinity.util.TickThread.softEnsureTickThread("Tracker update"); // Tuinity -+ //com.tuinity.tuinity.util.TickThread.softEnsureTickThread("Tracker update"); // Tuinity // Airplane - allow multithreaded - List list = this.tracker.passengers; // Paper - do not copy list - - if (!list.equals(this.p)) { -@@ -116,6 +120,8 @@ public class EntityTrackerEntry { - ItemStack itemstack = entityitemframe.getItem(); - - if (this.tickCounter % 10 == 0 && itemstack.getItem() instanceof ItemWorldMap) { // CraftBukkit - Moved this.tickCounter % 10 logic here so item frames do not enter the other blocks -+ // Airplane start - process maps on main -+ this.b.chunkProvider.playerChunkMap.trackerEnsureMain(() -> { - WorldMap worldmap = ItemWorldMap.getSavedMap(itemstack, this.b); - Iterator iterator = this.trackedPlayers.iterator(); // CraftBukkit - -@@ -129,6 +135,8 @@ public class EntityTrackerEntry { - entityplayer.playerConnection.sendPacket(packet); - } - } -+ }); -+ // Airplane end - } - - this.c(); -@@ -263,18 +271,25 @@ public class EntityTrackerEntry { - // CraftBukkit start - Create PlayerVelocity event - boolean cancelled = false; - -- if (this.tracker instanceof EntityPlayer) { -+ if (this.tracker instanceof EntityPlayer && PlayerVelocityEvent.getHandlerList().getRegisteredListeners().length > 0) { // Airplane - ensure there's listeners -+ // Airplane start - run on main thread -+ this.b.chunkProvider.playerChunkMap.trackerEnsureMain(() -> { - Player player = (Player) this.tracker.getBukkitEntity(); - org.bukkit.util.Vector velocity = player.getVelocity(); - - PlayerVelocityEvent event = new PlayerVelocityEvent(player, velocity.clone()); - this.tracker.world.getServer().getPluginManager().callEvent(event); - -- if (event.isCancelled()) { -- cancelled = true; -- } else if (!velocity.equals(event.getVelocity())) { -+ if (!event.isCancelled() && !velocity.equals(event.getVelocity())) { - player.setVelocity(event.getVelocity()); - } -+ if (!event.isCancelled()) { -+ this.broadcastIncludingSelf(new PacketPlayOutEntityVelocity(this.tracker)); // duplicate from !cancelled below -+ } -+ -+ }); -+ cancelled = true; // don't broadcast until the event has finished -+ // Airplane end - } - - if (!cancelled) { -@@ -358,7 +373,9 @@ public class EntityTrackerEntry { - if (!list.isEmpty()) { - consumer.accept(new PacketPlayOutEntityEquipment(this.tracker.getId(), list)); - } -+ this.b.chunkProvider.playerChunkMap.trackerEnsureMain(() -> { // Airplane - ((EntityLiving) this.tracker).updateEquipment(); // CraftBukkit - SPIGOT-3789: sync again immediately after sending -+ }); // Airplane - } - - // CraftBukkit start - Fix for nonsensical head yaw -@@ -436,6 +453,10 @@ public class EntityTrackerEntry { - // Paper end - - private void broadcastIncludingSelf(Packet packet) { -+ if (!gg.airplane.AirplaneConfig.entityTrackerAsyncPackets && !org.bukkit.Bukkit.isPrimaryThread()) { -+ this.b.chunkProvider.playerChunkMap.trackerEnsureMain(() -> broadcastIncludingSelf(packet)); -+ return; -+ } - this.f.accept(packet); - if (this.tracker instanceof EntityPlayer) { - ((EntityPlayer) this.tracker).playerConnection.sendPacket(packet); -diff --git a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java -index b28995ecfd7f45e6b6197be96c418aa0d05d3383..bb5ebacf99238223b84f3663af3ab9c6c60332eb 100644 ---- a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java -+++ b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java -@@ -763,6 +763,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { - return this.updatingChunks.getVisibleAsync(i); - // Tuinity end - Don't copy - } -+ // Airplane start - since neither map can be updated during tracker tick, it's safe to allow direct retrieval here -+ private PlayerChunk trackerGetVisibleChunk(long i) { -+ return this.hasPendingVisibleUpdate ? this.pendingVisibleChunks.get(i) : ((ProtectedVisibleChunksMap) this.visibleChunks).safeGet(i); -+ } -+ // Airplane end - - protected final IntSupplier getPrioritySupplier(long i) { return c(i); } // Paper - OBFHELPER - protected IntSupplier c(long i) { -@@ -2158,10 +2163,30 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { - entity.tracker = null; // Paper - We're no longer tracked - } - -+ // Airplane start - tools to ensure main thread -+ private final java.util.concurrent.ConcurrentLinkedQueue trackerMainQueue = new java.util.concurrent.ConcurrentLinkedQueue<>(); -+ private gg.airplane.structs.TrackQueue trackQueue; -+ -+ void trackerEnsureMain(Runnable runnable) { -+ if (this.world.serverThread == Thread.currentThread()) { -+ runnable.run(); -+ } else { -+ this.trackerMainQueue.add(runnable); -+ } -+ } -+ // Airplane end -+ - // Paper start - optimised tracker - private final void processTrackQueue() { - this.world.timings.tracker1.startTiming(); - try { -+ // Airplane start - multithreaded tracker -+ if (this.trackQueue == null) this.trackQueue = new gg.airplane.structs.TrackQueue(this.world.getChunkProvider().entityTickingChunks, trackerMainQueue); -+ if (gg.airplane.AirplaneConfig.multithreadedEntityTracker) { -+ this.trackQueue.start(); -+ return; -+ } -+ // Airplane end - com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet.Iterator iterator = this.world.getChunkProvider().entityTickingChunks.iterator(); - try { - while (iterator.hasNext()) { -@@ -2427,7 +2452,7 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially - public class EntityTracker { - - final EntityTrackerEntry trackerEntry; // Paper - private -> package private -- private final Entity tracker; -+ public final Entity tracker; // Airplane - public for chunk - private final int trackingDistance; - private SectionPosition e; - // Paper start -@@ -2446,7 +2471,9 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially - // Paper start - use distance map to optimise tracker - com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet lastTrackerCandidates; - -- final void updatePlayers(com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet newTrackerCandidates) { -+ public synchronized final void tickEntry() { this.trackerEntry.tick(); } // Airplane - move entry tick into sync block -+ -+ public synchronized final void updatePlayers(com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet newTrackerCandidates) { // Airplane - com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet oldTrackerCandidates = this.lastTrackerCandidates; - this.lastTrackerCandidates = newTrackerCandidates; - -@@ -2487,7 +2514,13 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially - return this.tracker.getId(); - } - -- public void broadcast(Packet packet) { -+ public synchronized void broadcast(Packet packet) { // Airplane - synchronized for tracked player -+ // Airplane start -+ if (!gg.airplane.AirplaneConfig.entityTrackerAsyncPackets && !org.bukkit.Bukkit.isPrimaryThread()) { -+ trackerEnsureMain(() -> broadcast(packet)); -+ return; -+ } -+ // Airplane end - Iterator iterator = this.trackedPlayers.iterator(); - - while (iterator.hasNext()) { -@@ -2499,6 +2532,12 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially - } - - public void broadcastIncludingSelf(Packet packet) { -+ // Airplane start -+ if (!gg.airplane.AirplaneConfig.entityTrackerAsyncPackets && !org.bukkit.Bukkit.isPrimaryThread()) { -+ trackerEnsureMain(() -> broadcastIncludingSelf(packet)); -+ return; -+ } -+ // Airplane end - this.broadcast(packet); - if (this.tracker instanceof EntityPlayer) { - ((EntityPlayer) this.tracker).playerConnection.sendPacket(packet); -@@ -2525,8 +2564,8 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially - - } - -- public void updatePlayer(EntityPlayer entityplayer) { -- org.spigotmc.AsyncCatcher.catchOp("player tracker update"); // Spigot -+ public synchronized void updatePlayer(EntityPlayer entityplayer) { // Airplane - sync for access to map -+ //org.spigotmc.AsyncCatcher.catchOp("player tracker update"); // Spigot // Airplane - allow sync for tracker - if (entityplayer != this.tracker) { - // Paper start - remove allocation of Vec3D here - //Vec3D vec3d = entityplayer.getPositionVector().d(this.tracker.getPositionVector()); // MC-155077, SPIGOT-5113 -@@ -2542,7 +2581,7 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially - - if (!flag1) { - ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(this.tracker.chunkX, this.tracker.chunkZ); -- PlayerChunk playerchunk = PlayerChunkMap.this.getVisibleChunk(chunkcoordintpair.pair()); -+ PlayerChunk playerchunk = PlayerChunkMap.this.trackerGetVisibleChunk(chunkcoordintpair.pair()); // Airplane - - if (playerchunk != null && playerchunk.getSendingChunk() != null && PlayerChunkMap.this.playerChunkManager.isChunkSent(entityplayer, MathHelper.floor(this.tracker.locX()) >> 4, MathHelper.floor(this.tracker.locZ()) >> 4)) { // Paper - no-tick view distance // Tuinity - don't broadcast in chunks the player hasn't received - flag1 = PlayerChunkMap.b(chunkcoordintpair, entityplayer, false) <= PlayerChunkMap.this.viewDistance; -diff --git a/src/main/java/net/minecraft/world/level/chunk/Chunk.java b/src/main/java/net/minecraft/world/level/chunk/Chunk.java -index 8f5809756b4fb358f1207c1d61c5cbe6df3fff00..2e8eb0bb8fb4f7ce6b92fe01a81327da30e614ae 100644 ---- a/src/main/java/net/minecraft/world/level/chunk/Chunk.java -+++ b/src/main/java/net/minecraft/world/level/chunk/Chunk.java -@@ -111,6 +111,26 @@ public class Chunk implements IChunkAccess { - } - // Airplane end - -+ // Airplane start - entity tracker runnable -+ // prevents needing to allocate new lambda in processTrackQueue -+ public final Runnable entityTracker = new Runnable() { -+ @Override -+ public void run() { -+ Entity[] entities = Chunk.this.entities.getRawData(); -+ for (int i = 0, len = Chunk.this.entities.size(); i < len; ++i) { -+ Entity entity = entities[i]; -+ if (entity != null) { -+ PlayerChunkMap.EntityTracker tracker = ((WorldServer) Chunk.this.getWorld()).getChunkProvider().playerChunkMap.trackedEntities.get(entity.getId()); -+ if (tracker != null) { -+ tracker.updatePlayers(tracker.tracker.getPlayersInTrackRange()); -+ tracker.tickEntry(); -+ } -+ } -+ } -+ } -+ }; -+ // Airplane end -+ - public Chunk(World world, ChunkCoordIntPair chunkcoordintpair, BiomeStorage biomestorage) { - this(world, chunkcoordintpair, biomestorage, ChunkConverter.a, TickListEmpty.b(), TickListEmpty.b(), 0L, (ChunkSection[]) null, (Consumer) null); - } diff --git a/patches/Purpur/patches/server/0002-Rebrand.patch b/patches/Purpur/patches/server/0001-Rebrand.patch similarity index 98% rename from patches/Purpur/patches/server/0002-Rebrand.patch rename to patches/Purpur/patches/server/0001-Rebrand.patch index b5e6bd86..c4b2e434 100644 --- a/patches/Purpur/patches/server/0002-Rebrand.patch +++ b/patches/Purpur/patches/server/0001-Rebrand.patch @@ -92,7 +92,7 @@ index 3bc5cd1e53dd7c94b948e7f57f0dc8e073e349b0..87891161f5b06bb8be0e2016b490484e throwable = throwable1; throw throwable1; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 246fcc9b40152964810ceef356ecb2eee3551135..8620bbcc7c555e4760777397063f0392c9acc35e 100644 +index 2bb00a42492b08036e984d3e1d9a564d4b4226c2..42c24781d058cee94db8f0fa1a6849b41a0394ff 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1646,7 +1646,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant affectsSpawning = (entity) -> { diff --git a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java -index ad85dda5c50b797904824a08513fbcec042128ea..8f9d0769e7855c3565a34927f3f3741c43e45f35 100644 +index 5f9e64df007ebc40f7bcb50be495b10e51d5b87a..17e6f476e60a4f5dc278894a0a874ca5ae45ee22 100644 --- a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java +++ b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java @@ -182,6 +182,15 @@ public abstract class EntityHuman extends EntityLiving { @@ -289,7 +289,7 @@ index 45e786565ac988abadffda2e7ba3ff1e2880b786..f4052aaa2235894b996d65c569a083f1 + // Purpur end } diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 8b36ca5062f8e0e8bd58aa506e91704a747de81b..c94cd5a95f28190e88d31b522035fc7c74a2ac33 100644 +index 94910bf0c53c79588c55b89e4a023273d6c859ef..a57473fb8815545977ff08bf46d6463d2b7a9d78 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -207,6 +207,7 @@ public class ActivationRange diff --git a/patches/Purpur/patches/server/0009-Bring-back-server-name.patch b/patches/Purpur/patches/server/0008-Bring-back-server-name.patch similarity index 100% rename from patches/Purpur/patches/server/0009-Bring-back-server-name.patch rename to patches/Purpur/patches/server/0008-Bring-back-server-name.patch diff --git a/patches/Purpur/patches/server/0010-Configurable-server-mod-name.patch b/patches/Purpur/patches/server/0009-Configurable-server-mod-name.patch similarity index 94% rename from patches/Purpur/patches/server/0010-Configurable-server-mod-name.patch rename to patches/Purpur/patches/server/0009-Configurable-server-mod-name.patch index 30fe1cc9..92bf7549 100644 --- a/patches/Purpur/patches/server/0010-Configurable-server-mod-name.patch +++ b/patches/Purpur/patches/server/0009-Configurable-server-mod-name.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable server mod name diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 8620bbcc7c555e4760777397063f0392c9acc35e..83b98a18a8b726621068b5fd2bed046852dccf2d 100644 +index 42c24781d058cee94db8f0fa1a6849b41a0394ff..6121ef7fcbadb50d05fad4270556e825f636f4d8 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1646,7 +1646,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant public @@ -67,7 +67,7 @@ index 7e388dcca2d4e78b49d5fc5fce0b962e74839fa3..e875671ce985199bc37de131280935a8 public Scoreboard getScoreboard() { return getBukkitEntity().getScoreboard().getHandle(); diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index e58bbd4c1b59293ddf58d0f7cf37a629f5cc96d6..7955d1d8cbb836be55d194d66152eb49fee27e49 100644 +index 15349a7bddcad5a4a6db07a8aa6ae8d06163b1f6..37663436c1ffed4552cdcdac7a5c09fe9b632fee 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -1896,6 +1896,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -79,10 +79,10 @@ index e58bbd4c1b59293ddf58d0f7cf37a629f5cc96d6..7955d1d8cbb836be55d194d66152eb49 this.server.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(getPlayer(), packStatus)); // Paper end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 0b5cf23932c3c626d8805d4db97d2bbab63634cf..a285d0594e61190a751a96f22afeb12d2dcce3fe 100644 +index c705bf1e651a764d56b87ebc5a86a938d8bd34bb..9360d35581c6961a768973cc31341381ee26e234 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1007,6 +1007,8 @@ public abstract class PlayerList { +@@ -1009,6 +1009,8 @@ public abstract class PlayerList { } // Paper end diff --git a/patches/Purpur/patches/server/0017-Anvil-API.patch b/patches/Purpur/patches/server/0016-Anvil-API.patch similarity index 100% rename from patches/Purpur/patches/server/0017-Anvil-API.patch rename to patches/Purpur/patches/server/0016-Anvil-API.patch diff --git a/patches/Purpur/patches/server/0018-Configurable-villager-brain-ticks.patch b/patches/Purpur/patches/server/0017-Configurable-villager-brain-ticks.patch similarity index 100% rename from patches/Purpur/patches/server/0018-Configurable-villager-brain-ticks.patch rename to patches/Purpur/patches/server/0017-Configurable-villager-brain-ticks.patch diff --git a/patches/Purpur/patches/server/0019-Alternative-Keepalive-Handling.patch b/patches/Purpur/patches/server/0018-Alternative-Keepalive-Handling.patch similarity index 97% rename from patches/Purpur/patches/server/0019-Alternative-Keepalive-Handling.patch rename to patches/Purpur/patches/server/0018-Alternative-Keepalive-Handling.patch index 9db8b9d9..d4281e68 100644 --- a/patches/Purpur/patches/server/0019-Alternative-Keepalive-Handling.patch +++ b/patches/Purpur/patches/server/0018-Alternative-Keepalive-Handling.patch @@ -17,7 +17,7 @@ index b4c37287362907b8507d156b978ba5b9d961bb7b..9e6e6636539702507abb78515e002819 return this.a; } diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index 7955d1d8cbb836be55d194d66152eb49fee27e49..1e7ae4a3947f2714159a6b93ef7d79541a6e070d 100644 +index 37663436c1ffed4552cdcdac7a5c09fe9b632fee..f5ada346a11ac3becda4b87416beebd680ca16fa 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -233,6 +233,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -50,7 +50,7 @@ index 7955d1d8cbb836be55d194d66152eb49fee27e49..1e7ae4a3947f2714159a6b93ef7d7954 if (this.isPendingPing()) { if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected PlayerConnection.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getName()); // more info -@@ -3078,6 +3094,16 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -3079,6 +3095,16 @@ public class PlayerConnection implements PacketListenerPlayIn { @Override public void a(PacketPlayInKeepAlive packetplayinkeepalive) { diff --git a/patches/Purpur/patches/server/0020-Silk-touch-spawners.patch b/patches/Purpur/patches/server/0019-Silk-touch-spawners.patch similarity index 98% rename from patches/Purpur/patches/server/0020-Silk-touch-spawners.patch rename to patches/Purpur/patches/server/0019-Silk-touch-spawners.patch index 5f72d5aa..c0a79d03 100644 --- a/patches/Purpur/patches/server/0020-Silk-touch-spawners.patch +++ b/patches/Purpur/patches/server/0019-Silk-touch-spawners.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Silk touch spawners diff --git a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java -index 71938ad7b3494e803beca7e4022aad12a51f2096..0b77884d8134c328f8fd1bbb8230d260606dc5ee 100644 +index cd2da276c09dcf98c1c50dc66aa30dd3b67b43af..2ef13ce5cb7df206753f41a692d74c8d68354cfc 100644 --- a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java +++ b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java @@ -81,6 +81,7 @@ public final class PaperAdventure { @@ -14,7 +14,7 @@ index 71938ad7b3494e803beca7e4022aad12a51f2096..0b77884d8134c328f8fd1bbb8230d260 public static final LegacyComponentSerializer LEGACY_SECTION_UXRC = LegacyComponentSerializer.builder().flattener(FLATTENER).hexColors().useUnusualXRepeatedCharacterHexFormat().build(); + public static final LegacyComponentSerializer LEGACY_AMPERSAND = LegacyComponentSerializer.builder().character(LegacyComponentSerializer.AMPERSAND_CHAR).hexColors().build(); // Purpur public static final PlainComponentSerializer PLAIN = PlainComponentSerializer.builder().flattener(FLATTENER).build(); - static final GsonComponentSerializer GSON = GsonComponentSerializer.builder() + public static final GsonComponentSerializer GSON = GsonComponentSerializer.builder() .legacyHoverEventSerializer(NBTLegacyHoverEventSerializer.INSTANCE) diff --git a/src/main/java/net/minecraft/server/ItemSpawner.java b/src/main/java/net/minecraft/server/ItemSpawner.java new file mode 100644 diff --git a/patches/Purpur/patches/server/0021-MC-168772-Fix-Add-turtle-egg-block-options.patch b/patches/Purpur/patches/server/0020-MC-168772-Fix-Add-turtle-egg-block-options.patch similarity index 100% rename from patches/Purpur/patches/server/0021-MC-168772-Fix-Add-turtle-egg-block-options.patch rename to patches/Purpur/patches/server/0020-MC-168772-Fix-Add-turtle-egg-block-options.patch diff --git a/patches/Purpur/patches/server/0022-Fix-vanilla-command-permission-handler.patch b/patches/Purpur/patches/server/0021-Fix-vanilla-command-permission-handler.patch similarity index 100% rename from patches/Purpur/patches/server/0022-Fix-vanilla-command-permission-handler.patch rename to patches/Purpur/patches/server/0021-Fix-vanilla-command-permission-handler.patch diff --git a/patches/Purpur/patches/server/0023-Logger-settings-suppressing-pointless-logs.patch b/patches/Purpur/patches/server/0022-Logger-settings-suppressing-pointless-logs.patch similarity index 100% rename from patches/Purpur/patches/server/0023-Logger-settings-suppressing-pointless-logs.patch rename to patches/Purpur/patches/server/0022-Logger-settings-suppressing-pointless-logs.patch diff --git a/patches/Purpur/patches/server/0024-Disable-outdated-build-check.patch b/patches/Purpur/patches/server/0023-Disable-outdated-build-check.patch similarity index 100% rename from patches/Purpur/patches/server/0024-Disable-outdated-build-check.patch rename to patches/Purpur/patches/server/0023-Disable-outdated-build-check.patch diff --git a/patches/Purpur/patches/server/0025-Giants-AI-settings.patch b/patches/Purpur/patches/server/0024-Giants-AI-settings.patch similarity index 95% rename from patches/Purpur/patches/server/0025-Giants-AI-settings.patch rename to patches/Purpur/patches/server/0024-Giants-AI-settings.patch index f30f0a30..38175841 100644 --- a/patches/Purpur/patches/server/0025-Giants-AI-settings.patch +++ b/patches/Purpur/patches/server/0024-Giants-AI-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Giants AI settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c6b4af810fe3bda7797ab94316b2357178c9cd49..b7c72eaf5715a30bb8f82891f9830f9f62ec03c9 100644 +index 99c93d48726b4b92a341ba98721173df8b4ff30a..b0cfd7e2be03222e3e34791e5bf6fb77a5d91c5a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -228,7 +228,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne @@ -18,10 +18,10 @@ index c6b4af810fe3bda7797ab94316b2357178c9cd49..b7c72eaf5715a30bb8f82891f9830f9f public float I; protected final Random random; diff --git a/src/main/java/net/minecraft/world/entity/EntityInsentient.java b/src/main/java/net/minecraft/world/entity/EntityInsentient.java -index f4440a5c4aedb1d7d303517f86a07c856dd1309b..7443fe924486404931c11793acc67e2f03de4e41 100644 +index dc78bafeddf6b584181c818b90efa7ff531377a3..af04853ba114a80eb756c1700d27567fd8548e13 100644 --- a/src/main/java/net/minecraft/world/entity/EntityInsentient.java +++ b/src/main/java/net/minecraft/world/entity/EntityInsentient.java -@@ -1020,6 +1020,7 @@ public abstract class EntityInsentient extends EntityLiving { +@@ -1027,6 +1027,7 @@ public abstract class EntityInsentient extends EntityLiving { return f; } @@ -29,7 +29,7 @@ index f4440a5c4aedb1d7d303517f86a07c856dd1309b..7443fe924486404931c11793acc67e2f protected void a(DifficultyDamageScaler difficultydamagescaler) { if (this.random.nextFloat() < 0.15F * difficultydamagescaler.d()) { int i = this.random.nextInt(2); -@@ -1127,6 +1128,7 @@ public abstract class EntityInsentient extends EntityLiving { +@@ -1134,6 +1135,7 @@ public abstract class EntityInsentient extends EntityLiving { } } @@ -38,7 +38,7 @@ index f4440a5c4aedb1d7d303517f86a07c856dd1309b..7443fe924486404931c11793acc67e2f float f = difficultydamagescaler.d(); diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 2777bd3ea82b214fc15c5ce3ce47c90c1e5fe538..f5bc04059c24f57530653c8845cfe4daa5fed843 100644 +index 6d4f844c68ce48b942280fc5f3a54af89b31c093..8feb1526a3cd5e9cdd2ce731a7701527180e157d 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -261,6 +261,7 @@ public abstract class EntityLiving extends Entity { @@ -58,7 +58,7 @@ index 2777bd3ea82b214fc15c5ce3ce47c90c1e5fe538..f5bc04059c24f57530653c8845cfe4da public BehaviorController getBehaviorController() { return this.bg; } -@@ -2276,7 +2279,7 @@ public abstract class EntityLiving extends Entity { +@@ -2289,7 +2292,7 @@ public abstract class EntityLiving extends Entity { this.enderTeleportTo(vec3d.x, vec3d.y, vec3d.z); } diff --git a/patches/Purpur/patches/server/0026-Illusioners-AI-settings.patch b/patches/Purpur/patches/server/0025-Illusioners-AI-settings.patch similarity index 100% rename from patches/Purpur/patches/server/0026-Illusioners-AI-settings.patch rename to patches/Purpur/patches/server/0025-Illusioners-AI-settings.patch diff --git a/patches/Purpur/patches/server/0027-Zombie-horse-naturally-spawn.patch b/patches/Purpur/patches/server/0026-Zombie-horse-naturally-spawn.patch similarity index 95% rename from patches/Purpur/patches/server/0027-Zombie-horse-naturally-spawn.patch rename to patches/Purpur/patches/server/0026-Zombie-horse-naturally-spawn.patch index 04905784..e4ccdfcd 100644 --- a/patches/Purpur/patches/server/0027-Zombie-horse-naturally-spawn.patch +++ b/patches/Purpur/patches/server/0026-Zombie-horse-naturally-spawn.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 18d70aff974d756a62a8f9f0e6c52f89ef1fa2c8..c49b049351c36878238e65eb9cbf949a682e4a7d 100644 +index e37c7d925afb5043e6008488f7f773ba2466ee55..bfa316114f75923f3653254007afc74ddd49f441 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -96,6 +96,7 @@ import net.minecraft.world.entity.ai.village.poi.VillagePlace; @@ -16,7 +16,7 @@ index 18d70aff974d756a62a8f9f0e6c52f89ef1fa2c8..c49b049351c36878238e65eb9cbf949a import net.minecraft.world.entity.animal.horse.EntityHorseSkeleton; import net.minecraft.world.entity.boss.EntityComplexPart; import net.minecraft.world.entity.boss.enderdragon.EntityEnderDragon; -@@ -1222,12 +1223,18 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1221,12 +1222,18 @@ public class WorldServer extends World implements GeneratorAccessSeed { boolean flag1 = this.getGameRules().getBoolean(GameRules.DO_MOB_SPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.b() * paperConfig.skeleHorseSpawnChance; // Paper if (flag1) { diff --git a/patches/Purpur/patches/server/0028-Charged-creeper-naturally-spawn.patch b/patches/Purpur/patches/server/0027-Charged-creeper-naturally-spawn.patch similarity index 100% rename from patches/Purpur/patches/server/0028-Charged-creeper-naturally-spawn.patch rename to patches/Purpur/patches/server/0027-Charged-creeper-naturally-spawn.patch diff --git a/patches/Purpur/patches/server/0029-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/Purpur/patches/server/0028-Rabbit-naturally-spawn-toast-and-killer.patch similarity index 100% rename from patches/Purpur/patches/server/0029-Rabbit-naturally-spawn-toast-and-killer.patch rename to patches/Purpur/patches/server/0028-Rabbit-naturally-spawn-toast-and-killer.patch diff --git a/patches/Purpur/patches/server/0030-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/Purpur/patches/server/0029-Fix-outdated-server-showing-in-ping-before-server-fu.patch similarity index 100% rename from patches/Purpur/patches/server/0030-Fix-outdated-server-showing-in-ping-before-server-fu.patch rename to patches/Purpur/patches/server/0029-Fix-outdated-server-showing-in-ping-before-server-fu.patch diff --git a/patches/Purpur/patches/server/0031-Make-Iron-Golems-Swim.patch b/patches/Purpur/patches/server/0030-Make-Iron-Golems-Swim.patch similarity index 100% rename from patches/Purpur/patches/server/0031-Make-Iron-Golems-Swim.patch rename to patches/Purpur/patches/server/0030-Make-Iron-Golems-Swim.patch diff --git a/patches/Purpur/patches/server/0032-Dont-send-useless-entity-packets.patch b/patches/Purpur/patches/server/0031-Dont-send-useless-entity-packets.patch similarity index 95% rename from patches/Purpur/patches/server/0032-Dont-send-useless-entity-packets.patch rename to patches/Purpur/patches/server/0031-Dont-send-useless-entity-packets.patch index 127e472b..c8948db1 100644 --- a/patches/Purpur/patches/server/0032-Dont-send-useless-entity-packets.patch +++ b/patches/Purpur/patches/server/0031-Dont-send-useless-entity-packets.patch @@ -26,10 +26,10 @@ index 0eed10a6c4e0c7245f219d19ed1e2e5c94364db9..2b54a5f3347f788b751892105f888663 protected boolean h; protected boolean i; diff --git a/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java -index 37e64e24ca3a90370cdf12e5ff9cd1fceede796b..f63ec5fa5a1cb34f4809a06a29d01603efb178f1 100644 +index 67ca28463f5add7c18f7f16b918c3f36f8feeeda..53e773c14689967d5b12467bf209eefb05f7a812 100644 --- a/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java -@@ -208,6 +208,7 @@ public class EntityTrackerEntry { +@@ -200,6 +200,7 @@ public class EntityTrackerEntry { this.o = 0; packet1 = new PacketPlayOutEntityTeleport(this.tracker); } @@ -37,7 +37,7 @@ index 37e64e24ca3a90370cdf12e5ff9cd1fceede796b..f63ec5fa5a1cb34f4809a06a29d01603 } if ((this.e || this.tracker.impulse || this.tracker instanceof EntityLiving && ((EntityLiving) this.tracker).isGliding()) && this.tickCounter > 0) { -@@ -301,6 +302,22 @@ public class EntityTrackerEntry { +@@ -286,6 +287,22 @@ public class EntityTrackerEntry { } diff --git a/patches/Purpur/patches/server/0033-Tulips-change-fox-type.patch b/patches/Purpur/patches/server/0032-Tulips-change-fox-type.patch similarity index 100% rename from patches/Purpur/patches/server/0033-Tulips-change-fox-type.patch rename to patches/Purpur/patches/server/0032-Tulips-change-fox-type.patch diff --git a/patches/Purpur/patches/server/0034-Breedable-Polar-Bears.patch b/patches/Purpur/patches/server/0033-Breedable-Polar-Bears.patch similarity index 100% rename from patches/Purpur/patches/server/0034-Breedable-Polar-Bears.patch rename to patches/Purpur/patches/server/0033-Breedable-Polar-Bears.patch diff --git a/patches/Purpur/patches/server/0035-Chickens-can-retaliate.patch b/patches/Purpur/patches/server/0034-Chickens-can-retaliate.patch similarity index 100% rename from patches/Purpur/patches/server/0035-Chickens-can-retaliate.patch rename to patches/Purpur/patches/server/0034-Chickens-can-retaliate.patch diff --git a/patches/Purpur/patches/server/0036-Add-option-to-set-armorstand-step-height.patch b/patches/Purpur/patches/server/0035-Add-option-to-set-armorstand-step-height.patch similarity index 100% rename from patches/Purpur/patches/server/0036-Add-option-to-set-armorstand-step-height.patch rename to patches/Purpur/patches/server/0035-Add-option-to-set-armorstand-step-height.patch diff --git a/patches/Purpur/patches/server/0037-Cat-spawning-options.patch b/patches/Purpur/patches/server/0036-Cat-spawning-options.patch similarity index 100% rename from patches/Purpur/patches/server/0037-Cat-spawning-options.patch rename to patches/Purpur/patches/server/0036-Cat-spawning-options.patch diff --git a/patches/Purpur/patches/server/0038-MC-147659-Fix-non-black-cats-spawning-in-swamp-huts.patch b/patches/Purpur/patches/server/0037-MC-147659-Fix-non-black-cats-spawning-in-swamp-huts.patch similarity index 100% rename from patches/Purpur/patches/server/0038-MC-147659-Fix-non-black-cats-spawning-in-swamp-huts.patch rename to patches/Purpur/patches/server/0037-MC-147659-Fix-non-black-cats-spawning-in-swamp-huts.patch diff --git a/patches/Purpur/patches/server/0039-Cows-eat-mushrooms.patch b/patches/Purpur/patches/server/0038-Cows-eat-mushrooms.patch similarity index 96% rename from patches/Purpur/patches/server/0039-Cows-eat-mushrooms.patch rename to patches/Purpur/patches/server/0038-Cows-eat-mushrooms.patch index 21bff493..b4990b91 100644 --- a/patches/Purpur/patches/server/0039-Cows-eat-mushrooms.patch +++ b/patches/Purpur/patches/server/0038-Cows-eat-mushrooms.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cows eat mushrooms diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b7c72eaf5715a30bb8f82891f9830f9f62ec03c9..c8071e2909c03bd8eafb92fbf8fd8701642df1f9 100644 +index b0cfd7e2be03222e3e34791e5bf6fb77a5d91c5a..690685ac224a8b63a022d0801e3e4adb9416cc39 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2886,6 +2886,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2917,6 +2917,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne this.invulnerable = flag; } @@ -17,7 +17,7 @@ index b7c72eaf5715a30bb8f82891f9830f9f62ec03c9..c8071e2909c03bd8eafb92fbf8fd8701 this.setPositionRotation(entity.locX(), entity.locY(), entity.locZ(), entity.yaw, entity.pitch); } diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index f5bc04059c24f57530653c8845cfe4daa5fed843..5cdefe2a1b4085e3aae7dbbb751cfd368593ebd7 100644 +index 8feb1526a3cd5e9cdd2ce731a7701527180e157d..d419d71af42c361d30aab12e4d245358667f857b 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -176,7 +176,7 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/Purpur/patches/server/0040-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/Purpur/patches/server/0039-Fix-cow-rotation-when-shearing-mooshroom.patch similarity index 100% rename from patches/Purpur/patches/server/0040-Fix-cow-rotation-when-shearing-mooshroom.patch rename to patches/Purpur/patches/server/0039-Fix-cow-rotation-when-shearing-mooshroom.patch diff --git a/patches/Purpur/patches/server/0041-Pigs-give-saddle-back.patch b/patches/Purpur/patches/server/0040-Pigs-give-saddle-back.patch similarity index 100% rename from patches/Purpur/patches/server/0041-Pigs-give-saddle-back.patch rename to patches/Purpur/patches/server/0040-Pigs-give-saddle-back.patch diff --git a/patches/Purpur/patches/server/0042-Snowman-drop-and-put-back-pumpkin.patch b/patches/Purpur/patches/server/0041-Snowman-drop-and-put-back-pumpkin.patch similarity index 100% rename from patches/Purpur/patches/server/0042-Snowman-drop-and-put-back-pumpkin.patch rename to patches/Purpur/patches/server/0041-Snowman-drop-and-put-back-pumpkin.patch diff --git a/patches/Purpur/patches/server/0043-Ender-dragon-always-drop-full-exp.patch b/patches/Purpur/patches/server/0042-Ender-dragon-always-drop-full-exp.patch similarity index 100% rename from patches/Purpur/patches/server/0043-Ender-dragon-always-drop-full-exp.patch rename to patches/Purpur/patches/server/0042-Ender-dragon-always-drop-full-exp.patch diff --git a/patches/Purpur/patches/server/0044-Signs-editable-on-right-click.patch b/patches/Purpur/patches/server/0043-Signs-editable-on-right-click.patch similarity index 100% rename from patches/Purpur/patches/server/0044-Signs-editable-on-right-click.patch rename to patches/Purpur/patches/server/0043-Signs-editable-on-right-click.patch diff --git a/patches/Purpur/patches/server/0045-Signs-allow-color-codes.patch b/patches/Purpur/patches/server/0044-Signs-allow-color-codes.patch similarity index 95% rename from patches/Purpur/patches/server/0045-Signs-allow-color-codes.patch rename to patches/Purpur/patches/server/0044-Signs-allow-color-codes.patch index a02dc85b..da9bcd92 100644 --- a/patches/Purpur/patches/server/0045-Signs-allow-color-codes.patch +++ b/patches/Purpur/patches/server/0044-Signs-allow-color-codes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java -index e875671ce985199bc37de131280935a859253954..ba71636527f173dfc5ddae9ef0f7c73d0423d9b3 100644 +index 6e3a3a50e01c41b40451bce05015714b5a7fe1e3..43900bb788f4baef420de0782c77d74dd7310f6e 100644 --- a/src/main/java/net/minecraft/server/level/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java @@ -1579,6 +1579,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -17,10 +17,10 @@ index e875671ce985199bc37de131280935a859253954..ba71636527f173dfc5ddae9ef0f7c73d this.playerConnection.sendPacket(new PacketPlayOutOpenSignEditor(tileentitysign.getPosition())); } diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index 1e7ae4a3947f2714159a6b93ef7d79541a6e070d..d2896d49b4b3cb0a6cf64ee29233ff59b8fba45d 100644 +index f5ada346a11ac3becda4b87416beebd680ca16fa..4f094f026b118775cae84024b2ba6c33e14784e6 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java -@@ -3072,6 +3072,15 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -3073,6 +3073,15 @@ public class PlayerConnection implements PacketListenerPlayIn { } } // Paper end diff --git a/patches/Purpur/patches/server/0046-Allow-soil-to-moisten-from-water-directly-under-it.patch b/patches/Purpur/patches/server/0045-Allow-soil-to-moisten-from-water-directly-under-it.patch similarity index 100% rename from patches/Purpur/patches/server/0046-Allow-soil-to-moisten-from-water-directly-under-it.patch rename to patches/Purpur/patches/server/0045-Allow-soil-to-moisten-from-water-directly-under-it.patch diff --git a/patches/Purpur/patches/server/0047-Controllable-Minecarts.patch b/patches/Purpur/patches/server/0046-Controllable-Minecarts.patch similarity index 98% rename from patches/Purpur/patches/server/0047-Controllable-Minecarts.patch rename to patches/Purpur/patches/server/0046-Controllable-Minecarts.patch index 23ceb0ff..08d37472 100644 --- a/patches/Purpur/patches/server/0047-Controllable-Minecarts.patch +++ b/patches/Purpur/patches/server/0046-Controllable-Minecarts.patch @@ -30,7 +30,7 @@ index 8edc279e7a3fdfb7e10718f1deee34b7e3fb2f28..a01b69c43acf4beb65c8b7a8a800c441 super(i, j, k); } diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java -index ba71636527f173dfc5ddae9ef0f7c73d0423d9b3..c2e987808ae5ccb23cc7bcc5221faea11153bc7f 100644 +index 43900bb788f4baef420de0782c77d74dd7310f6e..610ab97ab5322df04b8163b806104490360030f8 100644 --- a/src/main/java/net/minecraft/server/level/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java @@ -106,6 +106,7 @@ import net.minecraft.world.entity.monster.EntityMonster; @@ -50,7 +50,7 @@ index ba71636527f173dfc5ddae9ef0f7c73d0423d9b3..c2e987808ae5ccb23cc7bcc5221faea1 if (!flag && isSpawnInvulnerable() && damagesource != DamageSource.OUT_OF_WORLD) { // Purpur diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 5cdefe2a1b4085e3aae7dbbb751cfd368593ebd7..f1781c2100bf3a8fa7123b66f9ab682177d6490e 100644 +index d419d71af42c361d30aab12e4d245358667f857b..bb227e7dfb1e91a7f5dcc4c7498387033b98df0f 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -194,9 +194,9 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/Purpur/patches/server/0048-Disable-loot-drops-on-death-by-cramming.patch b/patches/Purpur/patches/server/0047-Disable-loot-drops-on-death-by-cramming.patch similarity index 95% rename from patches/Purpur/patches/server/0048-Disable-loot-drops-on-death-by-cramming.patch rename to patches/Purpur/patches/server/0047-Disable-loot-drops-on-death-by-cramming.patch index 0e3001d6..a99dd36c 100644 --- a/patches/Purpur/patches/server/0048-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/Purpur/patches/server/0047-Disable-loot-drops-on-death-by-cramming.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Disable loot drops on death by cramming diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index f1781c2100bf3a8fa7123b66f9ab682177d6490e..906791fc6180e011ce029ac95a63c92553f0377e 100644 +index bb227e7dfb1e91a7f5dcc4c7498387033b98df0f..e31538338e02fdb6e859c37bed899e5f3a83d5ae 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -1598,8 +1598,10 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/Purpur/patches/server/0049-Players-should-not-cram-to-death.patch b/patches/Purpur/patches/server/0048-Players-should-not-cram-to-death.patch similarity index 91% rename from patches/Purpur/patches/server/0049-Players-should-not-cram-to-death.patch rename to patches/Purpur/patches/server/0048-Players-should-not-cram-to-death.patch index e0598478..48117866 100644 --- a/patches/Purpur/patches/server/0049-Players-should-not-cram-to-death.patch +++ b/patches/Purpur/patches/server/0048-Players-should-not-cram-to-death.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Players should not cram to death diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java -index c2e987808ae5ccb23cc7bcc5221faea11153bc7f..97f82ac9fb8f91aea11660ad6d7284faed8e9434 100644 +index 610ab97ab5322df04b8163b806104490360030f8..5daf1f0f3371a1375daa829bcd4c447194e5f3e0 100644 --- a/src/main/java/net/minecraft/server/level/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java @@ -1557,7 +1557,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/patches/Purpur/patches/server/0050-Option-to-toggle-milk-curing-bad-omen.patch b/patches/Purpur/patches/server/0049-Option-to-toggle-milk-curing-bad-omen.patch similarity index 100% rename from patches/Purpur/patches/server/0050-Option-to-toggle-milk-curing-bad-omen.patch rename to patches/Purpur/patches/server/0049-Option-to-toggle-milk-curing-bad-omen.patch diff --git a/patches/Purpur/patches/server/0051-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/Purpur/patches/server/0050-End-gateway-should-check-if-entity-can-use-portal.patch similarity index 100% rename from patches/Purpur/patches/server/0051-End-gateway-should-check-if-entity-can-use-portal.patch rename to patches/Purpur/patches/server/0050-End-gateway-should-check-if-entity-can-use-portal.patch diff --git a/patches/Purpur/patches/server/0052-Fix-the-dead-lagging-the-server.patch b/patches/Purpur/patches/server/0051-Fix-the-dead-lagging-the-server.patch similarity index 81% rename from patches/Purpur/patches/server/0052-Fix-the-dead-lagging-the-server.patch rename to patches/Purpur/patches/server/0051-Fix-the-dead-lagging-the-server.patch index 0ab74f67..58c2f89e 100644 --- a/patches/Purpur/patches/server/0052-Fix-the-dead-lagging-the-server.patch +++ b/patches/Purpur/patches/server/0051-Fix-the-dead-lagging-the-server.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix the dead lagging the server diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c8071e2909c03bd8eafb92fbf8fd8701642df1f9..7c9fc120d2b58ca969b8a0ff9619e96f4f34b1c4 100644 +index 690685ac224a8b63a022d0801e3e4adb9416cc39..56d7662ccc2181df298f37a043f7af4036fe6125 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1631,6 +1631,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -1662,6 +1662,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne this.pitch = MathHelper.a(f1, -90.0F, 90.0F) % 360.0F; this.lastYaw = this.yaw; this.lastPitch = this.pitch; @@ -17,10 +17,10 @@ index c8071e2909c03bd8eafb92fbf8fd8701642df1f9..7c9fc120d2b58ca969b8a0ff9619e96f public void f(double d0, double d1, double d2) { diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 906791fc6180e011ce029ac95a63c92553f0377e..6fb4b06df010c3099a1af3b145749ea439a4aa39 100644 +index e31538338e02fdb6e859c37bed899e5f3a83d5ae..af08ec27f8c07653daa328d84bfc142bfc8a7f78 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java -@@ -2597,7 +2597,7 @@ public abstract class EntityLiving extends Entity { +@@ -2610,7 +2610,7 @@ public abstract class EntityLiving extends Entity { } } diff --git a/patches/Purpur/patches/server/0053-Skip-events-if-there-s-no-listeners.patch b/patches/Purpur/patches/server/0052-Skip-events-if-there-s-no-listeners.patch similarity index 100% rename from patches/Purpur/patches/server/0053-Skip-events-if-there-s-no-listeners.patch rename to patches/Purpur/patches/server/0052-Skip-events-if-there-s-no-listeners.patch diff --git a/patches/Purpur/patches/server/0054-Add-permission-for-F3-N-debug.patch b/patches/Purpur/patches/server/0053-Add-permission-for-F3-N-debug.patch similarity index 83% rename from patches/Purpur/patches/server/0054-Add-permission-for-F3-N-debug.patch rename to patches/Purpur/patches/server/0053-Add-permission-for-F3-N-debug.patch index 29c49e6d..1c43ba78 100644 --- a/patches/Purpur/patches/server/0054-Add-permission-for-F3-N-debug.patch +++ b/patches/Purpur/patches/server/0053-Add-permission-for-F3-N-debug.patch @@ -5,10 +5,10 @@ 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 a285d0594e61190a751a96f22afeb12d2dcce3fe..3a46a673349de9d9d725516a0fcdb3ebb9b372b3 100644 +index 9360d35581c6961a768973cc31341381ee26e234..c742647c0c5e3e4925e4ee6d195a54a85435e65e 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1166,6 +1166,7 @@ public abstract class PlayerList { +@@ -1168,6 +1168,7 @@ public abstract class PlayerList { } else { b0 = (byte) (24 + i); } diff --git a/patches/Purpur/patches/server/0055-Add-wither-skeleton-takes-wither-damage-option.patch b/patches/Purpur/patches/server/0054-Add-wither-skeleton-takes-wither-damage-option.patch similarity index 100% rename from patches/Purpur/patches/server/0055-Add-wither-skeleton-takes-wither-damage-option.patch rename to patches/Purpur/patches/server/0054-Add-wither-skeleton-takes-wither-damage-option.patch diff --git a/patches/Purpur/patches/server/0056-Configurable-TPS-Catchup.patch b/patches/Purpur/patches/server/0055-Configurable-TPS-Catchup.patch similarity index 95% rename from patches/Purpur/patches/server/0056-Configurable-TPS-Catchup.patch rename to patches/Purpur/patches/server/0055-Configurable-TPS-Catchup.patch index b7a71037..e09dbba5 100644 --- a/patches/Purpur/patches/server/0056-Configurable-TPS-Catchup.patch +++ b/patches/Purpur/patches/server/0055-Configurable-TPS-Catchup.patch @@ -5,7 +5,7 @@ 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 a75a8322829f36045243d5fd61d28b126af1f0af..ab2424a868a3d29af96f36ce037f1ab9b9b2a635 100644 +index c086f50613cc3b1061c9958eb2a8aba059a61e29..dccff89fcacdafe4961cd3121eb38ff8844e10da 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1132,7 +1132,13 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant trackedPlayerMap = null; -@@ -142,6 +143,15 @@ public class EntityTrackerEntry { +@@ -134,6 +135,15 @@ public class EntityTrackerEntry { this.c(); } @@ -42,23 +42,23 @@ index f63ec5fa5a1cb34f4809a06a29d01603efb178f1..b773480baef218d0aab2f524e7e305c1 int i; int j; diff --git a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java -index bb5ebacf99238223b84f3663af3ab9c6c60332eb..9097884f71d7986c8185a4b2b2a65b8c66fa7354 100644 +index b28995ecfd7f45e6b6197be96c418aa0d05d3383..6b6f91a55f37ce2274ebf81b45fb5495b6307e0e 100644 --- a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java -@@ -2451,7 +2451,7 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially +@@ -2426,7 +2426,7 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially public class EntityTracker { - final EntityTrackerEntry trackerEntry; // Paper - private -> package private + public final EntityTrackerEntry trackerEntry; // Paper - private -> public - public final Entity tracker; // Airplane - public for chunk + private final Entity tracker; private final int trackingDistance; private SectionPosition e; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b114d12d9d17071fb96f5ab225b85cdd5ad06861..7f897bebdc1fe2b7ce9528db9a7dd0fc0cf6c008 100644 +index 0950dcce2353504775813d9f60407361981c801d..6c0b1bc0c710d5795d559fe98af6319a644487cc 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1580,6 +1580,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -1611,6 +1611,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne } diff --git a/patches/Purpur/patches/server/0076-Add-ping-command.patch b/patches/Purpur/patches/server/0075-Add-ping-command.patch similarity index 91% rename from patches/Purpur/patches/server/0076-Add-ping-command.patch rename to patches/Purpur/patches/server/0075-Add-ping-command.patch index f0fc7972..5f8ca9e0 100644 --- a/patches/Purpur/patches/server/0076-Add-ping-command.patch +++ b/patches/Purpur/patches/server/0075-Add-ping-command.patch @@ -5,14 +5,14 @@ Subject: [PATCH] Add /ping command diff --git a/src/main/java/net/minecraft/commands/CommandDispatcher.java b/src/main/java/net/minecraft/commands/CommandDispatcher.java -index c25440e810e61bcdc299a0caebaec54b6862dd3c..2566c5ea7ba2bbeed43ba74944c038b53f7f9fde 100644 +index c25440e810e61bcdc299a0caebaec54b6862dd3c..cf3776591446ad7b3d1ee1285c5aeffcb5e9495e 100644 --- a/src/main/java/net/minecraft/commands/CommandDispatcher.java +++ b/src/main/java/net/minecraft/commands/CommandDispatcher.java @@ -191,6 +191,7 @@ public class CommandDispatcher { CommandIdleTimeout.a(this.b); CommandStop.a(this.b); CommandWhitelist.a(this.b); -+ net.pl3x.purpur.command.PingCommand.register(dispatcher()); // Purpur ++ net.pl3x.purpur.command.PingCommand.register(getDispatcher()); // Purpur } if (commanddispatcher_servertype.d) { @@ -29,6 +29,14 @@ index c25440e810e61bcdc299a0caebaec54b6862dd3c..2566c5ea7ba2bbeed43ba74944c038b5 public static RequiredArgumentBuilder a(String s, ArgumentType argumenttype) { return RequiredArgumentBuilder.argument(s, argumenttype); } +@@ -441,6 +444,7 @@ public class CommandDispatcher { + }; + } + ++ public com.mojang.brigadier.CommandDispatcher getDispatcher() { return a(); } // Purpur - OBFHELPER + public com.mojang.brigadier.CommandDispatcher a() { return this.dispatcher(); } public com.mojang.brigadier.CommandDispatcher dispatcher() { // Paper - OBFHELPER + return this.b; + } diff --git a/src/main/java/net/minecraft/commands/CommandListenerWrapper.java b/src/main/java/net/minecraft/commands/CommandListenerWrapper.java index 8402af32cc476d7f468842eb4f34c7521d72bcc8..4480fe75cfad35a5104b5116c5ec2c80d18f15f5 100644 --- a/src/main/java/net/minecraft/commands/CommandListenerWrapper.java diff --git a/patches/Purpur/patches/server/0077-Configurable-jockey-options.patch b/patches/Purpur/patches/server/0076-Configurable-jockey-options.patch similarity index 98% rename from patches/Purpur/patches/server/0077-Configurable-jockey-options.patch rename to patches/Purpur/patches/server/0076-Configurable-jockey-options.patch index a129aada..c10b48c0 100644 --- a/patches/Purpur/patches/server/0077-Configurable-jockey-options.patch +++ b/patches/Purpur/patches/server/0076-Configurable-jockey-options.patch @@ -33,10 +33,10 @@ index e4794760fc918cccbdc3f8d10ab21dd9b6f29e8e..ea776755767f29e49de2792afa30f794 protected void m() { this.goalSelector.a(1, new EntityDrowned.c(this, 1.0D)); diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java b/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java -index cc1bff409cad2eb6264d4b691599576960080ccd..af00a4245ca39f208810d1ec758e512cbf5648f3 100644 +index d10d1b768601236b9892461ee41d61c7239d1a07..ee17e62d996d81ea149a5c0eae2e29404e363dcf 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java -@@ -55,6 +55,23 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { +@@ -56,6 +56,23 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { this.a(PathType.LAVA, 8.0F); } diff --git a/patches/Purpur/patches/server/0078-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/Purpur/patches/server/0077-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 99% rename from patches/Purpur/patches/server/0078-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to patches/Purpur/patches/server/0077-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 49562dcb..8d2c61e4 100644 --- a/patches/Purpur/patches/server/0078-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/Purpur/patches/server/0077-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -17,10 +17,10 @@ index 53ea8a6d90faf4f7f8fd0819be4499422bdd4cbe..6ba14f603b8ec69597c70677cc317f80 return (new EntityDamageSourceIndirect("indirectMagic", entity, entity1)).setIgnoreArmor().setMagic(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 7f897bebdc1fe2b7ce9528db9a7dd0fc0cf6c008..5ac6b7759cf43dbbad1bcf74d5d86efd69883cf5 100644 +index 6c0b1bc0c710d5795d559fe98af6319a644487cc..31835e73c2704aa56ab8b14c79dd3a337ab05dff 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2246,8 +2246,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2277,8 +2277,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne return this.a(new ItemStack(imaterial), (float) i); } diff --git a/patches/Purpur/patches/server/0079-Add-phantom-spawning-options.patch b/patches/Purpur/patches/server/0078-Add-phantom-spawning-options.patch similarity index 100% rename from patches/Purpur/patches/server/0079-Add-phantom-spawning-options.patch rename to patches/Purpur/patches/server/0078-Add-phantom-spawning-options.patch diff --git a/patches/Purpur/patches/server/0080-Implement-bed-explosion-options.patch b/patches/Purpur/patches/server/0079-Implement-bed-explosion-options.patch similarity index 95% rename from patches/Purpur/patches/server/0080-Implement-bed-explosion-options.patch rename to patches/Purpur/patches/server/0079-Implement-bed-explosion-options.patch index 3867f485..3323dc8f 100644 --- a/patches/Purpur/patches/server/0080-Implement-bed-explosion-options.patch +++ b/patches/Purpur/patches/server/0079-Implement-bed-explosion-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement bed explosion options diff --git a/src/main/java/net/minecraft/world/level/block/BlockBed.java b/src/main/java/net/minecraft/world/level/block/BlockBed.java -index eca84595342756e3550883551e487aaf79574fde..d81c05c092173b7e74045cfab1018d2eed28c401 100644 +index abe0a1c309d526de37efcac44922fa259e1d112c..db9ef25d0578538fd7c7950a3b3d03453da336f1 100644 --- a/src/main/java/net/minecraft/world/level/block/BlockBed.java +++ b/src/main/java/net/minecraft/world/level/block/BlockBed.java -@@ -127,7 +127,7 @@ public class BlockBed extends BlockFacingHorizontal implements ITileEntity { +@@ -137,7 +137,7 @@ public class BlockBed extends BlockFacingHorizontal implements ITileEntity { world.a(blockposition1, false); } diff --git a/patches/Purpur/patches/server/0081-Implement-respawn-anchor-explosion-options.patch b/patches/Purpur/patches/server/0080-Implement-respawn-anchor-explosion-options.patch similarity index 100% rename from patches/Purpur/patches/server/0081-Implement-respawn-anchor-explosion-options.patch rename to patches/Purpur/patches/server/0080-Implement-respawn-anchor-explosion-options.patch diff --git a/patches/Purpur/patches/server/0082-Add-allow-water-in-end-world-option.patch b/patches/Purpur/patches/server/0081-Add-allow-water-in-end-world-option.patch similarity index 100% rename from patches/Purpur/patches/server/0082-Add-allow-water-in-end-world-option.patch rename to patches/Purpur/patches/server/0081-Add-allow-water-in-end-world-option.patch diff --git a/patches/Purpur/patches/server/0083-Allow-color-codes-in-books.patch b/patches/Purpur/patches/server/0082-Allow-color-codes-in-books.patch similarity index 96% rename from patches/Purpur/patches/server/0083-Allow-color-codes-in-books.patch rename to patches/Purpur/patches/server/0082-Allow-color-codes-in-books.patch index 4cf01a22..a9a4c0b8 100644 --- a/patches/Purpur/patches/server/0083-Allow-color-codes-in-books.patch +++ b/patches/Purpur/patches/server/0082-Allow-color-codes-in-books.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow color codes in books diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index d2896d49b4b3cb0a6cf64ee29233ff59b8fba45d..d309552f56f5ea695d57a95ed0a091f4c383ca34 100644 +index 4f094f026b118775cae84024b2ba6c33e14784e6..c4ef3fef4db2326a531694e6798bab6103c7061c 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -1211,7 +1211,8 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/patches/Purpur/patches/server/0084-Entity-lifespan.patch b/patches/Purpur/patches/server/0083-Entity-lifespan.patch similarity index 94% rename from patches/Purpur/patches/server/0084-Entity-lifespan.patch rename to patches/Purpur/patches/server/0083-Entity-lifespan.patch index ab757fc5..6b801fdc 100644 --- a/patches/Purpur/patches/server/0084-Entity-lifespan.patch +++ b/patches/Purpur/patches/server/0083-Entity-lifespan.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entity lifespan diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index d309552f56f5ea695d57a95ed0a091f4c383ca34..77e7f3f33b13050ff383458ae294906c5ff77476 100644 +index c4ef3fef4db2326a531694e6798bab6103c7061c..92437cf4413ea76ef139b007adf2b76c2729dad2 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java -@@ -2457,6 +2457,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -2458,6 +2458,7 @@ public class PlayerConnection implements PacketListenerPlayIn { boolean triggerLeashUpdate = itemInHand != null && itemInHand.getItem() == Items.LEAD && entity instanceof EntityInsentient; Item origItem = this.player.inventory.getItemInHand() == null ? null : this.player.inventory.getItemInHand().getItem(); PlayerInteractEntityEvent event; @@ -17,7 +17,7 @@ index d309552f56f5ea695d57a95ed0a091f4c383ca34..77e7f3f33b13050ff383458ae294906c event = new PlayerInteractEntityEvent((Player) this.getPlayer(), entity.getBukkitEntity(), (packetplayinuseentity.c() == EnumHand.OFF_HAND) ? EquipmentSlot.OFF_HAND : EquipmentSlot.HAND); } else { diff --git a/src/main/java/net/minecraft/world/entity/EntityInsentient.java b/src/main/java/net/minecraft/world/entity/EntityInsentient.java -index 462bcb7cfe2daa27c10a7a0318bef9b739e586f4..c9136f1b54ff0620a621b703b4e7487f4a63b01d 100644 +index 84995be65d033dd712211e1e479675815099c3b1..e10377b379079bc467a60abe719075c5ef73e858 100644 --- a/src/main/java/net/minecraft/world/entity/EntityInsentient.java +++ b/src/main/java/net/minecraft/world/entity/EntityInsentient.java @@ -124,7 +124,7 @@ public abstract class EntityInsentient extends EntityLiving { @@ -94,7 +94,7 @@ index 462bcb7cfe2daa27c10a7a0318bef9b739e586f4..c9136f1b54ff0620a621b703b4e7487f } @Override -@@ -1625,7 +1657,7 @@ public abstract class EntityInsentient extends EntityLiving { +@@ -1632,7 +1664,7 @@ public abstract class EntityInsentient extends EntityLiving { this.a((EntityLiving) this, entity); this.z(entity); } diff --git a/patches/Purpur/patches/server/0085-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/Purpur/patches/server/0084-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch similarity index 93% rename from patches/Purpur/patches/server/0085-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch rename to patches/Purpur/patches/server/0084-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 9528fa75..c871a2fc 100644 --- a/patches/Purpur/patches/server/0085-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/Purpur/patches/server/0084-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java -index 97f82ac9fb8f91aea11660ad6d7284faed8e9434..8e76c11e6bec5357322ea906af9e30f71e5718be 100644 +index 5daf1f0f3371a1375daa829bcd4c447194e5f3e0..81506c1191cf35d79981be4affc29f87291fc5a7 100644 --- a/src/main/java/net/minecraft/server/level/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java -@@ -2556,4 +2556,26 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -2557,4 +2557,26 @@ public class EntityPlayer extends EntityHuman implements ICrafting { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -36,7 +36,7 @@ index 97f82ac9fb8f91aea11660ad6d7284faed8e9434..8e76c11e6bec5357322ea906af9e30f7 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index e2124f60b37436d2514f92e180e914b4d4a8470c..f4407cd0865b0e4861930645615c057d11079034 100644 +index 135e8b14d8b295797b87b2524a084f682bbf98ab..9c4bcc691ad2f6896b28d83f386fc8daa2777a3a 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -45,6 +45,7 @@ import net.minecraft.network.syncher.DataWatcher; diff --git a/patches/Purpur/patches/server/0086-Squid-EAR-immunity.patch b/patches/Purpur/patches/server/0085-Squid-EAR-immunity.patch similarity index 95% rename from patches/Purpur/patches/server/0086-Squid-EAR-immunity.patch rename to patches/Purpur/patches/server/0085-Squid-EAR-immunity.patch index 097dea7b..47a93485 100644 --- a/patches/Purpur/patches/server/0086-Squid-EAR-immunity.patch +++ b/patches/Purpur/patches/server/0085-Squid-EAR-immunity.patch @@ -21,7 +21,7 @@ index b9e252c3db715c288493d5b98fc20d84de46c4e4..cdb7a97ecececa78a200acc898535d33 public boolean villagerUseBrainTicksOnlyWhenLagging = true; public boolean villagerCanBeLeashed = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index c94cd5a95f28190e88d31b522035fc7c74a2ac33..d04a21b93374c287b271deb6618b984abc8831bb 100644 +index a57473fb8815545977ff08bf46d6463d2b7a9d78..2d06392c8d33dd200e101079c2dbf5c488ade982 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -11,6 +11,7 @@ import net.minecraft.world.entity.EntityLiving; diff --git a/patches/Purpur/patches/server/0087-Configurable-end-spike-seed.patch b/patches/Purpur/patches/server/0086-Configurable-end-spike-seed.patch similarity index 100% rename from patches/Purpur/patches/server/0087-Configurable-end-spike-seed.patch rename to patches/Purpur/patches/server/0086-Configurable-end-spike-seed.patch diff --git a/patches/Purpur/patches/server/0088-Configurable-dungeon-seed.patch b/patches/Purpur/patches/server/0087-Configurable-dungeon-seed.patch similarity index 100% rename from patches/Purpur/patches/server/0088-Configurable-dungeon-seed.patch rename to patches/Purpur/patches/server/0087-Configurable-dungeon-seed.patch diff --git a/patches/Purpur/patches/server/0089-Phantoms-burn-in-light.patch b/patches/Purpur/patches/server/0088-Phantoms-burn-in-light.patch similarity index 100% rename from patches/Purpur/patches/server/0089-Phantoms-burn-in-light.patch rename to patches/Purpur/patches/server/0088-Phantoms-burn-in-light.patch diff --git a/patches/Purpur/patches/server/0090-Configurable-villager-breeding.patch b/patches/Purpur/patches/server/0089-Configurable-villager-breeding.patch similarity index 100% rename from patches/Purpur/patches/server/0090-Configurable-villager-breeding.patch rename to patches/Purpur/patches/server/0089-Configurable-villager-breeding.patch diff --git a/patches/Purpur/patches/server/0091-Redstone-deactivates-spawners.patch b/patches/Purpur/patches/server/0090-Redstone-deactivates-spawners.patch similarity index 100% rename from patches/Purpur/patches/server/0091-Redstone-deactivates-spawners.patch rename to patches/Purpur/patches/server/0090-Redstone-deactivates-spawners.patch diff --git a/patches/Purpur/patches/server/0092-Totems-work-in-inventory.patch b/patches/Purpur/patches/server/0091-Totems-work-in-inventory.patch similarity index 96% rename from patches/Purpur/patches/server/0092-Totems-work-in-inventory.patch rename to patches/Purpur/patches/server/0091-Totems-work-in-inventory.patch index d33321dc..4a999899 100644 --- a/patches/Purpur/patches/server/0092-Totems-work-in-inventory.patch +++ b/patches/Purpur/patches/server/0091-Totems-work-in-inventory.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Totems work in inventory diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index f4407cd0865b0e4861930645615c057d11079034..8930ab8a39c50eaa84372f0e8caf8b92789bb0c4 100644 +index 9c4bcc691ad2f6896b28d83f386fc8daa2777a3a..69101211dc01e5fbd1f156cbd612b4231098da5a 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -1426,6 +1426,19 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/Purpur/patches/server/0093-Populator-seed-controls.patch b/patches/Purpur/patches/server/0092-Populator-seed-controls.patch similarity index 100% rename from patches/Purpur/patches/server/0093-Populator-seed-controls.patch rename to patches/Purpur/patches/server/0092-Populator-seed-controls.patch diff --git a/patches/Purpur/patches/server/0094-Add-vindicator-johnny-spawn-chance.patch b/patches/Purpur/patches/server/0093-Add-vindicator-johnny-spawn-chance.patch similarity index 100% rename from patches/Purpur/patches/server/0094-Add-vindicator-johnny-spawn-chance.patch rename to patches/Purpur/patches/server/0093-Add-vindicator-johnny-spawn-chance.patch diff --git a/patches/Purpur/patches/server/0095-Add-option-to-disable-mushroom-and-note-block-update.patch b/patches/Purpur/patches/server/0094-Add-option-to-disable-mushroom-and-note-block-update.patch similarity index 100% rename from patches/Purpur/patches/server/0095-Add-option-to-disable-mushroom-and-note-block-update.patch rename to patches/Purpur/patches/server/0094-Add-option-to-disable-mushroom-and-note-block-update.patch diff --git a/patches/Purpur/patches/server/0096-Dispensers-place-anvils-option.patch b/patches/Purpur/patches/server/0095-Dispensers-place-anvils-option.patch similarity index 100% rename from patches/Purpur/patches/server/0096-Dispensers-place-anvils-option.patch rename to patches/Purpur/patches/server/0095-Dispensers-place-anvils-option.patch diff --git a/patches/Purpur/patches/server/0097-Allow-anvil-colors.patch b/patches/Purpur/patches/server/0096-Allow-anvil-colors.patch similarity index 100% rename from patches/Purpur/patches/server/0097-Allow-anvil-colors.patch rename to patches/Purpur/patches/server/0096-Allow-anvil-colors.patch diff --git a/patches/Purpur/patches/server/0098-Add-no-random-tick-block-list.patch b/patches/Purpur/patches/server/0097-Add-no-random-tick-block-list.patch similarity index 98% rename from patches/Purpur/patches/server/0098-Add-no-random-tick-block-list.patch rename to patches/Purpur/patches/server/0097-Add-no-random-tick-block-list.patch index 32754658..5a6e19a2 100644 --- a/patches/Purpur/patches/server/0098-Add-no-random-tick-block-list.patch +++ b/patches/Purpur/patches/server/0097-Add-no-random-tick-block-list.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add no-random-tick block list diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index c49b049351c36878238e65eb9cbf949a682e4a7d..50fac6013f14ddd427f51ba78ecf101df43f5b4a 100644 +index bfa316114f75923f3653254007afc74ddd49f441..bbfe37b2faa4e91c62912a1b5013ffa175db41d4 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -532,14 +532,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Purpur/patches/server/0099-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/Purpur/patches/server/0098-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 100% rename from patches/Purpur/patches/server/0099-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/Purpur/patches/server/0098-Add-option-to-disable-dolphin-treasure-searching.patch diff --git a/patches/Purpur/patches/server/0100-Short-enderman-height.patch b/patches/Purpur/patches/server/0099-Short-enderman-height.patch similarity index 100% rename from patches/Purpur/patches/server/0100-Short-enderman-height.patch rename to patches/Purpur/patches/server/0099-Short-enderman-height.patch diff --git a/patches/Purpur/patches/server/0101-Stop-squids-floating-on-top-of-water.patch b/patches/Purpur/patches/server/0100-Stop-squids-floating-on-top-of-water.patch similarity index 95% rename from patches/Purpur/patches/server/0101-Stop-squids-floating-on-top-of-water.patch rename to patches/Purpur/patches/server/0100-Stop-squids-floating-on-top-of-water.patch index d109dd8a..aa84086a 100644 --- a/patches/Purpur/patches/server/0101-Stop-squids-floating-on-top-of-water.patch +++ b/patches/Purpur/patches/server/0100-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 5ac6b7759cf43dbbad1bcf74d5d86efd69883cf5..240f30f6ca6007ba8e7de1c3e033b2a8493838e7 100644 +index 31835e73c2704aa56ab8b14c79dd3a337ab05dff..4e084e26e0430422b0348a0a91f0e412ff3a9eff 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3556,8 +3556,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -3587,8 +3587,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne this.lastYaw = this.yaw; } diff --git a/patches/Purpur/patches/server/0102-Ridables.patch b/patches/Purpur/patches/server/0101-Ridables.patch similarity index 99% rename from patches/Purpur/patches/server/0102-Ridables.patch rename to patches/Purpur/patches/server/0101-Ridables.patch index a4172828..0ca50dd8 100644 --- a/patches/Purpur/patches/server/0102-Ridables.patch +++ b/patches/Purpur/patches/server/0101-Ridables.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index cdddae4ff5178112d4523079144803f2694267d5..f6637353fb358e7720edabc355ea036d37d039ca 100644 +index 409c272629ca935dcbaa9e73e10ace4a0bd8f9b7..4ceaa8e905c9ba7277ee00cea020d01d14ae2178 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1540,6 +1540,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant 0.0D; } @@ -179,7 +179,7 @@ index 240f30f6ca6007ba8e7de1c3e033b2a8493838e7..d1bbf4127a2e0836bedb33a81e3fd18a public void a(float f, Vec3D vec3d) { Vec3D vec3d1 = a(vec3d, f, this.yaw); -@@ -2346,6 +2348,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2377,6 +2379,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne return this.a(entity, false); } @@ -187,7 +187,7 @@ index 240f30f6ca6007ba8e7de1c3e033b2a8493838e7..d1bbf4127a2e0836bedb33a81e3fd18a public boolean a(Entity entity, boolean flag) { for (Entity entity1 = entity; entity1.vehicle != null; entity1 = entity1.vehicle) { if (entity1.vehicle == this) { -@@ -2441,6 +2444,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2472,6 +2475,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne this.passengers.add(entity); } @@ -201,7 +201,7 @@ index 240f30f6ca6007ba8e7de1c3e033b2a8493838e7..d1bbf4127a2e0836bedb33a81e3fd18a } return true; // CraftBukkit } -@@ -2481,6 +2491,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2512,6 +2522,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne return false; } // Spigot end @@ -214,7 +214,7 @@ index 240f30f6ca6007ba8e7de1c3e033b2a8493838e7..d1bbf4127a2e0836bedb33a81e3fd18a this.passengers.remove(entity); entity.j = 60; } -@@ -2646,6 +2662,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2677,6 +2693,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne this.setFlag(4, flag); } @@ -222,7 +222,7 @@ index 240f30f6ca6007ba8e7de1c3e033b2a8493838e7..d1bbf4127a2e0836bedb33a81e3fd18a public boolean bE() { return this.glowing || this.world.isClientSide && this.getFlag(6); } -@@ -2868,6 +2885,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2899,6 +2916,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne public void setHeadRotation(float f) {} @@ -230,7 +230,7 @@ index 240f30f6ca6007ba8e7de1c3e033b2a8493838e7..d1bbf4127a2e0836bedb33a81e3fd18a public void n(float f) {} public boolean bL() { -@@ -3309,6 +3327,18 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -3340,6 +3358,18 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne return false; } @@ -249,7 +249,7 @@ index 240f30f6ca6007ba8e7de1c3e033b2a8493838e7..d1bbf4127a2e0836bedb33a81e3fd18a @Override public void sendMessage(IChatBaseComponent ichatbasecomponent, UUID uuid) {} -@@ -3761,4 +3791,47 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -3792,4 +3822,47 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne return ((ChunkProviderServer) world.getChunkProvider()).isInEntityTickingChunk(this); } // Paper end @@ -298,7 +298,7 @@ index 240f30f6ca6007ba8e7de1c3e033b2a8493838e7..d1bbf4127a2e0836bedb33a81e3fd18a + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/EntityInsentient.java b/src/main/java/net/minecraft/world/entity/EntityInsentient.java -index c9136f1b54ff0620a621b703b4e7487f4a63b01d..8b7f840bb1b24996b40c9bef85f4c1e98e39caec 100644 +index e10377b379079bc467a60abe719075c5ef73e858..df33b46ff1267f0f2692a8956438f3bd1e2a3086 100644 --- a/src/main/java/net/minecraft/world/entity/EntityInsentient.java +++ b/src/main/java/net/minecraft/world/entity/EntityInsentient.java @@ -100,7 +100,7 @@ public abstract class EntityInsentient extends EntityLiving { @@ -354,7 +354,7 @@ index c9136f1b54ff0620a621b703b4e7487f4a63b01d..8b7f840bb1b24996b40c9bef85f4c1e9 public void v(float f) { this.aR = f; } -@@ -1325,7 +1328,7 @@ public abstract class EntityInsentient extends EntityLiving { +@@ -1332,7 +1335,7 @@ public abstract class EntityInsentient extends EntityLiving { protected void a(EntityHuman entityhuman, EntityInsentient entityinsentient) {} protected EnumInteractionResult b(EntityHuman entityhuman, EnumHand enumhand) { @@ -363,7 +363,7 @@ index c9136f1b54ff0620a621b703b4e7487f4a63b01d..8b7f840bb1b24996b40c9bef85f4c1e9 } public boolean ev() { -@@ -1706,4 +1709,54 @@ public abstract class EntityInsentient extends EntityLiving { +@@ -1713,4 +1716,54 @@ public abstract class EntityInsentient extends EntityLiving { this.unleash(true, event.isDropLeash()); // Paper end } @@ -419,7 +419,7 @@ index c9136f1b54ff0620a621b703b4e7487f4a63b01d..8b7f840bb1b24996b40c9bef85f4c1e9 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 8930ab8a39c50eaa84372f0e8caf8b92789bb0c4..bcf1d77f627e800b9dbbfd7f9ed99887e2aca714 100644 +index 69101211dc01e5fbd1f156cbd612b4231098da5a..2d3ec6505b91a2cb43a1e2285a7d4e57a54e243c 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -559,7 +559,7 @@ public abstract class EntityLiving extends Entity { @@ -431,7 +431,7 @@ index 8930ab8a39c50eaa84372f0e8caf8b92789bb0c4..bcf1d77f627e800b9dbbfd7f9ed99887 } protected void cU() { -@@ -2300,7 +2300,7 @@ public abstract class EntityLiving extends Entity { +@@ -2313,7 +2313,7 @@ public abstract class EntityLiving extends Entity { return 0.42F * this.getBlockJumpFactor(); } @@ -440,7 +440,7 @@ index 8930ab8a39c50eaa84372f0e8caf8b92789bb0c4..bcf1d77f627e800b9dbbfd7f9ed99887 float f = this.dJ(); if (this.hasEffect(MobEffects.JUMP)) { -@@ -2549,10 +2549,12 @@ public abstract class EntityLiving extends Entity { +@@ -2562,10 +2562,12 @@ public abstract class EntityLiving extends Entity { return this.onGround ? this.dN() * (0.21600002F / (f * f * f)) : this.aE; } @@ -453,7 +453,7 @@ index 8930ab8a39c50eaa84372f0e8caf8b92789bb0c4..bcf1d77f627e800b9dbbfd7f9ed99887 public void q(float f) { this.bu = f; } -@@ -2938,8 +2940,10 @@ public abstract class EntityLiving extends Entity { +@@ -2951,8 +2953,10 @@ public abstract class EntityLiving extends Entity { this.collideNearby(); this.world.getMethodProfiler().exit(); // Paper start @@ -466,7 +466,7 @@ index 8930ab8a39c50eaa84372f0e8caf8b92789bb0c4..bcf1d77f627e800b9dbbfd7f9ed99887 Location from = new Location(world.getWorld(), lastX, lastY, lastZ, lastYaw, lastPitch); Location to = new Location (world.getWorld(), locX(), locY(), locZ(), yaw, pitch); EntityMoveEvent event = new EntityMoveEvent(getBukkitLivingEntity(), from, to.clone()); -@@ -2949,6 +2953,21 @@ public abstract class EntityLiving extends Entity { +@@ -2962,6 +2966,21 @@ public abstract class EntityLiving extends Entity { setLocation(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -1266,7 +1266,7 @@ index e0a9b931c26dbd4e7739d09ae45e1cee72ab210c..880c3aaf4e684209879dc921480619e7 this.i.setMot(this.i.getMot().add(0.0D, 0.005D, 0.0D)); } diff --git a/src/main/java/net/minecraft/world/entity/animal/EntityFish.java b/src/main/java/net/minecraft/world/entity/animal/EntityFish.java -index e28f84be745647960c936c7208a87713dfa75682..e1e4ea73f42a09ac20d36a58f4d7232d4e1a2f08 100644 +index cbd7c37cd1d6f5dddcbc515ecc2d9df46e109bfa..bdbb389407a68d7f9fd7db366d710777ec3e2649 100644 --- a/src/main/java/net/minecraft/world/entity/animal/EntityFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/EntityFish.java @@ -8,6 +8,7 @@ import net.minecraft.nbt.NBTTagCompound; @@ -1277,7 +1277,7 @@ index e28f84be745647960c936c7208a87713dfa75682..e1e4ea73f42a09ac20d36a58f4d7232d import net.minecraft.server.level.EntityPlayer; import net.minecraft.sounds.SoundEffect; import net.minecraft.sounds.SoundEffects; -@@ -108,13 +109,12 @@ public abstract class EntityFish extends EntityWaterAnimal { +@@ -116,13 +117,12 @@ public abstract class EntityFish extends EntityWaterAnimal { @Override protected void initPathfinder() { super.initPathfinder(); @@ -1297,7 +1297,7 @@ index e28f84be745647960c936c7208a87713dfa75682..e1e4ea73f42a09ac20d36a58f4d7232d } @Override -@@ -125,7 +125,7 @@ public abstract class EntityFish extends EntityWaterAnimal { +@@ -133,7 +133,7 @@ public abstract class EntityFish extends EntityWaterAnimal { @Override public void g(Vec3D vec3d) { if (this.doAITick() && this.isInWater()) { @@ -1306,7 +1306,7 @@ index e28f84be745647960c936c7208a87713dfa75682..e1e4ea73f42a09ac20d36a58f4d7232d this.move(EnumMoveType.SELF, this.getMot()); this.setMot(this.getMot().a(0.9D)); if (this.getGoalTarget() == null) { -@@ -199,9 +199,9 @@ public abstract class EntityFish extends EntityWaterAnimal { +@@ -220,9 +220,9 @@ public abstract class EntityFish extends EntityWaterAnimal { @Override protected void b(BlockPosition blockposition, IBlockData iblockdata) {} @@ -1318,7 +1318,7 @@ index e28f84be745647960c936c7208a87713dfa75682..e1e4ea73f42a09ac20d36a58f4d7232d a(EntityFish entityfish) { super(entityfish); -@@ -209,7 +209,15 @@ public abstract class EntityFish extends EntityWaterAnimal { +@@ -230,7 +230,15 @@ public abstract class EntityFish extends EntityWaterAnimal { } @Override @@ -4347,10 +4347,10 @@ index 07ede7b75a65a5815f1ae1ebf03ec0fdb4621afb..a836839b17cbda8ac269f032b141ba44 EntityPhantom.this.yaw += 180.0F; this.j = 0.1F; diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java b/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java -index af00a4245ca39f208810d1ec758e512cbf5648f3..816a2bd7438f66a5d7ff761b8fcf8b42483561c7 100644 +index ee17e62d996d81ea149a5c0eae2e29404e363dcf..9f50054211db48e7fe764434e8d71aab0995e57a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java -@@ -56,6 +56,16 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { +@@ -57,6 +57,16 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { } // Purpur start @@ -5415,7 +5415,7 @@ index e0324cdb2d4c85714eaad490a7a5c826b38e6b16..90cbef7fe8803295f82bddd6709fdf30 this.setTradingPlayer(entityhuman); this.openTrade(entityhuman, this.getScoreboardDisplayName(), 1); diff --git a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java -index 2ee7daa155d812af8f84ba646106d801d2fb0fec..644f94002bfe2686f4c765251c3804c854b27869 100644 +index 1b130b50888113d515ce1e200a157c3bbff3b625..fedfb18e71300807a83e2ed2729fe192a8f9aa33 100644 --- a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java +++ b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java @@ -183,6 +183,8 @@ public abstract class EntityHuman extends EntityLiving { @@ -5427,7 +5427,7 @@ index 2ee7daa155d812af8f84ba646106d801d2fb0fec..644f94002bfe2686f4c765251c3804c8 private javax.script.ScriptEngine scriptEngine = new javax.script.ScriptEngineManager().getEngineByName("rhino"); public void setAfk(boolean setAfk){ -@@ -2258,4 +2260,15 @@ public abstract class EntityHuman extends EntityLiving { +@@ -2271,4 +2273,15 @@ public abstract class EntityHuman extends EntityLiving { return this.g; } } @@ -6885,10 +6885,10 @@ index dee4d12a49468d38f077784b219199f0070786f2..c524a0994f1c9ef1d0534403efa4e448 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 9084aa4b7c0059c995a3d1a89188379b52c9d620..7341b1956123d8e5d45d9041e7319de8ee8b768a 100644 +index ac89b7f0de0e5015c599648dc93cbcae760744f2..c44a15cd7b2d67c77eac7a1d2a7e9569f9dce48c 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -530,6 +530,18 @@ public class CraftEventFactory { +@@ -544,6 +544,18 @@ public class CraftEventFactory { } craftServer.getPluginManager().callEvent(event); @@ -6907,7 +6907,7 @@ index 9084aa4b7c0059c995a3d1a89188379b52c9d620..7341b1956123d8e5d45d9041e7319de8 return event; } -@@ -930,6 +942,7 @@ public class CraftEventFactory { +@@ -944,6 +956,7 @@ public class CraftEventFactory { damageCause = DamageCause.ENTITY_EXPLOSION; } event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), entity.getBukkitEntity(), damageCause, modifiers, modifierFunctions); @@ -6915,7 +6915,7 @@ index 9084aa4b7c0059c995a3d1a89188379b52c9d620..7341b1956123d8e5d45d9041e7319de8 } event.setCancelled(cancelled); -@@ -1014,6 +1027,7 @@ public class CraftEventFactory { +@@ -1028,6 +1041,7 @@ public class CraftEventFactory { if (!event.isCancelled()) { event.getEntity().setLastDamageCause(event); } @@ -6923,7 +6923,7 @@ index 9084aa4b7c0059c995a3d1a89188379b52c9d620..7341b1956123d8e5d45d9041e7319de8 return event; } -@@ -1063,6 +1077,7 @@ public class CraftEventFactory { +@@ -1077,6 +1091,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, modifiers, modifierFunctions); diff --git a/patches/Purpur/patches/server/0103-Use-configured-height-for-nether-surface-builders.patch b/patches/Purpur/patches/server/0102-Use-configured-height-for-nether-surface-builders.patch similarity index 100% rename from patches/Purpur/patches/server/0103-Use-configured-height-for-nether-surface-builders.patch rename to patches/Purpur/patches/server/0102-Use-configured-height-for-nether-surface-builders.patch diff --git a/patches/Purpur/patches/server/0104-Crying-obsidian-valid-for-portal-frames.patch b/patches/Purpur/patches/server/0103-Crying-obsidian-valid-for-portal-frames.patch similarity index 100% rename from patches/Purpur/patches/server/0104-Crying-obsidian-valid-for-portal-frames.patch rename to patches/Purpur/patches/server/0103-Crying-obsidian-valid-for-portal-frames.patch diff --git a/patches/Purpur/patches/server/0105-Entities-can-use-portals-configuration.patch b/patches/Purpur/patches/server/0104-Entities-can-use-portals-configuration.patch similarity index 93% rename from patches/Purpur/patches/server/0105-Entities-can-use-portals-configuration.patch rename to patches/Purpur/patches/server/0104-Entities-can-use-portals-configuration.patch index 68c6d1ff..fd3509e0 100644 --- a/patches/Purpur/patches/server/0105-Entities-can-use-portals-configuration.patch +++ b/patches/Purpur/patches/server/0104-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 d1bbf4127a2e0836bedb33a81e3fd18a8e8eb962..4b4c6477122c51871ce98f34c6e5874048eaa227 100644 +index 4e1363050bef7fff9117250b79cbf35bf6bfc537..918edab475a8d33a253e3d6cd3c5655748d10dc0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2523,7 +2523,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2554,7 +2554,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne public void d(BlockPosition blockposition) { if (this.ai()) { this.resetPortalCooldown(); @@ -17,7 +17,7 @@ index d1bbf4127a2e0836bedb33a81e3fd18a8e8eb962..4b4c6477122c51871ce98f34c6e58740 if (!this.world.isClientSide && !blockposition.equals(this.ac)) { this.ac = blockposition.immutableCopy(); } -@@ -3103,7 +3103,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -3134,7 +3134,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne } public boolean canPortal() { diff --git a/patches/Purpur/patches/server/0106-LivingEntity-broadcastItemBreak.patch b/patches/Purpur/patches/server/0105-LivingEntity-broadcastItemBreak.patch similarity index 100% rename from patches/Purpur/patches/server/0106-LivingEntity-broadcastItemBreak.patch rename to patches/Purpur/patches/server/0105-LivingEntity-broadcastItemBreak.patch diff --git a/patches/Purpur/patches/server/0107-Customizable-wither-health-and-healing.patch b/patches/Purpur/patches/server/0106-Customizable-wither-health-and-healing.patch similarity index 100% rename from patches/Purpur/patches/server/0107-Customizable-wither-health-and-healing.patch rename to patches/Purpur/patches/server/0106-Customizable-wither-health-and-healing.patch diff --git a/patches/Purpur/patches/server/0108-Allow-toggling-special-MobSpawners-per-world.patch b/patches/Purpur/patches/server/0107-Allow-toggling-special-MobSpawners-per-world.patch similarity index 99% rename from patches/Purpur/patches/server/0108-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/Purpur/patches/server/0107-Allow-toggling-special-MobSpawners-per-world.patch index 1d8b995b..f04139b1 100644 --- a/patches/Purpur/patches/server/0108-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/Purpur/patches/server/0107-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/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 8d1debb8152176581041a14e28cfcca8f92ae261..373b4c24e105c343f9ba125514853a0d0dbdc524 100644 +index f5b2e0503e6c826e2466835fdc8e51992472cce6..eec7e5d4836e55f2fdf4780cd6d214b29bcbfee8 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -92,6 +92,7 @@ import net.minecraft.world.entity.EnumCreatureType; diff --git a/patches/Purpur/patches/server/0109-Raid-cooldown-setting.patch b/patches/Purpur/patches/server/0108-Raid-cooldown-setting.patch similarity index 100% rename from patches/Purpur/patches/server/0109-Raid-cooldown-setting.patch rename to patches/Purpur/patches/server/0108-Raid-cooldown-setting.patch diff --git a/patches/Purpur/patches/server/0110-Despawn-rate-config-options-per-projectile-type.patch b/patches/Purpur/patches/server/0109-Despawn-rate-config-options-per-projectile-type.patch similarity index 100% rename from patches/Purpur/patches/server/0110-Despawn-rate-config-options-per-projectile-type.patch rename to patches/Purpur/patches/server/0109-Despawn-rate-config-options-per-projectile-type.patch diff --git a/patches/Purpur/patches/server/0111-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/Purpur/patches/server/0110-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 100% rename from patches/Purpur/patches/server/0111-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/Purpur/patches/server/0110-Add-option-to-disable-zombie-aggressiveness-towards-.patch diff --git a/patches/Purpur/patches/server/0112-Persistent-TileEntity-Lore-and-DisplayName.patch b/patches/Purpur/patches/server/0111-Persistent-TileEntity-Lore-and-DisplayName.patch similarity index 97% rename from patches/Purpur/patches/server/0112-Persistent-TileEntity-Lore-and-DisplayName.patch rename to patches/Purpur/patches/server/0111-Persistent-TileEntity-Lore-and-DisplayName.patch index 385a399a..094abf5c 100644 --- a/patches/Purpur/patches/server/0112-Persistent-TileEntity-Lore-and-DisplayName.patch +++ b/patches/Purpur/patches/server/0111-Persistent-TileEntity-Lore-and-DisplayName.patch @@ -149,10 +149,10 @@ index 26cda907063f104fd4a3fbd2286b37fb539f741a..fab55929f72c5784291b3bc87f7717ac if (!world.isClientSide && !itemstack.isEmpty() && world.getGameRules().getBoolean(GameRules.DO_TILE_DROPS)) { float f = 0.5F; diff --git a/src/main/java/net/minecraft/world/level/block/entity/TileEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TileEntity.java -index f1e586754396439dfb70a4d63e3b8b34fb36ebf4..8a049d3de8937a6c8afe178ccd134e2511fb3baf 100644 +index 93d02ccb87c17404c55884f52ae40c7b7ddfb103..35c4d5414db66b977a354ac50d35a6aa0fcd4cf8 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TileEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TileEntity.java -@@ -5,6 +5,8 @@ import net.minecraft.CrashReportSystemDetails; +@@ -6,6 +6,8 @@ import net.minecraft.ResourceKeyInvalidException; import net.minecraft.core.BlockPosition; import net.minecraft.core.IRegistry; import net.minecraft.nbt.NBTTagCompound; @@ -161,7 +161,7 @@ index f1e586754396439dfb70a4d63e3b8b34fb36ebf4..8a049d3de8937a6c8afe178ccd134e25 import net.minecraft.network.protocol.game.PacketPlayOutTileEntityData; import net.minecraft.resources.MinecraftKey; import net.minecraft.world.level.World; -@@ -104,9 +106,25 @@ public abstract class TileEntity implements net.minecraft.server.KeyedObject { / +@@ -105,9 +107,25 @@ public abstract class TileEntity implements net.minecraft.server.KeyedObject { / this.persistentDataContainer.putAll((NBTTagCompound) persistentDataTag); } // CraftBukkit end @@ -187,7 +187,7 @@ index f1e586754396439dfb70a4d63e3b8b34fb36ebf4..8a049d3de8937a6c8afe178ccd134e25 return this.b(nbttagcompound); } -@@ -267,4 +285,25 @@ public abstract class TileEntity implements net.minecraft.server.KeyedObject { / +@@ -274,4 +292,25 @@ public abstract class TileEntity implements net.minecraft.server.KeyedObject { / return null; } // CraftBukkit end diff --git a/patches/Purpur/patches/server/0113-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/Purpur/patches/server/0112-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/Purpur/patches/server/0113-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/Purpur/patches/server/0112-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/Purpur/patches/server/0114-Flying-squids-Oh-my.patch b/patches/Purpur/patches/server/0113-Flying-squids-Oh-my.patch similarity index 100% rename from patches/Purpur/patches/server/0114-Flying-squids-Oh-my.patch rename to patches/Purpur/patches/server/0113-Flying-squids-Oh-my.patch diff --git a/patches/Purpur/patches/server/0115-Infinity-bow-settings.patch b/patches/Purpur/patches/server/0114-Infinity-bow-settings.patch similarity index 100% rename from patches/Purpur/patches/server/0115-Infinity-bow-settings.patch rename to patches/Purpur/patches/server/0114-Infinity-bow-settings.patch diff --git a/patches/Purpur/patches/server/0116-Stonecutter-damage.patch b/patches/Purpur/patches/server/0115-Stonecutter-damage.patch similarity index 100% rename from patches/Purpur/patches/server/0116-Stonecutter-damage.patch rename to patches/Purpur/patches/server/0115-Stonecutter-damage.patch diff --git a/patches/Purpur/patches/server/0117-Configurable-daylight-cycle.patch b/patches/Purpur/patches/server/0116-Configurable-daylight-cycle.patch similarity index 95% rename from patches/Purpur/patches/server/0117-Configurable-daylight-cycle.patch rename to patches/Purpur/patches/server/0116-Configurable-daylight-cycle.patch index 01fc8328..02399710 100644 --- a/patches/Purpur/patches/server/0117-Configurable-daylight-cycle.patch +++ b/patches/Purpur/patches/server/0116-Configurable-daylight-cycle.patch @@ -18,7 +18,7 @@ index 3086ee023685781d94e2fb99fc8dff5264f01165..74c1047305cac5673e274096709c757e public PacketPlayOutUpdateTime() {} diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 373b4c24e105c343f9ba125514853a0d0dbdc524..9a2cc5dfcfaefc8a257a85c0bc09456074ff76c2 100644 +index eec7e5d4836e55f2fdf4780cd6d214b29bcbfee8..866a6f3aca0f30850da1ef47230eb739b0f92cdc 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -64,6 +64,7 @@ import net.minecraft.network.protocol.game.PacketPlayOutExplosion; @@ -45,7 +45,7 @@ index 373b4c24e105c343f9ba125514853a0d0dbdc524..9a2cc5dfcfaefc8a257a85c0bc094560 } // Tuinity start - optimise collision -@@ -1191,7 +1194,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1190,7 +1193,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.nextTickListBlock.nextTick(); // Paper this.nextTickListFluid.nextTick(); // Paper this.worldDataServer.u().a(this.server, i); @@ -68,7 +68,7 @@ index 373b4c24e105c343f9ba125514853a0d0dbdc524..9a2cc5dfcfaefc8a257a85c0bc094560 this.setDayTime(this.worldData.getDayTime() + 1L); } -@@ -1200,6 +1217,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1199,6 +1216,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { public void setDayTime(long i) { this.worldDataServer.setDayTime(i); diff --git a/patches/Purpur/patches/server/0118-Allow-infinite-and-mending-enchantments-together.patch b/patches/Purpur/patches/server/0117-Allow-infinite-and-mending-enchantments-together.patch similarity index 100% rename from patches/Purpur/patches/server/0118-Allow-infinite-and-mending-enchantments-together.patch rename to patches/Purpur/patches/server/0117-Allow-infinite-and-mending-enchantments-together.patch diff --git a/patches/Purpur/patches/server/0119-Infinite-fuel-furnace.patch b/patches/Purpur/patches/server/0118-Infinite-fuel-furnace.patch similarity index 97% rename from patches/Purpur/patches/server/0119-Infinite-fuel-furnace.patch rename to patches/Purpur/patches/server/0118-Infinite-fuel-furnace.patch index db9d2a15..497c9a1b 100644 --- a/patches/Purpur/patches/server/0119-Infinite-fuel-furnace.patch +++ b/patches/Purpur/patches/server/0118-Infinite-fuel-furnace.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Infinite fuel furnace diff --git a/src/main/java/net/minecraft/world/level/block/entity/TileEntityFurnace.java b/src/main/java/net/minecraft/world/level/block/entity/TileEntityFurnace.java -index 1997139fb87dc1947acfdf02e1f116577c3fa943..cd7bcedf8474dcb565b5b1157e167706c031a7f1 100644 +index 9ce19b89c16eb6edd3d5d5cc87a966a37f66895c..ac42fd627009a87709448354f232d8b5ed7fa6b9 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TileEntityFurnace.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TileEntityFurnace.java @@ -12,6 +12,7 @@ import java.util.Map; diff --git a/patches/Purpur/patches/server/0120-Arrows-should-not-reset-despawn-counter.patch b/patches/Purpur/patches/server/0119-Arrows-should-not-reset-despawn-counter.patch similarity index 100% rename from patches/Purpur/patches/server/0120-Arrows-should-not-reset-despawn-counter.patch rename to patches/Purpur/patches/server/0119-Arrows-should-not-reset-despawn-counter.patch diff --git a/patches/Purpur/patches/server/0121-Add-tablist-suffix-option-for-afk.patch b/patches/Purpur/patches/server/0120-Add-tablist-suffix-option-for-afk.patch similarity index 93% rename from patches/Purpur/patches/server/0121-Add-tablist-suffix-option-for-afk.patch rename to patches/Purpur/patches/server/0120-Add-tablist-suffix-option-for-afk.patch index b4e613ac..cbd720e6 100644 --- a/patches/Purpur/patches/server/0121-Add-tablist-suffix-option-for-afk.patch +++ b/patches/Purpur/patches/server/0120-Add-tablist-suffix-option-for-afk.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add tablist suffix option for afk diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java -index 86bd39af6e3240b82f5afd6e7c554471f7bbd6ba..7faf393954b703efda7290c831ff75b6a02a4dc1 100644 +index c723c1cc4a5d73c82b009aeb6f3e6ecf0a6668b9..37870dee53c651b5f3e52f76fc5d569d610bda26 100644 --- a/src/main/java/net/minecraft/server/level/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java -@@ -2122,7 +2122,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -2123,7 +2123,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } if (world.purpurConfig.idleTimeoutUpdateTabList) { diff --git a/patches/Purpur/patches/server/0122-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/Purpur/patches/server/0121-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 100% rename from patches/Purpur/patches/server/0122-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/Purpur/patches/server/0121-Ability-to-re-add-farmland-mechanics-from-Alpha.patch diff --git a/patches/Purpur/patches/server/0123-Add-adjustable-breeding-cooldown-to-config.patch b/patches/Purpur/patches/server/0122-Add-adjustable-breeding-cooldown-to-config.patch similarity index 100% rename from patches/Purpur/patches/server/0123-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/Purpur/patches/server/0122-Add-adjustable-breeding-cooldown-to-config.patch diff --git a/patches/Purpur/patches/server/0124-Make-entity-breeding-times-configurable.patch b/patches/Purpur/patches/server/0123-Make-entity-breeding-times-configurable.patch similarity index 100% rename from patches/Purpur/patches/server/0124-Make-entity-breeding-times-configurable.patch rename to patches/Purpur/patches/server/0123-Make-entity-breeding-times-configurable.patch diff --git a/patches/Purpur/patches/server/0125-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/Purpur/patches/server/0124-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 100% rename from patches/Purpur/patches/server/0125-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to patches/Purpur/patches/server/0124-Apply-display-names-from-item-forms-of-entities-to-e.patch diff --git a/patches/Purpur/patches/server/0126-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/Purpur/patches/server/0125-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 100% rename from patches/Purpur/patches/server/0126-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/Purpur/patches/server/0125-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch diff --git a/patches/Purpur/patches/server/0127-Add-twisting-and-weeping-vines-growth-rates.patch b/patches/Purpur/patches/server/0126-Add-twisting-and-weeping-vines-growth-rates.patch similarity index 100% rename from patches/Purpur/patches/server/0127-Add-twisting-and-weeping-vines-growth-rates.patch rename to patches/Purpur/patches/server/0126-Add-twisting-and-weeping-vines-growth-rates.patch diff --git a/patches/Purpur/patches/server/0128-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch b/patches/Purpur/patches/server/0127-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch similarity index 100% rename from patches/Purpur/patches/server/0128-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch rename to patches/Purpur/patches/server/0127-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch diff --git a/patches/Purpur/patches/server/0129-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/Purpur/patches/server/0128-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 100% rename from patches/Purpur/patches/server/0129-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/Purpur/patches/server/0128-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch diff --git a/patches/Purpur/patches/server/0130-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch b/patches/Purpur/patches/server/0129-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch similarity index 87% rename from patches/Purpur/patches/server/0130-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch rename to patches/Purpur/patches/server/0129-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch index 9dcbf164..fe878939 100644 --- a/patches/Purpur/patches/server/0130-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch +++ b/patches/Purpur/patches/server/0129-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add critical hit check to EntityDamagedByEntityEvent diff --git a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java -index 644f94002bfe2686f4c765251c3804c854b27869..8b956fb01cff3e1990823430333e5d707bf9addf 100644 +index fedfb18e71300807a83e2ed2729fe192a8f9aa33..af10d5aea7909ee9f38982264233f0a45c153003 100644 --- a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java +++ b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java @@ -171,6 +171,7 @@ public abstract class EntityHuman extends EntityLiving { @@ -16,7 +16,7 @@ index 644f94002bfe2686f4c765251c3804c854b27869..8b956fb01cff3e1990823430333e5d70 // CraftBukkit start public boolean fauxSleeping; -@@ -1166,6 +1167,7 @@ public abstract class EntityHuman extends EntityLiving { +@@ -1178,6 +1179,7 @@ public abstract class EntityHuman extends EntityLiving { flag2 = flag2 && !world.paperConfig.disablePlayerCrits; // Paper flag2 = flag2 && !this.isSprinting(); if (flag2) { @@ -24,7 +24,7 @@ index 644f94002bfe2686f4c765251c3804c854b27869..8b956fb01cff3e1990823430333e5d70 f *= 1.5F; } -@@ -1202,6 +1204,7 @@ public abstract class EntityHuman extends EntityLiving { +@@ -1214,6 +1216,7 @@ public abstract class EntityHuman extends EntityLiving { Vec3D vec3d = entity.getMot(); boolean flag5 = entity.damageEntity(DamageSource.playerAttack(this), f); @@ -33,10 +33,10 @@ index 644f94002bfe2686f4c765251c3804c854b27869..8b956fb01cff3e1990823430333e5d70 if (flag5) { if (i > 0) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 7341b1956123d8e5d45d9041e7319de8ee8b768a..470ae06db18a78327cc3218f1f7180bcc859a198 100644 +index c44a15cd7b2d67c77eac7a1d2a7e9569f9dce48c..ad325f58198fcae7b9cae55e4c9675c8498838d1 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1076,7 +1076,7 @@ public class CraftEventFactory { +@@ -1090,7 +1090,7 @@ public class CraftEventFactory { private static EntityDamageEvent callEntityDamageEvent(Entity damager, Entity damagee, DamageCause cause, Map modifiers, Map> modifierFunctions, boolean cancelled) { EntityDamageEvent event; if (damager != null) { diff --git a/patches/Purpur/patches/server/0131-Add-configurable-snowball-damage.patch b/patches/Purpur/patches/server/0130-Add-configurable-snowball-damage.patch similarity index 100% rename from patches/Purpur/patches/server/0131-Add-configurable-snowball-damage.patch rename to patches/Purpur/patches/server/0130-Add-configurable-snowball-damage.patch diff --git a/patches/Purpur/patches/server/0132-Zombie-break-door-minimum-difficulty-option.patch b/patches/Purpur/patches/server/0131-Zombie-break-door-minimum-difficulty-option.patch similarity index 100% rename from patches/Purpur/patches/server/0132-Zombie-break-door-minimum-difficulty-option.patch rename to patches/Purpur/patches/server/0131-Zombie-break-door-minimum-difficulty-option.patch diff --git a/patches/Purpur/patches/server/0133-Add-demo-command.patch b/patches/Purpur/patches/server/0132-Add-demo-command.patch similarity index 95% rename from patches/Purpur/patches/server/0133-Add-demo-command.patch rename to patches/Purpur/patches/server/0132-Add-demo-command.patch index 911b8114..34780f55 100644 --- a/patches/Purpur/patches/server/0133-Add-demo-command.patch +++ b/patches/Purpur/patches/server/0132-Add-demo-command.patch @@ -5,15 +5,15 @@ Subject: [PATCH] Add demo command diff --git a/src/main/java/net/minecraft/commands/CommandDispatcher.java b/src/main/java/net/minecraft/commands/CommandDispatcher.java -index 2566c5ea7ba2bbeed43ba74944c038b53f7f9fde..d402a896a0094e6c379d71c63d744b4ee443c097 100644 +index cf3776591446ad7b3d1ee1285c5aeffcb5e9495e..0982b14a4b39c40a68ee900d506b4e44f840299d 100644 --- a/src/main/java/net/minecraft/commands/CommandDispatcher.java +++ b/src/main/java/net/minecraft/commands/CommandDispatcher.java @@ -191,6 +191,7 @@ public class CommandDispatcher { CommandIdleTimeout.a(this.b); CommandStop.a(this.b); CommandWhitelist.a(this.b); -+ net.pl3x.purpur.command.DemoCommand.register(dispatcher()); // Purpur - net.pl3x.purpur.command.PingCommand.register(dispatcher()); // Purpur ++ net.pl3x.purpur.command.DemoCommand.register(getDispatcher()); // Purpur + net.pl3x.purpur.command.PingCommand.register(getDispatcher()); // Purpur } diff --git a/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutGameStateChange.java b/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutGameStateChange.java diff --git a/patches/Purpur/patches/server/0134-Left-handed-API.patch b/patches/Purpur/patches/server/0133-Left-handed-API.patch similarity index 100% rename from patches/Purpur/patches/server/0134-Left-handed-API.patch rename to patches/Purpur/patches/server/0133-Left-handed-API.patch diff --git a/patches/Purpur/patches/server/0135-Origami-Fix-ProtocolLib-issues-on-Java-15.patch b/patches/Purpur/patches/server/0134-Origami-Fix-ProtocolLib-issues-on-Java-15.patch similarity index 100% rename from patches/Purpur/patches/server/0135-Origami-Fix-ProtocolLib-issues-on-Java-15.patch rename to patches/Purpur/patches/server/0134-Origami-Fix-ProtocolLib-issues-on-Java-15.patch diff --git a/patches/Purpur/patches/server/0136-Changeable-Mob-Left-Handed-Chance.patch b/patches/Purpur/patches/server/0135-Changeable-Mob-Left-Handed-Chance.patch similarity index 92% rename from patches/Purpur/patches/server/0136-Changeable-Mob-Left-Handed-Chance.patch rename to patches/Purpur/patches/server/0135-Changeable-Mob-Left-Handed-Chance.patch index c925053d..3468f240 100644 --- a/patches/Purpur/patches/server/0136-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/Purpur/patches/server/0135-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/EntityInsentient.java b/src/main/java/net/minecraft/world/entity/EntityInsentient.java -index 8b7f840bb1b24996b40c9bef85f4c1e98e39caec..63d93060b350069040876aaacb91c853d674ea7b 100644 +index df33b46ff1267f0f2692a8956438f3bd1e2a3086..a6ea96683b0f4d35015dff6168f3bf458346fb6f 100644 --- a/src/main/java/net/minecraft/world/entity/EntityInsentient.java +++ b/src/main/java/net/minecraft/world/entity/EntityInsentient.java -@@ -1209,7 +1209,7 @@ public abstract class EntityInsentient extends EntityLiving { +@@ -1216,7 +1216,7 @@ public abstract class EntityInsentient extends EntityLiving { @Nullable public GroupDataEntity prepare(WorldAccess worldaccess, DifficultyDamageScaler difficultydamagescaler, EnumMobSpawn enummobspawn, @Nullable GroupDataEntity groupdataentity, @Nullable NBTTagCompound nbttagcompound) { this.getAttributeInstance(GenericAttributes.FOLLOW_RANGE).addModifier(new AttributeModifier("Random spawn bonus", this.random.nextGaussian() * 0.05D, AttributeModifier.Operation.MULTIPLY_BASE)); diff --git a/patches/Purpur/patches/server/0137-Add-boat-fall-damage-config.patch b/patches/Purpur/patches/server/0136-Add-boat-fall-damage-config.patch similarity index 97% rename from patches/Purpur/patches/server/0137-Add-boat-fall-damage-config.patch rename to patches/Purpur/patches/server/0136-Add-boat-fall-damage-config.patch index 163a33cf..dcba2b1c 100644 --- a/patches/Purpur/patches/server/0137-Add-boat-fall-damage-config.patch +++ b/patches/Purpur/patches/server/0136-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/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java -index 7faf393954b703efda7290c831ff75b6a02a4dc1..35b26e520be7c06b296ae219be18ef38a1de5dfc 100644 +index 37870dee53c651b5f3e52f76fc5d569d610bda26..e1072ae940ac56c3a2d9af756acc9278baa07d84 100644 --- a/src/main/java/net/minecraft/server/level/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java @@ -106,6 +106,7 @@ import net.minecraft.world.entity.monster.EntityMonster; diff --git a/patches/Purpur/patches/server/0138-Config-migration-disable-saving-projectiles-to-disk-.patch b/patches/Purpur/patches/server/0137-Config-migration-disable-saving-projectiles-to-disk-.patch similarity index 100% rename from patches/Purpur/patches/server/0138-Config-migration-disable-saving-projectiles-to-disk-.patch rename to patches/Purpur/patches/server/0137-Config-migration-disable-saving-projectiles-to-disk-.patch diff --git a/patches/Purpur/patches/server/0139-Snow-Golem-rate-of-fire-config.patch b/patches/Purpur/patches/server/0138-Snow-Golem-rate-of-fire-config.patch similarity index 100% rename from patches/Purpur/patches/server/0139-Snow-Golem-rate-of-fire-config.patch rename to patches/Purpur/patches/server/0138-Snow-Golem-rate-of-fire-config.patch diff --git a/patches/Purpur/patches/server/0140-PaperPR-Config-option-for-Piglins-guarding-chests.patch b/patches/Purpur/patches/server/0139-PaperPR-Config-option-for-Piglins-guarding-chests.patch similarity index 100% rename from patches/Purpur/patches/server/0140-PaperPR-Config-option-for-Piglins-guarding-chests.patch rename to patches/Purpur/patches/server/0139-PaperPR-Config-option-for-Piglins-guarding-chests.patch diff --git a/patches/Purpur/patches/server/0141-EMC-Configurable-disable-give-dropping.patch b/patches/Purpur/patches/server/0140-EMC-Configurable-disable-give-dropping.patch similarity index 91% rename from patches/Purpur/patches/server/0141-EMC-Configurable-disable-give-dropping.patch rename to patches/Purpur/patches/server/0140-EMC-Configurable-disable-give-dropping.patch index b3061eb8..daa83e51 100644 --- a/patches/Purpur/patches/server/0141-EMC-Configurable-disable-give-dropping.patch +++ b/patches/Purpur/patches/server/0140-EMC-Configurable-disable-give-dropping.patch @@ -8,7 +8,7 @@ purpur.yml to disable the /give command from dropping items on the floor when a player's inventory is full. diff --git a/src/main/java/net/minecraft/server/commands/CommandGive.java b/src/main/java/net/minecraft/server/commands/CommandGive.java -index 6685bf1757458d908e32d4069f7a8a22a28c28d7..82d663d3b8bbbb020c3467ea93b54729c3053f9e 100644 +index a10207f7cb9455e29db7e6906cb2138ad5609a1f..9557fd12f87e7e825501759598eaee75cd3891ac 100644 --- a/src/main/java/net/minecraft/server/commands/CommandGive.java +++ b/src/main/java/net/minecraft/server/commands/CommandGive.java @@ -47,6 +47,7 @@ public class CommandGive { @@ -18,7 +18,7 @@ index 6685bf1757458d908e32d4069f7a8a22a28c28d7..82d663d3b8bbbb020c3467ea93b54729 + if (net.pl3x.purpur.PurpurConfig.disableGiveCommandDrops) continue; // Purpur - add config option for toggling give command dropping if (flag && itemstack.isEmpty()) { itemstack.setCount(1); - entityitem = entityplayer.drop(itemstack, false); + entityitem = entityplayer.drop(itemstack, false, false, true); // Paper - Fix duplicating /give items on item drop cancel diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java index dc6122ef302055eb2c08fda05be977b045b6debe..f1088638716b4a02eb3b8541a040229da8a6ea24 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java diff --git a/patches/Purpur/patches/server/0142-Config-migration-climbing-should-not-bypass-cramming.patch b/patches/Purpur/patches/server/0141-Config-migration-climbing-should-not-bypass-cramming.patch similarity index 100% rename from patches/Purpur/patches/server/0142-Config-migration-climbing-should-not-bypass-cramming.patch rename to patches/Purpur/patches/server/0141-Config-migration-climbing-should-not-bypass-cramming.patch diff --git a/patches/Purpur/patches/server/0143-Lobotomize-stuck-villagers.patch b/patches/Purpur/patches/server/0142-Lobotomize-stuck-villagers.patch similarity index 98% rename from patches/Purpur/patches/server/0143-Lobotomize-stuck-villagers.patch rename to patches/Purpur/patches/server/0142-Lobotomize-stuck-villagers.patch index 3c9565b0..3c22a6d1 100644 --- a/patches/Purpur/patches/server/0143-Lobotomize-stuck-villagers.patch +++ b/patches/Purpur/patches/server/0142-Lobotomize-stuck-villagers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lobotomize stuck villagers diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 4b4c6477122c51871ce98f34c6e5874048eaa227..904bca540a42204a9856765e333eee6c5de6a960 100644 +index 918edab475a8d33a253e3d6cd3c5655748d10dc0..4d64fb19c3c9cce41e89ba4d702e687b34620b7e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -207,7 +207,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne diff --git a/patches/Purpur/patches/server/0144-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/Purpur/patches/server/0143-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 100% rename from patches/Purpur/patches/server/0144-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/Purpur/patches/server/0143-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch diff --git a/patches/Purpur/patches/server/0145-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/Purpur/patches/server/0144-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 93% rename from patches/Purpur/patches/server/0145-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/Purpur/patches/server/0144-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index 3f606f29..335b6917 100644 --- a/patches/Purpur/patches/server/0145-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/Purpur/patches/server/0144-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -13,10 +13,10 @@ to the Piglin being angry, even though the player never hit them. This patch adds a toggle to disable this behavior. diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java b/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java -index 816a2bd7438f66a5d7ff761b8fcf8b42483561c7..8db9c62093b2f075face65030cb91c24fb6c2dbf 100644 +index 9f50054211db48e7fe764434e8d71aab0995e57a..82279ab2f3c1edec14c24c3a7ad24d097d52dea2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java -@@ -129,7 +129,7 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { +@@ -130,7 +130,7 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { this.eY(); } @@ -25,7 +25,7 @@ index 816a2bd7438f66a5d7ff761b8fcf8b42483561c7..8db9c62093b2f075face65030cb91c24 this.lastDamageByPlayerTime = this.ticksLived; } -@@ -184,7 +184,7 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { +@@ -185,7 +185,7 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { this.bt = EntityPigZombie.bs.a(this.random); } diff --git a/patches/Purpur/patches/server/0146-Spread-out-and-optimise-player-list-ticks.patch b/patches/Purpur/patches/server/0145-Spread-out-and-optimise-player-list-ticks.patch similarity index 95% rename from patches/Purpur/patches/server/0146-Spread-out-and-optimise-player-list-ticks.patch rename to patches/Purpur/patches/server/0145-Spread-out-and-optimise-player-list-ticks.patch index 874c857f..31a9dd02 100644 --- a/patches/Purpur/patches/server/0146-Spread-out-and-optimise-player-list-ticks.patch +++ b/patches/Purpur/patches/server/0145-Spread-out-and-optimise-player-list-ticks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Spread out and optimise player list ticks diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 3a46a673349de9d9d725516a0fcdb3ebb9b372b3..c316b0468c53825f90d9bc2ad40d655d92857715 100644 +index c742647c0c5e3e4925e4ee6d195a54a85435e65e..8307b44718198f6f2325454f72bd296c33cba58a 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -151,7 +151,7 @@ public abstract class PlayerList { @@ -17,7 +17,7 @@ index 3a46a673349de9d9d725516a0fcdb3ebb9b372b3..c316b0468c53825f90d9bc2ad40d655d // CraftBukkit start private CraftServer cserver; -@@ -1021,22 +1021,23 @@ public abstract class PlayerList { +@@ -1023,22 +1023,23 @@ public abstract class PlayerList { } public void tick() { diff --git a/patches/Purpur/patches/server/0147-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/Purpur/patches/server/0146-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 98% rename from patches/Purpur/patches/server/0147-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/Purpur/patches/server/0146-Configurable-chance-for-wolves-to-spawn-rabid.patch index 824dd086..2496cbcb 100644 --- a/patches/Purpur/patches/server/0147-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/Purpur/patches/server/0146-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -7,10 +7,10 @@ Configurable chance to spawn a wolf that is rabid. Rabid wolves attack all players, mobs, and animals. diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index bcf1d77f627e800b9dbbfd7f9ed99887e2aca714..c957122f8463fc1eae632730a64bec7f8b0d1055 100644 +index 2d3ec6505b91a2cb43a1e2285a7d4e57a54e243c..f0a485056f3ad94e7375fbdfd512026b969a0eed 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java -@@ -2200,6 +2200,7 @@ public abstract class EntityLiving extends Entity { +@@ -2213,6 +2213,7 @@ public abstract class EntityLiving extends Entity { } } diff --git a/patches/Purpur/patches/server/0148-Configurable-default-wolf-collar-color.patch b/patches/Purpur/patches/server/0147-Configurable-default-wolf-collar-color.patch similarity index 100% rename from patches/Purpur/patches/server/0148-Configurable-default-wolf-collar-color.patch rename to patches/Purpur/patches/server/0147-Configurable-default-wolf-collar-color.patch diff --git a/patches/Purpur/patches/server/0149-Configurable-entity-base-attributes.patch b/patches/Purpur/patches/server/0148-Configurable-entity-base-attributes.patch similarity index 99% rename from patches/Purpur/patches/server/0149-Configurable-entity-base-attributes.patch rename to patches/Purpur/patches/server/0148-Configurable-entity-base-attributes.patch index f1b6c5a3..f0d3266c 100644 --- a/patches/Purpur/patches/server/0149-Configurable-entity-base-attributes.patch +++ b/patches/Purpur/patches/server/0148-Configurable-entity-base-attributes.patch @@ -921,10 +921,10 @@ index a836839b17cbda8ac269f032b141ba448e3bab8c..902b26d609aef8dd46e8875cb7c06f18 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java b/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java -index 8db9c62093b2f075face65030cb91c24fb6c2dbf..736c45bae020158866514bc760c05a929f47c531 100644 +index 82279ab2f3c1edec14c24c3a7ad24d097d52dea2..dfe65943b3a2f744f06b4669590cc203e8419e60 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/EntityPigZombie.java -@@ -80,6 +80,15 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { +@@ -81,6 +81,15 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { public boolean jockeyTryExistingChickens() { return world.purpurConfig.zombifiedPiglinJockeyTryExistingChickens; } @@ -940,7 +940,7 @@ index 8db9c62093b2f075face65030cb91c24fb6c2dbf..736c45bae020158866514bc760c05a92 // Purpur end @Override -@@ -268,7 +277,7 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { +@@ -270,7 +279,7 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { @Override protected void eV() { diff --git a/patches/Purpur/patches/server/0150-Phantom-flames-on-swoop.patch b/patches/Purpur/patches/server/0149-Phantom-flames-on-swoop.patch similarity index 100% rename from patches/Purpur/patches/server/0150-Phantom-flames-on-swoop.patch rename to patches/Purpur/patches/server/0149-Phantom-flames-on-swoop.patch diff --git a/patches/Purpur/patches/server/0151-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/Purpur/patches/server/0150-Option-for-chests-to-open-even-with-a-solid-block-on.patch similarity index 100% rename from patches/Purpur/patches/server/0151-Option-for-chests-to-open-even-with-a-solid-block-on.patch rename to patches/Purpur/patches/server/0150-Option-for-chests-to-open-even-with-a-solid-block-on.patch diff --git a/patches/Purpur/patches/server/0152-Implement-TPSBar.patch b/patches/Purpur/patches/server/0151-Implement-TPSBar.patch similarity index 91% rename from patches/Purpur/patches/server/0152-Implement-TPSBar.patch rename to patches/Purpur/patches/server/0151-Implement-TPSBar.patch index dfd1c37e..6094ad5b 100644 --- a/patches/Purpur/patches/server/0152-Implement-TPSBar.patch +++ b/patches/Purpur/patches/server/0151-Implement-TPSBar.patch @@ -5,19 +5,19 @@ Subject: [PATCH] Implement TPSBar diff --git a/src/main/java/net/minecraft/commands/CommandDispatcher.java b/src/main/java/net/minecraft/commands/CommandDispatcher.java -index d402a896a0094e6c379d71c63d744b4ee443c097..3bcaafb1fe3af67fce2be1f62c7f1aa86ebd51ef 100644 +index 0982b14a4b39c40a68ee900d506b4e44f840299d..324f475513eecab4242b8900084d7f088bd0e10b 100644 --- a/src/main/java/net/minecraft/commands/CommandDispatcher.java +++ b/src/main/java/net/minecraft/commands/CommandDispatcher.java @@ -193,6 +193,7 @@ public class CommandDispatcher { CommandWhitelist.a(this.b); - net.pl3x.purpur.command.DemoCommand.register(dispatcher()); // Purpur - net.pl3x.purpur.command.PingCommand.register(dispatcher()); // Purpur -+ net.pl3x.purpur.command.TPSBarCommand.register(dispatcher()); // Purpur + net.pl3x.purpur.command.DemoCommand.register(getDispatcher()); // Purpur + net.pl3x.purpur.command.PingCommand.register(getDispatcher()); // Purpur ++ net.pl3x.purpur.command.TPSBarCommand.register(getDispatcher()); // Purpur } if (commanddispatcher_servertype.d) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f6637353fb358e7720edabc355ea036d37d039ca..5e2c7f3bf9aa99b10260454b9957caff81a7cd26 100644 +index 4ceaa8e905c9ba7277ee00cea020d01d14ae2178..137c52999666ea331ac52c230f0674d489a95524 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -989,6 +989,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 904bca540a42204a9856765e333eee6c5de6a960..ee1f0ccce5c5c920b2595ced9e72fd1544e2459a 100644 +index 4d64fb19c3c9cce41e89ba4d702e687b34620b7e..2545b0891a299301a8d9e194e795b0f3856f2178 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1469,7 +1469,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -1500,7 +1500,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne return this.isInWater() || flag; } diff --git a/patches/Purpur/patches/server/0163-Fix-stuck-in-portals.patch b/patches/Purpur/patches/server/0162-Fix-stuck-in-portals.patch similarity index 91% rename from patches/Purpur/patches/server/0163-Fix-stuck-in-portals.patch rename to patches/Purpur/patches/server/0162-Fix-stuck-in-portals.patch index d99b2233..d93e88e9 100644 --- a/patches/Purpur/patches/server/0163-Fix-stuck-in-portals.patch +++ b/patches/Purpur/patches/server/0162-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/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java -index 35b26e520be7c06b296ae219be18ef38a1de5dfc..9cedd9c7aa79540710ae248c61eeb7076a84fca4 100644 +index e1072ae940ac56c3a2d9af756acc9278baa07d84..30bdb18bf89ab021a66c2a51e1543b71ae77fae8 100644 --- a/src/main/java/net/minecraft/server/level/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java @@ -1293,6 +1293,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -17,10 +17,10 @@ index 35b26e520be7c06b296ae219be18ef38a1de5dfc..9cedd9c7aa79540710ae248c61eeb707 // CraftBukkit end this.spawnIn(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ee1f0ccce5c5c920b2595ced9e72fd1544e2459a..fcbbf100990faf60250357b744cbd58701da0b0c 100644 +index 2545b0891a299301a8d9e194e795b0f3856f2178..fdd374232ced8f4da675afaee3f5278c036ef112 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2520,12 +2520,15 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2551,12 +2551,15 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne return new Vec2F(this.pitch, this.yaw); } diff --git a/patches/Purpur/patches/server/0164-Config-to-use-infinity-bows-without-arrows.patch b/patches/Purpur/patches/server/0163-Config-to-use-infinity-bows-without-arrows.patch similarity index 100% rename from patches/Purpur/patches/server/0164-Config-to-use-infinity-bows-without-arrows.patch rename to patches/Purpur/patches/server/0163-Config-to-use-infinity-bows-without-arrows.patch diff --git a/patches/Purpur/patches/server/0165-Toggle-for-water-sensitive-mob-damage.patch b/patches/Purpur/patches/server/0164-Toggle-for-water-sensitive-mob-damage.patch similarity index 96% rename from patches/Purpur/patches/server/0165-Toggle-for-water-sensitive-mob-damage.patch rename to patches/Purpur/patches/server/0164-Toggle-for-water-sensitive-mob-damage.patch index f5164f59..f0c3af0d 100644 --- a/patches/Purpur/patches/server/0165-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/Purpur/patches/server/0164-Toggle-for-water-sensitive-mob-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for water sensitive mob damage diff --git a/src/main/java/net/minecraft/world/entity/EntityInsentient.java b/src/main/java/net/minecraft/world/entity/EntityInsentient.java -index 63d93060b350069040876aaacb91c853d674ea7b..e9793954c872baacfe7be80ecf3888e848dc924f 100644 +index a6ea96683b0f4d35015dff6168f3bf458346fb6f..95c08c31cb4d9df73f0af8f0e3b61236e1b46faa 100644 --- a/src/main/java/net/minecraft/world/entity/EntityInsentient.java +++ b/src/main/java/net/minecraft/world/entity/EntityInsentient.java -@@ -856,7 +856,8 @@ public abstract class EntityInsentient extends EntityLiving { +@@ -863,7 +863,8 @@ public abstract class EntityInsentient extends EntityLiving { if (goalFloat.validConditions()) goalFloat.update(); this.getControllerJump().jumpIfSet(); } @@ -19,10 +19,10 @@ index 63d93060b350069040876aaacb91c853d674ea7b..e9793954c872baacfe7be80ecf3888e8 } return; diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 52bd6b4a3bcd44166bd4c897756fe06b19120907..f59d18195bf40f5589d50cee8d074005e98416a6 100644 +index e866531958c9d0171d39ba7f6963fe92eb2d42cc..d0adfc802371f562fe87c3f8ebe2368ff133776a 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java -@@ -2977,6 +2977,7 @@ public abstract class EntityLiving extends Entity { +@@ -2990,6 +2990,7 @@ public abstract class EntityLiving extends Entity { } diff --git a/patches/Purpur/patches/server/0166-Config-to-always-tame-in-Creative.patch b/patches/Purpur/patches/server/0165-Config-to-always-tame-in-Creative.patch similarity index 100% rename from patches/Purpur/patches/server/0166-Config-to-always-tame-in-Creative.patch rename to patches/Purpur/patches/server/0165-Config-to-always-tame-in-Creative.patch diff --git a/patches/Purpur/patches/server/0167-End-crystal-explosion-options.patch b/patches/Purpur/patches/server/0166-End-crystal-explosion-options.patch similarity index 100% rename from patches/Purpur/patches/server/0167-End-crystal-explosion-options.patch rename to patches/Purpur/patches/server/0166-End-crystal-explosion-options.patch diff --git a/patches/Purpur/patches/server/0168-Add-unsafe-Entity-serialization-API.patch b/patches/Purpur/patches/server/0167-Add-unsafe-Entity-serialization-API.patch similarity index 97% rename from patches/Purpur/patches/server/0168-Add-unsafe-Entity-serialization-API.patch rename to patches/Purpur/patches/server/0167-Add-unsafe-Entity-serialization-API.patch index c37835ef..d1c84d44 100644 --- a/patches/Purpur/patches/server/0168-Add-unsafe-Entity-serialization-API.patch +++ b/patches/Purpur/patches/server/0167-Add-unsafe-Entity-serialization-API.patch @@ -46,10 +46,10 @@ index a80f664d2cf713fd751421be3735e2f4779f0056..6c37bf58bd269c2d7e1c84e5791e8245 // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 38e1bd3893b9dfcf1bac1333d06b4e9792793ec6..05d0d2e5bb10bb002c8d7d4783a144ec35e4550f 100644 +index 67f93f252a26f8b598a4b48c63c321728b246cae..b05b6e911026b8b8ad2e12b7a6705364ec90769d 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -390,9 +390,14 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -410,9 +410,14 @@ public final class CraftMagicNumbers implements UnsafeValues { Preconditions.checkNotNull(item, "null cannot be serialized"); Preconditions.checkArgument(item.getType() != Material.AIR, "air cannot be serialized"); @@ -66,7 +66,7 @@ index 38e1bd3893b9dfcf1bac1333d06b4e9792793ec6..05d0d2e5bb10bb002c8d7d4783a144ec try { net.minecraft.nbt.NBTCompressedStreamTools.writeNBT( compound, -@@ -405,26 +410,58 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -425,26 +430,58 @@ public final class CraftMagicNumbers implements UnsafeValues { return outputStream.toByteArray(); } diff --git a/patches/Purpur/patches/server/0169-Add-ghast-allow-griefing-option.patch b/patches/Purpur/patches/server/0168-Add-ghast-allow-griefing-option.patch similarity index 100% rename from patches/Purpur/patches/server/0169-Add-ghast-allow-griefing-option.patch rename to patches/Purpur/patches/server/0168-Add-ghast-allow-griefing-option.patch diff --git a/patches/Purpur/patches/server/0170-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/Purpur/patches/server/0169-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch similarity index 96% rename from patches/Purpur/patches/server/0170-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch rename to patches/Purpur/patches/server/0169-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index 74ba7150..29fd9514 100644 --- a/patches/Purpur/patches/server/0170-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/Purpur/patches/server/0169-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configs for if Wither/Ender Dragon can ride vehicles diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index fcbbf100990faf60250357b744cbd58701da0b0c..d321616b7f726f4ff307b46ced9efce6cc20b82f 100644 +index fdd374232ced8f4da675afaee3f5278c036ef112..f3151969e5841861d31ac50abdfef3c65e5198a3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2370,7 +2370,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2401,7 +2401,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne } } diff --git a/patches/Purpur/patches/server/0171-Dont-run-with-scissors.patch b/patches/Purpur/patches/server/0170-Dont-run-with-scissors.patch similarity index 96% rename from patches/Purpur/patches/server/0171-Dont-run-with-scissors.patch rename to patches/Purpur/patches/server/0170-Dont-run-with-scissors.patch index b49faaca..6bb66ecc 100644 --- a/patches/Purpur/patches/server/0171-Dont-run-with-scissors.patch +++ b/patches/Purpur/patches/server/0170-Dont-run-with-scissors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index 0fc053def9e632543c3ba54e5a700518efba95d8..7abd1e47b6f3bed48228ed6dc2a6a27a877e03c2 100644 +index 5a2f84cd1456b072084e2db53a24c9863cb75563..40ad7f050b7f11f2810b07970c9e29354525de98 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -1547,6 +1547,12 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/patches/Purpur/patches/server/0172-One-Punch-Man.patch b/patches/Purpur/patches/server/0171-One-Punch-Man.patch similarity index 95% rename from patches/Purpur/patches/server/0172-One-Punch-Man.patch rename to patches/Purpur/patches/server/0171-One-Punch-Man.patch index a407fd84..974022d8 100644 --- a/patches/Purpur/patches/server/0172-One-Punch-Man.patch +++ b/patches/Purpur/patches/server/0171-One-Punch-Man.patch @@ -5,10 +5,10 @@ Subject: [PATCH] One Punch Man! diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index f59d18195bf40f5589d50cee8d074005e98416a6..cbfaa40c327fefe416c4c751846bcf278a36144a 100644 +index d0adfc802371f562fe87c3f8ebe2368ff133776a..93f8aa6d40b1eba6535f170bf0a79417d7d21069 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java -@@ -2019,6 +2019,23 @@ public abstract class EntityLiving extends Entity { +@@ -2032,6 +2032,23 @@ public abstract class EntityLiving extends Entity { ((EntityPlayer) damagesource.getEntity()).a(StatisticList.DAMAGE_DEALT_ABSORBED, Math.round(f2 * 10.0F)); } diff --git a/patches/Purpur/patches/server/0173-Add-config-for-snow-on-blue-ice.patch b/patches/Purpur/patches/server/0172-Add-config-for-snow-on-blue-ice.patch similarity index 100% rename from patches/Purpur/patches/server/0173-Add-config-for-snow-on-blue-ice.patch rename to patches/Purpur/patches/server/0172-Add-config-for-snow-on-blue-ice.patch diff --git a/patches/Purpur/patches/server/0174-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/Purpur/patches/server/0173-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 100% rename from patches/Purpur/patches/server/0174-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/Purpur/patches/server/0173-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch diff --git a/patches/Purpur/patches/server/0175-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/Purpur/patches/server/0174-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 96% rename from patches/Purpur/patches/server/0175-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/Purpur/patches/server/0174-Config-to-ignore-nearby-mobs-when-sleeping.patch index 4a38e87a..31e81d6c 100644 --- a/patches/Purpur/patches/server/0175-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/Purpur/patches/server/0174-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/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java -index 9cedd9c7aa79540710ae248c61eeb7076a84fca4..b8c63c25d2ad9692475e8c7cb307f45853b86ca4 100644 +index 30bdb18bf89ab021a66c2a51e1543b71ae77fae8..0c796d04a2d6903639856865d2822d345d53d766 100644 --- a/src/main/java/net/minecraft/server/level/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java @@ -1443,7 +1443,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/patches/Purpur/patches/server/0176-Config-for-Enderman-to-aggro-spawned-Endermites.patch b/patches/Purpur/patches/server/0175-Config-for-Enderman-to-aggro-spawned-Endermites.patch similarity index 100% rename from patches/Purpur/patches/server/0176-Config-for-Enderman-to-aggro-spawned-Endermites.patch rename to patches/Purpur/patches/server/0175-Config-for-Enderman-to-aggro-spawned-Endermites.patch diff --git a/patches/Purpur/patches/server/0177-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/Purpur/patches/server/0176-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 100% rename from patches/Purpur/patches/server/0177-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/Purpur/patches/server/0176-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch diff --git a/patches/Purpur/patches/server/0178-Tick-fluids-config.patch b/patches/Purpur/patches/server/0177-Tick-fluids-config.patch similarity index 100% rename from patches/Purpur/patches/server/0178-Tick-fluids-config.patch rename to patches/Purpur/patches/server/0177-Tick-fluids-config.patch diff --git a/patches/Purpur/patches/server/0179-Config-to-disable-Llama-caravans.patch b/patches/Purpur/patches/server/0178-Config-to-disable-Llama-caravans.patch similarity index 100% rename from patches/Purpur/patches/server/0179-Config-to-disable-Llama-caravans.patch rename to patches/Purpur/patches/server/0178-Config-to-disable-Llama-caravans.patch diff --git a/patches/Purpur/patches/server/0180-Config-to-make-Creepers-explode-on-death.patch b/patches/Purpur/patches/server/0179-Config-to-make-Creepers-explode-on-death.patch similarity index 100% rename from patches/Purpur/patches/server/0180-Config-to-make-Creepers-explode-on-death.patch rename to patches/Purpur/patches/server/0179-Config-to-make-Creepers-explode-on-death.patch diff --git a/patches/Purpur/patches/server/0181-Configurable-ravager-griefable-blocks-list.patch b/patches/Purpur/patches/server/0180-Configurable-ravager-griefable-blocks-list.patch similarity index 100% rename from patches/Purpur/patches/server/0181-Configurable-ravager-griefable-blocks-list.patch rename to patches/Purpur/patches/server/0180-Configurable-ravager-griefable-blocks-list.patch diff --git a/patches/Purpur/patches/server/0182-Sneak-to-bulk-process-composter.patch b/patches/Purpur/patches/server/0181-Sneak-to-bulk-process-composter.patch similarity index 100% rename from patches/Purpur/patches/server/0182-Sneak-to-bulk-process-composter.patch rename to patches/Purpur/patches/server/0181-Sneak-to-bulk-process-composter.patch diff --git a/patches/Purpur/patches/server/0183-Config-for-skipping-night.patch b/patches/Purpur/patches/server/0182-Config-for-skipping-night.patch similarity index 96% rename from patches/Purpur/patches/server/0183-Config-for-skipping-night.patch rename to patches/Purpur/patches/server/0182-Config-for-skipping-night.patch index 12c0162f..fd563847 100644 --- a/patches/Purpur/patches/server/0183-Config-for-skipping-night.patch +++ b/patches/Purpur/patches/server/0182-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/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 9a2cc5dfcfaefc8a257a85c0bc09456074ff76c2..1b15216d6a03c1031d2bbea2e0243a0de9a9199f 100644 +index 866a6f3aca0f30850da1ef47230eb739b0f92cdc..13c90105d62a599120e9872383a0c2b9aa4110cb 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -1028,7 +1028,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Purpur/patches/server/0184-Add-config-for-villager-trading.patch b/patches/Purpur/patches/server/0183-Add-config-for-villager-trading.patch similarity index 100% rename from patches/Purpur/patches/server/0184-Add-config-for-villager-trading.patch rename to patches/Purpur/patches/server/0183-Add-config-for-villager-trading.patch diff --git a/patches/Purpur/patches/server/0185-Allow-infinity-on-crossbows.patch b/patches/Purpur/patches/server/0184-Allow-infinity-on-crossbows.patch similarity index 100% rename from patches/Purpur/patches/server/0185-Allow-infinity-on-crossbows.patch rename to patches/Purpur/patches/server/0184-Allow-infinity-on-crossbows.patch diff --git a/patches/Purpur/patches/server/0186-Drowning-Settings.patch b/patches/Purpur/patches/server/0185-Drowning-Settings.patch similarity index 92% rename from patches/Purpur/patches/server/0186-Drowning-Settings.patch rename to patches/Purpur/patches/server/0185-Drowning-Settings.patch index 9bc0a597..7675eeb9 100644 --- a/patches/Purpur/patches/server/0186-Drowning-Settings.patch +++ b/patches/Purpur/patches/server/0185-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 d321616b7f726f4ff307b46ced9efce6cc20b82f..c20787a20cf6f273092d2b7ef0d7d90abcfdf609 100644 +index f3151969e5841861d31ac50abdfef3c65e5198a3..706a1e2fadb0880277093be5de63f4dc0792fb72 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2575,7 +2575,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2606,7 +2606,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne } public int getDefaultPortalCooldown() { @@ -18,7 +18,7 @@ index d321616b7f726f4ff307b46ced9efce6cc20b82f..c20787a20cf6f273092d2b7ef0d7d90a public Iterable bn() { diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index cbfaa40c327fefe416c4c751846bcf278a36144a..be709c961cd85c1db32fb49c71c63814cbe6bd23 100644 +index 93f8aa6d40b1eba6535f170bf0a79417d7d21069..8db61c8b392c8e95f6896b6e48e4d74ddd6b8708 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -394,7 +394,7 @@ public abstract class EntityLiving extends Entity { diff --git a/patches/Purpur/patches/server/0187-Break-individual-slabs-when-sneaking.patch b/patches/Purpur/patches/server/0186-Break-individual-slabs-when-sneaking.patch similarity index 97% rename from patches/Purpur/patches/server/0187-Break-individual-slabs-when-sneaking.patch rename to patches/Purpur/patches/server/0186-Break-individual-slabs-when-sneaking.patch index 08f94941..326e31f5 100644 --- a/patches/Purpur/patches/server/0187-Break-individual-slabs-when-sneaking.patch +++ b/patches/Purpur/patches/server/0186-Break-individual-slabs-when-sneaking.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Break individual slabs when sneaking diff --git a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java -index e47a743fd3adc62aa47beec722f49eeaded246bc..1f38bc36e957ca386774b615bc8b7a04470ce46c 100644 +index 238e143277eb75db6d96e1c52db810eb8a9423de..ddff3a31a564cddcebad4531ca1db66fd0949796 100644 --- a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java +++ b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java @@ -409,6 +409,8 @@ public class PlayerInteractManager { diff --git a/patches/Purpur/patches/server/0188-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/Purpur/patches/server/0187-Config-to-disable-hostile-mob-spawn-on-ice.patch similarity index 100% rename from patches/Purpur/patches/server/0188-Config-to-disable-hostile-mob-spawn-on-ice.patch rename to patches/Purpur/patches/server/0187-Config-to-disable-hostile-mob-spawn-on-ice.patch diff --git a/patches/Purpur/patches/server/0189-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/Purpur/patches/server/0188-Config-to-show-Armor-Stand-arms-on-spawn.patch similarity index 100% rename from patches/Purpur/patches/server/0189-Config-to-show-Armor-Stand-arms-on-spawn.patch rename to patches/Purpur/patches/server/0188-Config-to-show-Armor-Stand-arms-on-spawn.patch diff --git a/patches/Purpur/patches/server/0190-Option-to-make-doors-require-redstone.patch b/patches/Purpur/patches/server/0189-Option-to-make-doors-require-redstone.patch similarity index 100% rename from patches/Purpur/patches/server/0190-Option-to-make-doors-require-redstone.patch rename to patches/Purpur/patches/server/0189-Option-to-make-doors-require-redstone.patch diff --git a/patches/Purpur/patches/server/0191-Config-to-allow-for-unsafe-enchants.patch b/patches/Purpur/patches/server/0190-Config-to-allow-for-unsafe-enchants.patch similarity index 100% rename from patches/Purpur/patches/server/0191-Config-to-allow-for-unsafe-enchants.patch rename to patches/Purpur/patches/server/0190-Config-to-allow-for-unsafe-enchants.patch diff --git a/patches/Purpur/patches/server/0192-Configurable-sponge-absorption.patch b/patches/Purpur/patches/server/0191-Configurable-sponge-absorption.patch similarity index 100% rename from patches/Purpur/patches/server/0192-Configurable-sponge-absorption.patch rename to patches/Purpur/patches/server/0191-Configurable-sponge-absorption.patch diff --git a/patches/Purpur/patches/server/0193-Projectile-offset-config.patch b/patches/Purpur/patches/server/0192-Projectile-offset-config.patch similarity index 100% rename from patches/Purpur/patches/server/0193-Projectile-offset-config.patch rename to patches/Purpur/patches/server/0192-Projectile-offset-config.patch diff --git a/patches/Purpur/patches/server/0194-Config-for-powered-rail-activation-distance.patch b/patches/Purpur/patches/server/0193-Config-for-powered-rail-activation-distance.patch similarity index 100% rename from patches/Purpur/patches/server/0194-Config-for-powered-rail-activation-distance.patch rename to patches/Purpur/patches/server/0193-Config-for-powered-rail-activation-distance.patch diff --git a/patches/Purpur/patches/server/0195-Piglin-portal-spawn-modifier.patch b/patches/Purpur/patches/server/0194-Piglin-portal-spawn-modifier.patch similarity index 100% rename from patches/Purpur/patches/server/0195-Piglin-portal-spawn-modifier.patch rename to patches/Purpur/patches/server/0194-Piglin-portal-spawn-modifier.patch diff --git a/patches/Tuinity/patches/api/0001-Tuinity-POM-Changes.patch b/patches/Tuinity/patches/api/0001-Tuinity-POM-Changes.patch index 54fc5454..f67edb56 100644 --- a/patches/Tuinity/patches/api/0001-Tuinity-POM-Changes.patch +++ b/patches/Tuinity/patches/api/0001-Tuinity-POM-Changes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Tuinity POM Changes diff --git a/pom.xml b/pom.xml -index e66661eb84308dc13faa0d39b7487f40c1180443..6c200882954adc4831307f3d6dfa3202571fb30b 100644 +index c2e9ca1cc7f14d3a696385edc3cb341f902fa2fd..4d826aa8ea1139e66514767da6ba17811f7ecc5c 100644 --- a/pom.xml +++ b/pom.xml @@ -3,18 +3,18 @@ diff --git a/patches/Tuinity/patches/api/0003-Per-player-viewdistances.patch b/patches/Tuinity/patches/api/0003-Per-player-viewdistances.patch index 12b6352f..4b657d45 100644 --- a/patches/Tuinity/patches/api/0003-Per-player-viewdistances.patch +++ b/patches/Tuinity/patches/api/0003-Per-player-viewdistances.patch @@ -8,10 +8,10 @@ Add per player no-tick, tick, and send view distances. Also add send view distance to World. diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 98512bddbb0c8bd6a3f487c60b1ec77b274b991e..3da0b1405de508b1b2e1b941c87c0f0ac0ff1e1a 100644 +index a1496fe00a2d5ba6c1af054d4327f868b2cd7344..6ca9aa2c438810b5537dc196b3fd89b0750b3d67 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -3517,6 +3517,26 @@ public interface World extends PluginMessageRecipient, Metadatable, net.kyori.ad +@@ -3631,6 +3631,26 @@ public interface World extends PluginMessageRecipient, Metadatable, net.kyori.ad * @param viewDistance view distance in [2, 32] */ void setNoTickViewDistance(int viewDistance); diff --git a/patches/Tuinity/patches/server/0002-Brand-changes.patch b/patches/Tuinity/patches/server/0002-Brand-changes.patch index 74c4f6fc..4251e6eb 100644 --- a/patches/Tuinity/patches/server/0002-Brand-changes.patch +++ b/patches/Tuinity/patches/server/0002-Brand-changes.patch @@ -40,7 +40,7 @@ index a0f53c9eff04a40780b3ba568dbfc5bbe9bd8504..3bc5cd1e53dd7c94b948e7f57f0dc8e0 throwable = throwable1; throw throwable1; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 8ee622108cebff2bba8a44fb255a3b6c03ed0220..bfd0d8e3e7b6409b8ef7620ef147120480878c51 100644 +index 61712ae515b329a6b85dbe2e5960e4e864dc7731..5acae1e8e0324723e567674f6df3d0ac1d0ca68c 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1579,7 +1579,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant void mergeSortedSets(final java.util.function.Consumer consumer, final java.util.Comparator comparator, final java.util.SortedSet...sets) { final ObjectRBTreeSet all = new ObjectRBTreeSet<>(comparator); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index bfd0d8e3e7b6409b8ef7620ef147120480878c51..dafd5c368036afa4516da7eac04ddb7c649e8b97 100644 +index 5acae1e8e0324723e567674f6df3d0ac1d0ca68c..cc06164291f454e074c3955f63df758990b6075e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -267,6 +267,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant(s, comparator, 0L); } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 05098332d83b1abfaa0a6d3bd4a9e801ea90d2ad..8484542c108b69a310b19806db5e32a04e3ee991 100644 +index 80de9f687d9acd7425e7c8a453c2759450869497..88786a1b498f663a0bb5e9025f54f3b6122e9b58 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -505,6 +505,7 @@ public class CraftWorld implements World { diff --git a/patches/Tuinity/patches/server/0011-Lag-compensate-block-breaking.patch b/patches/Tuinity/patches/server/0011-Lag-compensate-block-breaking.patch index c936e771..782b9aea 100644 --- a/patches/Tuinity/patches/server/0011-Lag-compensate-block-breaking.patch +++ b/patches/Tuinity/patches/server/0011-Lag-compensate-block-breaking.patch @@ -23,7 +23,7 @@ index 182f419fde8eb3646a79cc0ba689ee486cb53338..5aa558bd05c4ab735730263f220478c3 public final String worldName; diff --git a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java -index 1511cf54fea53577a2808b5d84417eee834db984..e47a743fd3adc62aa47beec722f49eeaded246bc 100644 +index 4203081692d2e4c43abc47aeb85f42b09acb7eee..238e143277eb75db6d96e1c52db810eb8a9423de 100644 --- a/src/main/java/net/minecraft/server/level/PlayerInteractManager.java +++ b/src/main/java/net/minecraft/server/level/PlayerInteractManager.java @@ -55,14 +55,29 @@ public class PlayerInteractManager { diff --git a/patches/Tuinity/patches/server/0013-Per-World-Spawn-Limits.patch b/patches/Tuinity/patches/server/0013-Per-World-Spawn-Limits.patch index 659bd220..4d61f376 100644 --- a/patches/Tuinity/patches/server/0013-Per-World-Spawn-Limits.patch +++ b/patches/Tuinity/patches/server/0013-Per-World-Spawn-Limits.patch @@ -35,7 +35,7 @@ index 5aa558bd05c4ab735730263f220478c36a4ba0fd..6473b951788a3ecbeee4811ea0288ff4 } \ No newline at end of file diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 8484542c108b69a310b19806db5e32a04e3ee991..7e377eb7ad2710b2541eaab0885c07c56602a1f6 100644 +index 88786a1b498f663a0bb5e9025f54f3b6122e9b58..46840620899039e15a02397b39434f00da8a4858 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -342,6 +342,14 @@ public class CraftWorld implements World { diff --git a/patches/Tuinity/patches/server/0014-Detail-more-information-in-watchdog-dumps.patch b/patches/Tuinity/patches/server/0014-Detail-more-information-in-watchdog-dumps.patch index ed86f0aa..e0b98629 100644 --- a/patches/Tuinity/patches/server/0014-Detail-more-information-in-watchdog-dumps.patch +++ b/patches/Tuinity/patches/server/0014-Detail-more-information-in-watchdog-dumps.patch @@ -74,7 +74,7 @@ index 67d8fe8ad036a9252c774bb6a914c8ec79981876..71a000edfab27c9965d1929af7858282 }); throw CancelledPacketHandleException.INSTANCE; diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index c485837c751fb8bf7c30dbca955321f586940a8b..25073eb392bb00daf7e0b68be4767cea416c1816 100644 +index 3e30663eecc8af3df835cd1864b2d6c5f5262fb4..979f2ddf4fb1b0b0a740a02a4084292a37b76c68 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -1015,7 +1015,26 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Tuinity/patches/server/0015-Execute-chunk-tasks-mid-tick.patch b/patches/Tuinity/patches/server/0015-Execute-chunk-tasks-mid-tick.patch index fd8682ec..a836273d 100644 --- a/patches/Tuinity/patches/server/0015-Execute-chunk-tasks-mid-tick.patch +++ b/patches/Tuinity/patches/server/0015-Execute-chunk-tasks-mid-tick.patch @@ -18,7 +18,7 @@ index 4666d6582535d6e49c5bd40d4fcdcdfe07590aa9..b870cca05f0ba354e6976a7051123563 // re-schedule eventually toTick.tickState = STATE_SCHEDULED; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 419d17d0eb9426e4f3f9f97a504e567401d175f3..dae8824a6034cdaaecbedeba5e05c62f4565583f 100644 +index 61830a9c953e35b5c429be18da4331806294ffa5..588325277546c9582d4990b18fe7acbfa451682f 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1115,7 +1115,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant(), diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index dae8824a6034cdaaecbedeba5e05c62f4565583f..29677908376e111abead33b42920e07aeb1d4b02 100644 +index 588325277546c9582d4990b18fe7acbfa451682f..078b8444d6f7c79d504805bce011b26a951b5fa3 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1451,6 +1451,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant> 4, location.getBlockZ() >> 4), 1, entityplayer.getId()); // Paper entityplayer1.forceCheckHighPriority(); // Player diff --git a/patches/Tuinity/patches/server/0029-Improve-paper-prevent-moving-into-unloaded-chunk-che.patch b/patches/Tuinity/patches/server/0029-Improve-paper-prevent-moving-into-unloaded-chunk-che.patch index d85c5750..48760a8f 100644 --- a/patches/Tuinity/patches/server/0029-Improve-paper-prevent-moving-into-unloaded-chunk-che.patch +++ b/patches/Tuinity/patches/server/0029-Improve-paper-prevent-moving-into-unloaded-chunk-che.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Improve paper prevent moving into unloaded chunk check Check the AABB of the move diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index 6ad075907d56a8f41ca3a7b82ff90a6d3ad9f1d4..de6e6152795f4f01c8b79def423f1cb59906a7f7 100644 +index b543776da3b799643893984a8c6f29477ed78d4a..8abcf2e092ecae54ef614f95fdfa8912355c9960 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -570,7 +570,9 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/patches/Tuinity/patches/server/0031-Revert-getChunkAt-Async-retaining-chunks-for-long-pe.patch b/patches/Tuinity/patches/server/0031-Revert-getChunkAt-Async-retaining-chunks-for-long-pe.patch index bebb1190..1f69faac 100644 --- a/patches/Tuinity/patches/server/0031-Revert-getChunkAt-Async-retaining-chunks-for-long-pe.patch +++ b/patches/Tuinity/patches/server/0031-Revert-getChunkAt-Async-retaining-chunks-for-long-pe.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Revert getChunkAt(Async) retaining chunks for long periods of diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 7e377eb7ad2710b2541eaab0885c07c56602a1f6..996042cfe0bbb49675bc5fcb84dc2c5fa79d95a3 100644 +index 46840620899039e15a02397b39434f00da8a4858..beed4bfbed9ccec4a48554e6de9ec94251bba01a 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -423,14 +423,7 @@ public class CraftWorld implements World { @@ -25,7 +25,7 @@ index 7e377eb7ad2710b2541eaab0885c07c56602a1f6..996042cfe0bbb49675bc5fcb84dc2c5f } // Paper start -@@ -2589,7 +2582,7 @@ public class CraftWorld implements World { +@@ -2659,7 +2652,7 @@ public class CraftWorld implements World { } return this.world.getChunkProvider().getChunkAtAsynchronously(x, z, gen, urgent).thenComposeAsync((either) -> { net.minecraft.world.level.chunk.Chunk chunk = (net.minecraft.world.level.chunk.Chunk) either.left().orElse(null); diff --git a/patches/Tuinity/patches/server/0033-Allow-Entities-to-be-removed-from-a-world-while-tick.patch b/patches/Tuinity/patches/server/0033-Allow-Entities-to-be-removed-from-a-world-while-tick.patch index b9bdfc92..5b4b972e 100644 --- a/patches/Tuinity/patches/server/0033-Allow-Entities-to-be-removed-from-a-world-while-tick.patch +++ b/patches/Tuinity/patches/server/0033-Allow-Entities-to-be-removed-from-a-world-while-tick.patch @@ -9,7 +9,7 @@ issues where teleporting players across worlds while ticking. Also allows us to run mid tick while ticking entities. diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 86d1ce955c88530c043128a043fe75534077c665..fe32a457754d1dfcc37f7bf7ee6dd200ba7e323c 100644 +index 217dfb529b6c09ceda0d84ea32637ffda8333022..5b3d4c03cf0b504ad9334e4810b8fa5fd35b3db7 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -174,7 +174,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Tuinity/patches/server/0035-Optimise-collision-checking-in-player-move-packet-ha.patch b/patches/Tuinity/patches/server/0035-Optimise-collision-checking-in-player-move-packet-ha.patch index b72a29af..7c90d3b7 100644 --- a/patches/Tuinity/patches/server/0035-Optimise-collision-checking-in-player-move-packet-ha.patch +++ b/patches/Tuinity/patches/server/0035-Optimise-collision-checking-in-player-move-packet-ha.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Optimise collision checking in player move packet handling Move collision logic to just the hasNewCollision call instead of getCubes + hasNewCollision diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index de6e6152795f4f01c8b79def423f1cb59906a7f7..878c5342ca524768fbe2874b54bc12574852cefa 100644 +index 8abcf2e092ecae54ef614f95fdfa8912355c9960..eba187b3b2649662dd65ad2cec41273f82869e44 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -585,12 +585,14 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/patches/Tuinity/patches/server/0047-Optimise-nearby-player-lookups.patch b/patches/Tuinity/patches/server/0047-Optimise-nearby-player-lookups.patch index 83865e2f..dd2c9c51 100644 --- a/patches/Tuinity/patches/server/0047-Optimise-nearby-player-lookups.patch +++ b/patches/Tuinity/patches/server/0047-Optimise-nearby-player-lookups.patch @@ -97,7 +97,7 @@ index 3b727fcb05074dea7cc1689e8589d4f93d5ccceb..7897fe870234ddef12926d855a3f060f // Paper start - Chunk Prioritization public void queueHolderUpdate(PlayerChunk playerchunk) { diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index fe32a457754d1dfcc37f7bf7ee6dd200ba7e323c..31276fe09f0dc0bf59b97d45b2404e39478663bb 100644 +index 5b3d4c03cf0b504ad9334e4810b8fa5fd35b3db7..b8e27958dffa84df24f33bfcbaf452b178f24445 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -414,6 +414,107 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Tuinity/patches/server/0054-Do-not-load-chunks-during-a-crash-report.patch b/patches/Tuinity/patches/server/0054-Do-not-load-chunks-during-a-crash-report.patch index f85994bd..04a5f150 100644 --- a/patches/Tuinity/patches/server/0054-Do-not-load-chunks-during-a-crash-report.patch +++ b/patches/Tuinity/patches/server/0054-Do-not-load-chunks-during-a-crash-report.patch @@ -22,7 +22,7 @@ index e50731723d266ba65b2163df2e935afb8b013a93..a6736d15282715d920bab85eb92074cd } value.append("},"); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 996042cfe0bbb49675bc5fcb84dc2c5fa79d95a3..0128a24f1de7468ff60ba2de0ed825ff62363f6b 100644 +index beed4bfbed9ccec4a48554e6de9ec94251bba01a..edb0c77d0345f1fbf1b7e7c549639f3b726ff218 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -720,6 +720,30 @@ public class CraftWorld implements World { diff --git a/patches/Tuinity/patches/server/0055-Improve-abnormal-server-shutdown-process.patch b/patches/Tuinity/patches/server/0055-Improve-abnormal-server-shutdown-process.patch index bd058ef0..13a321ed 100644 --- a/patches/Tuinity/patches/server/0055-Improve-abnormal-server-shutdown-process.patch +++ b/patches/Tuinity/patches/server/0055-Improve-abnormal-server-shutdown-process.patch @@ -11,7 +11,7 @@ gui. It looks like during sigint shutdown there can be some deadlock between the server thread and awt shutdown thread here. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 29677908376e111abead33b42920e07aeb1d4b02..7b0b416c73c8914f3c8c570f2020490ef2babf64 100644 +index 078b8444d6f7c79d504805bce011b26a951b5fa3..2767a9369ddc922f1d9c7cb6c7acc8270545535a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -878,10 +878,11 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant TicketType a(String s, Comparator comparator) { diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 31276fe09f0dc0bf59b97d45b2404e39478663bb..e67924369f778b16a2ee8d29c571756c1be1ebf9 100644 +index b8e27958dffa84df24f33bfcbaf452b178f24445..d45edcb5c9be095f2c6b70f64758ec288a797aa9 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -515,6 +515,13 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Tuinity/patches/server/0061-Optimise-WorldServer-notify.patch b/patches/Tuinity/patches/server/0061-Optimise-WorldServer-notify.patch index a883dd24..5bc021c8 100644 --- a/patches/Tuinity/patches/server/0061-Optimise-WorldServer-notify.patch +++ b/patches/Tuinity/patches/server/0061-Optimise-WorldServer-notify.patch @@ -111,7 +111,7 @@ index e30995df572df6135e159d34cd7646fd08db4a5a..b48d419f82f0d9df1f8848d95066bad7 } // Tuiniy end diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index e67924369f778b16a2ee8d29c571756c1be1ebf9..a278a5ba17a510f784c798ad7f7f47bf7ccc301e 100644 +index d45edcb5c9be095f2c6b70f64758ec288a797aa9..8fe878150e5657a8f22ea4d812faf7fd472f8d10 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -1085,6 +1085,15 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Tuinity/patches/server/0065-Fix-incorrect-isRealPlayer-init.patch b/patches/Tuinity/patches/server/0065-Fix-incorrect-isRealPlayer-init.patch index 049776d4..f4170675 100644 --- a/patches/Tuinity/patches/server/0065-Fix-incorrect-isRealPlayer-init.patch +++ b/patches/Tuinity/patches/server/0065-Fix-incorrect-isRealPlayer-init.patch @@ -9,7 +9,7 @@ paper placed their logic. So it wont correctly set in this case. Fix by moving it to a different place. diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 306d5ab69f8c4ca1c69f081e17cf9a4a2bee0446..e9ff47b239372bd628097e6e7f43fa9bd5f4d73d 100644 +index 949eaa0e117104659d96bc2a5bb5a4f8a3bee114..e373232cfb4aff039e9163cab82df33ec9c0d50d 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -179,6 +179,7 @@ public abstract class PlayerList { diff --git a/patches/Tuinity/patches/server/0069-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch b/patches/Tuinity/patches/server/0069-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch index 0e91edf2..126313d0 100644 --- a/patches/Tuinity/patches/server/0069-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch +++ b/patches/Tuinity/patches/server/0069-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch @@ -9,7 +9,7 @@ chunk through it. This should also be OK from a leak prevention/ state desync POV because the TE is getting unloaded anyways. diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java -index 980063ada85d7e9660a625d67b2f6a82f80bf535..bffc0824151a6597d91cd854b343b2586f6b9322 100644 +index f7eb6e920c9c1f26845bec58d5b9e3641303b677..b7eb11ee5a5922612fd051e7397327111a8e3125 100644 --- a/src/main/java/net/minecraft/server/level/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java @@ -1718,6 +1718,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -31,7 +31,7 @@ index 980063ada85d7e9660a625d67b2f6a82f80bf535..bffc0824151a6597d91cd854b343b258 public void broadcastCarriedItem() { if (!this.e) { diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index a278a5ba17a510f784c798ad7f7f47bf7ccc301e..2d207dbad7752526c9a0b212979043c009e66386 100644 +index 8fe878150e5657a8f22ea4d812faf7fd472f8d10..a65a79abf8b6a5ddb128ebec066dbb46050053d8 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -1908,10 +1908,14 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -51,10 +51,10 @@ index a278a5ba17a510f784c798ad7f7f47bf7ccc301e..2d207dbad7752526c9a0b212979043c0 // Spigot End this.tileEntityListUnload.addAll(chunk.getTileEntities().values()); diff --git a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java -index ec0956a98c133bcd3d4f92f696c667eab6ff98f1..44038dd278b988508047023107683e5370af54ad 100644 +index c39c50e53549e9cb9d3520bc7e8b7e89cfa20163..5bce47fa8f191bc1d33c04c9865cb0efd492a9a2 100644 --- a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java +++ b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java -@@ -453,6 +453,12 @@ public abstract class EntityHuman extends EntityLiving { +@@ -458,6 +458,12 @@ public abstract class EntityHuman extends EntityLiving { this.activeContainer = this.defaultContainer; } // Paper end diff --git a/patches/Tuinity/patches/server/0072-Optimise-snow-ice-in-chunk-ticking.patch b/patches/Tuinity/patches/server/0072-Optimise-snow-ice-in-chunk-ticking.patch index 42ba8e09..f927942a 100644 --- a/patches/Tuinity/patches/server/0072-Optimise-snow-ice-in-chunk-ticking.patch +++ b/patches/Tuinity/patches/server/0072-Optimise-snow-ice-in-chunk-ticking.patch @@ -11,7 +11,7 @@ the biome methods, removing the need to invoke a chunk lookup. diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 2d207dbad7752526c9a0b212979043c009e66386..84b4b7524064a4f0c175f34778e4e0d8004888ea 100644 +index a65a79abf8b6a5ddb128ebec066dbb46050053d8..aaf6ada41ba00f891027ca46883a23c06c295c2b 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -1198,6 +1198,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Tuinity/patches/server/0075-Replace-player-chunk-loader-system.patch b/patches/Tuinity/patches/server/0075-Replace-player-chunk-loader-system.patch index f8694b9f..e70fc3dd 100644 --- a/patches/Tuinity/patches/server/0075-Replace-player-chunk-loader-system.patch +++ b/patches/Tuinity/patches/server/0075-Replace-player-chunk-loader-system.patch @@ -1223,7 +1223,7 @@ index 9e96376a1d710c0ba7a763868b23fc586253e1a8..fe040615ff03478a20cdf8376f89a6b7 try { boolean execChunkTask = com.destroystokyo.paper.io.chunk.ChunkTaskManager.pollChunkWaitQueue() || ChunkProviderServer.this.world.asyncChunkTaskManager.pollNextChunkTask(); // Paper diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java -index bffc0824151a6597d91cd854b343b2586f6b9322..62b95dcba8606330fbb3239e74c5eaf8baa3c51d 100644 +index b7eb11ee5a5922612fd051e7397327111a8e3125..fb61b6ac167b34486282a24e598020fb96081f28 100644 --- a/src/main/java/net/minecraft/server/level/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java @@ -261,7 +261,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -1554,7 +1554,7 @@ index 1e627159cbb35fac47d4d158299ec3da7c1f9bf5..d7eede51f1c4ebbe8e00b16efd6331c8 } } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index e9ff47b239372bd628097e6e7f43fa9bd5f4d73d..0b5cf23932c3c626d8805d4db97d2bbab63634cf 100644 +index e373232cfb4aff039e9163cab82df33ec9c0d50d..c705bf1e651a764d56b87ebc5a86a938d8bd34bb 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -270,7 +270,7 @@ public abstract class PlayerList { @@ -1566,7 +1566,7 @@ index e9ff47b239372bd628097e6e7f43fa9bd5f4d73d..0b5cf23932c3c626d8805d4db97d2bba entityplayer.getBukkitEntity().sendSupportedChannels(); // CraftBukkit playerconnection.sendPacket(new PacketPlayOutCustomPayload(PacketPlayOutCustomPayload.a, (new PacketDataSerializer(Unpooled.buffer())).a(this.getServer().getServerModName()))); playerconnection.sendPacket(new PacketPlayOutServerDifficulty(worlddata.getDifficulty(), worlddata.isDifficultyLocked())); -@@ -950,7 +950,7 @@ public abstract class PlayerList { +@@ -952,7 +952,7 @@ public abstract class PlayerList { // CraftBukkit start WorldData worlddata = worldserver1.getWorldData(); entityplayer1.playerConnection.sendPacket(new PacketPlayOutRespawn(worldserver1.getDimensionManager(), worldserver1.getDimensionKey(), BiomeManager.a(worldserver1.getSeed()), entityplayer1.playerInteractManager.getGameMode(), entityplayer1.playerInteractManager.c(), worldserver1.isDebugWorld(), worldserver1.isFlatWorld(), flag)); @@ -1575,7 +1575,7 @@ index e9ff47b239372bd628097e6e7f43fa9bd5f4d73d..0b5cf23932c3c626d8805d4db97d2bba entityplayer1.spawnIn(worldserver1); entityplayer1.dead = false; entityplayer1.playerConnection.teleport(new Location(worldserver1.getWorld(), entityplayer1.locX(), entityplayer1.locY(), entityplayer1.locZ(), entityplayer1.yaw, entityplayer1.pitch)); -@@ -1219,7 +1219,7 @@ public abstract class PlayerList { +@@ -1221,7 +1221,7 @@ public abstract class PlayerList { // Really shouldn't happen... backingSet = world != null ? world.players.toArray() : players.toArray(); } else { @@ -1750,10 +1750,10 @@ index 3fe1508b091e1fd0325eae50138d02fa6445c9ff..a19a26a88f247d359354902efeece992 return new Vec3D((double) baseblockposition.getX() + 0.5D, (double) baseblockposition.getY() + 0.5D, (double) baseblockposition.getZ() + 0.5D); } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 0128a24f1de7468ff60ba2de0ed825ff62363f6b..09cef73a92679e47c8670e4e4c1ba988878aee24 100644 +index edb0c77d0345f1fbf1b7e7c549639f3b726ff218..2152900a4f92c5a3b08b3fe05a700b7c35631a4f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2631,14 +2631,14 @@ public class CraftWorld implements World { +@@ -2701,14 +2701,14 @@ public class CraftWorld implements World { throw new IllegalArgumentException("View distance " + viewDistance + " is out of range of [2, 32]"); } PlayerChunkMap chunkMap = getHandle().getChunkProvider().playerChunkMap; @@ -1770,7 +1770,7 @@ index 0128a24f1de7468ff60ba2de0ed825ff62363f6b..09cef73a92679e47c8670e4e4c1ba988 } @Override -@@ -2647,11 +2647,22 @@ public class CraftWorld implements World { +@@ -2717,11 +2717,22 @@ public class CraftWorld implements World { throw new IllegalArgumentException("View distance " + viewDistance + " is out of range of [2, 32]"); } PlayerChunkMap chunkMap = getHandle().getChunkProvider().playerChunkMap; diff --git a/patches/Tuinity/patches/server/0077-Be-aware-of-entity-teleports-when-chunk-checking-ent.patch b/patches/Tuinity/patches/server/0077-Be-aware-of-entity-teleports-when-chunk-checking-ent.patch index c4dcd849..ad0b14f7 100644 --- a/patches/Tuinity/patches/server/0077-Be-aware-of-entity-teleports-when-chunk-checking-ent.patch +++ b/patches/Tuinity/patches/server/0077-Be-aware-of-entity-teleports-when-chunk-checking-ent.patch @@ -8,7 +8,7 @@ that occured from the getChunkAt call, we would either add to the wrong chunk or add to both chunks! not good. diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 84b4b7524064a4f0c175f34778e4e0d8004888ea..fcf9af44702f34d75185eee0b3259fe0e57001b1 100644 +index aaf6ada41ba00f891027ca46883a23c06c295c2b..a42d3c6c227a74d691278a65a9c516f6507b6865 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -1572,7 +1572,35 @@ public class WorldServer extends World implements GeneratorAccessSeed { diff --git a/patches/Tuinity/patches/server/0080-Stop-large-move-vectors-in-player-packet-handling-fr.patch b/patches/Tuinity/patches/server/0080-Stop-large-move-vectors-in-player-packet-handling-fr.patch index 76ac05a4..645cddd7 100644 --- a/patches/Tuinity/patches/server/0080-Stop-large-move-vectors-in-player-packet-handling-fr.patch +++ b/patches/Tuinity/patches/server/0080-Stop-large-move-vectors-in-player-packet-handling-fr.patch @@ -7,7 +7,7 @@ Subject: [PATCH] Stop large move vectors in player packet handling from Looks like we need to check three vectors, not two. fun. diff --git a/src/main/java/net/minecraft/server/network/PlayerConnection.java b/src/main/java/net/minecraft/server/network/PlayerConnection.java -index 878c5342ca524768fbe2874b54bc12574852cefa..80b77cdffd64690bb9066b8745ea0ee08d60a7a4 100644 +index eba187b3b2649662dd65ad2cec41273f82869e44..159c38618d7745ea513ad179b1217d76c2c4897a 100644 --- a/src/main/java/net/minecraft/server/network/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/network/PlayerConnection.java @@ -542,6 +542,12 @@ public class PlayerConnection implements PacketListenerPlayIn { diff --git a/patches/Tuinity/patches/server/0083-Do-not-copy-visible-chunks.patch b/patches/Tuinity/patches/server/0082-Do-not-copy-visible-chunks.patch similarity index 99% rename from patches/Tuinity/patches/server/0083-Do-not-copy-visible-chunks.patch rename to patches/Tuinity/patches/server/0082-Do-not-copy-visible-chunks.patch index ce2504e8..0a93a657 100644 --- a/patches/Tuinity/patches/server/0083-Do-not-copy-visible-chunks.patch +++ b/patches/Tuinity/patches/server/0082-Do-not-copy-visible-chunks.patch @@ -166,7 +166,7 @@ index d7eede51f1c4ebbe8e00b16efd6331c87db53bb4..b28995ecfd7f45e6b6197be96c418aa0 protected PlayerChunkMap.a e() { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 09cef73a92679e47c8670e4e4c1ba988878aee24..f7b17db87e351e8218d7865c3f9a0162892ca269 100644 +index 2152900a4f92c5a3b08b3fe05a700b7c35631a4f..29f2c253e420a400736eec54f0e9c80bcc621fa1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -298,7 +298,7 @@ public class CraftWorld implements World { diff --git a/patches/Tuinity/patches/server/0082-Do-not-schedule-poi-task-for-each-block-write-on-chu.patch b/patches/Tuinity/patches/server/0082-Do-not-schedule-poi-task-for-each-block-write-on-chu.patch deleted file mode 100644 index 9e9bfa36..00000000 --- a/patches/Tuinity/patches/server/0082-Do-not-schedule-poi-task-for-each-block-write-on-chu.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Spottedleaf -Date: Tue, 20 Apr 2021 18:04:54 -0700 -Subject: [PATCH] Do not schedule poi task for each block write on chunk gen - -Most of the time optional == optional1, so we shouldn't -schedule a task for each write. - -diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index fcf9af44702f34d75185eee0b3259fe0e57001b1..e3481eb71972c82edd892a99d1136c8248fb0f8c 100644 ---- a/src/main/java/net/minecraft/server/level/WorldServer.java -+++ b/src/main/java/net/minecraft/server/level/WorldServer.java -@@ -2707,14 +2707,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { - Optional optional1 = VillagePlaceType.b(iblockdata1); - - // Paper start -- BlockPosition blockposition1 = blockposition.immutableCopy(); -- this.getMinecraftServer().execute(() -> { -- if (!optional.isPresent() && this.getPoiStorage().test(blockposition1, com.google.common.base.Predicates.alwaysTrue())) { -- this.getPoiStorage().remove(blockposition1); -- } -- }); -+ // Tuinity - oh god not for each block set - if (!Objects.equals(optional, optional1)) { -- //BlockPosition blockposition1 = blockposition.immutableCopy(); -+ BlockPosition blockposition1 = blockposition.immutableCopy(); // Tuinity - oh god not for each block set - // Paper end - - optional.ifPresent((villageplacetype) -> { -@@ -2725,6 +2720,11 @@ public class WorldServer extends World implements GeneratorAccessSeed { - }); - optional1.ifPresent((villageplacetype) -> { - this.getMinecraftServer().execute(() -> { -+ // Tuinity start - remove POIs before inserting, better version of paper's diff -+ if (!optional.isPresent() && this.getPoiStorage().test(blockposition1, com.google.common.base.Predicates.alwaysTrue())) { -+ this.getPoiStorage().remove(blockposition1); -+ } -+ // Tuinity end - remove POIs before inserting, better version of paper's diff - this.y().a(blockposition1, villageplacetype); - PacketDebug.a(this, blockposition1); - }); diff --git a/patches/Tuinity/patches/server/0084-Correctly-handle-recursion-for-chunkholder-updates.patch b/patches/Tuinity/patches/server/0083-Correctly-handle-recursion-for-chunkholder-updates.patch similarity index 100% rename from patches/Tuinity/patches/server/0084-Correctly-handle-recursion-for-chunkholder-updates.patch rename to patches/Tuinity/patches/server/0083-Correctly-handle-recursion-for-chunkholder-updates.patch diff --git a/patches/Tuinity/patches/server/0085-Replace-ticket-level-propagator.patch b/patches/Tuinity/patches/server/0084-Replace-ticket-level-propagator.patch similarity index 100% rename from patches/Tuinity/patches/server/0085-Replace-ticket-level-propagator.patch rename to patches/Tuinity/patches/server/0084-Replace-ticket-level-propagator.patch diff --git a/patches/api/0001-Modify-POM.patch b/patches/api/0001-Modify-POM.patch index 07567b8c..4558565e 100644 --- a/patches/api/0001-Modify-POM.patch +++ b/patches/api/0001-Modify-POM.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Modify POM diff --git a/pom.xml b/pom.xml -index 6c200882954adc4831307f3d6dfa3202571fb30b..1bf7c7d0a192f4b05611075537a4d718799190a1 100644 +index 4d826aa8ea1139e66514767da6ba17811f7ecc5c..0f456204857fc9dea93a7dd47189bb059d1712fc 100644 --- a/pom.xml +++ b/pom.xml @@ -3,18 +3,18 @@ @@ -32,8 +32,8 @@ index 6c200882954adc4831307f3d6dfa3202571fb30b..1bf7c7d0a192f4b05611075537a4d718 An enhanced plugin API for Minecraft servers. -@@ -24,6 +24,19 @@ - UTF-8 +@@ -25,6 +25,19 @@ + 4.7.0 + @@ -52,7 +52,7 @@ index 6c200882954adc4831307f3d6dfa3202571fb30b..1bf7c7d0a192f4b05611075537a4d718 sonatype -@@ -67,7 +80,7 @@ +@@ -68,7 +81,7 @@ it.unimi.dsi fastutil @@ -61,7 +61,7 @@ index 6c200882954adc4831307f3d6dfa3202571fb30b..1bf7c7d0a192f4b05611075537a4d718 provided -@@ -114,7 +127,7 @@ +@@ -115,7 +128,7 @@ org.yaml snakeyaml @@ -70,7 +70,7 @@ index 6c200882954adc4831307f3d6dfa3202571fb30b..1bf7c7d0a192f4b05611075537a4d718 compile -@@ -128,7 +141,7 @@ +@@ -129,7 +142,7 @@ org.slf4j slf4j-api @@ -79,7 +79,7 @@ index 6c200882954adc4831307f3d6dfa3202571fb30b..1bf7c7d0a192f4b05611075537a4d718 compile -@@ -154,12 +167,12 @@ +@@ -155,12 +168,12 @@ org.ow2.asm asm diff --git a/patches/api/0003-Add-GameProfileLookupEvent.patch b/patches/api/0003-Add-GameProfileLookupEvent.patch index 83177c1f..89bd2c7a 100644 --- a/patches/api/0003-Add-GameProfileLookupEvent.patch +++ b/patches/api/0003-Add-GameProfileLookupEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add GameProfileLookupEvent diff --git a/pom.xml b/pom.xml -index 1bf7c7d0a192f4b05611075537a4d718799190a1..ce3676f8f8db8cff686d4cdf47b496d51e0af7df 100644 +index 0f456204857fc9dea93a7dd47189bb059d1712fc..57ab779204e6e98d52d4b21e6aad82c33ccc8958 100644 --- a/pom.xml +++ b/pom.xml -@@ -42,6 +42,10 @@ +@@ -43,6 +43,10 @@ sonatype https://oss.sonatype.org/content/groups/public/ @@ -19,7 +19,7 @@ index 1bf7c7d0a192f4b05611075537a4d718799190a1..ce3676f8f8db8cff686d4cdf47b496d5 -@@ -59,6 +63,13 @@ +@@ -60,6 +64,13 @@ diff --git a/patches/api/0005-Add-NBT-API-as-a-first-class-lib.patch b/patches/api/0005-Add-NBT-API-as-a-first-class-lib.patch index 33f097e6..6b1d39d1 100644 --- a/patches/api/0005-Add-NBT-API-as-a-first-class-lib.patch +++ b/patches/api/0005-Add-NBT-API-as-a-first-class-lib.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add NBT API as a first-class lib diff --git a/pom.xml b/pom.xml -index ce3676f8f8db8cff686d4cdf47b496d51e0af7df..4689aa0788afb7fe5b7c8d1a906373bef2744e91 100644 +index 57ab779204e6e98d52d4b21e6aad82c33ccc8958..cc3149a51f5780b73c11492e13dbe7eb86d83e6c 100644 --- a/pom.xml +++ b/pom.xml -@@ -46,6 +46,11 @@ +@@ -47,6 +47,11 @@ mojang https://libraries.minecraft.net/ @@ -20,7 +20,7 @@ index ce3676f8f8db8cff686d4cdf47b496d51e0af7df..4689aa0788afb7fe5b7c8d1a906373be -@@ -185,6 +190,11 @@ +@@ -186,6 +191,11 @@ asm-commons 9.1 @@ -32,7 +32,7 @@ index ce3676f8f8db8cff686d4cdf47b496d51e0af7df..4689aa0788afb7fe5b7c8d1a906373be -@@ -259,6 +269,12 @@ +@@ -260,6 +270,12 @@ ${project.build.directory}/dependency-reduced-pom.xml true diff --git a/patches/server/0002-Brandings.patch b/patches/server/0002-Brandings.patch index 51b2b459..132bc240 100644 --- a/patches/server/0002-Brandings.patch +++ b/patches/server/0002-Brandings.patch @@ -79,10 +79,10 @@ index 17d0d0ec4e22ed8b344a2208925a2e9cba5dd58c..73d2287cc4b45b440612b863cea0ca50 //Thread.sleep(TimeUnit.SECONDS.toMillis(20)); // Paper End diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 05d0d2e5bb10bb002c8d7d4783a144ec35e4550f..cf5ad2b81791b736fb14736922475c89e873a942 100644 +index b05b6e911026b8b8ad2e12b7a6705364ec90769d..b6fadc977dfccd60c2e260afa1ae692f809594f0 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -377,7 +377,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -397,7 +397,7 @@ public final class CraftMagicNumbers implements UnsafeValues { @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { diff --git a/patches/server/0005-Add-last-tick-time-API.patch b/patches/server/0005-Add-last-tick-time-API.patch index 848897e6..751e83d2 100644 --- a/patches/server/0005-Add-last-tick-time-API.patch +++ b/patches/server/0005-Add-last-tick-time-API.patch @@ -7,7 +7,7 @@ Original patch by: Co-authored-by: tr7zw diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 7fa91a3cb0d48396d106a4a729533f95e91562c0..0ca3e2d7366ee295d369e87b7ce2edd84df68ab5 100644 +index 7bba8508c22233ac524d782d159d97f6609748af..854dd6b63bdffa0d79befb36aa55bad408302283 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1064,6 +1064,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java -index 27599f422be266ad2fdbda49617661801c2c1991..2457b240f3b49dbd5fe0eb603d86418fd65f0205 100644 +index e72be36d860630afb879b40bf028c5e456169634..d2a9455c0e97a51dcf1513322c23e41d8253fbc2 100644 --- a/src/main/java/de/minebench/origami/OrigamiConfig.java +++ b/src/main/java/de/minebench/origami/OrigamiConfig.java -@@ -135,6 +135,39 @@ public final class OrigamiConfig { +@@ -127,6 +127,39 @@ public final class OrigamiConfig { private void pigmenDontTargetUnlessHit() { pigmenDontTargetUnlessHit = getBoolean("pigmen.dont-target-unless-hit", pigmenDontTargetUnlessHit); } @@ -59,10 +59,10 @@ index 27599f422be266ad2fdbda49617661801c2c1991..2457b240f3b49dbd5fe0eb603d86418f } \ No newline at end of file diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index fa94b5da0b2ae83093305ad6be7fac8ec15ec46d..1e326c5506dcd1dc4c5e5252a901c61485105eb3 100644 +index f19a3522139a17b38b458d6da58de4f4d784e7bb..7fbb3aa08a508ec15b3f80be3f6331e5e5a854a4 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java -@@ -3056,7 +3056,7 @@ public abstract class EntityLiving extends Entity { +@@ -3069,7 +3069,7 @@ public abstract class EntityLiving extends Entity { // Paper - end don't run getEntities if we're not going to use its result // Tuinity start - reduce memory allocation from collideNearby List list = com.tuinity.tuinity.util.CachedLists.getTempGetEntitiesList(); diff --git a/patches/server/0013-lithium-enum_values.patch b/patches/server/0013-lithium-enum_values.patch index 7372f2b8..0de8c4b6 100644 --- a/patches/server/0013-lithium-enum_values.patch +++ b/patches/server/0013-lithium-enum_values.patch @@ -65,10 +65,10 @@ index 8078e4f5b79eaada03508265ba6b81db636e822a..b2d26289a6f501b093ec229394f75864 }; diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index 1e326c5506dcd1dc4c5e5252a901c61485105eb3..cb4d336e0812ad44d0a936f875853440c556f8b7 100644 +index 7fbb3aa08a508ec15b3f80be3f6331e5e5a854a4..57e43c88e463289b2a06f53b455bafdc76d0a0b7 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java -@@ -2736,10 +2736,12 @@ public abstract class EntityLiving extends Entity { +@@ -2749,10 +2749,12 @@ public abstract class EntityLiving extends Entity { } diff --git a/patches/server/0018-Heavily-optimize-furnance-fuel-and-recipe-lookups.patch b/patches/server/0018-Heavily-optimize-furnance-fuel-and-recipe-lookups.patch index 4e799108..9e9e041f 100644 --- a/patches/server/0018-Heavily-optimize-furnance-fuel-and-recipe-lookups.patch +++ b/patches/server/0018-Heavily-optimize-furnance-fuel-and-recipe-lookups.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Heavily optimize furnance fuel and recipe lookups Co-authored-by: Mykyta Komarn diff --git a/src/main/java/net/minecraft/world/level/block/entity/TileEntityFurnace.java b/src/main/java/net/minecraft/world/level/block/entity/TileEntityFurnace.java -index cd7bcedf8474dcb565b5b1157e167706c031a7f1..8a1425f565204fedd1007862b2af9db4c9217461 100644 +index ac42fd627009a87709448354f232d8b5ed7fa6b9..8ec9ed518a3b5f70c5a5d74605a1f17d0f47b300 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TileEntityFurnace.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TileEntityFurnace.java @@ -331,7 +331,10 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I diff --git a/patches/server/0019-Optimize-TileEntity-load-unload.patch b/patches/server/0019-Optimize-TileEntity-load-unload.patch index 9343eed5..af3c3b71 100644 --- a/patches/server/0019-Optimize-TileEntity-load-unload.patch +++ b/patches/server/0019-Optimize-TileEntity-load-unload.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Optimize TileEntity load/unload diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java -index 1132743062846f0ac20a2611bc2ec697d6ea97da..ee6bace3bf6995a765bb9dd26a7a8003867b53de 100644 +index e6daeb25aecc1759b505a2ad74a6e32d89597fd8..886c6321cfa13bc514c8cd80111326dfbe4c0b70 100644 --- a/src/main/java/net/minecraft/world/level/World.java +++ b/src/main/java/net/minecraft/world/level/World.java @@ -105,8 +105,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable { diff --git a/patches/server/0021-Redirect-Configs.patch b/patches/server/0021-Redirect-Configs.patch index 2af01e3b..77b686df 100644 --- a/patches/server/0021-Redirect-Configs.patch +++ b/patches/server/0021-Redirect-Configs.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Redirect Configs diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java -index 2457b240f3b49dbd5fe0eb603d86418fd65f0205..fa6637caf388c5ed1d3371c6433c8ede6c84d0f3 100644 +index d2a9455c0e97a51dcf1513322c23e41d8253fbc2..0a78932219f8b45e55fbdd1d3d1c3cb7ece6dd82 100644 --- a/src/main/java/de/minebench/origami/OrigamiConfig.java +++ b/src/main/java/de/minebench/origami/OrigamiConfig.java @@ -20,6 +20,8 @@ public final class OrigamiConfig { @@ -39,10 +39,10 @@ index 2457b240f3b49dbd5fe0eb603d86418fd65f0205..fa6637caf388c5ed1d3371c6433c8ede for (final Method method : clazz.getDeclaredMethods()) { if (method.getReturnType() != void.class || method.getParameterCount() != 0 || diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 8601b91e12be70474b2f1396487b1431e66799cf..25e1513c5b435adef1bdd78f0973e395de3b334d 100644 +index 1bbedddf940bd3be281ab2572256b3d1de9b266d..bb8022ace764bbfcc434c193c7fa97c5e1da4000 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -235,7 +235,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer +@@ -236,7 +236,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer return false; } // Yatopia end diff --git a/patches/server/0023-Fix-lead-fall-dmg-config.patch b/patches/server/0023-Fix-lead-fall-dmg-config.patch index d4446537..4971bfc6 100644 --- a/patches/server/0023-Fix-lead-fall-dmg-config.patch +++ b/patches/server/0023-Fix-lead-fall-dmg-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix lead fall dmg config diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6bfd58a34224b22857a647b21c35068f911a3d26..4492f2579da79bd58def922894f40422fbeaf54c 100644 +index 2e872fe6e74d4deaa2bb46c5e9db472fbca03187..1c7d6fd2ceedd866cfd4ece540cf1511e0fde41f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1396,6 +1396,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -1427,6 +1427,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne this.fallDistance = 0.0F; } else if (d0 < 0.0D) { this.fallDistance = (float) ((double) this.fallDistance - d0); diff --git a/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch b/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch index 9c271bd2..eed406b6 100644 --- a/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch +++ b/patches/server/0024-Optimize-some-stuff-in-WorldServer-ticking.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Optimize some stuff in WorldServer ticking Replaced some streams and some array lists with glue lists diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 1b15216d6a03c1031d2bbea2e0243a0de9a9199f..66b5fdd78aa8d394795550aec1203a4de9e4143d 100644 +index 13c90105d62a599120e9872383a0c2b9aa4110cb..e584df4af6b1b29ceb3af8f267c281bc0903246c 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -1007,12 +1007,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { @@ -48,7 +48,7 @@ index 1b15216d6a03c1031d2bbea2e0243a0de9a9199f..66b5fdd78aa8d394795550aec1203a4d long l = this.worldData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (l - l % 24000L) - this.getDayTime()); if (this.getGameRules().getBoolean(GameRules.DO_DAYLIGHT_CYCLE)) { -@@ -1237,9 +1244,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1236,9 +1243,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { } private void wakeupPlayers() { @@ -60,7 +60,7 @@ index 1b15216d6a03c1031d2bbea2e0243a0de9a9199f..66b5fdd78aa8d394795550aec1203a4d } // Paper start - optimise random block ticking -@@ -2069,8 +2076,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -2066,8 +2073,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { // Spigot start if ( entity instanceof EntityHuman ) { @@ -71,7 +71,7 @@ index 1b15216d6a03c1031d2bbea2e0243a0de9a9199f..66b5fdd78aa8d394795550aec1203a4d for (Object o : worldData.data.values() ) { if ( o instanceof WorldMap ) -@@ -2087,7 +2095,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -2084,7 +2092,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } } } diff --git a/patches/server/0030-Stop-wasting-resources-on-JsonList-get.patch b/patches/server/0030-Stop-wasting-resources-on-JsonList-get.patch index d9de8e6c..496dc950 100644 --- a/patches/server/0030-Stop-wasting-resources-on-JsonList-get.patch +++ b/patches/server/0030-Stop-wasting-resources-on-JsonList-get.patch @@ -55,7 +55,7 @@ index c960852dc60d0598012c5eef0d139fe38bde63fb..96fbb1a3d216302aa937e07bf88fdb19 Throwable throwable = null; diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 26a3eeb58a7862e1efdf02d39a56f49bac7b5c1f..f25d26e8dc711019f2140720251abecfa81e187e 100644 +index 5742737bacbc738691a5caf9a169c12a8a25cc4a..dc7ab77f92e4c40a7828543b7f793d1f6e898b86 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -740,6 +740,7 @@ public abstract class PlayerList { diff --git a/patches/server/0031-Fix-LightEngineThreaded-memory-leak.patch b/patches/server/0031-Fix-LightEngineThreaded-memory-leak.patch index 46c5fc8e..e9f6d635 100644 --- a/patches/server/0031-Fix-LightEngineThreaded-memory-leak.patch +++ b/patches/server/0031-Fix-LightEngineThreaded-memory-leak.patch @@ -18,10 +18,10 @@ index ad584ba21c6e201b778f32cea6d7cc5bf67f9746..229bc64e65696319a83a0f7a7ba6f757 return this.size == 0 && this.pendingTasks.isEmpty(); } diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 66b5fdd78aa8d394795550aec1203a4de9e4143d..8e978b74e3f5573123fa831bc1e64c38c4cbd2e6 100644 +index e584df4af6b1b29ceb3af8f267c281bc0903246c..e7462367084007a149279d9bdb74ed26177d47df 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java -@@ -2055,6 +2055,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -2052,6 +2052,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // Paper end diff --git a/patches/server/0034-Optimize-whitelist-command-for-multiple-additions-re.patch b/patches/server/0034-Optimize-whitelist-command-for-multiple-additions-re.patch index 9d7fa2a9..7b1ca1fd 100644 --- a/patches/server/0034-Optimize-whitelist-command-for-multiple-additions-re.patch +++ b/patches/server/0034-Optimize-whitelist-command-for-multiple-additions-re.patch @@ -10,7 +10,7 @@ added. These changes aim to reduce that load whenever you are using the /whitelist command. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0ca3e2d7366ee295d369e87b7ce2edd84df68ab5..a317cd679a840d8e5c5a6f08ad760c53ebaf3edf 100644 +index 854dd6b63bdffa0d79befb36aa55bad408302283..fb8c99ba46fe883a67598de313767be0cb2ca12b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -2117,6 +2117,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant diff --git a/src/main/java/net/minecraft/world/level/block/BlockComposter.java b/src/main/java/net/minecraft/world/level/block/BlockComposter.java -index 2d6abc0b8b3c9860110f0b5f1df1b3b3bbf30673..21d56458e17cd791b2c9e63799a15ffbc86e6afb 100644 +index 802139cf4e15191be0e4afddda12a01079e9ce35..56fdcac84fe36e8770d2e1f04425abe151012644 100644 --- a/src/main/java/net/minecraft/world/level/block/BlockComposter.java +++ b/src/main/java/net/minecraft/world/level/block/BlockComposter.java -@@ -357,7 +357,7 @@ public class BlockComposter extends Block implements IInventoryHolder { +@@ -358,7 +358,7 @@ public class BlockComposter extends Block implements IInventoryHolder { @Override public int[] getSlotsForFace(EnumDirection enumdirection) { @@ -23,7 +23,7 @@ index 2d6abc0b8b3c9860110f0b5f1df1b3b3bbf30673..21d56458e17cd791b2c9e63799a15ffb } @Override -@@ -407,7 +407,7 @@ public class BlockComposter extends Block implements IInventoryHolder { +@@ -408,7 +408,7 @@ public class BlockComposter extends Block implements IInventoryHolder { @Override public int[] getSlotsForFace(EnumDirection enumdirection) { @@ -32,7 +32,7 @@ index 2d6abc0b8b3c9860110f0b5f1df1b3b3bbf30673..21d56458e17cd791b2c9e63799a15ffb } @Override -@@ -443,7 +443,7 @@ public class BlockComposter extends Block implements IInventoryHolder { +@@ -444,7 +444,7 @@ public class BlockComposter extends Block implements IInventoryHolder { @Override public int[] getSlotsForFace(EnumDirection enumdirection) { diff --git a/patches/server/0047-Smarter-statistics-ticking.patch b/patches/server/0047-Smarter-statistics-ticking.patch index 14b53abe..68a0e77b 100644 --- a/patches/server/0047-Smarter-statistics-ticking.patch +++ b/patches/server/0047-Smarter-statistics-ticking.patch @@ -8,10 +8,10 @@ In vanilla, statistics that count time spent for an action (i.e. time played or With an interval of 20, this patch saves roughly 3ms per tick on a server w/ 80 players online. diff --git a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java -index 8c8716c94d813fc6de0ec2f7e8080c339e821207..6034d51d8133fa8a1c18edcf61c9377b413e7c37 100644 +index 88f8bf070487e7e30d78240884cf1c065e932905..b1d21952cf41d9d8b93d92c4f12faaded41190bd 100644 --- a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java +++ b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java -@@ -275,18 +275,23 @@ public abstract class EntityHuman extends EntityLiving { +@@ -280,18 +280,23 @@ public abstract class EntityHuman extends EntityLiving { this.p(); if (!this.world.isClientSide) { this.foodData.a(this); diff --git a/patches/server/0048-Configurable-criterion-triggers.patch b/patches/server/0048-Configurable-criterion-triggers.patch index eab45b3f..b461b595 100644 --- a/patches/server/0048-Configurable-criterion-triggers.patch +++ b/patches/server/0048-Configurable-criterion-triggers.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Configurable criterion triggers This patch adds toggles for three criterion triggers that are called every tick. These can be very unnecessary, and especially in the case of CriterionTriggerEnterBlock, quite heavy. diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java -index b8c63c25d2ad9692475e8c7cb307f45853b86ca4..a33cbd6504fd0d5c5e50aa63009d70533c01f686 100644 +index 0c796d04a2d6903639856865d2822d345d53d766..c819aa0f8a96e74366081d6bd957ad68348792aa 100644 --- a/src/main/java/net/minecraft/server/level/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java @@ -571,6 +571,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/patches/server/0049-Configurable-BlockPhysicsEvent.patch b/patches/server/0049-Configurable-BlockPhysicsEvent.patch index 810d5850..81110b92 100644 --- a/patches/server/0049-Configurable-BlockPhysicsEvent.patch +++ b/patches/server/0049-Configurable-BlockPhysicsEvent.patch @@ -8,7 +8,7 @@ Paper does alleviate this quite well by only firing if plugins are listening, bu This patch implements a hard toggle for the event. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a317cd679a840d8e5c5a6f08ad760c53ebaf3edf..75481bd6265054879877afb6c4686155c3caaf6d 100644 +index fb8c99ba46fe883a67598de313767be0cb2ca12b..a0298d1a6d08b915ea5a9d85f3e33f33d6e682fd 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1546,7 +1546,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 95922cdce7483f215aa139f280e20a8858955879..2309e55be7d120dc5b97a985ded4ea4178e7d1ac 100644 +index 13f9af375011fe6a7e96605105d147445d58d26f..c1fd0149e1c04f33911bef77afa5d1c7938a6048 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -951,7 +951,9 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant { // CraftBukkit end @@ -226,7 +226,7 @@ index 4492f2579da79bd58def922894f40422fbeaf54c..cd1f94e5c1c923ee9d8dd451406ac2be }); vec3d = this.a(enumdirection_enumaxis, blockutil_rectangle1); -@@ -3417,6 +3430,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -3448,6 +3461,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne } public boolean cl() { @@ -234,7 +234,7 @@ index 4492f2579da79bd58def922894f40422fbeaf54c..cd1f94e5c1c923ee9d8dd451406ac2be boolean flag = this.au; this.au = false; -@@ -3620,7 +3634,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -3651,7 +3665,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne for (int i2 = k; i2 < l; ++i2) { for (int j2 = i1; j2 < j1; ++j2) { blockposition_mutableblockposition.d(l1, i2, j2); @@ -244,7 +244,7 @@ index 4492f2579da79bd58def922894f40422fbeaf54c..cd1f94e5c1c923ee9d8dd451406ac2be if (fluid.a(tag)) { double d2 = (double) ((float) i2 + fluid.getHeight(this.world, blockposition_mutableblockposition)); diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index cb4d336e0812ad44d0a936f875853440c556f8b7..a057be22f488f76b926c81dc5c63e7f9c3fb54a1 100644 +index 57e43c88e463289b2a06f53b455bafdc76d0a0b7..a7989a4b519e8e78e28c32ab765acb73676b339e 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -140,6 +140,7 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -291,8 +291,8 @@ index cb4d336e0812ad44d0a936f875853440c556f8b7..a057be22f488f76b926c81dc5c63e7f9 this.world.setTypeAndData(blockposition, iblockdata, 3); flag = true; } -@@ -1772,12 +1775,12 @@ public abstract class EntityLiving extends Entity { - } +@@ -1785,12 +1788,12 @@ public abstract class EntityLiving extends Entity { + // Airplane end public IBlockData ds() { - return this.world.getType(this.getChunkCoordinates()); @@ -306,7 +306,7 @@ index cb4d336e0812ad44d0a936f875853440c556f8b7..a057be22f488f76b926c81dc5c63e7f9 if (iblockdata1.a(Blocks.LADDER) && iblockdata1.get(BlockLadder.FACING) == iblockdata.get(BlockTrapdoor.FACING)) { return true; -@@ -1824,7 +1827,7 @@ public abstract class EntityLiving extends Entity { +@@ -1837,7 +1840,7 @@ public abstract class EntityLiving extends Entity { int i = MathHelper.floor(this.locX()); int j = MathHelper.floor(this.locY() - 0.20000000298023224D); int k = MathHelper.floor(this.locZ()); @@ -315,7 +315,7 @@ index cb4d336e0812ad44d0a936f875853440c556f8b7..a057be22f488f76b926c81dc5c63e7f9 if (!iblockdata.isAir()) { SoundEffectType soundeffecttype = iblockdata.getStepSound(); -@@ -2315,7 +2318,7 @@ public abstract class EntityLiving extends Entity { +@@ -2328,7 +2331,7 @@ public abstract class EntityLiving extends Entity { private void a(Entity entity) { Vec3D vec3d; @@ -324,7 +324,7 @@ index cb4d336e0812ad44d0a936f875853440c556f8b7..a057be22f488f76b926c81dc5c63e7f9 vec3d = entity.b(this); } else { vec3d = new Vec3D(entity.locX(), entity.locY() + (double) entity.getHeight(), entity.locZ()); -@@ -2369,7 +2372,7 @@ public abstract class EntityLiving extends Entity { +@@ -2382,7 +2385,7 @@ public abstract class EntityLiving extends Entity { this.fallDistance = 0.0F; } @@ -333,7 +333,7 @@ index cb4d336e0812ad44d0a936f875853440c556f8b7..a057be22f488f76b926c81dc5c63e7f9 double d1; float f; -@@ -2485,7 +2488,7 @@ public abstract class EntityLiving extends Entity { +@@ -2498,7 +2501,7 @@ public abstract class EntityLiving extends Entity { } } else { BlockPosition blockposition = this.as(); @@ -342,7 +342,7 @@ index cb4d336e0812ad44d0a936f875853440c556f8b7..a057be22f488f76b926c81dc5c63e7f9 f = this.onGround ? f5 * 0.91F : 0.91F; Vec3D vec3d6 = this.a(vec3d, f5); -@@ -3550,7 +3553,7 @@ public abstract class EntityLiving extends Entity { +@@ -3563,7 +3566,7 @@ public abstract class EntityLiving extends Entity { while (!flag2 && blockposition.getY() > 0) { BlockPosition blockposition1 = blockposition.down(); @@ -351,7 +351,7 @@ index cb4d336e0812ad44d0a936f875853440c556f8b7..a057be22f488f76b926c81dc5c63e7f9 if (iblockdata.getMaterial().isSolid()) { flag2 = true; -@@ -3645,7 +3648,7 @@ public abstract class EntityLiving extends Entity { +@@ -3658,7 +3661,7 @@ public abstract class EntityLiving extends Entity { this.stopRiding(); } @@ -360,7 +360,7 @@ index cb4d336e0812ad44d0a936f875853440c556f8b7..a057be22f488f76b926c81dc5c63e7f9 if (iblockdata.getBlock() instanceof BlockBed) { this.world.setTypeAndData(blockposition, (IBlockData) iblockdata.set(BlockBed.OCCUPIED, true), 3); -@@ -3664,7 +3667,7 @@ public abstract class EntityLiving extends Entity { +@@ -3677,7 +3680,7 @@ public abstract class EntityLiving extends Entity { private boolean x() { return (Boolean) this.getBedPosition().map((blockposition) -> { @@ -369,7 +369,7 @@ index cb4d336e0812ad44d0a936f875853440c556f8b7..a057be22f488f76b926c81dc5c63e7f9 }).orElse(false); } -@@ -3674,7 +3677,7 @@ public abstract class EntityLiving extends Entity { +@@ -3687,7 +3690,7 @@ public abstract class EntityLiving extends Entity { this.world.getClass(); optional.filter(world::isLoaded).ifPresent((blockposition) -> { @@ -379,7 +379,7 @@ index cb4d336e0812ad44d0a936f875853440c556f8b7..a057be22f488f76b926c81dc5c63e7f9 if (iblockdata.getBlock() instanceof BlockBed) { this.world.setTypeAndData(blockposition, (IBlockData) iblockdata.set(BlockBed.OCCUPIED, false), 3); diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java -index aed97af643b8ec9b6fd5a5f06ff4f364daf39742..f5badbe0dee5c40cf83a5d2993d27ed70ddd2c85 100644 +index a15e6a25a796b03fbd080ffb9abe13de2833c5d6..183c9fb583cbd5392cb2c0f708e2b47dae4f12ff 100644 --- a/src/main/java/net/minecraft/world/level/World.java +++ b/src/main/java/net/minecraft/world/level/World.java @@ -96,7 +96,9 @@ import org.bukkit.craftbukkit.block.data.CraftBlockData; diff --git a/patches/server/0066-lithium-entity.patch b/patches/server/0066-lithium-entity.patch index 2de319a4..df8a1b23 100644 --- a/patches/server/0066-lithium-entity.patch +++ b/patches/server/0066-lithium-entity.patch @@ -6,7 +6,7 @@ Subject: [PATCH] lithium entity Co-authored-by: Hugo Planque diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java -index a057be22f488f76b926c81dc5c63e7f9c3fb54a1..45924c33b2928e25dedaae22d06f2a7a181ead25 100644 +index a7989a4b519e8e78e28c32ab765acb73676b339e..7a2cc0da6cb791a758cfb4412b73197ec9c70613 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -279,6 +279,9 @@ public abstract class EntityLiving extends Entity { @@ -30,8 +30,8 @@ index a057be22f488f76b926c81dc5c63e7f9c3fb54a1..45924c33b2928e25dedaae22d06f2a7a this.ar = this.as; if (this.justCreated) { this.getBedPosition().ifPresent(this::a); -@@ -1775,7 +1782,24 @@ public abstract class EntityLiving extends Entity { - } +@@ -1788,7 +1795,24 @@ public abstract class EntityLiving extends Entity { + // Airplane end public IBlockData ds() { - return this.world.getBlockStateIfLoaded(this.getChunkCoordinates()); // Yatopia diff --git a/patches/server/0068-lithium-shape.patch b/patches/server/0068-lithium-shape.patch index 2ece7899..9ac69e7b 100644 --- a/patches/server/0068-lithium-shape.patch +++ b/patches/server/0068-lithium-shape.patch @@ -270,10 +270,10 @@ index b95115aca72ba0cf6451096ddbd8b50a8f3bb5c6..0afb8c643cb3e5938e12183c6132797d int j = i - 1; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index cd1f94e5c1c923ee9d8dd451406ac2bee360e9c3..8735735eb116382b21b6751108629acb9411d332 100644 +index 3c435ce71d1184e9bedff712a75917b9069dfa7d..352585f3c9d0563181f497752ecb1c72f548f275 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2646,6 +2646,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne +@@ -2677,6 +2677,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne return this.isSneaking(); } diff --git a/patches/server/0069-lithium-skip-ticking-block-entities-that-are-doing-n.patch b/patches/server/0069-lithium-skip-ticking-block-entities-that-are-doing-n.patch index fc56bc43..e575fa5f 100644 --- a/patches/server/0069-lithium-skip-ticking-block-entities-that-are-doing-n.patch +++ b/patches/server/0069-lithium-skip-ticking-block-entities-that-are-doing-n.patch @@ -621,7 +621,7 @@ index 0000000000000000000000000000000000000000..4e765ab19ffb300b6c810333b2dc7976 +} \ No newline at end of file diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java -index f5badbe0dee5c40cf83a5d2993d27ed70ddd2c85..a23c5172857a003b546e33d2935492e3260be560 100644 +index 183c9fb583cbd5392cb2c0f708e2b47dae4f12ff..45b52e197961eab3d2f3cd704a79d1aabda58452 100644 --- a/src/main/java/net/minecraft/world/level/World.java +++ b/src/main/java/net/minecraft/world/level/World.java @@ -97,8 +97,11 @@ import org.bukkit.event.block.BlockPhysicsEvent; @@ -722,10 +722,10 @@ index f5badbe0dee5c40cf83a5d2993d27ed70ddd2c85..a23c5172857a003b546e33d2935492e3 //this.tileEntityList.remove(tileentity); // Paper - remove unused list // Paper - prevent double chunk lookups diff --git a/src/main/java/net/minecraft/world/level/block/entity/TileEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TileEntity.java -index 8a049d3de8937a6c8afe178ccd134e2511fb3baf..9b447a9416613f0ccfeb0f81d5b099fcd0417df7 100644 +index 35c4d5414db66b977a354ac50d35a6aa0fcd4cf8..35aef3647c025eaa763e2b9a5a4e266d556725f5 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TileEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TileEntity.java -@@ -27,8 +27,9 @@ import org.bukkit.inventory.InventoryHolder; +@@ -28,8 +28,9 @@ import org.bukkit.inventory.InventoryHolder; import org.spigotmc.CustomTimingsHandler; // Spigot import co.aikar.timings.MinecraftTimings; // Paper import co.aikar.timings.Timing; // Paper @@ -1106,7 +1106,7 @@ index 4b1cb089355b455c6210f2df1af797cc363997cf..0049a675557cbc05e361c12e9fb84a38 this.l = this.k; EntityHuman entityhuman = this.world.a((double) this.position.getX() + 0.5D, (double) this.position.getY() + 0.5D, (double) this.position.getZ() + 0.5D, 3.0D, false); diff --git a/src/main/java/net/minecraft/world/level/block/entity/TileEntityFurnace.java b/src/main/java/net/minecraft/world/level/block/entity/TileEntityFurnace.java -index 8a1425f565204fedd1007862b2af9db4c9217461..6083bec6879a625168bd55944d5c21e8151b8189 100644 +index 8ec9ed518a3b5f70c5a5d74605a1f17d0f47b300..d8ef6d464ed32fe61dd9d1d5ff7c70994998f934 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TileEntityFurnace.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TileEntityFurnace.java @@ -53,9 +53,11 @@ import org.bukkit.event.inventory.FurnaceBurnEvent; diff --git a/patches/server/0070-Multithreaded-Entity-Tracker-fixup.patch b/patches/server/0070-Multithreaded-Entity-Tracker-fixup.patch deleted file mode 100644 index c309415a..00000000 --- a/patches/server/0070-Multithreaded-Entity-Tracker-fixup.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Simon Gardling -Date: Wed, 21 Apr 2021 14:44:35 -0400 -Subject: [PATCH] Multithreaded Entity Tracker fixup - - -diff --git a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java -index 9097884f71d7986c8185a4b2b2a65b8c66fa7354..0b9ed4042612f5242e5b2d057b716170f22c78b1 100644 ---- a/src/main/java/net/minecraft/server/level/PlayerChunkMap.java -+++ b/src/main/java/net/minecraft/server/level/PlayerChunkMap.java -@@ -763,11 +763,6 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { - return this.updatingChunks.getVisibleAsync(i); - // Tuinity end - Don't copy - } -- // Airplane start - since neither map can be updated during tracker tick, it's safe to allow direct retrieval here -- private PlayerChunk trackerGetVisibleChunk(long i) { -- return this.hasPendingVisibleUpdate ? this.pendingVisibleChunks.get(i) : ((ProtectedVisibleChunksMap) this.visibleChunks).safeGet(i); -- } -- // Airplane end - - protected final IntSupplier getPrioritySupplier(long i) { return c(i); } // Paper - OBFHELPER - protected IntSupplier c(long i) { -@@ -2581,7 +2576,7 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially - - if (!flag1) { - ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(this.tracker.chunkX, this.tracker.chunkZ); -- PlayerChunk playerchunk = PlayerChunkMap.this.trackerGetVisibleChunk(chunkcoordintpair.pair()); // Airplane -+ PlayerChunk playerchunk = PlayerChunkMap.this.getVisibleChunk(chunkcoordintpair.pair()); // Airplane - - if (playerchunk != null && playerchunk.getSendingChunk() != null && PlayerChunkMap.this.playerChunkManager.isChunkSent(entityplayer, MathHelper.floor(this.tracker.locX()) >> 4, MathHelper.floor(this.tracker.locZ()) >> 4)) { // Paper - no-tick view distance // Tuinity - don't broadcast in chunks the player hasn't received - flag1 = PlayerChunkMap.b(chunkcoordintpair, entityplayer, false) <= PlayerChunkMap.this.viewDistance; diff --git a/upstream/Airplane b/upstream/Airplane index 3b3cde7b..f5fb0244 160000 --- a/upstream/Airplane +++ b/upstream/Airplane @@ -1 +1 @@ -Subproject commit 3b3cde7b0efc30c80e831985bacf91fdde90cc05 +Subproject commit f5fb0244776e8c3cd7af1dd9ebfdcf05bbc590c8 diff --git a/upstream/Empirecraft b/upstream/Empirecraft index efda8c5b..2a021ede 160000 --- a/upstream/Empirecraft +++ b/upstream/Empirecraft @@ -1 +1 @@ -Subproject commit efda8c5b9a4e2517f6cd3f5a276d10607b08642b +Subproject commit 2a021ede143a56d4a610a7d8c76be9c90e7e9105 diff --git a/upstream/Origami b/upstream/Origami index 654b344e..73ecdf19 160000 --- a/upstream/Origami +++ b/upstream/Origami @@ -1 +1 @@ -Subproject commit 654b344ec74220c55734260e73e8b644ee814376 +Subproject commit 73ecdf191085c48db17fb9b1eddb59b7be12c446 diff --git a/upstream/Purpur b/upstream/Purpur index 5674cdc7..3dce9755 160000 --- a/upstream/Purpur +++ b/upstream/Purpur @@ -1 +1 @@ -Subproject commit 5674cdc743bbb80e92293ee9d30f475f176a2af0 +Subproject commit 3dce9755f3b882b2ecfb0dddf4cec2faa585440b diff --git a/upstreamCommits/Airplane b/upstreamCommits/Airplane index aab0f4b3..8598a534 100644 --- a/upstreamCommits/Airplane +++ b/upstreamCommits/Airplane @@ -1 +1 @@ -3b3cde7b0efc30c80e831985bacf91fdde90cc05 \ No newline at end of file +f5fb0244776e8c3cd7af1dd9ebfdcf05bbc590c8 \ No newline at end of file diff --git a/upstreamCommits/Empirecraft b/upstreamCommits/Empirecraft index 5ff6aaff..9e083a88 100644 --- a/upstreamCommits/Empirecraft +++ b/upstreamCommits/Empirecraft @@ -1 +1 @@ -efda8c5b9a4e2517f6cd3f5a276d10607b08642b \ No newline at end of file +2a021ede143a56d4a610a7d8c76be9c90e7e9105 \ No newline at end of file diff --git a/upstreamCommits/Origami b/upstreamCommits/Origami index b292a8ff..23815e84 100644 --- a/upstreamCommits/Origami +++ b/upstreamCommits/Origami @@ -1 +1 @@ -654b344ec74220c55734260e73e8b644ee814376 \ No newline at end of file +73ecdf191085c48db17fb9b1eddb59b7be12c446 \ No newline at end of file diff --git a/upstreamCommits/Purpur b/upstreamCommits/Purpur index 5e48d312..32b2bf84 100644 --- a/upstreamCommits/Purpur +++ b/upstreamCommits/Purpur @@ -1 +1 @@ -5674cdc743bbb80e92293ee9d30f475f176a2af0 \ No newline at end of file +3dce9755f3b882b2ecfb0dddf4cec2faa585440b \ No newline at end of file diff --git a/upstreamConfig/0001-Tuinity.properties b/upstreamConfig/0001-Tuinity.properties index 77ec5203..f1ef211c 100755 --- a/upstreamConfig/0001-Tuinity.properties +++ b/upstreamConfig/0001-Tuinity.properties @@ -1,4 +1,4 @@ name=Tuinity useBlackList=True -list=server/Make-sure-to-remove-correct-TE-during-TE-tick.patch,server/Prevent-light-queue-overfill-when-no-players-are-onl.patch +list=server/Make-sure-to-remove-correct-TE-during-TE-tick.patch,server/Prevent-light-queue-overfill-when-no-players-are-onl.patch,server/Do-not-schedule-poi-task-for-each-block-write-on-chu.patch branch=origin/master diff --git a/upstreamConfig/0003-Purpur.properties b/upstreamConfig/0003-Purpur.properties index 4fd2a324..73bd46f9 100755 --- a/upstreamConfig/0003-Purpur.properties +++ b/upstreamConfig/0003-Purpur.properties @@ -1,4 +1,4 @@ name=Purpur useBlackList=True -list=api/Tuinity-API-Changes.patch,api/Airplane-API-Changes.patch,server/Tuinity-Server-Changes.patch,server/Add-MC-4-fix-back.patch,server/Airplane-Server-Changes.patch,server/Re-enable-timings-by-default.patch,server/Use-no-tick-view-distance-for-tracker.patch +list=api/Tuinity-API-Changes.patch,api/Airplane-API-Changes.patch,server/Tuinity-Server-Changes.patch,server/Add-MC-4-fix-back.patch,server/Airplane-Server-Changes.patch,server/Re-enable-timings-by-default.patch,server/Use-no-tick-view-distance-for-tracker.patch,server/Multithreaded-entity-tracking.patch branch=origin/ver/1.16.5 diff --git a/upstreamConfig/0006-Origami.properties b/upstreamConfig/0006-Origami.properties index c4d80539..caaa1d6f 100644 --- a/upstreamConfig/0006-Origami.properties +++ b/upstreamConfig/0006-Origami.properties @@ -1,4 +1,4 @@ name=Origami useBlackList=false -list=server/Origami-Server-Config.patch,server/Optimize-inventory-API-item-handling.patch,server/Don-t-load-chunk-with-seed-based-feature-search.patch,server/Remove-some-streams-and-object-allocations.patch,server/Hopper-Optimizations.patch,server/Add-option-to-disable-observer-clocks.patch,server/Add-timings-for-Behavior.patch,server/Don-t-wake-up-entities-when-damage-event-is-cancelle.patch,server/Fix-exp-drop-of-zombie-pigmen-MC-56653.patch +list=server/Origami-Server-Config.patch,server/Optimize-inventory-API-item-handling.patch,server/Remove-some-streams-and-object-allocations.patch,server/Hopper-Optimizations.patch,server/Add-option-to-disable-observer-clocks.patch,server/Add-timings-for-Behavior.patch,server/Don-t-wake-up-entities-when-damage-event-is-cancelle.patch,server/Fix-exp-drop-of-zombie-pigmen-MC-56653.patch branch=origin/1.16