1
1
package net .oceanias .opal .utility .builder ;
2
2
3
3
import net .oceanias .opal .plugin .OPlugin ;
4
+ import net .oceanias .opal .utility .constant .OFeedbackSound ;
5
+ import net .oceanias .opal .utility .extension .OCommandSenderExtension ;
4
6
import net .oceanias .opal .utility .extension .OStringExtension ;
5
7
import java .util .ArrayList ;
6
8
import java .util .List ;
7
9
import java .util .Objects ;
8
10
import java .util .stream .Collectors ;
9
11
import java .util .stream .Stream ;
12
+ import org .bukkit .Sound ;
10
13
import org .bukkit .command .CommandSender ;
11
14
import org .bukkit .entity .Player ;
12
15
import net .kyori .adventure .text .Component ;
19
22
@ SuppressWarnings ("unused" )
20
23
@ Getter
21
24
@ Accessors (fluent = true )
22
- @ ExtensionMethod (OStringExtension .class )
25
+ @ ExtensionMethod ({ OStringExtension .class , OCommandSenderExtension . class } )
23
26
@ AllArgsConstructor (access = AccessLevel .PRIVATE )
24
27
public final class OMessage {
25
28
private final OPlugin plugin ;
@@ -35,6 +38,8 @@ public final class OMessage {
35
38
@ Setter
36
39
private boolean blanks ;
37
40
41
+ private Sound sound ;
42
+
38
43
public OMessage line (final String line ) {
39
44
lines .add (line );
40
45
@@ -47,6 +52,18 @@ public OMessage lines(final List<String> lines) {
47
52
return this ;
48
53
}
49
54
55
+ public OMessage sound (final @ NotNull OFeedbackSound sound ) {
56
+ this .sound = sound .getDelegate ();
57
+
58
+ return this ;
59
+ }
60
+
61
+ public OMessage sound (final Sound sound ) {
62
+ this .sound = sound ;
63
+
64
+ return this ;
65
+ }
66
+
50
67
public @ NotNull Component component () {
51
68
final String addDividers = dividers ? OStringExtension .CHAT_DIVIDER_LONG : null ;
52
69
final String addBlanks = blanks ? "" : null ;
@@ -61,19 +78,39 @@ public OMessage lines(final List<String> lines) {
61
78
62
79
public void send (final @ NotNull CommandSender sender ) {
63
80
sender .sendMessage (component ());
81
+
82
+ if (sound == null ) {
83
+ return ;
84
+ }
85
+
86
+ sender .soundDSR (sound );
64
87
}
65
88
66
89
public void send (final @ NotNull Iterable <? extends CommandSender > senders ) {
67
90
final Component message = component ();
68
91
69
92
for (final CommandSender sender : senders ) {
70
93
sender .sendMessage (message );
94
+
95
+ if (sound == null ) {
96
+ continue ;
97
+ }
98
+
99
+ sender .soundDSR (sound );
71
100
}
72
101
}
73
102
74
103
public void broadcast () {
104
+ final Component message = component ();
105
+
75
106
for (final Player sender : plugin .getServer ().getOnlinePlayers ()) {
76
- send (sender );
107
+ sender .sendMessage (message );
108
+
109
+ if (sound == null ) {
110
+ continue ;
111
+ }
112
+
113
+ sender .soundDSR (sound );
77
114
}
78
115
}
79
116
@@ -97,6 +134,8 @@ public static class OMessageBuilder {
97
134
@ Setter
98
135
private boolean blanks = false ;
99
136
137
+ private Sound sound ;
138
+
100
139
public OMessageBuilder (final OPlugin plugin ) {
101
140
this .plugin = plugin ;
102
141
}
@@ -113,8 +152,20 @@ public OMessageBuilder lines(final List<String> lines) {
113
152
return this ;
114
153
}
115
154
155
+ public OMessageBuilder sound (final @ NotNull OFeedbackSound sound ) {
156
+ this .sound = sound .getDelegate ();
157
+
158
+ return this ;
159
+ }
160
+
161
+ public OMessageBuilder sound (final Sound sound ) {
162
+ this .sound = sound ;
163
+
164
+ return this ;
165
+ }
166
+
116
167
public OMessage build () {
117
- return new OMessage (plugin , lines , prefix , dividers , blanks );
168
+ return new OMessage (plugin , lines , prefix , dividers , blanks , sound );
118
169
}
119
170
}
120
171
}
0 commit comments