11package net .ess3 .provider .providers ;
22
3+ import io .papermc .paper .text .PaperComponents ;
34import net .kyori .adventure .audience .MessageType ;
45import net .kyori .adventure .identity .Identified ;
56import net .kyori .adventure .identity .Identity ;
67import net .kyori .adventure .text .Component ;
78import net .kyori .adventure .text .ComponentLike ;
89import org .bukkit .Bukkit ;
10+ import org .bukkit .command .CommandSender ;
911import org .bukkit .command .ConsoleCommandSender ;
1012import org .jetbrains .annotations .NotNull ;
1113
14+ import java .util .function .Consumer ;
15+
1216public class PaperCommandSender extends BukkitSenderProvider {
17+ private static final boolean FORWARDING_SENDER_AVAILABLE ;
18+
19+ static {
20+ boolean jmpHappy ;
21+ try {
22+ Bukkit .createCommandSender (component -> {});
23+ jmpHappy = true ;
24+ } catch (NoSuchMethodError ignored ) {
25+ jmpHappy = false ;
26+ }
27+ FORWARDING_SENDER_AVAILABLE = jmpHappy ;
28+ }
29+
1330 public PaperCommandSender (ConsoleCommandSender base , MessageHook hook ) {
1431 super (base , hook );
1532 }
1633
34+ public static boolean forwardingSenderAvailable () {
35+ return FORWARDING_SENDER_AVAILABLE ;
36+ }
37+
38+ public static CommandSender createCommandSender (Consumer <String > consumer ) {
39+ if (!forwardingSenderAvailable ()) {
40+ return null ;
41+ }
42+ return Bukkit .createCommandSender (component -> consumer .accept (PaperComponents .legacySectionSerializer ().serialize (component )));
43+ }
44+
1745 @ Override
18- public void sendMessage (Identity identity , Component message , MessageType type ) {
46+ public void sendMessage (@ NotNull Identity identity , @ NotNull Component message , @ NotNull MessageType type ) {
1947 sendDumbComponent (message );
2048 }
2149
@@ -25,57 +53,57 @@ public void sendMessage(ComponentLike message) {
2553 }
2654
2755 @ Override
28- public void sendMessage (Identified source , ComponentLike message ) {
56+ public void sendMessage (@ NotNull Identified source , ComponentLike message ) {
2957 sendDumbComponent (message .asComponent ());
3058 }
3159
3260 @ Override
33- public void sendMessage (Identity source , ComponentLike message ) {
61+ public void sendMessage (@ NotNull Identity source , ComponentLike message ) {
3462 sendDumbComponent (message .asComponent ());
3563 }
3664
3765 @ Override
38- public void sendMessage (Component message ) {
66+ public void sendMessage (@ NotNull Component message ) {
3967 sendDumbComponent (message );
4068 }
4169
4270 @ Override
43- public void sendMessage (Identified source , Component message ) {
71+ public void sendMessage (@ NotNull Identified source , @ NotNull Component message ) {
4472 sendDumbComponent (message );
4573 }
4674
4775 @ Override
48- public void sendMessage (Identity source , Component message ) {
76+ public void sendMessage (@ NotNull Identity source , @ NotNull Component message ) {
4977 sendDumbComponent (message );
5078 }
5179
5280 @ Override
53- public void sendMessage (ComponentLike message , MessageType type ) {
81+ public void sendMessage (ComponentLike message , @ NotNull MessageType type ) {
5482 sendDumbComponent (message .asComponent ());
5583 }
5684
5785 @ Override
58- public void sendMessage (Identified source , ComponentLike message , MessageType type ) {
86+ public void sendMessage (@ NotNull Identified source , ComponentLike message , @ NotNull MessageType type ) {
5987 sendDumbComponent (message .asComponent ());
6088 }
6189
6290 @ Override
63- public void sendMessage (Identity source , ComponentLike message , MessageType type ) {
91+ public void sendMessage (@ NotNull Identity source , ComponentLike message , @ NotNull MessageType type ) {
6492 sendDumbComponent (message .asComponent ());
6593 }
6694
6795 @ Override
68- public void sendMessage (Component message , MessageType type ) {
96+ public void sendMessage (@ NotNull Component message , @ NotNull MessageType type ) {
6997 sendDumbComponent (message );
7098 }
7199
72100 @ Override
73- public void sendMessage (Identified source , Component message , MessageType type ) {
101+ public void sendMessage (@ NotNull Identified source , @ NotNull Component message , @ NotNull MessageType type ) {
74102 sendDumbComponent (message );
75103 }
76104
77105 public void sendDumbComponent (Component message ) {
78- sendMessage (Bukkit . getUnsafe (). legacyComponentSerializer ().serialize (message ));
106+ sendMessage (PaperComponents . legacySectionSerializer ().serialize (message ));
79107 }
80108
81109 @ Override
0 commit comments