Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow /mv list to show world names instead of aliases #3093

Merged
merged 1 commit into from
Sep 10, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.mvplugins.multiverse.core.commandtools.MVCommandIssuer;
import org.mvplugins.multiverse.core.commandtools.MVCommandManager;
import org.mvplugins.multiverse.core.commandtools.MultiverseCommand;
import org.mvplugins.multiverse.core.commandtools.flags.CommandFlag;
import org.mvplugins.multiverse.core.commandtools.flags.CommandValueFlag;
import org.mvplugins.multiverse.core.commandtools.flags.ParsedCommandFlags;
import org.mvplugins.multiverse.core.display.ContentDisplay;
Expand All @@ -28,6 +29,7 @@
import org.mvplugins.multiverse.core.display.handlers.PagedSendHandler;
import org.mvplugins.multiverse.core.display.parsers.ListContentProvider;
import org.mvplugins.multiverse.core.world.LoadedMultiverseWorld;
import org.mvplugins.multiverse.core.world.MultiverseWorld;
import org.mvplugins.multiverse.core.world.WorldManager;
import org.mvplugins.multiverse.core.world.entrycheck.WorldEntryChecker;
import org.mvplugins.multiverse.core.world.entrycheck.WorldEntryCheckerProvider;
Expand Down Expand Up @@ -63,6 +65,10 @@
})
.build());

private final CommandFlag RAW_FLAG = flag(CommandFlag.builder("--raw")

Check warning on line 68 in src/main/java/org/mvplugins/multiverse/core/commands/ListCommand.java

View workflow job for this annotation

GitHub Actions / checkstyle / checkstyle

[checkstyle] reported by reviewdog 🐶 Abbreviation in name 'RAW_FLAG' must contain no more than '1' consecutive capital letters. Raw Output: /github/workspace/./src/main/java/org/mvplugins/multiverse/core/commands/ListCommand.java:68:31: warning: Abbreviation in name 'RAW_FLAG' must contain no more than '1' consecutive capital letters. (com.puppycrawl.tools.checkstyle.checks.naming.AbbreviationAsWordInNameCheck)
.addAlias("-r")
.build());

@Inject
ListCommand(
@NotNull MVCommandManager commandManager,
Expand All @@ -76,7 +82,7 @@
@Subcommand("list")
@CommandPermission("multiverse.core.list.worlds")
@CommandCompletion("@flags:groupName=mvlistcommand")
@Syntax("--filter [filter] --page [page]")
@Syntax("--filter [filter] --page [page] --raw")
@Description("Displays a listing of all worlds that you can enter.")
public void onListCommand(
MVCommandIssuer issuer,
Expand All @@ -86,34 +92,48 @@
String[] flags) {
ParsedCommandFlags parsedFlags = parseFlags(flags);
ContentDisplay.create()
.addContent(ListContentProvider.forContent(getListContents(issuer)))
.addContent(ListContentProvider.forContent(getListContents(issuer, parsedFlags.hasFlag(RAW_FLAG))))
.withSendHandler(PagedSendHandler.create()
.withHeader("%s====[ Multiverse World List ]====", ChatColor.GOLD)
.withTargetPage(parsedFlags.flagValue(PAGE_FLAG, 1))
.withFilter(parsedFlags.flagValue(FILTER_FLAG, DefaultContentFilter.get())))
.send(issuer);
}

private List<String> getListContents(MVCommandIssuer issuer) {
private List<String> getListContents(MVCommandIssuer issuer, boolean useRawNames) {
List<String> worldList = new ArrayList<>();
WorldEntryChecker worldEntryChecker = worldEntryCheckerProvider.forSender(issuer.getIssuer());

worldManager.getLoadedWorlds().stream()
.filter(world -> worldEntryChecker.canAccessWorld(world).isSuccess())
.filter(world -> canSeeWorld(issuer, world))
.map(world -> hiddenText(world) + world.getAlias() + " - " + parseColouredEnvironment(world.getEnvironment()))
.map(world -> hiddenText(world) + getWorldName(world, useRawNames) + " - " + parseColouredEnvironment(world.getEnvironment()))

Check warning on line 110 in src/main/java/org/mvplugins/multiverse/core/commands/ListCommand.java

View workflow job for this annotation

GitHub Actions / checkstyle / checkstyle

[checkstyle] reported by reviewdog 🐶 Line is longer than 120 characters (found 142). Raw Output: /github/workspace/./src/main/java/org/mvplugins/multiverse/core/commands/ListCommand.java:110:0: warning: Line is longer than 120 characters (found 142). (com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck)
.sorted()
.forEach(worldList::add);

worldManager.getUnloadedWorlds().stream()
.filter(world -> worldEntryChecker.canAccessWorld(world).isSuccess())
.map(world -> ChatColor.GRAY + world.getAlias() + " - UNLOADED")
.map(world -> ChatColor.GRAY + getWorldName(world, useRawNames) + " - UNLOADED")
.sorted()
.forEach(worldList::add);

return worldList;
}

/**

Check warning on line 123 in src/main/java/org/mvplugins/multiverse/core/commands/ListCommand.java

View workflow job for this annotation

GitHub Actions / checkstyle / checkstyle

[checkstyle] reported by reviewdog 🐶 First sentence of Javadoc is missing an ending period. Raw Output: /github/workspace/./src/main/java/org/mvplugins/multiverse/core/commands/ListCommand.java:123:0: warning: First sentence of Javadoc is missing an ending period. (com.puppycrawl.tools.checkstyle.checks.javadoc.SummaryJavadocCheck)
* Gets a world's name or alias
* @param world The world to retrieve the name of

Check warning on line 125 in src/main/java/org/mvplugins/multiverse/core/commands/ListCommand.java

View workflow job for this annotation

GitHub Actions / checkstyle / checkstyle

[checkstyle] reported by reviewdog 🐶 Javadoc tag '@param' should be preceded with an empty line. Raw Output: /github/workspace/./src/main/java/org/mvplugins/multiverse/core/commands/ListCommand.java:125:0: warning: Javadoc tag '@param' should be preceded with an empty line. (com.puppycrawl.tools.checkstyle.checks.javadoc.RequireEmptyLineBeforeBlockTagGroupCheck)
* @param useRawNames True to return the name, false to return the alias
* @return The name
*/
private String getWorldName(MultiverseWorld world, boolean useRawNames) {
if (useRawNames) {
return world.getName();
}

return world.getAlias();
}

private boolean canSeeWorld(MVCommandIssuer issuer, LoadedMultiverseWorld world) {
return !world.isHidden()
|| issuer.hasPermission("multiverse.core.modify"); // TODO: Refactor stray permission check
Expand Down
Loading