forked from PaperMC/Paper
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add rich message component support to configuration (PaperMC#10225)
- Loading branch information
1 parent
54a2340
commit 9c4bb0d
Showing
2 changed files
with
108 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,16 +5,17 @@ Subject: [PATCH] Adventure | |
|
||
Co-authored-by: zml <[email protected]> | ||
Co-authored-by: Jake Potrebic <[email protected]> | ||
Co-authored-by: Yannick Lamprecht <[email protected]> | ||
|
||
diff --git a/build.gradle.kts b/build.gradle.kts | ||
index b3df8cf8d32a4cc99a3a3950f146cdab65826e1b..b577114c2b89fe2053123d1a542d37dff7fa8d5a 100644 | ||
index b3df8cf8d32a4cc99a3a3950f146cdab65826e1b..9011451c6a60db08dcc255a84470f8ce92f7b2a4 100644 | ||
--- a/build.gradle.kts | ||
+++ b/build.gradle.kts | ||
@@ -11,12 +11,28 @@ java { | ||
|
||
val annotationsVersion = "24.0.1" | ||
val bungeeCordChatVersion = "1.20-R0.2" | ||
+val adventureVersion = "4.15.0" | ||
+val adventureVersion = "4.16.0" | ||
+val apiAndDocs: Configuration by configurations.creating { | ||
+ attributes { | ||
+ attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION)) | ||
|
@@ -2054,6 +2055,109 @@ index fcc34b640265f4dccb46b9f09466ab8e1d96043e..5c813ac024f675951159a59d88d8baa0 | |
+ } | ||
+ // Paper end | ||
} | ||
diff --git a/src/main/java/org/bukkit/configuration/ConfigurationSection.java b/src/main/java/org/bukkit/configuration/ConfigurationSection.java | ||
index b6b00af08f12f838411845e4f4e29e62826dfc7f..d168b1e58b4b4ad00466fab60232d516551668e0 100644 | ||
--- a/src/main/java/org/bukkit/configuration/ConfigurationSection.java | ||
+++ b/src/main/java/org/bukkit/configuration/ConfigurationSection.java | ||
@@ -1058,4 +1058,98 @@ public interface ConfigurationSection { | ||
* one line. | ||
*/ | ||
public void setInlineComments(@NotNull String path, @Nullable List<String> comments); | ||
+ | ||
+ // Paper start - add rich message component support to configuration | ||
+ /** | ||
+ * Gets the requested MiniMessage formatted String as Component by path. | ||
+ * <p> | ||
+ * If the Component does not exist but a default value has been specified, | ||
+ * this will return the default value. If the Component does not exist and no | ||
+ * default value was specified, this will return null. | ||
+ * | ||
+ * @param path Path of the Component to get. | ||
+ * @return Requested Component. | ||
+ */ | ||
+ default net.kyori.adventure.text.@Nullable Component getRichMessage(final @NotNull String path) { | ||
+ return this.getRichMessage(path, null); | ||
+ } | ||
+ | ||
+ /** | ||
+ * Gets the requested MiniMessage formatted String as Component by path. | ||
+ * <p> | ||
+ * If the Component does not exist but a default value has been specified, | ||
+ * this will return the default value. If the Component does not exist and no | ||
+ * default value was specified, this will return null. | ||
+ * | ||
+ * @param path Path of the Component to get. | ||
+ * @param fallback component that will be used as fallback | ||
+ * @return Requested Component. | ||
+ */ | ||
+ @Contract("_, !null -> !null") | ||
+ default net.kyori.adventure.text.@Nullable Component getRichMessage(final @NotNull String path, final net.kyori.adventure.text.@Nullable Component fallback) { | ||
+ return this.getComponent(path, net.kyori.adventure.text.minimessage.MiniMessage.miniMessage(), fallback); | ||
+ } | ||
+ | ||
+ /** | ||
+ * Sets the specified path to the given value. | ||
+ * <p> | ||
+ * If value is null, the entry will be removed. Any existing entry will be | ||
+ * replaced, regardless of what the new value is. | ||
+ * | ||
+ * @param path Path of the object to set. | ||
+ * @param value New value to set the path to. | ||
+ */ | ||
+ default void setRichMessage(final @NotNull String path, final net.kyori.adventure.text.@Nullable Component value) { | ||
+ this.setComponent(path, net.kyori.adventure.text.minimessage.MiniMessage.miniMessage(), value); | ||
+ } | ||
+ | ||
+ /** | ||
+ * Gets the requested formatted String as Component by path deserialized by the ComponentDecoder. | ||
+ * <p> | ||
+ * If the Component does not exist but a default value has been specified, | ||
+ * this will return the default value. If the Component does not exist and no | ||
+ * default value was specified, this will return null. | ||
+ * | ||
+ * @param path Path of the Component to get. | ||
+ * @param decoder ComponentDecoder instance used for deserialization | ||
+ * @return Requested Component. | ||
+ */ | ||
+ default <C extends net.kyori.adventure.text.Component> @Nullable C getComponent(final @NotNull String path, final net.kyori.adventure.text.serializer.@NotNull ComponentDecoder<? super String, C> decoder) { | ||
+ return this.getComponent(path, decoder, null); | ||
+ } | ||
+ | ||
+ /** | ||
+ * Gets the requested formatted String as Component by path deserialized by the ComponentDecoder. | ||
+ * <p> | ||
+ * If the Component does not exist but a default value has been specified, | ||
+ * this will return the default value. If the Component does not exist and no | ||
+ * default value was specified, this will return null. | ||
+ * | ||
+ * @param path Path of the Component to get. | ||
+ * @param decoder ComponentDecoder instance used for deserialization | ||
+ * @param fallback component that will be used as fallback | ||
+ * @return Requested Component. | ||
+ */ | ||
+ @Contract("_, _, !null -> !null") | ||
+ default <C extends net.kyori.adventure.text.Component> @Nullable C getComponent(final @NotNull String path, final net.kyori.adventure.text.serializer.@NotNull ComponentDecoder<? super String, C> decoder, final @Nullable C fallback) { | ||
+ java.util.Objects.requireNonNull(decoder, "decoder"); | ||
+ final String value = this.getString(path); | ||
+ return decoder.deserializeOr(value, fallback); | ||
+ } | ||
+ | ||
+ /** | ||
+ * Sets the specified path to the given value. | ||
+ * <p> | ||
+ * If value is null, the entry will be removed. Any existing entry will be | ||
+ * replaced, regardless of what the new value is. | ||
+ * | ||
+ * @param path Path of the object to set. | ||
+ * @param encoder the encoder used to transform the value | ||
+ * @param value New value to set the path to. | ||
+ */ | ||
+ default <C extends net.kyori.adventure.text.Component> void setComponent(final @NotNull String path, final net.kyori.adventure.text.serializer.@NotNull ComponentEncoder<C, String> encoder, final @Nullable C value) { | ||
+ java.util.Objects.requireNonNull(encoder, "encoder"); | ||
+ this.set(path, encoder.serializeOrNull(value)); | ||
+ } | ||
+ // Paper end - add rich message component support to configuration | ||
} | ||
diff --git a/src/main/java/org/bukkit/conversations/Conversable.java b/src/main/java/org/bukkit/conversations/Conversable.java | ||
index b7d8dd30360a38dbdc7bbce40c8e6ced7261f833..0817f2395c2b18828565435568ce651f5ba99a99 100644 | ||
--- a/src/main/java/org/bukkit/conversations/Conversable.java | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters