2
2
3
3
import cat .nyaa .nyaacore .utils .ItemStackUtils ;
4
4
import cat .nyaa .nyaacore .utils .LocaleUtils ;
5
+ import net .kyori .adventure .inventory .Book ;
6
+ import net .kyori .adventure .text .Component ;
7
+ import net .kyori .adventure .text .serializer .plain .PlainTextComponentSerializer ;
8
+ import net .kyori .adventure .title .Title ;
9
+ import net .kyori .adventure .util .Ticks ;
5
10
import net .md_5 .bungee .api .ChatMessageType ;
6
11
import net .md_5 .bungee .api .chat .BaseComponent ;
7
12
import net .md_5 .bungee .api .chat .HoverEvent ;
8
13
import net .md_5 .bungee .api .chat .TextComponent ;
9
14
import net .md_5 .bungee .chat .ComponentSerializer ;
10
- import org .bukkit .Bukkit ;
11
- import org .bukkit .Material ;
12
- import org .bukkit .OfflinePlayer ;
13
- import org .bukkit .World ;
15
+ import org .bukkit .*;
14
16
import org .bukkit .block .BlockState ;
15
17
import org .bukkit .command .CommandSender ;
16
18
import org .bukkit .entity .Player ;
21
23
import org .bukkit .inventory .meta .ItemMeta ;
22
24
import org .bukkit .permissions .Permission ;
23
25
26
+ import java .time .Duration ;
24
27
import java .util .ArrayList ;
25
28
import java .util .HashMap ;
26
29
import java .util .Map ;
27
30
import java .util .function .Predicate ;
28
31
29
32
public class Message {
30
- public final BaseComponent inner ;
33
+ public Component inner ;
31
34
32
35
public Message (String text ) {
33
- inner = new TextComponent (text );
36
+ inner = Component . text (text );
34
37
}
35
38
36
39
public static String getPlayerJson (OfflinePlayer player ) {
@@ -95,27 +98,29 @@ public static ItemMeta filterItemMeta(ItemMeta itemMeta) {
95
98
* @param item the book
96
99
* @return book without contents.
97
100
*/
101
+ @ SuppressWarnings ("ResultOfMethodCallIgnored" )
98
102
public static ItemStack removeBookContent (ItemStack item ) {
99
103
if (item .hasItemMeta () && item .getItemMeta () instanceof BookMeta ) {
100
104
ItemStack itemStack = item .clone ();
101
105
BookMeta meta = (BookMeta ) itemStack .getItemMeta ();
102
- meta .setPages ( new ArrayList <> ());
106
+ meta .pages ( Component . empty ());
103
107
itemStack .setItemMeta (meta );
104
108
return itemStack ;
105
109
}
106
110
return item ;
107
111
}
108
112
109
- public static void sendActionBarMessage (Player player , BaseComponent msg ) {
110
- player .spigot (). sendMessage ( ChatMessageType . ACTION_BAR , msg );
113
+ public static void sendActionBarMessage (Player player , Component msg ) {
114
+ player .sendActionBar ( msg );
111
115
}
112
116
113
- public static void sendTitle (Player player , BaseComponent title , BaseComponent subtitle , int fadeInTicks , int stayTicks , int fadeOutTicks ) {
114
- player .sendTitle (title .toLegacyText (), subtitle .toLegacyText (), fadeInTicks , stayTicks , fadeOutTicks );
117
+ public static void sendTitle (Player player , Component title , Component subtitle , int fadeInTicks , int stayTicks , int fadeOutTicks ) {
118
+ Title title1 = Title .title (title , subtitle , Title .Times .times (Duration .ofMillis (fadeInTicks * 50L ), Duration .ofMillis (stayTicks * 50L ), Duration .ofMillis (fadeOutTicks * 50L )));
119
+ player .showTitle (title1 );
115
120
}
116
121
117
122
public Message append (String text ) {
118
- inner . addExtra ( text );
123
+ inner = inner . append ( Component . text ( text ) );
119
124
return this ;
120
125
}
121
126
@@ -140,26 +145,25 @@ public Message append(ItemStack item) {
140
145
*/
141
146
public Message append (String template , ItemStack ... items ) {
142
147
if (items == null || items .length == 0 ) return this ;
143
- Map <String , BaseComponent > varMap = new HashMap <>();
148
+ Map <String , Component > varMap = new HashMap <>();
144
149
for (int i = 0 ; i < items .length ; i ++) {
145
150
ItemStack clone = items [i ].clone ();
146
- boolean hasCustomName = clone .hasItemMeta () && clone .getItemMeta ().hasDisplayName ();
147
- BaseComponent cmp = hasCustomName ? new TextComponent (TextComponent .fromLegacyText (clone .getItemMeta ().getDisplayName ())) : LocaleUtils .getNameComponent (clone );
148
- cmp .setHoverEvent (new HoverEvent (HoverEvent .Action .SHOW_ITEM , new BaseComponent []{new TextComponent (getItemJsonStripped (clone ))}));
149
- varMap .put (String .format ("{amount:%d}" , i ), new TextComponent (Integer .toString (clone .getAmount ())));
151
+ boolean hasCustomName = clone .hasItemMeta () && clone .getItemMeta ().hasCustomName ();
152
+ Component cmp = hasCustomName ? clone .displayName () : Component .translatable (clone );
153
+ varMap .put (String .format ("{amount:%d}" , i ), Component .text (clone .getAmount ()));
150
154
varMap .put (String .format ("{itemName:%d}" , i ), cmp );
151
155
if (i == 0 ) {
152
- varMap .put ("{amount}" , new TextComponent ( Integer . toString (clone .getAmount () )));
156
+ varMap .put ("{amount}" , Component . text (clone .getAmount ()));
153
157
varMap .put ("{itemName}" , cmp );
154
158
}
155
159
}
156
160
157
161
return append (template , varMap );
158
162
}
159
163
160
- public Message append (String template , Map <String , BaseComponent > varMap ) {
164
+ public Message append (String template , Map <String , Component > varMap ) {
161
165
String remTemplate = template ;
162
- while (remTemplate .length () > 0 ) {
166
+ while (! remTemplate .isEmpty () ) {
163
167
int idx = remTemplate .length ();
164
168
String var = null ;
165
169
for (String v : varMap .keySet ()) {
@@ -170,7 +174,6 @@ public Message append(String template, Map<String, BaseComponent> varMap) {
170
174
}
171
175
}
172
176
173
- if (idx == -1 ) break ; // no more variables left
174
177
if (idx == 0 ) {
175
178
remTemplate = remTemplate .substring (var .length ());
176
179
append (varMap .get (var ));
@@ -180,20 +183,19 @@ public Message append(String template, Map<String, BaseComponent> varMap) {
180
183
remTemplate = remTemplate .substring (idx );
181
184
}
182
185
}
183
- if (remTemplate .length () > 0 ) append (remTemplate );
184
186
return this ;
185
187
}
186
188
187
- public Message append (BaseComponent component ) {
188
- inner . addExtra (component );
189
+ public Message append (Component component ) {
190
+ inner = inner . append (component );
189
191
return this ;
190
192
}
191
193
192
194
public Message send (CommandSender p ) {
193
195
if (p instanceof Player ) {
194
196
return send ((Player ) p );
195
197
} else {
196
- p .sendMessage (this .inner . toLegacyText () );
198
+ p .sendMessage (this .inner );
197
199
return this ;
198
200
}
199
201
}
@@ -204,13 +206,13 @@ public Message send(Player p) {
204
206
205
207
public Message send (Player p , MessageType type ) {
206
208
if (type == MessageType .CHAT ) {
207
- p .spigot (). sendMessage (inner );
209
+ p .sendMessage (inner );
208
210
} else if (type == MessageType .ACTION_BAR ) {
209
211
sendActionBarMessage (p , inner );
210
212
} else if (type == MessageType .TITLE ) {
211
- sendTitle (p , inner , new TextComponent (), 10 , 40 , 10 );
213
+ sendTitle (p , inner , Component . empty (), 10 , 40 , 10 );
212
214
} else if (type == MessageType .SUBTITLE ) {
213
- sendTitle (p , new TextComponent (), inner , 10 , 40 , 10 );
215
+ sendTitle (p , Component . empty (), inner , 10 , 40 , 10 );
214
216
}
215
217
return this ;
216
218
}
@@ -223,29 +225,19 @@ public Message broadcast(MessageType type) {
223
225
for (Player p : Bukkit .getOnlinePlayers ()) {
224
226
send (p , type );
225
227
}
226
- Bukkit .getConsoleSender ().sendMessage (inner . toLegacyText () );
228
+ Bukkit .getConsoleSender ().sendMessage (inner );
227
229
return this ;
228
230
}
229
231
230
232
public Message broadcast (Permission permission ) {
231
- for (Player player : Bukkit .getOnlinePlayers ()) {
232
- if (player .hasPermission (permission )) {
233
- this .send (player );
234
- }
235
- }
236
- Bukkit .getConsoleSender ().sendMessage (inner .toLegacyText ());
237
- // Bukkit.getConsoleSender().sendMessage("broadcast to players with permission:" + permission.getName());
233
+ Server server = Bukkit .getServer ();
234
+ server .broadcast (inner , permission .getName ());
238
235
return this ;
239
236
}
240
237
241
238
public Message broadcast (World world ) {
242
- for (Player player : Bukkit .getOnlinePlayers ()) {
243
- if (player .getLocation ().getWorld ().equals (world )) {
244
- this .send (player );
245
- }
246
- }
247
- Bukkit .getConsoleSender ().sendMessage (inner .toLegacyText ());
248
- // Bukkit.getConsoleSender().sendMessage("broadcast to world:" + world.getName());
239
+ world .sendMessage (inner );
240
+ Bukkit .getConsoleSender ().sendMessage (inner );
249
241
return this ;
250
242
}
251
243
@@ -255,14 +247,13 @@ public Message broadcast(MessageType type, Predicate<Player> playerFilter) {
255
247
this .send (player , type );
256
248
}
257
249
}
258
- Bukkit .getConsoleSender ().sendMessage (inner .toLegacyText ());
259
- // Bukkit.getConsoleSender().sendMessage("broadcast with filter:" + playerFilter.toString());
250
+ Bukkit .getConsoleSender ().sendMessage (inner );
260
251
return this ;
261
252
}
262
253
263
254
@ Override
264
255
public String toString () {
265
- return ComponentSerializer . toString (inner );
256
+ return PlainTextComponentSerializer . plainText (). serialize (inner );
266
257
}
267
258
268
259
public enum MessageType {CHAT , ACTION_BAR , TITLE , SUBTITLE }
0 commit comments