Skip to content

Commit 160f424

Browse files
committed
Update Message from BaseComponent based to Component based
1 parent 53d1a1a commit 160f424

File tree

2 files changed

+38
-47
lines changed

2 files changed

+38
-47
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ val paperApiName = "1.21.5-R0.1-SNAPSHOT"
1515
// = = =
1616

1717
group = "cat.nyaa"
18-
version ="9.7"
18+
version ="9.8"
1919

2020
java {
2121
// Configure the java toolchain. This allows gradle to auto-provision JDK 21 on systems that only have JDK 8 installed for example.

src/main/java/cat/nyaa/nyaacore/Message.java

Lines changed: 37 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,17 @@
22

33
import cat.nyaa.nyaacore.utils.ItemStackUtils;
44
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;
510
import net.md_5.bungee.api.ChatMessageType;
611
import net.md_5.bungee.api.chat.BaseComponent;
712
import net.md_5.bungee.api.chat.HoverEvent;
813
import net.md_5.bungee.api.chat.TextComponent;
914
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.*;
1416
import org.bukkit.block.BlockState;
1517
import org.bukkit.command.CommandSender;
1618
import org.bukkit.entity.Player;
@@ -21,16 +23,17 @@
2123
import org.bukkit.inventory.meta.ItemMeta;
2224
import org.bukkit.permissions.Permission;
2325

26+
import java.time.Duration;
2427
import java.util.ArrayList;
2528
import java.util.HashMap;
2629
import java.util.Map;
2730
import java.util.function.Predicate;
2831

2932
public class Message {
30-
public final BaseComponent inner;
33+
public Component inner;
3134

3235
public Message(String text) {
33-
inner = new TextComponent(text);
36+
inner = Component.text(text);
3437
}
3538

3639
public static String getPlayerJson(OfflinePlayer player) {
@@ -95,27 +98,29 @@ public static ItemMeta filterItemMeta(ItemMeta itemMeta) {
9598
* @param item the book
9699
* @return book without contents.
97100
*/
101+
@SuppressWarnings("ResultOfMethodCallIgnored")
98102
public static ItemStack removeBookContent(ItemStack item) {
99103
if (item.hasItemMeta() && item.getItemMeta() instanceof BookMeta) {
100104
ItemStack itemStack = item.clone();
101105
BookMeta meta = (BookMeta) itemStack.getItemMeta();
102-
meta.setPages(new ArrayList<>());
106+
meta.pages(Component.empty());
103107
itemStack.setItemMeta(meta);
104108
return itemStack;
105109
}
106110
return item;
107111
}
108112

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);
111115
}
112116

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);
115120
}
116121

117122
public Message append(String text) {
118-
inner.addExtra(text);
123+
inner = inner.append(Component.text(text));
119124
return this;
120125
}
121126

@@ -140,26 +145,25 @@ public Message append(ItemStack item) {
140145
*/
141146
public Message append(String template, ItemStack... items) {
142147
if (items == null || items.length == 0) return this;
143-
Map<String, BaseComponent> varMap = new HashMap<>();
148+
Map<String, Component> varMap = new HashMap<>();
144149
for (int i = 0; i < items.length; i++) {
145150
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()));
150154
varMap.put(String.format("{itemName:%d}", i), cmp);
151155
if (i == 0) {
152-
varMap.put("{amount}", new TextComponent(Integer.toString(clone.getAmount())));
156+
varMap.put("{amount}", Component.text(clone.getAmount()));
153157
varMap.put("{itemName}", cmp);
154158
}
155159
}
156160

157161
return append(template, varMap);
158162
}
159163

160-
public Message append(String template, Map<String, BaseComponent> varMap) {
164+
public Message append(String template, Map<String, Component> varMap) {
161165
String remTemplate = template;
162-
while (remTemplate.length() > 0) {
166+
while (!remTemplate.isEmpty()) {
163167
int idx = remTemplate.length();
164168
String var = null;
165169
for (String v : varMap.keySet()) {
@@ -170,7 +174,6 @@ public Message append(String template, Map<String, BaseComponent> varMap) {
170174
}
171175
}
172176

173-
if (idx == -1) break; // no more variables left
174177
if (idx == 0) {
175178
remTemplate = remTemplate.substring(var.length());
176179
append(varMap.get(var));
@@ -180,20 +183,19 @@ public Message append(String template, Map<String, BaseComponent> varMap) {
180183
remTemplate = remTemplate.substring(idx);
181184
}
182185
}
183-
if (remTemplate.length() > 0) append(remTemplate);
184186
return this;
185187
}
186188

187-
public Message append(BaseComponent component) {
188-
inner.addExtra(component);
189+
public Message append(Component component) {
190+
inner = inner.append(component);
189191
return this;
190192
}
191193

192194
public Message send(CommandSender p) {
193195
if (p instanceof Player) {
194196
return send((Player) p);
195197
} else {
196-
p.sendMessage(this.inner.toLegacyText());
198+
p.sendMessage(this.inner);
197199
return this;
198200
}
199201
}
@@ -204,13 +206,13 @@ public Message send(Player p) {
204206

205207
public Message send(Player p, MessageType type) {
206208
if (type == MessageType.CHAT) {
207-
p.spigot().sendMessage(inner);
209+
p.sendMessage(inner);
208210
} else if (type == MessageType.ACTION_BAR) {
209211
sendActionBarMessage(p, inner);
210212
} else if (type == MessageType.TITLE) {
211-
sendTitle(p, inner, new TextComponent(), 10, 40, 10);
213+
sendTitle(p, inner, Component.empty(), 10, 40, 10);
212214
} else if (type == MessageType.SUBTITLE) {
213-
sendTitle(p, new TextComponent(), inner, 10, 40, 10);
215+
sendTitle(p, Component.empty(), inner, 10, 40, 10);
214216
}
215217
return this;
216218
}
@@ -223,29 +225,19 @@ public Message broadcast(MessageType type) {
223225
for (Player p : Bukkit.getOnlinePlayers()) {
224226
send(p, type);
225227
}
226-
Bukkit.getConsoleSender().sendMessage(inner.toLegacyText());
228+
Bukkit.getConsoleSender().sendMessage(inner);
227229
return this;
228230
}
229231

230232
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());
238235
return this;
239236
}
240237

241238
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);
249241
return this;
250242
}
251243

@@ -255,14 +247,13 @@ public Message broadcast(MessageType type, Predicate<Player> playerFilter) {
255247
this.send(player, type);
256248
}
257249
}
258-
Bukkit.getConsoleSender().sendMessage(inner.toLegacyText());
259-
// Bukkit.getConsoleSender().sendMessage("broadcast with filter:" + playerFilter.toString());
250+
Bukkit.getConsoleSender().sendMessage(inner);
260251
return this;
261252
}
262253

263254
@Override
264255
public String toString() {
265-
return ComponentSerializer.toString(inner);
256+
return PlainTextComponentSerializer.plainText().serialize(inner);
266257
}
267258

268259
public enum MessageType {CHAT, ACTION_BAR, TITLE, SUBTITLE}

0 commit comments

Comments
 (0)