Skip to content

Commit f7d8688

Browse files
authored
Merge pull request #3369 from Multiverse/feat/simplified-destination
Add simplified destination tab completion configuration option
2 parents c4e4e31 + b52d657 commit f7d8688

File tree

4 files changed

+24
-5
lines changed

4 files changed

+24
-5
lines changed

src/main/java/org/mvplugins/multiverse/core/command/MVCommandCompletions.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@
4444
import org.mvplugins.multiverse.core.destination.DestinationInstance;
4545
import org.mvplugins.multiverse.core.destination.DestinationSuggestionPacket;
4646
import org.mvplugins.multiverse.core.destination.DestinationsProvider;
47+
import org.mvplugins.multiverse.core.destination.core.WorldDestination;
4748
import org.mvplugins.multiverse.core.permissions.CorePermissionsChecker;
4849
import org.mvplugins.multiverse.core.utils.REPatterns;
49-
import org.mvplugins.multiverse.core.utils.StringFormatter;
5050
import org.mvplugins.multiverse.core.world.LoadedMultiverseWorld;
5151
import org.mvplugins.multiverse.core.world.MultiverseWorld;
5252
import org.mvplugins.multiverse.core.world.WorldManager;
@@ -236,6 +236,9 @@ private Collection<String> suggestDestinations(BukkitCommandCompletionContext co
236236

237237
private Collection<String> suggestDestinationsWithPerms(CommandSender teleporter, List<Entity> teleportees, String deststring) {
238238
return destinationsProvider.suggestDestinations(teleporter, deststring).stream()
239+
.filter(packet -> !config.getSimplifiedDestinationTabCompletion()
240+
|| packet.destination() instanceof WorldDestination
241+
|| deststring.startsWith(packet.destination().getIdentifier() + ":"))
239242
.filter(packet -> corePermissionsChecker
240243
.checkDestinationPacketPermission(teleporter, teleportees, packet))
241244
.map(DestinationSuggestionPacket::parsableString)

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,13 @@
88
import com.dumptruckman.minecraft.util.Logging;
99
import io.vavr.control.Try;
1010
import jakarta.inject.Inject;
11-
import jakarta.inject.Provider;
1211
import org.bukkit.configuration.file.FileConfiguration;
1312
import org.bukkit.event.EventPriority;
14-
import org.bukkit.plugin.PluginManager;
1513
import org.jetbrains.annotations.ApiStatus;
1614
import org.jetbrains.annotations.NotNull;
1715
import org.jvnet.hk2.annotations.Service;
1816

1917
import org.mvplugins.multiverse.core.MultiverseCore;
20-
import org.mvplugins.multiverse.core.command.MVCommandManager;
2118
import org.mvplugins.multiverse.core.command.queue.ConfirmMode;
2219
import org.mvplugins.multiverse.core.config.handle.CommentedConfigurationHandle;
2320
import org.mvplugins.multiverse.core.config.handle.StringPropertyHandle;
@@ -28,7 +25,6 @@
2825
import org.mvplugins.multiverse.core.config.migration.action.MoveMigratorAction;
2926
import org.mvplugins.multiverse.core.config.migration.VersionMigrator;
3027
import org.mvplugins.multiverse.core.config.migration.action.SetMigratorAction;
31-
import org.mvplugins.multiverse.core.destination.DestinationsProvider;
3228
import org.mvplugins.multiverse.core.teleportation.PassengerMode;
3329
import org.mvplugins.multiverse.core.teleportation.PassengerModes;
3430
import org.mvplugins.multiverse.core.world.helpers.DimensionFinder.DimensionFormat;
@@ -539,6 +535,16 @@ public boolean getResolveAliasName() {
539535
return configHandle.get(configNodes.resolveAliasName);
540536
}
541537

538+
@ApiStatus.AvailableSince("5.4")
539+
public Try<Void> setSimplifiedDestinationTabCompletion(boolean simplifiedDestinationTabCompletion) {
540+
return configHandle.set(configNodes.simplifiedDestinationTabCompletion, simplifiedDestinationTabCompletion);
541+
}
542+
543+
@ApiStatus.AvailableSince("5.4")
544+
public boolean getSimplifiedDestinationTabCompletion() {
545+
return configHandle.get(configNodes.simplifiedDestinationTabCompletion);
546+
}
547+
542548
/**
543549
* {@inheritDoc}
544550
*/

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,15 @@ private <N extends Node> N node(N node) {
413413
.name("resolve-alias-name")
414414
.build());
415415

416+
final ConfigNode<Boolean> simplifiedDestinationTabCompletion = node(ConfigNode.builder("command.simplified-destination-tab-completion", Boolean.class)
417+
.comment("")
418+
.comment("If this is set to true, Multiverse will only suggest simple destination formats in tab completion.")
419+
.comment("This means only world names will be suggested without other destination type such as `e:worldname:x,y,z` or `p:playername`.")
420+
.comment("Note: This DOES NOT prevent players from using the destinations, as that is controlled by permissions.")
421+
.defaultValue(false)
422+
.name("simplified-destination-tab-completion")
423+
.build());
424+
416425
final ConfigNode<ConfirmMode> confirmMode = node(ConfigNode.builder("command.confirm-mode", ConfirmMode.class)
417426
.comment("")
418427
.comment("This config option defines whether `/mv confirm` is needed before running a DANGEROUS action.")

src/test/resources/configs/fresh_config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ messaging:
4141

4242
command:
4343
resolve-alias-name: true
44+
simplified-destination-tab-completion: false
4445
confirm-mode: enable
4546
use-confirm-otp: true
4647
confirm-timeout: 30

0 commit comments

Comments
 (0)