diff --git a/paper-api/src/main/java/org/bukkit/Registry.java b/paper-api/src/main/java/org/bukkit/Registry.java index 8f96e193c..09d999877 100644 --- a/paper-api/src/main/java/org/bukkit/Registry.java +++ b/paper-api/src/main/java/org/bukkit/Registry.java @@ -3,6 +3,7 @@ package org.bukkit; import com.google.common.base.Preconditions; import com.google.common.base.Predicates; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Iterables; import io.papermc.paper.datacomponent.DataComponentType; import io.papermc.paper.registry.RegistryAccess; import io.papermc.paper.registry.RegistryKey; @@ -297,6 +298,11 @@ public interface Registry extends Iterable { return MemoryKey.values().iterator(); } + @Override + public int size() { + return MemoryKey.values().size(); + } + @Override public @Nullable MemoryKey get(final NamespacedKey key) { return MemoryKey.getByKey(key); @@ -536,6 +542,13 @@ public interface Registry extends Iterable { return (namespacedKey != null) ? this.get(namespacedKey) : null; } + /** + * Gets the size of the registry. + * + * @return the size of the registry + */ + int size(); + @ApiStatus.Internal class SimpleRegistry & Keyed> extends NotARegistry { // Paper - remove final @@ -564,6 +577,11 @@ public interface Registry extends Iterable { return this.map.get(key); } + @Override + public int size() { + return map.size(); + } + @Override public Iterator iterator() { return this.map.values().iterator(); @@ -584,6 +602,11 @@ public interface Registry extends Iterable { return StreamSupport.stream(this.spliterator(), false); } + @Override + public int size() { + return Iterables.size(this); + } + @Override public NamespacedKey getKey(final A value) { return value.getKey(); diff --git a/paper-server/src/main/java/io/papermc/paper/registry/legacy/DelayedRegistry.java b/paper-server/src/main/java/io/papermc/paper/registry/legacy/DelayedRegistry.java index 527fbbbbe..8147fe865 100644 --- a/paper-server/src/main/java/io/papermc/paper/registry/legacy/DelayedRegistry.java +++ b/paper-server/src/main/java/io/papermc/paper/registry/legacy/DelayedRegistry.java @@ -49,6 +49,11 @@ public final class DelayedRegistry> imple return this.delegate().stream(); } + @Override + public int size() { + return this.delegate().size(); + } + @Override public @Nullable NamespacedKey getKey(final T value) { return this.delegate().getKey(value); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java index 2de46d741..f8c83e4a9 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java @@ -233,6 +233,11 @@ public class CraftRegistry implements Registry { return this.minecraftRegistry.keySet().stream().map(minecraftKey -> this.get(CraftNamespacedKey.fromMinecraft(minecraftKey))); } + @Override + public int size() { + return this.minecraftRegistry.size(); + } + @Override public Iterator iterator() { return this.stream().iterator();