Paper icon indicating copy to clipboard operation
Paper copied to clipboard

Can't create world with key path that matches an existing level name even if namespace is different

Open Machine-Maker opened this issue 3 years ago • 5 comments

Expected behavior

Should be able to create a world with key key for which Bukkit.getWorld(key) returns null.

Observed/Actual behavior

Some keys fail as a world with that level name already exist.

[09:52:35 ERROR]: Error occurred while enabling Paper-Test-Plugin v1.0.0-SNAPSHOT (Is it up to date?)
java.lang.IllegalArgumentException: Cannot create a world with key plugin:world and name world one (or both) already match a world that exists
	at org.bukkit.craftbukkit.CraftServer.createWorld(CraftServer.java:1152) ~[main/:?]
	at org.bukkit.Bukkit.createWorld(Bukkit.java:767) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
	at io.papermc.paper.testplugin.TestPlugin.onEnable(TestPlugin.java:17) ~[test-plugin-1.0.0-SNAPSHOT.jar:?]
	at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:541) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.craftbukkit.CraftServer.enablePlugin(CraftServer.java:560) ~[main/:?]
	at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:474) ~[main/:?]
	at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:664) ~[main/:?]
	at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:431) ~[main/:?]
	at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:316) ~[main/:?]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1163) ~[main/:?]
	at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:315) ~[main/:?]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]

Steps/models to reproduce

In a plugin onEnable, just run

final NamespacedKey worldKey = new NamespacedKey("plugin", "world");
if (Bukkit.getWorld(worldKey) == null) {
    WorldCreator creator = new WorldCreator(worldKey);
    Bukkit.createWorld(creator);
}

Plugin and Datapack List

none

Paper version

f210f67c4ad1560685e4354dfa242c120e42efe3

Other

No response

Machine-Maker avatar May 31 '22 16:05 Machine-Maker

i had this issue, but reverted to the build before this one https://github.com/PaperMC/Paper/commit/182a609b85b8a711b04cae45ea03bad19367ea21

it works with build 352

alekso56 avatar Jun 01 '22 00:06 alekso56

Well the fix is not going to be to undo that commit. That commit fixes a bigger issue. I'm guessing your issue is actually not the same as this. Can you post the stack trace to your issue @alekso56?

Machine-Maker avatar Jun 01 '22 01:06 Machine-Maker

After deleting the end i got this with that commit.

[Server thread/WARN]: java.lang.IllegalArgumentException: Cannot create a world with key minecraft:world_the_end and name world_the_end one (or both) already match a world that exists
[19:28:08] [Server thread/WARN]: 	at org.bukkit.craftbukkit.v1_18_R2.CraftServer.createWorld(CraftServer.java:1152)
[19:28:08] [Server thread/WARN]: 	at org.bukkit.Bukkit.createWorld(Bukkit.java:767)
[19:28:08] [Server thread/WARN]: 	at org.bukkit.WorldCreator.createWorld(WorldCreator.java:461)
[19:28:08] [Server thread/WARN]: 	at Multiverse-Core-4.3.2-SNAPSHOT.jar//com.onarandombox.MultiverseCore.utils.WorldManager.doLoad(WorldManager.java:486)
[19:28:08] [Server thread/WARN]: 	at Multiverse-Core-4.3.2-SNAPSHOT.jar//com.onarandombox.MultiverseCore.utils.WorldManager.doLoad(WorldManager.java:467)
[19:28:08] [Server thread/WARN]: 	at Multiverse-Core-4.3.2-SNAPSHOT.jar//com.onarandombox.MultiverseCore.utils.WorldManager.doLoad(WorldManager.java:442)
[19:28:08] [Server thread/WARN]: 	at Multiverse-Core-4.3.2-SNAPSHOT.jar//com.onarandombox.MultiverseCore.utils.WorldManager.loadWorlds(WorldManager.java:770)
[19:28:08] [Server thread/WARN]: 	at Multiverse-Core-4.3.2-SNAPSHOT.jar//com.onarandombox.MultiverseCore.MultiverseCore.onEnable(MultiverseCore.java:313)
[19:28:08] [Server thread/WARN]: 	at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264)
[19:28:08] [Server thread/WARN]: 	at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370)
[19:28:08] [Server thread/WARN]: 	at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:541)
[19:28:08] [Server thread/WARN]: 	at org.bukkit.craftbukkit.v1_18_R2.CraftServer.enablePlugin(CraftServer.java:560)
[19:28:08] [Server thread/WARN]: 	at org.bukkit.craftbukkit.v1_18_R2.CraftServer.enablePlugins(CraftServer.java:474)
[19:28:08] [Server thread/WARN]: 	at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:664)
[19:28:08] [Server thread/WARN]: 	at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:431)
[19:28:08] [Server thread/WARN]: 	at net.minecraft.server.dedicated.DedicatedServer.e(DedicatedServer.java:316)
[19:28:08] [Server thread/WARN]: 	at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1163)
[19:28:08] [Server thread/WARN]: 	at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:315)
[19:28:08] [Server thread/WARN]: 	at java.base/java.lang.Thread.run(Thread.java:833)

alekso56 avatar Jun 01 '22 02:06 alekso56

I think that there is some potential inconsistency with what MV is seeing, that needs looking into; But, the restriction which you're hitting elsewhere is 100% intended, otherwise you end up with issues like worlds which won't save properly, etc

electronicboy avatar Jun 01 '22 06:06 electronicboy

My current world contains capital letters and causes this with bentobox since paper build 348

[12:12:14] [Server thread/INFO]: [BentoBox] Enabling BSkyBlock (1.15.2-SNAPSHOT-b718)... [12:12:14] [Server thread/ERROR]: [BentoBox] Skipping BSkyBlock due to an unhandled exception... [12:12:14] [Server thread/ERROR]: [BentoBox] java.lang.IllegalArgumentException: Cannot create a world with key minecraft:skyblock and name skyblock one (or both) already match a world that exists at org.bukkit.craftbukkit.v1_18_R2.CraftServer.createWorld(CraftServer.java:1152) at org.bukkit.Bukkit.createWorld(Bukkit.java:767) at org.bukkit.WorldCreator.createWorld(WorldCreator.java:461) at world.bentobox.bskyblock.BSkyBlock.getWorld(BSkyBlock.java:130) at world.bentobox.bskyblock.BSkyBlock.createWorlds(BSkyBlock.java:101) at BentoBox-1.21.0-SNAPSHOT-b2277.jar//world.bentobox.bentobox.managers.AddonsManager.enableAddon(AddonsManager.java:304) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) at BentoBox-1.21.0-SNAPSHOT-b2277.jar//world.bentobox.bentobox.managers.AddonsManager.enableAddons(AddonsManager.java:250) at BentoBox-1.21.0-SNAPSHOT-b2277.jar//world.bentobox.bentobox.BentoBox.completeSetup(BentoBox.java:188) at BentoBox-1.21.0-SNAPSHOT-b2277.jar//world.bentobox.bentobox.BentoBox.lambda$onEnable$0(BentoBox.java:171) at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftTask.run(CraftTask.java:101) at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:483) at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1172) at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:315) at java.base/java.lang.Thread.run(Thread.java:833)

iGuillem avatar Jul 16 '22 13:07 iGuillem