Add/Remove multiple entries with Scoreboard Team (#6640)

This commit is contained in:
Tom Miller 2022-01-09 23:08:55 -06:00 committed by GitHub
parent 2be9beb5dc
commit 87d8ef9f24
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 254 additions and 0 deletions

View file

@ -0,0 +1,128 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Cryptite <cryptite@gmail.com>
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 2b93692204a74ea0def513a54ddf77a40c64d3d2..04c8cc55a2fe19c888aba842775cc66648dddb0c 100644
--- a/src/main/java/org/bukkit/scoreboard/Team.java
+++ b/src/main/java/org/bukkit/scoreboard/Team.java
@@ -316,6 +316,60 @@ public interface Team {
*/
void addEntry(@NotNull String entry) throws IllegalStateException, IllegalArgumentException;
+ // 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.
+ * <p>
+ * 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.
+ * <p>
+ * 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<org.bukkit.entity.Entity> 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.
+ * <p>
+ * 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.
+ * <p>
+ * 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<String> entries) throws IllegalStateException, IllegalArgumentException;
+ // Paper end
+
/**
* Removes the player from this team.
*
@@ -338,6 +392,56 @@ public interface Team {
*/
boolean removeEntry(@NotNull String entry) throws IllegalStateException, IllegalArgumentException;
+ // 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<org.bukkit.entity.Entity> 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<String> entries) throws IllegalStateException, IllegalArgumentException;
+ // Paper end
+
/**
* Unregisters this team from the Scoreboard
*