diff --git a/paper-api/src/main/java/org/bukkit/Registry.java b/paper-api/src/main/java/org/bukkit/Registry.java index e1dc026216..b64fdfe979 100644 --- a/paper-api/src/main/java/org/bukkit/Registry.java +++ b/paper-api/src/main/java/org/bukkit/Registry.java @@ -525,6 +525,13 @@ public interface Registry extends Iterable { */ Stream stream(); + /** + * Returns a new stream, which contains all registry keys, which are registered to the registry. + * + * @return a stream of all registry keys + */ + Stream keyStream(); + /** * Attempts to match the registered object with the given key. *

@@ -591,6 +598,11 @@ public interface Registry extends Iterable { return this.map.values().iterator(); } + @Override + public Stream keyStream() { + return this.map.keySet().stream(); + } + @ApiStatus.Internal @Deprecated(since = "1.20.6", forRemoval = true) public Class getType() { @@ -606,6 +618,11 @@ public interface Registry extends Iterable { return StreamSupport.stream(this.spliterator(), false); } + @Override + public Stream keyStream() { + return stream().map(this::getKey); + } + @Override public int size() { return Iterables.size(this); 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 8147fe865a..3bc2ef90fe 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 Stream keyStream() { + return this.delegate().keyStream(); + } + @Override public int size() { return this.delegate().size(); 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 f46618d3f4..408c561661 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,12 @@ public class CraftRegistry implements Registry { return this.minecraftRegistry.keySet().stream().map(minecraftKey -> this.get(CraftNamespacedKey.fromMinecraft(minecraftKey))); } + @NotNull + @Override + public Stream keyStream() { + return this.minecraftRegistry.keySet().stream().map(CraftNamespacedKey::fromMinecraft); + } + @Override public int size() { return this.minecraftRegistry.size();