diff --git a/paper-api/src/main/java/org/bukkit/Registry.java b/paper-api/src/main/java/org/bukkit/Registry.java index 6345bd9464..44b8c9111d 100644 --- a/paper-api/src/main/java/org/bukkit/Registry.java +++ b/paper-api/src/main/java/org/bukkit/Registry.java @@ -8,6 +8,8 @@ import java.util.Iterator; import java.util.Map; import java.util.Objects; import java.util.function.Predicate; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; import org.bukkit.advancement.Advancement; import org.bukkit.attribute.Attribute; import org.bukkit.block.Biome; @@ -48,6 +50,12 @@ public interface Registry extends Iterable { return Bukkit.getAdvancement(key); } + @NotNull + @Override + public Stream stream() { + return StreamSupport.stream(spliterator(), false); + } + @NotNull @Override public Iterator iterator() { @@ -86,6 +94,12 @@ public interface Registry extends Iterable { return Bukkit.getBossBar(key); } + @NotNull + @Override + public Stream stream() { + return StreamSupport.stream(spliterator(), false); + } + @NotNull @Override public Iterator iterator() { @@ -105,6 +119,12 @@ public interface Registry extends Iterable { return Enchantment.getByKey(key); } + @NotNull + @Override + public Stream stream() { + return StreamSupport.stream(spliterator(), false); + } + @NotNull @Override public Iterator iterator() { @@ -203,6 +223,12 @@ public interface Registry extends Iterable { public MemoryKey get(@NotNull NamespacedKey key) { return MemoryKey.getByKey(key); } + + @NotNull + @Override + public Stream stream() { + return StreamSupport.stream(spliterator(), false); + } }; /** * Server fluids. @@ -231,6 +257,14 @@ public interface Registry extends Iterable { @Nullable T get(@NotNull NamespacedKey key); + /** + * Returns a new stream, which contains all registry items, which are registered to the registry. + * + * @return a stream of all registry items + */ + @NotNull + Stream stream(); + /** * Attempts to match the registered object with the given key. *

@@ -275,6 +309,12 @@ public interface Registry extends Iterable { return map.get(key); } + @NotNull + @Override + public Stream stream() { + return StreamSupport.stream(spliterator(), false); + } + @NotNull @Override public Iterator iterator() { diff --git a/paper-api/src/test/java/org/bukkit/TestServer.java b/paper-api/src/test/java/org/bukkit/TestServer.java index 701a17c10f..d20c29fc6f 100644 --- a/paper-api/src/test/java/org/bukkit/TestServer.java +++ b/paper-api/src/test/java/org/bukkit/TestServer.java @@ -7,6 +7,7 @@ import java.lang.reflect.Proxy; import java.util.Iterator; import java.util.Map; import java.util.logging.Logger; +import java.util.stream.Stream; import org.bukkit.command.SimpleCommandMap; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.SimplePluginManager; @@ -87,7 +88,7 @@ public final class TestServer implements InvocationHandler { @NotNull @Override public Iterator iterator() { - return null; + throw new UnsupportedOperationException(); } @Nullable @@ -95,6 +96,12 @@ public final class TestServer implements InvocationHandler { public Keyed get(@NotNull NamespacedKey key) { return null; } + + @NotNull + @Override + public Stream stream() { + throw new UnsupportedOperationException(); + } }; } }