Paper/patches/api/0355-Multiple-Entries-with-Scoreboards.patch
2022-06-02 22:05:42 -07:00

129 lines
5.6 KiB
Diff

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 cbc82a03c24f746b913b30f14ecb0c08cdb42c24..06a5d3177ca7ab90c3fd9d2053b2ec5e887c7c62 100644
--- a/src/main/java/org/bukkit/scoreboard/Team.java
+++ b/src/main/java/org/bukkit/scoreboard/Team.java
@@ -323,6 +323,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.
*
@@ -345,6 +399,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
*