From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Cryptite Date: Tue, 21 Sep 2021 18:17:34 -0500 Subject: [PATCH] Multiple Entries with Scoreboards diff --git a/src/main/java/org/bukkit/scoreboard/Team.java b/src/main/java/org/bukkit/scoreboard/Team.java index c500de6ed19bdf732f7bedbedb19a4b37ca343f8..c34d9ab72928d5f58339025d717ec840a4d8cf2c 100644 --- a/src/main/java/org/bukkit/scoreboard/Team.java +++ b/src/main/java/org/bukkit/scoreboard/Team.java @@ -309,6 +309,60 @@ public interface Team extends net.kyori.adventure.audience.ForwardingAudience { */ void addEntry(@NotNull String entry); + // Paper start + /** + * This puts a collection of entities onto this team for the scoreboard which results in one + * packet for the updates rather than a packet-per-entity. + *

+ * Entities on other teams will be removed from their respective teams. + * + * @param entities the entities to add + * @throws IllegalArgumentException if entities are null + * @throws IllegalStateException if this team has been unregistered + */ + default void addEntities(@NotNull org.bukkit.entity.Entity @NotNull ...entities) { + this.addEntities(java.util.List.of(entities)); + } + + /** + * This puts a collection of entities onto this team for the scoreboard which results in one + * packet for the updates rather than a packet-per-entity. + *

+ * Entities on other teams will be removed from their respective teams. + * + * @param entities the entities to add + * @throws IllegalArgumentException if entities are null + * @throws IllegalStateException if this team has been unregistered + */ + void addEntities(@NotNull java.util.Collection entities) throws IllegalStateException, IllegalArgumentException; + + /** + * This puts a collection of entries onto this team for the scoreboard which results in one + * packet for the updates rather than a packet-per-entry. + *

+ * Entries on other teams will be removed from their respective teams. + * + * @param entries the entries to add + * @throws IllegalArgumentException if entries are null + * @throws IllegalStateException if this team has been unregistered + */ + default void addEntries(@NotNull String... entries) throws IllegalStateException, IllegalArgumentException { + this.addEntries(java.util.List.of(entries)); + } + + /** + * This puts a collection of entries onto this team for the scoreboard which results in one + * packet for the updates rather than a packet-per-entry. + *

+ * Entries on other teams will be removed from their respective teams. + * + * @param entries the entries to add + * @throws IllegalArgumentException if entries are null + * @throws IllegalStateException if this team has been unregistered + */ + void addEntries(@NotNull java.util.Collection entries) throws IllegalStateException, IllegalArgumentException; + // Paper end + /** * Removes the player from this team. * @@ -329,6 +383,56 @@ public interface Team extends net.kyori.adventure.audience.ForwardingAudience { */ boolean removeEntry(@NotNull String entry); + // Paper start + /** + * Removes a collection of entities from this team which results in one + * packet for the updates rather than a packet-per-entity. + * + * @param entities the entries to remove + * @return if any of the entities were a part of this team + * @throws IllegalArgumentException if entities is null + * @throws IllegalStateException if this team has been unregistered + */ + default boolean removeEntities(@NotNull org.bukkit.entity.Entity @NotNull ... entities) throws IllegalStateException, IllegalArgumentException { + return this.removeEntities(java.util.List.of(entities)); + } + + /** + * Removes a collection of entities from this team which results in one + * packet for the updates rather than a packet-per-entity. + * + * @param entities the entries to remove + * @return if any of the entities were a part of this team + * @throws IllegalArgumentException if entities is null + * @throws IllegalStateException if this team has been unregistered + */ + boolean removeEntities(@NotNull java.util.Collection entities) throws IllegalStateException, IllegalArgumentException; + + /** + * Removes a collection of entries from this team which results in one + * packet for the updates rather than a packet-per-entry. + * + * @param entries the entries to remove + * @return if any of the entries were a part of this team + * @throws IllegalArgumentException if entries is null + * @throws IllegalStateException if this team has been unregistered + */ + default boolean removeEntries(@NotNull String... entries) throws IllegalStateException, IllegalArgumentException { + return this.removeEntries(java.util.List.of(entries)); + } + + /** + * Removes a collection of entries from this team which results in one + * packet for the updates rather than a packet-per-entry. + * + * @param entries the entries to remove + * @return if any of the entries were a part of this team + * @throws IllegalArgumentException if entries is null + * @throws IllegalStateException if this team has been unregistered + */ + boolean removeEntries(@NotNull java.util.Collection entries) throws IllegalStateException, IllegalArgumentException; + // Paper end + /** * Unregisters this team from the Scoreboard *