diff --git a/api/src/main/java/net/kyori/adventure/audience/Audience.java b/api/src/main/java/net/kyori/adventure/audience/Audience.java index 4d48dd52db..587371fb07 100644 --- a/api/src/main/java/net/kyori/adventure/audience/Audience.java +++ b/api/src/main/java/net/kyori/adventure/audience/Audience.java @@ -878,4 +878,16 @@ default void clearResourcePacks() { */ default void showDialog(final @NotNull DialogLike dialog) { } + + /** + * Closes the dialog that is currently being shown to this audience, if any. + * + *

This will return the user to the previous dialog if one was opened from the + * current dialog.

+ * + * @since 4.24.0 + * @sinceMinecraft 1.21.6 + */ + default void closeDialog() { + } } diff --git a/api/src/main/java/net/kyori/adventure/audience/ForwardingAudience.java b/api/src/main/java/net/kyori/adventure/audience/ForwardingAudience.java index d534f96ae3..1771910768 100644 --- a/api/src/main/java/net/kyori/adventure/audience/ForwardingAudience.java +++ b/api/src/main/java/net/kyori/adventure/audience/ForwardingAudience.java @@ -227,6 +227,11 @@ default void showDialog(final @NotNull DialogLike dialog) { for (final Audience audience : this.audiences()) audience.showDialog(dialog); } + @Override + default void closeDialog() { + for (final Audience audience : this.audiences()) audience.closeDialog(); + } + /** * An audience that forwards everything to a single other audience. * @@ -414,5 +419,10 @@ default void clearResourcePacks() { default void showDialog(final @NotNull DialogLike dialog) { this.audience().showDialog(dialog); } + + @Override + default void closeDialog() { + this.audience().closeDialog(); + } } }