diff options
Diffstat (limited to 'patches/server/0009-MC-Utils.patch')
-rw-r--r-- | patches/server/0009-MC-Utils.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/patches/server/0009-MC-Utils.patch b/patches/server/0009-MC-Utils.patch index 89b8e3e9c8..c9d3f6c204 100644 --- a/patches/server/0009-MC-Utils.patch +++ b/patches/server/0009-MC-Utils.patch @@ -4805,6 +4805,57 @@ index 0000000000000000000000000000000000000000..a4ac34ebb58a404f4fca7e763e61d4ab + } + } +} +diff --git a/src/main/java/io/papermc/paper/util/SizeLimitedSet.java b/src/main/java/io/papermc/paper/util/SizeLimitedSet.java +new file mode 100644 +index 0000000000000000000000000000000000000000..1eee077b1e2c6d41bdaa4f1a477c715b13981c6d +--- /dev/null ++++ b/src/main/java/io/papermc/paper/util/SizeLimitedSet.java +@@ -0,0 +1,45 @@ ++package io.papermc.paper.util; ++ ++import com.google.common.collect.ForwardingSet; ++import java.util.Collection; ++import java.util.Set; ++import org.jspecify.annotations.NullMarked; ++import org.jspecify.annotations.Nullable; ++ ++@NullMarked ++public class SizeLimitedSet<E> extends ForwardingSet<E> { ++ ++ private final Set<E> delegate; ++ private final int maxSize; ++ ++ public SizeLimitedSet(final Set<E> delegate, final int maxSize) { ++ this.delegate = delegate; ++ this.maxSize = maxSize; ++ } ++ ++ @Override ++ public boolean add(final E element) { ++ if (this.size() >= this.maxSize) { ++ return false; ++ } ++ return super.add(element); ++ } ++ ++ @Override ++ public boolean addAll(final Collection<? extends @Nullable E> collection) { ++ if ((collection.size() + this.size()) >= this.maxSize) { ++ return false; ++ } ++ boolean edited = false; ++ ++ for (final E element : collection) { ++ edited |= super.add(element); ++ } ++ return edited; ++ } ++ ++ @Override ++ protected Set<E> delegate() { ++ return this.delegate; ++ } ++} diff --git a/src/main/java/io/papermc/paper/util/StackWalkerUtil.java b/src/main/java/io/papermc/paper/util/StackWalkerUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..f7114d5b8f2f93f62883e24da29afaf9f74ee1a6 |