24
24
package net .kyori .adventure .text .serializer .nbt ;
25
25
26
26
import net .kyori .option .Option ;
27
+ import net .kyori .option .OptionSchema ;
28
+ import org .jetbrains .annotations .NotNull ;
27
29
28
30
/**
29
31
* Options that can apply to {@linkplain NBTComponentSerializer NBT serializers}.
@@ -40,28 +42,28 @@ public final class NBTSerializerOptions {
40
42
* @since 4.24.0
41
43
* @sinceMinecraft 1.20.3
42
44
*/
43
- public static final Option <Boolean > EMIT_COMPACT_TEXT_COMPONENT = Option . booleanOption ( key ( "emit/compact_text_component" ), true ) ;
45
+ public static final Option <Boolean > EMIT_COMPACT_TEXT_COMPONENT ;
44
46
45
47
/**
46
48
* How to emit shadow colour data.
47
49
*
48
50
* @since 4.24.0
49
51
*/
50
- public static final Option <ShadowColorEmitMode > SHADOW_COLOR_MODE = Option . enumOption ( key ( "emit/shadow_color" ), ShadowColorEmitMode . class , ShadowColorEmitMode . EMIT_INTEGER ) ;
52
+ public static final Option <ShadowColorEmitMode > SHADOW_COLOR_MODE ;
51
53
52
54
/**
53
55
* Control how hover event values should be emitted.
54
56
*
55
57
* @since 4.24.0
56
58
*/
57
- public static final Option <HoverEventValueMode > EMIT_HOVER_EVENT_TYPE = Option . enumOption ( key ( "emit/hover_value_mode" ), HoverEventValueMode . class , HoverEventValueMode . SNAKE_CASE ) ;
59
+ public static final Option <HoverEventValueMode > EMIT_HOVER_EVENT_TYPE ;
58
60
59
61
/**
60
62
* Control how click event values should be emitted.
61
63
*
62
64
* @since 4.24.0
63
65
*/
64
- public static final Option <ClickEventValueMode > EMIT_CLICK_EVENT_TYPE = Option . enumOption ( key ( "emit/click_value_mode" ), ClickEventValueMode . class , ClickEventValueMode . SNAKE_CASE ) ;
66
+ public static final Option <ClickEventValueMode > EMIT_CLICK_EVENT_TYPE ;
65
67
66
68
/**
67
69
* Whether to emit the default hover event item stack quantity of {@code 1}.
@@ -70,21 +72,41 @@ public final class NBTSerializerOptions {
70
72
*
71
73
* @since 4.24.0
72
74
*/
73
- public static final Option <Boolean > EMIT_DEFAULT_ITEM_HOVER_QUANTITY = Option . booleanOption ( key ( "emit/default_item_hover_quantity" ), true ) ;
75
+ public static final Option <Boolean > EMIT_DEFAULT_ITEM_HOVER_QUANTITY ;
74
76
75
77
/**
76
78
* Whether to emit the default interpret value ({@code false}) of NBT components.
77
79
*
78
80
* @since 4.24.0
79
81
*/
80
- public static final Option <Boolean > EMIT_DEFAULT_NBT_INTERPRET_VALUE = Option . booleanOption ( key ( "emit/default_nbt_interpret_value" ), true ) ;
82
+ public static final Option <Boolean > EMIT_DEFAULT_NBT_INTERPRET_VALUE ;
81
83
82
84
/**
83
85
* Control how entity ids of show entity hover events should be emitted.
84
86
*
85
87
* @since 4.24.0
86
88
*/
87
- public static final Option <ShowEntityUUIDEmitMode > EMIT_SHOW_ENTITY_UUID_TYPE = Option .enumOption (key ("emit/show_entity_uuid" ), ShowEntityUUIDEmitMode .class , ShowEntityUUIDEmitMode .EMIT_INT_ARRAY );
89
+ public static final Option <ShowEntityUUIDEmitMode > EMIT_SHOW_ENTITY_UUID_TYPE ;
90
+
91
+ private static final OptionSchema SCHEMA ;
92
+
93
+ // TODO: Add show item hover data mode
94
+ // TODO: Add component type field emitting mode
95
+ // TODO: Add a way to serialize components as lists
96
+ // TODO: Add source field emitting mode
97
+ // TODO: Add show item hover data mode
98
+
99
+ static {
100
+ OptionSchema .Mutable schema = OptionSchema .emptySchema ();
101
+ EMIT_COMPACT_TEXT_COMPONENT = schema .booleanOption (key ("emit/compact_text_component" ), true );
102
+ SHADOW_COLOR_MODE = schema .enumOption (key ("emit/shadow_color" ), ShadowColorEmitMode .class , ShadowColorEmitMode .EMIT_INTEGER );
103
+ EMIT_HOVER_EVENT_TYPE = schema .enumOption (key ("emit/hover_value_mode" ), HoverEventValueMode .class , HoverEventValueMode .SNAKE_CASE );
104
+ EMIT_CLICK_EVENT_TYPE = schema .enumOption (key ("emit/click_value_mode" ), ClickEventValueMode .class , ClickEventValueMode .SNAKE_CASE );
105
+ EMIT_DEFAULT_ITEM_HOVER_QUANTITY = schema .booleanOption (key ("emit/default_item_hover_quantity" ), true );
106
+ EMIT_DEFAULT_NBT_INTERPRET_VALUE = schema .booleanOption (key ("emit/default_nbt_interpret_value" ), true );
107
+ EMIT_SHOW_ENTITY_UUID_TYPE = schema .enumOption (key ("emit/show_entity_uuid" ), ShowEntityUUIDEmitMode .class , ShowEntityUUIDEmitMode .EMIT_INT_ARRAY );
108
+ SCHEMA = schema .frozenView ();
109
+ }
88
110
89
111
private NBTSerializerOptions () {
90
112
}
@@ -93,6 +115,16 @@ private static String key(final String value) {
93
115
return "adventure:nbt/" + value ;
94
116
}
95
117
118
+ /**
119
+ * A schema of available options.
120
+ *
121
+ * @return the schema of known NBT serializer options
122
+ * @since 4.20.0
123
+ */
124
+ public static @ NotNull OptionSchema schema () {
125
+ return SCHEMA ;
126
+ }
127
+
96
128
/**
97
129
* Configure how to emit hover event values.
98
130
*
0 commit comments