diff --git a/src/main/java/org/mvplugins/multiverse/core/world/WorldConfig.java b/src/main/java/org/mvplugins/multiverse/core/world/WorldConfig.java index e67ae6b54..a768d4bd3 100644 --- a/src/main/java/org/mvplugins/multiverse/core/world/WorldConfig.java +++ b/src/main/java/org/mvplugins/multiverse/core/world/WorldConfig.java @@ -49,7 +49,7 @@ final class WorldConfig { @NotNull ConfigurationSection configSection, @NotNull MultiverseCore multiverseCore) { this.keyOrName = keyOrName; - this.configNodes = new WorldConfigNodes(multiverseCore); + this.configNodes = new WorldConfigNodes(multiverseCore, keyOrName); this.configHandle = MemoryConfigurationHandle.builder(configSection, configNodes.getNodes()) .logger(Logging.getLogger()) .migrator(migrator()) diff --git a/src/main/java/org/mvplugins/multiverse/core/world/WorldConfigNodes.java b/src/main/java/org/mvplugins/multiverse/core/world/WorldConfigNodes.java index 6318c942d..fca89d685 100644 --- a/src/main/java/org/mvplugins/multiverse/core/world/WorldConfigNodes.java +++ b/src/main/java/org/mvplugins/multiverse/core/world/WorldConfigNodes.java @@ -28,6 +28,7 @@ import org.mvplugins.multiverse.core.utils.MaterialConverter; import org.mvplugins.multiverse.core.utils.text.ChatTextFormatter; import org.mvplugins.multiverse.core.world.helpers.EnforcementHandler; +import org.mvplugins.multiverse.core.world.key.WorldKeyOrName; import org.mvplugins.multiverse.core.world.location.NullSpawnLocation; import org.mvplugins.multiverse.core.world.location.SpawnLocation; import org.mvplugins.multiverse.core.world.entity.EntitySpawnConfig; @@ -42,12 +43,14 @@ final class WorldConfigNodes { private WorldManager worldManager; private EnforcementHandler enforcementHandler; private CoreConfig config; + private WorldKeyOrName keyOrName; private MultiverseWorld world = null; - WorldConfigNodes(@NotNull MultiverseCore multiverseCore) { + WorldConfigNodes(@NotNull MultiverseCore multiverseCore, @NotNull WorldKeyOrName keyOrName) { this.worldManager = multiverseCore.getServiceLocator().getService(WorldManager.class); this.enforcementHandler = multiverseCore.getServiceLocator().getService(EnforcementHandler.class); this.config = multiverseCore.getServiceLocator().getService(CoreConfig.class); + this.keyOrName = keyOrName; } MultiverseWorld getWorld() { @@ -91,10 +94,13 @@ private ConfigNode node(ConfigNode.Builder nodeBuilder) { final ConfigNode alias = node(ConfigNode.builder("alias", String.class) .defaultValue("") .onLoadAndChange((oldValue, newValue) -> { + worldManager.getWorldStore().changeAlias( + ChatTextFormatter.removeColor(oldValue), + ChatTextFormatter.removeColor(newValue), + keyOrName.usableKey() + ); if (world == null) return; world.updateColourlessAlias(); - worldManager.getWorldStore().changeAlias( - ChatTextFormatter.removeColor(oldValue), ChatTextFormatter.removeColor(newValue), world); })); final ConfigNode allowAdvancementGrant = node(ConfigNode.builder("allow-advancement-grant", Boolean.class) diff --git a/src/main/java/org/mvplugins/multiverse/core/world/WorldStore.java b/src/main/java/org/mvplugins/multiverse/core/world/WorldStore.java index 41f809580..ce8cb7e96 100644 --- a/src/main/java/org/mvplugins/multiverse/core/world/WorldStore.java +++ b/src/main/java/org/mvplugins/multiverse/core/world/WorldStore.java @@ -15,6 +15,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Objects; @@ -119,16 +120,16 @@ void removeLoadedWorld(LoadedMultiverseWorld world) { unloadedList.add(unloadedMap.get(world.getKey().toString())); } - void changeAlias(@Nullable String oldAlias, @Nullable String newAlias, @NotNull MultiverseWorld world) { + void changeAlias(@Nullable String oldAlias, @Nullable String newAlias, @NotNull NamespacedKey worldKey) { if (Objects.equals(oldAlias, newAlias)) { // nothing changed, ignore return; } if (!Strings.isNullOrEmpty(oldAlias)) { - aliasMap.remove(oldAlias, world.getKey().toString()); + aliasMap.remove(oldAlias.toLowerCase(Locale.ROOT), worldKey.toString()); } if (!Strings.isNullOrEmpty(newAlias)) { - aliasMap.put(newAlias, world.getKey().toString()); + aliasMap.put(newAlias.toLowerCase(Locale.ROOT), worldKey.toString()); } } @@ -263,7 +264,7 @@ String translateAlias(@Nullable String worldNameOrAlias) { return null; } //TODO: Not sure if we should fail if there is multiple alias of the same name, but for now just return the first one - return aliasMap.get(worldNameOrAlias).stream() + return aliasMap.get(worldNameOrAlias.toLowerCase(Locale.ROOT)).stream() .findFirst() .orElse(worldNameOrAlias); }