From cd9d6d69989e599b38941451580efd5c7a6d62ea Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Wed, 15 Jan 2025 12:13:58 +0100 Subject: [PATCH] Allow duplicate relative flags in entity teleport Fixes #11976 --- .../main/java/org/bukkit/craftbukkit/entity/CraftEntity.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index 4562bee2e..6d81a1974 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -5,6 +5,7 @@ import com.google.common.base.Preconditions; import com.google.common.base.Predicates; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; +import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.UUID; @@ -243,7 +244,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { Preconditions.checkArgument(location != null, "location cannot be null"); location.checkFinite(); // Paper start - Teleport passenger API - Set flagSet = Set.of(flags); + Set flagSet = new HashSet<>(List.of(flags)); // Wrap into list while multiple old flags link to the same new one boolean dismount = !flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_VEHICLE); boolean retainPassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); // Don't allow teleporting between worlds while keeping passengers