Update list command and fix importWorld bug

This commit is contained in:
Ben Woo 2023-09-03 16:15:55 +08:00
parent fa4391e543
commit d77d7032dd
No known key found for this signature in database
GPG Key ID: FB2A3645536E12C8
4 changed files with 39 additions and 35 deletions

View File

@ -1,8 +1,5 @@
package com.onarandombox.MultiverseCore.commands;
import java.util.ArrayList;
import java.util.List;
import co.aikar.commands.BukkitCommandIssuer;
import co.aikar.commands.InvalidCommandArgument;
import co.aikar.commands.annotation.CommandAlias;
@ -11,9 +8,6 @@ import co.aikar.commands.annotation.CommandPermission;
import co.aikar.commands.annotation.Description;
import co.aikar.commands.annotation.Subcommand;
import co.aikar.commands.annotation.Syntax;
import com.onarandombox.MultiverseCore.MultiverseCore;
import com.onarandombox.MultiverseCore.api.MVWorld;
import com.onarandombox.MultiverseCore.api.MVWorldManager;
import com.onarandombox.MultiverseCore.commandtools.MVCommandManager;
import com.onarandombox.MultiverseCore.commandtools.MultiverseCommand;
import com.onarandombox.MultiverseCore.commandtools.flags.CommandFlagGroup;
@ -25,8 +19,9 @@ import com.onarandombox.MultiverseCore.display.filters.DefaultContentFilter;
import com.onarandombox.MultiverseCore.display.filters.RegexContentFilter;
import com.onarandombox.MultiverseCore.display.handlers.PagedSendHandler;
import com.onarandombox.MultiverseCore.display.parsers.ListContentProvider;
import com.onarandombox.MultiverseCore.utils.UnsafeCallWrapper;
import com.onarandombox.MultiverseCore.world.entrycheck.WorldEntryCheckerProvider;
import com.onarandombox.MultiverseCore.worldnew.MVWorld;
import com.onarandombox.MultiverseCore.worldnew.WorldManager;
import jakarta.inject.Inject;
import org.bukkit.ChatColor;
import org.bukkit.World;
@ -34,17 +29,20 @@ import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jvnet.hk2.annotations.Service;
import java.util.ArrayList;
import java.util.List;
@Service
@CommandAlias("mv")
public class ListCommand extends MultiverseCommand {
private final MVWorldManager worldManager;
private final WorldManager worldManager;
private final WorldEntryCheckerProvider worldEntryCheckerProvider;
@Inject
public ListCommand(
@NotNull MVCommandManager commandManager,
@NotNull MVWorldManager worldManager,
@NotNull WorldManager worldManager,
@NotNull WorldEntryCheckerProvider worldEntryCheckerProvider
) {
super(commandManager);
@ -101,15 +99,15 @@ public class ListCommand extends MultiverseCommand {
List<String> worldList = new ArrayList<>();
worldManager.getMVWorlds().stream()
.filter(world -> player == null || worldEntryCheckerProvider.forSender(player).canAccessWorld(world).isSuccess())
.filter(world -> player == null) // TODO: || worldEntryCheckerProvider.forSender(player).canAccessWorld(world).isSuccess())
.filter(world -> canSeeWorld(player, world))
.map(world -> hiddenText(world) + world.getColoredWorldString() + " - " + parseColouredEnvironment(world.getEnvironment()))
.map(world -> hiddenText(world) + world.getAlias() + " - " + parseColouredEnvironment(world.getEnvironment()))
.sorted()
.forEach(worldList::add);
worldManager.getUnloadedWorlds().stream()
.filter(world -> issuer.hasPermission("multiverse.access." + world)) // TODO: Refactor stray permission check
.map(world -> ChatColor.GRAY + world + " - UNLOADED")
worldManager.getOfflineOnlyWorlds().stream()
.filter(world -> issuer.hasPermission("multiverse.access." + world.getName())) // TODO: Refactor stray permission check
.map(world -> ChatColor.GRAY + world.getAlias() + " - UNLOADED")
.sorted()
.forEach(worldList::add);
@ -127,18 +125,12 @@ public class ListCommand extends MultiverseCommand {
}
private String parseColouredEnvironment(World.Environment env) {
ChatColor color = ChatColor.GOLD;
switch (env) {
case NETHER:
color = ChatColor.RED;
break;
case NORMAL:
color = ChatColor.GREEN;
break;
case THE_END:
color = ChatColor.AQUA;
break;
}
ChatColor color = switch (env) {
case NETHER -> ChatColor.RED;
case NORMAL -> ChatColor.GREEN;
case THE_END -> ChatColor.AQUA;
default -> ChatColor.GOLD;
};
return color + env.toString();
}
}

View File

@ -1,5 +1,6 @@
package com.onarandombox.MultiverseCore.worldnew;
import com.google.common.base.Strings;
import com.onarandombox.MultiverseCore.world.configuration.AllowedPortalType;
import com.onarandombox.MultiverseCore.worldnew.config.WorldConfig;
import io.vavr.control.Try;
@ -46,7 +47,7 @@ public class OfflineWorld {
}
public String getAlias() {
return worldConfig.getAlias();
return Strings.isNullOrEmpty(worldConfig.getAlias()) ? worldName : worldConfig.getAlias();
}
public Try<Void> setAlias(String alias) {

View File

@ -24,12 +24,9 @@ import org.jetbrains.annotations.Nullable;
import org.jvnet.hk2.annotations.Service;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class WorldManager {
@ -124,12 +121,26 @@ public class WorldManager {
// Our multiverse world
MVWorld mvWorld = newMVWorld(world);
mvWorld.getWorldConfig().setGenerator(options.generator());
mvWorld.getWorldConfig().setGenerator(Strings.isNullOrEmpty(options.generator()) ? "" : options.generator());
saveWorldsConfig();
return Result.success(CreateWorldResult.Success.CREATED);
}
public Result<CreateWorldResult.Success, CreateWorldResult.Failure> importWorld(ImportWorldOptions options) {
if (!WorldNameChecker.isValidWorldName(options.worldName())) {
return Result.failure(CreateWorldResult.Failure.INVALID_WORLDNAME);
}
if (isMVWorld(options.worldName())) {
return Result.failure(CreateWorldResult.Failure.WORLD_EXIST_LOADED);
}
if (isOfflineWorld(options.worldName())) {
return Result.failure(CreateWorldResult.Failure.WORLD_EXIST_OFFLINE);
}
// TODO: Check if world folder exists
// Create bukkit world
World world = WorldCreator.name(options.worldName())
.environment(options.environment())
@ -143,7 +154,7 @@ public class WorldManager {
// Our multiverse world
MVWorld mvWorld = newMVWorld(world);
mvWorld.getWorldConfig().setGenerator(options.generator());
mvWorld.getWorldConfig().setGenerator(Strings.isNullOrEmpty(options.generator()) ? "" : options.generator());
saveWorldsConfig();
return Result.success(CreateWorldResult.Success.CREATED);
}

View File

@ -23,7 +23,7 @@ public class CreateWorldOptions {
private final String worldName;
private World.Environment environment = World.Environment.NORMAL;
private boolean generateStructures = true;
private String generator = null;
private String generator = "";
private long seed = Long.MIN_VALUE;
private boolean useSpawnAdjust = true;
private WorldType worldType = WorldType.NORMAL;
@ -92,7 +92,7 @@ public class CreateWorldOptions {
* @param generator The custom generator plugin and its parameters.
* @return This {@link CreateWorldOptions} instance.
*/
public @NotNull CreateWorldOptions generator(@Nullable String generator) {
public @NotNull CreateWorldOptions generator(@NotNull String generator) {
this.generator = generator;
return this;
}
@ -102,7 +102,7 @@ public class CreateWorldOptions {
*
* @return The custom generator plugin and its parameters.
*/
public @Nullable String generator() {
public @NotNull String generator() {
return generator;
}