Skip to content

Commit d60259d

Browse files
committed
Use player names mapper data to tab complete and parse profile for bulkedit
1 parent bffb291 commit d60259d

File tree

4 files changed

+49
-10
lines changed

4 files changed

+49
-10
lines changed

src/main/java/org/mvplugins/multiverse/inventories/command/MVInvCommandCompletion.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,23 @@
55
import org.mvplugins.multiverse.core.command.MVCommandCompletions;
66
import org.mvplugins.multiverse.core.command.MVCommandManager;
77
import org.mvplugins.multiverse.core.config.handle.PropertyModifyAction;
8+
import org.mvplugins.multiverse.core.utils.StringFormatter;
89
import org.mvplugins.multiverse.external.acf.commands.BukkitCommandCompletionContext;
910
import org.mvplugins.multiverse.external.jakarta.inject.Inject;
1011
import org.mvplugins.multiverse.external.vavr.control.Try;
1112
import org.mvplugins.multiverse.inventories.config.InventoriesConfig;
1213
import org.mvplugins.multiverse.inventories.dataimport.DataImportManager;
14+
import org.mvplugins.multiverse.inventories.profile.PlayerNamesMapper;
1315
import org.mvplugins.multiverse.inventories.profile.group.WorldGroup;
1416
import org.mvplugins.multiverse.inventories.profile.group.WorldGroupManager;
17+
import org.mvplugins.multiverse.inventories.profile.key.GlobalProfileKey;
1518
import org.mvplugins.multiverse.inventories.share.Sharables;
1619

1720
import java.util.Arrays;
1821
import java.util.Collection;
1922
import java.util.Collections;
23+
import java.util.List;
24+
import java.util.Objects;
2025
import java.util.Set;
2126
import java.util.stream.Collectors;
2227

@@ -28,21 +33,26 @@ public final class MVInvCommandCompletion {
2833
private final InventoriesConfig inventoriesConfig;
2934
private final WorldGroupManager worldGroupManager;
3035
private final DataImportManager dataImportManager;
36+
private final PlayerNamesMapper playerNamesMapper;
3137

3238
@Inject
3339
private MVInvCommandCompletion(
3440
@NotNull InventoriesConfig inventoriesConfig,
3541
@NotNull WorldGroupManager worldGroupManager,
3642
@NotNull DataImportManager dataImportManager,
37-
@NotNull MVCommandManager mvCommandManager) {
43+
@NotNull MVCommandManager mvCommandManager,
44+
@NotNull PlayerNamesMapper playerNamesMapper
45+
) {
3846
this.inventoriesConfig = inventoriesConfig;
3947
this.worldGroupManager = worldGroupManager;
4048
this.dataImportManager = dataImportManager;
49+
this.playerNamesMapper = playerNamesMapper;
4150

4251
MVCommandCompletions commandCompletions = mvCommandManager.getCommandCompletions();
4352
commandCompletions.registerAsyncCompletion("dataimporters", this::suggestDataImporters);
4453
commandCompletions.registerStaticCompletion("mvinvconfigs", inventoriesConfig.getStringPropertyHandle().getAllPropertyNames());
4554
commandCompletions.registerAsyncCompletion("mvinvconfigvalues", this::suggestConfigValues);
55+
commandCompletions.registerAsyncCompletion("mvinvplayernames", this::suggestPlayerNames);
4656
commandCompletions.registerAsyncCompletion("sharables", this::suggestSharables);
4757
commandCompletions.registerAsyncCompletion("shares", this::suggestShares);
4858
commandCompletions.registerAsyncCompletion("worldGroups", this::suggestWorldGroups);
@@ -60,6 +70,25 @@ private Collection<String> suggestConfigValues(BukkitCommandCompletionContext co
6070
.getOrElse(Collections.emptyList());
6171
}
6272

73+
private Collection<String> suggestPlayerNames(BukkitCommandCompletionContext context) {
74+
if (Objects.equals(context.getInput(), "@all")) {
75+
return Collections.emptyList();
76+
}
77+
List<String> playerNames = getPlayerNames();
78+
if (context.getInput().indexOf(',') == -1) {
79+
playerNames.add("@all");
80+
return playerNames;
81+
}
82+
return StringFormatter.addonToCommaSeperated(context.getInput(), playerNames);
83+
}
84+
85+
private List<String> getPlayerNames() {
86+
return playerNamesMapper.getKeys()
87+
.stream()
88+
.map(GlobalProfileKey::getPlayerName)
89+
.collect(Collectors.toList());
90+
}
91+
6392
private Collection<String> suggestSharables(BukkitCommandCompletionContext context) {
6493
String scope = context.getConfig("scope", "enabled");
6594

src/main/java/org/mvplugins/multiverse/inventories/command/MVInvCommandContexts.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@
44
import org.bukkit.Bukkit;
55
import org.jvnet.hk2.annotations.Service;
66
import org.mvplugins.multiverse.core.command.MVCommandManager;
7+
import org.mvplugins.multiverse.core.utils.REPatterns;
78
import org.mvplugins.multiverse.external.acf.commands.BukkitCommandExecutionContext;
89
import org.mvplugins.multiverse.external.acf.commands.CommandContexts;
910
import org.mvplugins.multiverse.external.acf.commands.InvalidCommandArgument;
1011
import org.mvplugins.multiverse.external.jakarta.inject.Inject;
1112
import org.mvplugins.multiverse.external.jetbrains.annotations.NotNull;
1213
import org.mvplugins.multiverse.external.vavr.control.Option;
14+
import org.mvplugins.multiverse.inventories.profile.PlayerNamesMapper;
1315
import org.mvplugins.multiverse.inventories.profile.group.WorldGroup;
1416
import org.mvplugins.multiverse.inventories.profile.group.WorldGroupManager;
1517
import org.mvplugins.multiverse.inventories.profile.key.GlobalProfileKey;
@@ -25,10 +27,16 @@
2527
public final class MVInvCommandContexts {
2628

2729
private final WorldGroupManager worldGroupManager;
30+
private final PlayerNamesMapper playerNamesMapper;
2831

2932
@Inject
30-
private MVInvCommandContexts(@NotNull MVCommandManager commandManager, @NotNull WorldGroupManager worldGroupManager) {
33+
private MVInvCommandContexts(
34+
@NotNull MVCommandManager commandManager,
35+
@NotNull WorldGroupManager worldGroupManager,
36+
@NotNull PlayerNamesMapper playerNamesMapper
37+
) {
3138
this.worldGroupManager = worldGroupManager;
39+
this.playerNamesMapper = playerNamesMapper;
3240

3341
CommandContexts<BukkitCommandExecutionContext> commandContexts = commandManager.getCommandContexts();
3442
commandContexts.registerContext(GlobalProfileKey[].class, this::parseGlobalProfileKeys);
@@ -40,15 +48,14 @@ private MVInvCommandContexts(@NotNull MVCommandManager commandManager, @NotNull
4048
private GlobalProfileKey[] parseGlobalProfileKeys(BukkitCommandExecutionContext context) {
4149
String profileStrings = context.popFirstArg();
4250
if (profileStrings.equals("@all")) {
43-
return Arrays.stream(Bukkit.getOfflinePlayers())
44-
.map(GlobalProfileKey::create)
45-
.toArray(GlobalProfileKey[]::new);
51+
return playerNamesMapper.getKeys().toArray(GlobalProfileKey[]::new);
4652
}
4753

48-
String[] profileNames = profileStrings.split(",");
54+
String[] profileNames = REPatterns.COMMA.split(profileStrings);
4955
return Arrays.stream(profileNames)
50-
.map(Bukkit::getOfflinePlayer)
51-
.map(GlobalProfileKey::create)
56+
.map(playerNamesMapper::getKey)
57+
.filter(Option::isDefined)
58+
.map(Option::get)
5259
.toArray(GlobalProfileKey[]::new);
5360
}
5461

src/main/java/org/mvplugins/multiverse/inventories/commands/bulkedit/globalprofile/ClearCommand.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,15 @@ final class ClearCommand extends InventoriesCommand {
4242

4343
@Subcommand("bulkedit globalprofile clear")
4444
@CommandPermission("multiverse.inventories.bulkedit")
45-
@CommandCompletion("@players @flags:groupName=" + Flags.NAME)
46-
@Syntax("<players>")
45+
@CommandCompletion("@mvinvplayernames @flags:groupName=" + Flags.NAME)
46+
@Syntax("<players> [--clear-all-playerprofiles]")
4747
void onCommand(
4848
MVCommandIssuer issuer,
4949

5050
@Syntax("<players>")
5151
GlobalProfileKey[] globalProfileKeys,
5252

53+
@Syntax("[--clear-all-playerprofiles]")
5354
String[] flagArray
5455
) {
5556
ParsedCommandFlags parsedFlags = flags.parse(flagArray);

src/main/java/org/mvplugins/multiverse/inventories/commands/bulkedit/globalprofile/ModifyCommand.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.mvplugins.multiverse.core.command.queue.CommandQueuePayload;
77
import org.mvplugins.multiverse.core.config.handle.PropertyModifyAction;
88
import org.mvplugins.multiverse.core.locale.message.Message;
9+
import org.mvplugins.multiverse.external.acf.commands.annotation.CommandCompletion;
910
import org.mvplugins.multiverse.external.acf.commands.annotation.CommandPermission;
1011
import org.mvplugins.multiverse.external.acf.commands.annotation.Subcommand;
1112
import org.mvplugins.multiverse.external.acf.commands.annotation.Syntax;
@@ -32,6 +33,7 @@ final class ModifyCommand extends InventoriesCommand {
3233

3334
@Subcommand("bulkedit globalprofile modify")
3435
@CommandPermission("multiverse.inventories.bulkedit")
36+
@CommandCompletion("load-on-login|last-world @empty @mvinvplayernames")
3537
@Syntax("<property> <value> <players>")
3638
void onCommand(
3739
MVCommandIssuer issuer,

0 commit comments

Comments
 (0)