Skip to content

Commit 058a7c9

Browse files
committed
Implement SenderNodeSuggester to builders
1 parent a509655 commit 058a7c9

File tree

4 files changed

+40
-10
lines changed

4 files changed

+40
-10
lines changed

src/main/java/org/mvplugins/multiverse/core/config/CoreConfigNodes.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import io.vavr.control.Try;
55
import jakarta.inject.Inject;
66
import jakarta.inject.Provider;
7-
import org.bukkit.Bukkit;
87
import org.bukkit.command.CommandSender;
98
import org.bukkit.event.EventPriority;
109
import org.bukkit.plugin.PluginManager;
@@ -19,7 +18,6 @@
1918
import org.mvplugins.multiverse.core.config.node.Node;
2019
import org.mvplugins.multiverse.core.config.node.NodeGroup;
2120
import org.mvplugins.multiverse.core.config.node.functions.NodeStringParser;
22-
import org.mvplugins.multiverse.core.config.node.functions.SenderNodeSuggester;
2321
import org.mvplugins.multiverse.core.config.node.serializer.NodeSerializer;
2422
import org.mvplugins.multiverse.core.destination.DestinationsProvider;
2523
import org.mvplugins.multiverse.core.destination.core.WorldDestination;
@@ -253,7 +251,7 @@ private <N extends Node> N node(N node) {
253251
.comment("This only applies if first-spawn-override is set to true.")
254252
.defaultValue("")
255253
.name("first-spawn-location")
256-
.suggester((SenderNodeSuggester) this::suggestDestinations)
254+
.suggester(this::suggestDestinations)
257255
.build());
258256

259257
final ConfigNode<Boolean> enableJoinDestination = node(ConfigNode.builder("spawn.enable-join-destination", Boolean.class)
@@ -270,7 +268,7 @@ private <N extends Node> N node(N node) {
270268
.comment("Set the above enable-join-destination to false to disable")
271269
.defaultValue("")
272270
.name("join-destination")
273-
.suggester((SenderNodeSuggester) this::suggestDestinations)
271+
.suggester(this::suggestDestinations)
274272
.build());
275273

276274
final ConfigNode<Boolean> defaultRespawnInOverworld = node(ConfigNode.builder("spawn.default-respawn-in-overworld", Boolean.class)

src/main/java/org/mvplugins/multiverse/core/config/node/ConfigNode.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import io.vavr.control.Option;
1010
import io.vavr.control.Try;
1111
import org.bukkit.command.CommandSender;
12+
import org.jetbrains.annotations.ApiStatus;
1213
import org.jetbrains.annotations.NotNull;
1314
import org.jetbrains.annotations.Nullable;
1415

@@ -267,6 +268,20 @@ protected Builder(@NotNull String path, @NotNull Class<T> type) {
267268
return self();
268269
}
269270

271+
/**
272+
* Sets the suggester for this node with sender context.
273+
*
274+
* @param suggester The suggester for this node.
275+
* @return This builder.
276+
*
277+
* @since 5.1
278+
*/
279+
@ApiStatus.AvailableSince("5.1")
280+
public @NotNull B suggester(@NotNull SenderNodeSuggester suggester) {
281+
this.suggester = suggester;
282+
return self();
283+
}
284+
270285
/**
271286
* Sets the string parser for this node.
272287
*

src/main/java/org/mvplugins/multiverse/core/config/node/ListConfigNode.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import io.vavr.Value;
1414
import io.vavr.control.Try;
1515
import org.bukkit.command.CommandSender;
16+
import org.jetbrains.annotations.ApiStatus;
1617
import org.jetbrains.annotations.NotNull;
1718
import org.jetbrains.annotations.Nullable;
1819

@@ -111,12 +112,12 @@ private void setDefaults() {
111112
}
112113

113114
private void setDefaultSuggester() {
114-
this.suggester = input -> {
115-
if (input == null) {
116-
return itemSuggester.suggest(null);
117-
}
118-
return StringFormatter.addonToCommaSeperated(input, itemSuggester.suggest(input));
119-
};
115+
if (itemSuggester instanceof SenderNodeSuggester senderItemSuggester) {
116+
this.suggester = (SenderNodeSuggester)(sender, input) ->
117+
StringFormatter.addonToCommaSeperated(input, senderItemSuggester.suggest(sender, input));
118+
} else {
119+
this.suggester = input -> StringFormatter.addonToCommaSeperated(input, itemSuggester.suggest(input));
120+
}
120121
}
121122

122123
private void setDefaultStringParser() {
@@ -279,6 +280,20 @@ protected Builder(@NotNull String path, @NotNull Class<I> itemType) {
279280
return self();
280281
}
281282

283+
/**
284+
* Sets the suggester for an individual item in the list with sender context.
285+
*
286+
* @param itemSuggester The suggester.
287+
* @return This builder.
288+
*
289+
* @since 5.1
290+
*/
291+
@ApiStatus.AvailableSince("5.1")
292+
public @NotNull B itemSuggester(@NotNull SenderNodeSuggester itemSuggester) {
293+
this.itemSuggester = itemSuggester;
294+
return self();
295+
}
296+
282297
/**
283298
* Sets the string parser for an individual item in the list.
284299
*

src/main/java/org/mvplugins/multiverse/core/config/node/functions/SenderNodeSuggester.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ public interface SenderNodeSuggester extends NodeSuggester {
2323
* @param sender The sender context.
2424
* @param input The current partial user input
2525
* @return The possible values.
26+
*
27+
* @since 5.1
2628
*/
2729
@ApiStatus.AvailableSince("5.1")
2830
@NotNull Collection<String> suggest(@NotNull CommandSender sender, @Nullable String input);

0 commit comments

Comments
 (0)