47
47
import net .kyori .adventure .text .serializer .gson .GsonComponentSerializer ;
48
48
import net .kyori .adventure .text .serializer .json .JSONOptions ;
49
49
import net .kyori .adventure .text .serializer .json .legacyimpl .NBTLegacyHoverEventSerializer ;
50
- import net .kyori .option .OptionState ;
50
+ import net .kyori .option .OptionSchema ;
51
51
52
52
/**
53
53
* Utilities for writing and reading data in the Minecraft protocol.
@@ -60,10 +60,10 @@ public enum ProtocolUtils {
60
60
.downsampleColors ()
61
61
.legacyHoverEventSerializer (NBTLegacyHoverEventSerializer .get ())
62
62
.options (
63
- OptionState . optionState ()
63
+ OptionSchema . globalSchema (). stateBuilder ()
64
64
// before 1.16
65
65
.value (JSONOptions .EMIT_RGB , Boolean .FALSE )
66
- .value (JSONOptions .EMIT_HOVER_EVENT_TYPE , JSONOptions .HoverEventValueMode .LEGACY_ONLY )
66
+ .value (JSONOptions .EMIT_HOVER_EVENT_TYPE , JSONOptions .HoverEventValueMode .VALUE_FIELD )
67
67
// before 1.20.3
68
68
.value (JSONOptions .EMIT_COMPACT_TEXT_COMPONENT , Boolean .FALSE )
69
69
.value (JSONOptions .EMIT_HOVER_SHOW_ENTITY_ID_AS_INT_ARRAY , Boolean .FALSE )
@@ -75,28 +75,48 @@ public enum ProtocolUtils {
75
75
GsonComponentSerializer .builder ()
76
76
.legacyHoverEventSerializer (NBTLegacyHoverEventSerializer .get ())
77
77
.options (
78
- OptionState . optionState ()
78
+ OptionSchema . globalSchema (). stateBuilder ()
79
79
// after 1.16
80
80
.value (JSONOptions .EMIT_RGB , Boolean .TRUE )
81
- .value (JSONOptions .EMIT_HOVER_EVENT_TYPE , JSONOptions .HoverEventValueMode .MODERN_ONLY )
81
+ .value (JSONOptions .EMIT_HOVER_EVENT_TYPE , JSONOptions .HoverEventValueMode .CAMEL_CASE )
82
+ .value (JSONOptions .EMIT_CLICK_EVENT_TYPE , JSONOptions .ClickEventValueMode .CAMEL_CASE )
82
83
// before 1.20.3
83
84
.value (JSONOptions .EMIT_COMPACT_TEXT_COMPONENT , Boolean .FALSE )
84
85
.value (JSONOptions .EMIT_HOVER_SHOW_ENTITY_ID_AS_INT_ARRAY , Boolean .FALSE )
85
86
.value (JSONOptions .VALIDATE_STRICT_EVENTS , Boolean .FALSE )
86
87
.build ()
87
88
)
88
89
.build ();
90
+ private static final GsonComponentSerializer PRE_1_21_5_SERIALIZER =
91
+ GsonComponentSerializer .builder ()
92
+ .legacyHoverEventSerializer (NBTLegacyHoverEventSerializer .get ())
93
+ .options (
94
+ OptionSchema .globalSchema ().stateBuilder ()
95
+ // after 1.16
96
+ .value (JSONOptions .EMIT_RGB , Boolean .TRUE )
97
+ .value (JSONOptions .EMIT_HOVER_EVENT_TYPE , JSONOptions .HoverEventValueMode .CAMEL_CASE )
98
+ .value (JSONOptions .EMIT_CLICK_EVENT_TYPE , JSONOptions .ClickEventValueMode .CAMEL_CASE )
99
+ // after 1.20.3
100
+ .value (JSONOptions .EMIT_COMPACT_TEXT_COMPONENT , Boolean .TRUE )
101
+ .value (JSONOptions .EMIT_HOVER_SHOW_ENTITY_ID_AS_INT_ARRAY , Boolean .TRUE )
102
+ .value (JSONOptions .VALIDATE_STRICT_EVENTS , Boolean .TRUE )
103
+ .build ()
104
+ )
105
+ .build ();
89
106
private static final GsonComponentSerializer MODERN_SERIALIZER =
90
107
GsonComponentSerializer .builder ()
91
108
.legacyHoverEventSerializer (NBTLegacyHoverEventSerializer .get ())
92
109
.options (
93
- OptionState . optionState ()
110
+ OptionSchema . globalSchema (). stateBuilder ()
94
111
// after 1.16
95
112
.value (JSONOptions .EMIT_RGB , Boolean .TRUE )
96
- .value (JSONOptions .EMIT_HOVER_EVENT_TYPE , JSONOptions .HoverEventValueMode .MODERN_ONLY )
113
+ .value (JSONOptions .EMIT_HOVER_EVENT_TYPE , JSONOptions .HoverEventValueMode .SNAKE_CASE )
114
+ .value (JSONOptions .EMIT_CLICK_EVENT_TYPE , JSONOptions .ClickEventValueMode .SNAKE_CASE )
97
115
// after 1.20.3
98
116
.value (JSONOptions .EMIT_COMPACT_TEXT_COMPONENT , Boolean .TRUE )
99
117
.value (JSONOptions .EMIT_HOVER_SHOW_ENTITY_ID_AS_INT_ARRAY , Boolean .TRUE )
118
+ // after 1.21.5
119
+ .value (JSONOptions .EMIT_HOVER_SHOW_ENTITY_KEY_AS_TYPE_AND_UUID_AS_ID , Boolean .FALSE )
100
120
.value (JSONOptions .VALIDATE_STRICT_EVENTS , Boolean .TRUE )
101
121
.build ()
102
122
)
@@ -713,9 +733,12 @@ public static String readStringWithoutLength(ByteBuf buf) {
713
733
* @return the appropriate {@link GsonComponentSerializer}
714
734
*/
715
735
public static GsonComponentSerializer getJsonChatSerializer (ProtocolVersion version ) {
716
- if (version .noLessThan (ProtocolVersion .MINECRAFT_1_20_3 )) {
736
+ if (version .noLessThan (ProtocolVersion .MINECRAFT_1_21_5 )) {
717
737
return MODERN_SERIALIZER ;
718
738
}
739
+ if (version .noLessThan (ProtocolVersion .MINECRAFT_1_20_3 )) {
740
+ return PRE_1_21_5_SERIALIZER ;
741
+ }
719
742
if (version .noLessThan (ProtocolVersion .MINECRAFT_1_16 )) {
720
743
return PRE_1_20_3_SERIALIZER ;
721
744
}
0 commit comments