Skip to content

Commit a0c3ccf

Browse files
authored
Merge pull request #1036 from KyoriPowered/feat/remove-rpack-overload
feat(api): Add removeResourcePack overload with Iterable
2 parents 44bee4e + 4f176b0 commit a0c3ccf

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

api/src/main/java/net/kyori/adventure/audience/Audience.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@
2323
*/
2424
package net.kyori.adventure.audience;
2525

26+
import java.util.ArrayList;
2627
import java.util.Arrays;
28+
import java.util.Collection;
29+
import java.util.Iterator;
2730
import java.util.List;
2831
import java.util.Objects;
2932
import java.util.UUID;
@@ -804,6 +807,38 @@ default void removeResourcePacks(final @NotNull ResourcePackInfoLike request, fi
804807
this.removeResourcePacks(request.asResourcePackInfo().id(), otherReqs);
805808
}
806809

810+
/**
811+
* Clear resource packs with the provided ids if they are present.
812+
*
813+
* @param ids the ids of resource packs to remove
814+
* @since 4.16.0
815+
* @sinceMinecraft 1.20.3
816+
*/
817+
default void removeResourcePacks(final @NotNull Iterable<UUID> ids) {
818+
// break these out to id + arrays
819+
final Iterator<UUID> it = ids.iterator();
820+
if (!it.hasNext()) return;
821+
822+
final UUID id = it.next();
823+
final UUID[] others;
824+
if (!it.hasNext()) {
825+
others = new UUID[0];
826+
} else if (ids instanceof Collection<?>) {
827+
others = new UUID[((Collection<UUID>) ids).size() - 1];
828+
for (int i = 0; i < others.length; i++) {
829+
others[i] = it.next();
830+
}
831+
} else {
832+
final List<UUID> othersList = new ArrayList<>();
833+
while (it.hasNext()) {
834+
othersList.add(it.next());
835+
}
836+
others = othersList.toArray(new UUID[0]);
837+
}
838+
839+
this.removeResourcePacks(id, others);
840+
}
841+
807842
/**
808843
* Clear resource packs with the provided ids if they are present.
809844
*

api/src/main/java/net/kyori/adventure/audience/ForwardingAudience.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,11 @@ default void sendResourcePacks(final @NotNull ResourcePackRequest request) {
206206
for (final Audience audience : this.audiences()) audience.sendResourcePacks(request);
207207
}
208208

209+
@Override
210+
default void removeResourcePacks(final @NotNull Iterable<UUID> ids) {
211+
for (final Audience audience : this.audiences()) audience.removeResourcePacks(ids);
212+
}
213+
209214
@Override
210215
default void removeResourcePacks(final @NotNull UUID id, final @NotNull UUID @NotNull ... others) {
211216
for (final Audience audience : this.audiences()) audience.removeResourcePacks(id, others);
@@ -384,6 +389,11 @@ default void sendResourcePacks(final @NotNull ResourcePackRequest request) {
384389
this.audience().sendResourcePacks(request.callback(Audiences.unwrapCallback(this, this.audience(), request.callback())));
385390
}
386391

392+
@Override
393+
default void removeResourcePacks(final @NotNull Iterable<UUID> ids) {
394+
this.audience().removeResourcePacks(ids);
395+
}
396+
387397
@Override
388398
default void removeResourcePacks(final @NotNull UUID id, final @NotNull UUID @NotNull ... others) {
389399
this.audience().removeResourcePacks(id, others);

0 commit comments

Comments
 (0)