7
7
import com .mojang .serialization .JavaOps ;
8
8
import com .mojang .serialization .JsonOps ;
9
9
import io .papermc .paper .util .MethodParameterSource ;
10
- import java .io .IOException ;
11
10
import java .lang .annotation .ElementType ;
12
11
import java .lang .annotation .Retention ;
13
12
import java .lang .annotation .RetentionPolicy ;
@@ -109,37 +108,49 @@ void testKey() {
109
108
@ ParameterizedTest (name = PARAMETERIZED_NAME )
110
109
@ EnumSource (value = ClickEvent .Action .class , mode = EnumSource .Mode .EXCLUDE , names = {"OPEN_FILE" })
111
110
void testClickEvent (final ClickEvent .Action action ) {
112
- final ClickEvent event = ClickEvent .clickEvent (action , "1337" );
111
+ final ClickEvent event = ClickEvent .clickEvent (action , action . name (). equals ( "OPEN_URL" ) ? "https://google.com" : "1337" );
113
112
final Tag result = CLICK_EVENT_CODEC .encodeStart (NbtOps .INSTANCE , event ).result ().orElseThrow ();
114
113
final net .minecraft .network .chat .ClickEvent nms = net .minecraft .network .chat .ClickEvent .CODEC .decode (NbtOps .INSTANCE , result ).result ().orElseThrow ().getFirst ();
115
114
assertEquals (event .action ().toString (), nms .action ().getSerializedName ());
116
- assertEquals (event .value (), nms .getValue ());
115
+ switch (nms ) {
116
+ case net .minecraft .network .chat .ClickEvent .OpenUrl (java .net .URI uri ) ->
117
+ assertEquals (event .value (), uri .toString ());
118
+ case net .minecraft .network .chat .ClickEvent .SuggestCommand (String command ) ->
119
+ assertEquals (event .value (), command );
120
+ case net .minecraft .network .chat .ClickEvent .RunCommand (String command ) ->
121
+ assertEquals (event .value (), command );
122
+ case net .minecraft .network .chat .ClickEvent .CopyToClipboard (String value ) ->
123
+ assertEquals (event .value (), value );
124
+ case net .minecraft .network .chat .ClickEvent .ChangePage (int page ) ->
125
+ assertEquals (event .value (), String .valueOf (page ));
126
+ default -> throw new AssertionError ("Unexpected ClickEvent type: " + nms .getClass ());
127
+ }
117
128
}
118
129
119
130
@ Test
120
131
void testShowTextHoverEvent () {
121
132
final HoverEvent <Component > hoverEvent = HoverEvent .hoverEvent (HoverEvent .Action .SHOW_TEXT , text ("hello" ));
122
133
final Tag result = HOVER_EVENT_CODEC .encodeStart (NbtOps .INSTANCE , hoverEvent ).result ().orElseThrow ();
123
- final net .minecraft .network .chat .HoverEvent nms = net .minecraft .network .chat .HoverEvent .CODEC .decode (NbtOps .INSTANCE , result ).result ().orElseThrow ().getFirst ();
134
+ final net .minecraft .network .chat .HoverEvent . ShowText nms = ( net . minecraft . network . chat . HoverEvent . ShowText ) net .minecraft .network .chat .HoverEvent .CODEC .decode (NbtOps .INSTANCE , result ).result ().orElseThrow ().getFirst ();
124
135
assertEquals (hoverEvent .action ().toString (), nms .action ().getSerializedName ());
125
- assertNotNull ( nms .getValue ( net . minecraft . network . chat . HoverEvent . Action . SHOW_TEXT ));
136
+ assertEquals ( "hello" , nms .value (). getString ( ));
126
137
}
127
138
128
139
@ Test
129
- void testShowItemHoverEvent () throws IOException {
140
+ void testShowItemHoverEvent () {
130
141
final ItemStack stack = new ItemStack (Items .PUMPKIN , 3 );
131
142
stack .set (DataComponents .CUSTOM_NAME , net .minecraft .network .chat .Component .literal ("NAME" ));
132
143
final HoverEvent <HoverEvent .ShowItem > hoverEvent = HoverEvent .showItem (key ("minecraft:pumpkin" ), 3 , PaperAdventure .asAdventure (stack .getComponentsPatch ()));
133
144
final Tag result = HOVER_EVENT_CODEC .encodeStart (NbtOps .INSTANCE , hoverEvent ).result ().orElseThrow ();
134
145
final DataResult <Pair <net .minecraft .network .chat .HoverEvent , Tag >> dataResult = net .minecraft .network .chat .HoverEvent .CODEC .decode (NbtOps .INSTANCE , result );
135
146
assertTrue (dataResult .result ().isPresent (), () -> dataResult + " result is not present" );
136
- final net .minecraft .network .chat .HoverEvent nms = dataResult .result ().orElseThrow ().getFirst ();
147
+ final net .minecraft .network .chat .HoverEvent . ShowItem nms = ( net . minecraft . network . chat . HoverEvent . ShowItem ) dataResult .result ().orElseThrow ().getFirst ();
137
148
assertEquals (hoverEvent .action ().toString (), nms .action ().getSerializedName ());
138
- final net . minecraft . network . chat . HoverEvent . ItemStackInfo value = nms .getValue ( net . minecraft . network . chat . HoverEvent . Action . SHOW_ITEM );
139
- assertNotNull (value );
140
- assertEquals (hoverEvent .value ().count (), value . count );
141
- assertEquals (hoverEvent .value ().item ().asString (), value . item .unwrapKey (). orElseThrow (). location ().toString ());
142
- assertEquals (stack .getComponentsPatch (), value . components );
149
+ final ItemStack item = nms .item ( );
150
+ assertNotNull (item );
151
+ assertEquals (hoverEvent .value ().count (), item . getCount () );
152
+ assertEquals (hoverEvent .value ().item ().asString (), item .getItem ().toString ());
153
+ assertEquals (stack .getComponentsPatch (), item . getComponentsPatch () );
143
154
}
144
155
145
156
@ Test
@@ -149,9 +160,9 @@ void testShowEntityHoverEvent() {
149
160
final Tag result = HOVER_EVENT_CODEC .encodeStart (NbtOps .INSTANCE , hoverEvent ).result ().orElseThrow ();
150
161
final DataResult <Pair <net .minecraft .network .chat .HoverEvent , Tag >> dataResult = net .minecraft .network .chat .HoverEvent .CODEC .decode (NbtOps .INSTANCE , result );
151
162
assertTrue (dataResult .result ().isPresent (), () -> dataResult + " result is not present" );
152
- final net .minecraft .network .chat .HoverEvent nms = dataResult .result ().orElseThrow ().getFirst ();
163
+ final net .minecraft .network .chat .HoverEvent . ShowEntity nms = ( net . minecraft . network . chat . HoverEvent . ShowEntity ) dataResult .result ().orElseThrow ().getFirst ();
153
164
assertEquals (hoverEvent .action ().toString (), nms .action ().getSerializedName ());
154
- final net .minecraft .network .chat .HoverEvent .EntityTooltipInfo value = nms .getValue ( net . minecraft . network . chat . HoverEvent . Action . SHOW_ENTITY );
165
+ final net .minecraft .network .chat .HoverEvent .EntityTooltipInfo value = nms .entity ( );
155
166
assertNotNull (value );
156
167
assertEquals (hoverEvent .value ().type ().asString (), BuiltInRegistries .ENTITY_TYPE .getKey (value .type ).toString ());
157
168
assertEquals (hoverEvent .value ().id (), value .uuid );
0 commit comments