From 3a2986e746a9405c69f534bff9addf6ff6eb7e84 Mon Sep 17 00:00:00 2001
From: Andrew Steinborn <git@steinborn.me>
Date: Mon, 9 Aug 2021 18:36:45 +0000
Subject: [PATCH] Optimize entity tracker passenger checks (#6361)

When a ServerEntity instance is first constructed, it uses a pre-Java 9 empty collection,
but passengers use Guava ImmutableList. When comparing the two collections via Object#equals
we miss out on an opportunity to reduce the check to little more than a reference equality
check (which is very fast).
---
 ...mize-entity-tracker-passenger-checks.patch | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
 create mode 100644 patches/server/Optimize-entity-tracker-passenger-checks.patch

diff --git a/patches/server/Optimize-entity-tracker-passenger-checks.patch b/patches/server/Optimize-entity-tracker-passenger-checks.patch
new file mode 100644
index 0000000000..be13d9e403
--- /dev/null
+++ b/patches/server/Optimize-entity-tracker-passenger-checks.patch
@@ -0,0 +1,19 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Andrew Steinborn <git@steinborn.me>
+Date: Sun, 8 Aug 2021 00:52:54 -0400
+Subject: [PATCH] Optimize entity tracker passenger checks
+
+
+diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
+index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
++++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
+@@ -0,0 +0,0 @@ public class ServerEntity {
+         this.trackedPlayers = trackedPlayers;
+         // CraftBukkit end
+         this.ap = Vec3.ZERO;
+-        this.lastPassengers = Collections.emptyList();
++        this.lastPassengers = com.google.common.collect.ImmutableList.of(); // Paper - optimize passenger checks
+         this.level = worldserver;
+         this.broadcast = consumer;
+         this.entity = entity;