Skip to content

Commit f6f75b1

Browse files
committed
feat: allow to use paper native sendMessage method
- it isn't perfect, and maybe it will eventually move to multi-module project
1 parent 556f432 commit f6f75b1

7 files changed

Lines changed: 93 additions & 9 deletions

File tree

src/main/java/cc/happyareabean/sjm/SimpleJoinMessage.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
import cc.happyareabean.sjm.listener.PlayerJoinListener;
99
import cc.happyareabean.sjm.listener.UpdateNotifyListener;
1010
import cc.happyareabean.sjm.utils.AdventureWebEditorAPI;
11+
import cc.happyareabean.sjm.utils.Util;
12+
import cc.happyareabean.sjm.utils.message.AbstractMessageUtil;
13+
import cc.happyareabean.sjm.utils.message.impl.BukkitMessageUtil;
14+
import cc.happyareabean.sjm.utils.message.impl.PaperMessageUtil;
1115
import lombok.Getter;
1216
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
1317
import net.kyori.adventure.text.minimessage.MiniMessage;
@@ -40,7 +44,7 @@ public class SimpleJoinMessage extends JavaPlugin {
4044
@Getter private static SimpleJoinMessage instance;
4145
@Getter public static final MiniMessage MINIMESSAGE = MiniMessage.miniMessage();
4246
@Getter public static final LegacyComponentSerializer LEGACY_SERIALIZER = LegacyComponentSerializer.legacy('&');
43-
@Getter private static BukkitAudiences adventure;
47+
@Getter private static AbstractMessageUtil messageUtil;
4448
@Getter private AdventureWebEditorAPI adventureWebEditorAPI;
4549
@Getter private Lamp<BukkitCommandActor> commandHandler;
4650
@Getter private SJMConfig SJMConfig;
@@ -50,7 +54,12 @@ public class SimpleJoinMessage extends JavaPlugin {
5054
@Override
5155
public void onEnable() {
5256
instance = this;
53-
adventure = BukkitAudiences.create(this);
57+
58+
if (Util.isPaperAdventure()) {
59+
messageUtil = new PaperMessageUtil(this);
60+
} else {
61+
messageUtil = new BukkitMessageUtil(this);
62+
}
5463

5564
getLogger().info("Loading settings...");
5665
SJMConfig = new SJMConfig(new File(getDataFolder(), "settings.yml").toPath());
@@ -62,7 +71,9 @@ public void onEnable() {
6271
getServer().getPluginManager().registerEvents(new UpdateNotifyListener(), this);
6372

6473
getLogger().info("Registering commands...");
65-
commandHandler = BukkitLamp.builder(BukkitLampConfig.builder(this).audiences(adventure).build()).build();
74+
BukkitLampConfig.Builder<BukkitCommandActor> commandConfig = BukkitLampConfig.builder(this);
75+
if (!Util.isPaperAdventure()) commandConfig.audiences(BukkitAudiences.create(this));
76+
commandHandler = BukkitLamp.builder(commandConfig.build()).build();
6677
commandHandler.register(new SJMCommand());
6778

6879
if (commandsConfig.getCustomShow().isEnabled())

src/main/java/cc/happyareabean/sjm/listener/UpdateNotifyListener.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import cc.happyareabean.sjm.SimpleJoinMessage;
44
import cc.happyareabean.sjm.utils.Constants;
5-
import net.kyori.adventure.audience.Audience;
65
import net.kyori.adventure.text.Component;
76
import net.kyori.adventure.text.event.ClickEvent;
87
import net.kyori.adventure.text.format.NamedTextColor;
@@ -25,8 +24,7 @@ public void onJoin(PlayerJoinEvent event) {
2524
if (!player.hasPermission("sjm.admin")) return;
2625
if (SimpleJoinMessage.NEXT_VERSION.isEmpty()) return;
2726

28-
Audience aPlayer = SimpleJoinMessage.getAdventure().player(player);
29-
aPlayer.sendMessage(Component.textOfChildren(
27+
SimpleJoinMessage.getMessageUtil().sendMessage(player, Component.textOfChildren(
3028
Constants.PREFIX,
3129
text("New version", WHITE),
3230
space(),

src/main/java/cc/happyareabean/sjm/utils/MessageUtil.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import cc.happyareabean.sjm.SimpleJoinMessage;
44
import cc.happyareabean.sjm.config.SJMConfig;
55
import me.clip.placeholderapi.PlaceholderAPI;
6-
import net.kyori.adventure.audience.Audience;
76
import org.bukkit.Bukkit;
87
import org.bukkit.entity.Player;
98
import org.bukkit.scheduler.BukkitRunnable;
@@ -17,7 +16,6 @@
1716
public class MessageUtil {
1817

1918
public static void sendMessageDelay(Player player, final List<String> messages, int delayTicks) {
20-
Audience aPlayer = SimpleJoinMessage.getAdventure().player(player);
2119
SJMConfig config = SimpleJoinMessage.getInstance().getSJMConfig();
2220
DateTimeFormatter formatter =
2321
DateTimeFormatter.ofPattern(config.getTimeFormat())
@@ -29,8 +27,11 @@ public void run() {
2927
messages.forEach((m) -> newMessage.add(m.replace("{player}", player.getName())
3028
.replace("{online}", String.valueOf(Bukkit.getServer().getOnlinePlayers().size()))
3129
.replace("{time}", formatter.format(Instant.now()))));
32-
aPlayer.sendMessage(SimpleJoinMessage.MINIMESSAGE.deserialize(String.join("\n", (SimpleJoinMessage.getInstance().isPAPISupported() ? PlaceholderAPI.setPlaceholders(player, newMessage) : newMessage))));
30+
SimpleJoinMessage.getMessageUtil().sendMessage(player, SimpleJoinMessage.MINIMESSAGE.deserialize(
31+
String.join("\n", (SimpleJoinMessage.getInstance().isPAPISupported() ?
32+
PlaceholderAPI.setPlaceholders(player, newMessage) : newMessage))));
3333
}
3434
}.runTaskLaterAsynchronously(SimpleJoinMessage.getInstance(), (delayTicks > 0 ? delayTicks : 1L));
3535
}
36+
3637
}

src/main/java/cc/happyareabean/sjm/utils/Util.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,15 @@ public static URL convertToUrl(URI uri) {
1313
return null;
1414
}
1515
}
16+
17+
public static boolean isPaperAdventure() {
18+
19+
try {
20+
Class.forName("io{}papermc{}paper{}text{}PaperComponents".replace("{}", "."));
21+
} catch (ClassNotFoundException e) {
22+
return false;
23+
}
24+
25+
return true;
26+
}
1627
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package cc.happyareabean.sjm.utils.message;
2+
3+
import net.kyori.adventure.text.ComponentLike;
4+
import org.bukkit.entity.Player;
5+
import org.bukkit.plugin.java.JavaPlugin;
6+
7+
public abstract class AbstractMessageUtil {
8+
9+
private final JavaPlugin plugin;
10+
11+
protected AbstractMessageUtil(JavaPlugin plugin) {
12+
this.plugin = plugin;
13+
}
14+
15+
public abstract void sendMessage(Player player, ComponentLike componentLike);
16+
17+
private JavaPlugin getPlugin() {
18+
return plugin;
19+
}
20+
21+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package cc.happyareabean.sjm.utils.message.impl;
2+
3+
import cc.happyareabean.sjm.utils.message.AbstractMessageUtil;
4+
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
5+
import net.kyori.adventure.text.ComponentLike;
6+
import org.bukkit.entity.Player;
7+
import org.bukkit.plugin.java.JavaPlugin;
8+
9+
public class BukkitMessageUtil extends AbstractMessageUtil {
10+
11+
private final BukkitAudiences audiences;
12+
13+
public BukkitMessageUtil(JavaPlugin plugin) {
14+
super(plugin);
15+
audiences = BukkitAudiences.create(plugin);
16+
}
17+
18+
@Override
19+
public void sendMessage(Player player, ComponentLike componentLike) {
20+
audiences.player(player).sendMessage(componentLike);
21+
}
22+
23+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package cc.happyareabean.sjm.utils.message.impl;
2+
3+
import cc.happyareabean.sjm.utils.message.AbstractMessageUtil;
4+
import net.kyori.adventure.text.ComponentLike;
5+
import org.bukkit.entity.Player;
6+
import org.bukkit.plugin.java.JavaPlugin;
7+
8+
public class PaperMessageUtil extends AbstractMessageUtil {
9+
10+
public PaperMessageUtil(JavaPlugin plugin) {
11+
super(plugin);
12+
}
13+
14+
@Override
15+
public void sendMessage(Player player, ComponentLike componentLike) {
16+
player.sendMessage(componentLike);
17+
}
18+
19+
}

0 commit comments

Comments
 (0)