From a2e7e6409dc0754badc890101a373b7488ff0f97 Mon Sep 17 00:00:00 2001 From: benwoo1110 Date: Tue, 6 Oct 2020 23:54:52 +0800 Subject: [PATCH] Sorts worldname by alphabetical order Make MVWorld implement Comparable interface. Had to add new WorldManager#getSortedMVWorlds as return type is different. --- .../java/com/onarandombox/MultiverseCore/MVWorld.java | 11 ++++++++++- .../MultiverseCore/api/MVWorldManager.java | 10 ++++++++-- .../MultiverseCore/commands/ListCommand.java | 2 +- .../MultiverseCore/utils/WorldManager.java | 11 ++++++++++- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/onarandombox/MultiverseCore/MVWorld.java b/src/main/java/com/onarandombox/MultiverseCore/MVWorld.java index d8f64e972..10b04f585 100644 --- a/src/main/java/com/onarandombox/MultiverseCore/MVWorld.java +++ b/src/main/java/com/onarandombox/MultiverseCore/MVWorld.java @@ -34,6 +34,7 @@ import org.bukkit.permissions.Permission; import org.bukkit.permissions.PermissionDefault; import org.bukkit.util.Vector; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.json.simple.JSONObject; @@ -46,7 +47,7 @@ /** * The implementation of a Multiverse handled world. */ -public class MVWorld implements MultiverseWorld { +public class MVWorld implements MultiverseWorld, Comparable { private static final int SPAWN_LOCATION_SEARCH_TOLERANCE = 16; private static final int SPAWN_LOCATION_SEARCH_RADIUS = 16; @@ -206,6 +207,14 @@ private void validateProperties() { setGameMode(getGameMode()); } + /** + * Used to sort MVWorlds by alphabetical order. + */ + @Override + public int compareTo(@NotNull MultiverseWorld o) { + return this.getAlias().compareTo(o.getAlias()); + } + /** * Validates the scale-property. */ diff --git a/src/main/java/com/onarandombox/MultiverseCore/api/MVWorldManager.java b/src/main/java/com/onarandombox/MultiverseCore/api/MVWorldManager.java index 3eb96e2d5..baa7384d6 100644 --- a/src/main/java/com/onarandombox/MultiverseCore/api/MVWorldManager.java +++ b/src/main/java/com/onarandombox/MultiverseCore/api/MVWorldManager.java @@ -158,12 +158,18 @@ boolean addWorld(String name, Environment env, String seedString, WorldType type ChunkGenerator getChunkGenerator(String generator, String generatorID, String worldName); /** - * Returns a list of all the worlds Multiverse knows about. + * Returns a collection of all the worlds Multiverse knows about. * - * @return A list of {@link MultiverseWorld}. + * @return A collection of {@link MultiverseWorld}. */ Collection getMVWorlds(); + /** + * Returns a list of all the worlds Multiverse knows about in alphabetical order. + * + * @return A list of {@link MultiverseWorld}. + */ + List getSortedMVWorlds(); /** * Returns a {@link MultiverseWorld} if it exists, and null if it does not. diff --git a/src/main/java/com/onarandombox/MultiverseCore/commands/ListCommand.java b/src/main/java/com/onarandombox/MultiverseCore/commands/ListCommand.java index d702bf93e..0c45ac8ec 100644 --- a/src/main/java/com/onarandombox/MultiverseCore/commands/ListCommand.java +++ b/src/main/java/com/onarandombox/MultiverseCore/commands/ListCommand.java @@ -37,7 +37,7 @@ public ListCommand(MultiverseCore plugin) { private List getFancyWorldList(Player p) { List worldList = new ArrayList(); - for (MultiverseWorld world : this.plugin.getMVWorldManager().getMVWorlds()) { + for (MultiverseWorld world : this.plugin.getMVWorldManager().getSortedMVWorlds()) { if (p != null && (!this.plugin.getMVPerms().canEnterWorld(p, world))) { continue; diff --git a/src/main/java/com/onarandombox/MultiverseCore/utils/WorldManager.java b/src/main/java/com/onarandombox/MultiverseCore/utils/WorldManager.java index c0b893349..c2c807f09 100644 --- a/src/main/java/com/onarandombox/MultiverseCore/utils/WorldManager.java +++ b/src/main/java/com/onarandombox/MultiverseCore/utils/WorldManager.java @@ -47,7 +47,6 @@ import java.util.concurrent.Callable; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; -import java.util.regex.Matcher; import java.util.regex.Pattern; /** @@ -624,6 +623,16 @@ public Collection getMVWorlds() { return this.worlds.values(); } + /** + * {@inheritDoc} + */ + @Override + public List getSortedMVWorlds() { + MultiverseWorld[] MVWorldList = this.getMVWorlds().toArray(new MultiverseWorld[0]); + Arrays.sort(MVWorldList); + return Arrays.asList(MVWorldList); + } + /** * {@inheritDoc} */