--- a/net/minecraft/network/protocol/game/ClientboundSetPlayerTeamPacket.java
+++ b/net/minecraft/network/protocol/game/ClientboundSetPlayerTeamPacket.java
@@ -31,6 +_,11 @@
     private final Collection<String> players;
     private final Optional<ClientboundSetPlayerTeamPacket.Parameters> parameters;
 
+    // Paper start - Multiple Entries with Scoreboards
+    public static ClientboundSetPlayerTeamPacket createMultiplePlayerPacket(PlayerTeam team, Collection<String> players, ClientboundSetPlayerTeamPacket.Action operation) {
+        return new ClientboundSetPlayerTeamPacket(team.getName(), operation == ClientboundSetPlayerTeamPacket.Action.ADD ? 3 : 4, Optional.empty(), players);
+    }
+    // Paper end - Multiple Entries with Scoreboards
     private ClientboundSetPlayerTeamPacket(String name, int method, Optional<ClientboundSetPlayerTeamPacket.Parameters> parameters, Collection<String> players) {
         this.name = name;
         this.method = method;
@@ -199,7 +_,7 @@
             ComponentSerialization.TRUSTED_STREAM_CODEC.encode(buffer, this.displayName);
             buffer.writeByte(this.options);
             Team.Visibility.STREAM_CODEC.encode(buffer, this.nametagVisibility);
-            Team.CollisionRule.STREAM_CODEC.encode(buffer, this.collisionRule);
+            Team.CollisionRule.STREAM_CODEC.encode(buffer, !io.papermc.paper.configuration.GlobalConfiguration.get().collisions.enablePlayerCollisions ? PlayerTeam.CollisionRule.NEVER : this.collisionRule); // Paper - Configurable player collision
             buffer.writeEnum(this.color);
             ComponentSerialization.TRUSTED_STREAM_CODEC.encode(buffer, this.playerPrefix);
             ComponentSerialization.TRUSTED_STREAM_CODEC.encode(buffer, this.playerSuffix);
