Skip to content

Commit 4cafcc1

Browse files
committed
use manual builder instead to enforce plugin parameter
1 parent df9a0a5 commit 4cafcc1

File tree

1 file changed

+51
-11
lines changed

1 file changed

+51
-11
lines changed

src/main/java/net/oceanias/opal/utility/builder/OMessage.java

Lines changed: 51 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
import net.oceanias.opal.plugin.OPlugin;
44
import net.oceanias.opal.utility.extension.OStringExtension;
5+
import java.util.ArrayList;
6+
import java.util.Collection;
57
import java.util.List;
68
import java.util.Objects;
79
import java.util.stream.Collectors;
810
import java.util.stream.Stream;
911
import org.bukkit.command.CommandSender;
1012
import net.kyori.adventure.text.Component;
11-
import lombok.Builder;
12-
import lombok.Getter;
13-
import lombok.Singular;
13+
import lombok.*;
1414
import lombok.experimental.Accessors;
1515
import lombok.experimental.ExtensionMethod;
1616
import org.jetbrains.annotations.Contract;
@@ -20,21 +20,20 @@
2020
@Getter
2121
@Accessors(fluent = true)
2222
@ExtensionMethod(OStringExtension.class)
23-
@Builder
23+
@AllArgsConstructor(access = AccessLevel.PRIVATE)
2424
public final class OMessage {
2525
private final OPlugin plugin;
2626

27-
@Singular("line")
2827
private List<String> lines;
2928

30-
@Builder.Default
31-
private boolean prefix = true;
29+
@Setter
30+
private boolean prefix;
3231

33-
@Builder.Default
34-
private boolean dividers = false;
32+
@Setter
33+
private boolean dividers;
3534

36-
@Builder.Default
37-
private boolean blanks = false;
35+
@Setter
36+
private boolean blanks;
3837

3938
public @NotNull Component component() {
4039
final String addDividers = dividers ? OStringExtension.CHAT_DIVIDER_LONG : null;
@@ -65,4 +64,45 @@ public OMessage send(final @NotNull Iterable<? extends CommandSender> senders) {
6564

6665
return this;
6766
}
67+
68+
@Contract(value = "_ -> new", pure = true)
69+
public static @NotNull OMessageBuilder builder(final OPlugin plugin) {
70+
return new OMessageBuilder(plugin);
71+
}
72+
73+
@Getter
74+
public static class OMessageBuilder {
75+
private final OPlugin plugin;
76+
77+
private final List<String> lines = new ArrayList<>();
78+
79+
@Setter
80+
private boolean prefix = true;
81+
82+
@Setter
83+
private boolean dividers = false;
84+
85+
@Setter
86+
private boolean blanks = false;
87+
88+
public OMessageBuilder(final OPlugin plugin) {
89+
this.plugin = plugin;
90+
}
91+
92+
public OMessageBuilder line(final String line) {
93+
lines.add(line);
94+
95+
return this;
96+
}
97+
98+
public OMessageBuilder lines(final Collection<String> lines) {
99+
this.lines.addAll(lines);
100+
101+
return this;
102+
}
103+
104+
public OMessage build() {
105+
return new OMessage(plugin, lines, prefix, dividers, blanks);
106+
}
107+
}
68108
}

0 commit comments

Comments
 (0)