load cloned world with doLoad() instead of addWorld() (fixes #2378)

This commit is contained in:
Robert Timm 2020-08-14 00:10:54 +02:00
parent 242f05fc77
commit b8acd339b3

View File

@ -193,16 +193,31 @@ public class WorldManager implements MVWorldManager {
if (newWorldFile.exists()) { if (newWorldFile.exists()) {
Logging.fine("Succeeded at copying files"); Logging.fine("Succeeded at copying files");
if (this.addWorld(newName, environment, seedString, worldType, generateStructures, generator, useSpawnAdjust)) {
// getMVWorld() doesn't actually return an MVWorld // initialize new properties with old ones
Logging.fine("Succeeded at importing world"); WorldProperties newProps = new WorldProperties();
MVWorld newWorld = (MVWorld) this.getMVWorld(newName); newProps.copyValues(this.worldsFromTheConfig.get(oldName));
newWorld.copyValues(this.worldsFromTheConfig.get(oldName)); // don't keep the alias the same -- that would be useless
// don't keep the alias the same -- that would be useless newProps.setAlias("");
newWorld.setAlias(""); // store the new properties in worlds config map
return true; this.worldsFromTheConfig.put(newName, newProps);
// save the worlds config to disk (worlds.yml)
if (!saveWorldsConfig()) {
this.plugin.log(Level.SEVERE, "Failed to save worlds.yml");
return false;
} }
// actually load the world
if (doLoad(newName)) {
this.plugin.log(Level.FINE, "Succeeded at loading cloned world '" + newName + "'");
return true;
}
this.plugin.log(Level.SEVERE, "Failed to load the cloned world '" + newName + "'");
return false;
} }
Logging.warning("Failed to copy files for world '%s', see the log info", newName); Logging.warning("Failed to copy files for world '%s', see the log info", newName);
return false; return false;
} }